summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmain.py48
-rw-r--r--net/packet_out.py6
-rw-r--r--storage.py3
-rw-r--r--tradey.py2
4 files changed, 42 insertions, 17 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.
diff --git a/net/packet_out.py b/net/packet_out.py
index fea93d4..2a73a59 100644
--- a/net/packet_out.py
+++ b/net/packet_out.py
@@ -15,8 +15,10 @@ def whisper(nick, message):
def chat(text):
chat_packet = PacketOut(CMSG_CHAT_MESSAGE)
- chat_packet.write_int16(len(text) + 4 + 1)
- chat_packet.write_string(text, len(text) + 1)
+ mes = "ManaMarket"+" : "+text
+ chat_packet.write_int16(len(mes) + 4 + 1)
+ # chat_packet = PacketOut(CMSG_CHAT_MESSAGE)
+ chat_packet.write_string(mes, len(mes) + 1)
return str(chat_packet)
def sit(val):
diff --git a/storage.py b/storage.py
index a098ac6..8144419 100644
--- a/storage.py
+++ b/storage.py
@@ -23,6 +23,7 @@ class Storage:
self.storage = {}
self.timer = 0
self.Open = mutex.mutex()
+
def reset(self):
self.Open.unlock()
self.timer = 0
@@ -103,8 +104,8 @@ class Storage:
return 0
def storage_open(self, mapserv):
- mapserv.sendall(chat("@storage"))
self.timer = time.time()
+ mapserv.sendall(chat("@storage"))
def storage_close(self, mapserv):
mapserv.sendall(str(PacketOut(CMSG_CLOSE_STORAGE)))
diff --git a/tradey.py b/tradey.py
index 4172a63..aecce86 100644
--- a/tradey.py
+++ b/tradey.py
@@ -73,7 +73,7 @@ class ItemTree:
def getId(self):
while self.id_itter in self.u_id:
self.id_itter += 1
- self.u_id.add(id_itter)
+ self.u_id.add(self.id_itter)
return self.id_itter
def remove_id(self, uid):