Example #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)
Example #2
0
	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)
Example #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)
Example #4
0
	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)
Example #5
0
	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)
Example #6
0
	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)