Beispiel #1
0
	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)
Beispiel #2
0
	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])
Beispiel #3
0
	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)
Beispiel #4
0
	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])
Beispiel #5
0
	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))
Beispiel #6
0
 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))