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_0614(self, pc, data, datalength, recvhead, recvtype, recvcontent): """NPCショップのアイテム購入""" print "[ map ]","pay in npcshop" #TODO 書き直しな・・・ itemcount = int(recvcontent[:2],16) recvcontent = recvcontent[2:] itemlist = list() for x in range(0,itemcount): itemlist.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:] pc.e = copy.copy(self.event) totalgoldtake = 0 totalbuylist = list() for x in range(0, len(itemlist)): buyid = itemlist[x] buycount = countlist[x] item = eventobj.createitem(pc, buyid) if int(item.price) < 1: price = 1 else: price = item.price goldtake = int(price) * int(buycount) totalgoldtake = totalgoldtake+goldtake totalbuylist.append((buyid, buycount)) if eventobj.takegold(pc, totalgoldtake): for x in totalbuylist: eventobj.giveitem(pc,x[0],x[1])
def do_0item(self, pc, openchattext): arg = simplehandle(pc, openchattext, "giveitem", "!item item_id <count>", "giveitem id or count not a number",args=1,extra=True) if arg: inputid = arg[1] if len(arg) >= 3: inputcount = arg[2] else: inputcount = 1 eventobj.giveitem(pc, int(inputid), int(inputcount))
def do_0item(self, pc, openchattext): arg = simplehandle(pc, openchattext, "giveitem", "!item item_id <count>", "giveitem id or count not a number", args=1, extra=True) if arg: inputid = arg[1] if len(arg) >= 3: inputcount = arg[2] else: inputcount = 1 eventobj.giveitem(pc, int(inputid), int(inputcount))