summaryrefslogtreecommitdiff
path: root/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'main.py')
-rwxr-xr-xmain.py48
1 files changed, 35 insertions, 13 deletions
diff --git a/main.py b/main.py
index c9ef4f5..4eba7e3 100755
--- a/main.py
+++ b/main.py
@@ -72,7 +72,7 @@ def do_delist():
try:
storage.storage_send(mapserv, item.index, item.amount)
except:
- print("Couldn't send item to storage")
+ logger.info("Couldn't send item to storage")
return -10
storage.add_item(item)
player_node.remove_item(item.index, item.amount)
@@ -87,16 +87,20 @@ def do_delist():
if cleaned - stacked < 0:
stacked = cleaned
while stacked:
- unstack():
+ err = unstack()
+ if err == -10:
+ return err
+ else:
+ stacked -= 1
def unstack():
elem = stack_tree.get_uid(stack_tree.next_id)
index = storage.find_storage_index(int(elem.get('itemId')))
- try:
- storage.storage_get(mapserv, index, elem.get('amount'))
- except:
- print ("Couldn't remove item from storage")
- return -10
+ try:
+ storage.storage_get(mapserv, index, elem.get('amount'))
+ except:
+ logger.info("Couldn't remove item from storage")
+ return -10
storage.remove_item(index, int(elem.get('amount')))
sale_tree.add_item(elem.get('name'), int(elem.get('itemId')), int(elem.get('amount')), int(elem.get('price')))
@@ -146,7 +150,7 @@ def process_whisper(nick, msg, mapserv):
data = '\302\202B1'
for elem in sale_tree.root:
- if time.time() - float(elem.get('add_time')) < config.relist_time:
+ if time.time() - float(elem.get('add_time')) < config.delist_time: # Check if an items time is up.
data += utils.encode_str(int(elem.get("itemId")), 2)
data += utils.encode_str(int(elem.get("price")), 4)
data += utils.encode_str(int(elem.get("amount")), 3)
@@ -177,7 +181,10 @@ def process_whisper(nick, msg, mapserv):
items_for_sale = False
for elem in sale_tree.root:
if elem.get('name') == nick:
- msg = "[selling] ["
+ if time.time() - float(elem.get('add_time')) < config.delist_time:
+ msg = "[selling] ["
+ else:
+ msg = "[expired] ["
msg += elem.get("uid") + "] " + elem.get("amount") + " [@@" + elem.get("itemId") + "|" + \
ItemDB.getItem(int(elem.get("itemId"))).name + "@@] for " + elem.get("price") + "gp each"
@@ -288,6 +295,9 @@ def process_whisper(nick, msg, mapserv):
if not trader_state.Trading.testandset():
mapserv.sendall(whisper(nick, "I'm currently busy with a trade. Try again shortly"))
return
+ if not storage.Open.testandset():
+ mapserv.sendall(whisper(nick, "I'm currently busy with storage. Try again shortly"))
+ return
trader_state.money = nick
player_id = beingManager.findId(nick)
@@ -965,8 +975,14 @@ def main():
# Now taking an item from stack if inventory was full before
storage.storage_open(mapserv)
- unstack()
- storage.storage_close(mapserv)
+ # I wanna test storage because it's needed
+ if storage.Open.test():
+ logger.info("Storage open.")
+ unstack()
+ storage.storage_close(mapserv)
+ else:
+ logger.info("Failed to open storage. Please check.")
+ storage.reset()
elif packet.is_type(SMSG_PLAYER_INVENTORY):
player_node.inventory.clear() # Clear the inventory - incase of new index.
@@ -1007,9 +1023,15 @@ def main():
logger.info("Inventory Check Passed.")
# IMO the best moment to run delisting
+ time.sleep(5) # Maybe server needs sometime between logging in and accepting a request?
storage.storage_open(mapserv)
- do_delist()
- storage.storage_close(mapserv)
+ if storage.Open.test():
+ logger.info("Storage open.")
+ do_delist()
+ storage.storage_close(mapserv)
+ else:
+ logger.info("Failed to open storage. Please check.")
+ storage.reset()
elif packet.is_type(SMSG_PLAYER_STORAGE_ITEMS):
storage.storage.clear() # Clear storage - same as inventory.