def do_09fd(self, pc, data, datalength, recvhead, recvtype, recvcontent): """倉庫に預ける""" iid = int(recvcontent[:8],16) count = int(recvcontent[8:12],16) print "[ map ]","store item to warehouse", iid, count if pc.warehouse_open == None: #倉庫に預けた時の結果#倉庫を開けていません datatype,datacontent = self.createpacket.create09fe(-1) self.send(datatype, datacontent, pc.mapclient, None) raise ValueError, "pc.warehouse_open == None" if not pc.item.get(iid): #倉庫に預けた時の結果#指定されたアイテムは存在しません datatype,datacontent = self.createpacket.create09fe(-2) self.send(datatype, datacontent, pc.mapclient, None) raise ValueError, "not pc.item.get(iid)" if int(pc.item[iid].count) < int(count): #倉庫に預けた時の結果#指定された数量が不正です datatype,datacontent = self.createpacket.create09fe(-3) self.send(datatype, datacontent, pc.mapclient, None) raise ValueError, "int(pc.item[iid].count) < int(count)" pc.e = copy.copy(self.event) item = eventobj.takeitembyiid(pc, iid, count) if item: eventobj.giveitem(pc, item.id, item.count, towarehouse=pc.warehouse_open) #倉庫に預けた時の結果#成功 datatype, datacontent = self.createpacket.create09fe(0) self.send(datatype, datacontent, pc.mapclient, None)
def do_0616(self, pc, data, datalength, recvhead, recvtype, recvcontent): """ショップで売却""" print "[ map ]","sell to npcshop" itemcount = int(recvcontent[:2],16) recvcontent = recvcontent[2:] iidlist = list() for x in range(0,itemcount): iidlist.append(int(recvcontent[:8],16)) recvcontent = recvcontent[8:] countcount = int(recvcontent[:2],16) recvcontent = recvcontent[2:] countlist = list() for x in range(0,countcount): countlist.append(int(recvcontent[:8],16)) recvcontent = recvcontent[8:] #print iidlist,countlist iidlist = map(int, iidlist) countlist = map(int, countlist) selllist = zip(iidlist, countlist) #selllist = list() #for x in range(0,len(iidlist)): # sellid = int(iidlist[x]) # sellcount = int(countlist[x]) # selllist.append((sellid,sellcount)) income = 0 pc.e = copy.copy(self.event) for i, c in selllist: item = eventobj.takeitembyiid(pc, i, c) if item: income = income + int(int(item.price) * int(item.count) / 10) income = int(income) eventobj.givegold(pc, income)
def do_0a15(self, pc, data, datalength, recvhead, recvtype, recvcontent): """トレードのTradeを押した際に送信""" print "[ map ]","trade / send trade" pc.tradestate = 1 tradereturnlist = list() if pc.isnpctrade: if pc.tradelist: pc.e = copy.copy(self.event) for x in pc.tradelist: tradereturnlist.append(eventobj.takeitembyiid(pc,x[0],x[1])) pc.tradereturnlist = tradereturnlist pc.isnpctrade = False pc.tradelist = [] pc.tradestate = 0 #トレード終了通知 datatype,datacontent = self.createpacket.create0a1c(pc) self.send(datatype, datacontent, pc.mapclient, None)