コード例 #1
0
ファイル: packethandle_map.py プロジェクト: tarathep/pyeco
	def do_09e7(self, pc, data, datalength, recvhead, recvtype, recvcontent):
		"""アイテム装備"""
		#pc.reset_attack_info()
		iid = int(recvcontent[0:8],16)
		if not pc.item.get(iid):
			print "[ map ]", "error on item setup", iid
			return
		old, new = pc.setequip(iid, self.itemobj, self.itemdic)
		print "[ map ]", "item setup", pc.item[iid].id, old, new
		if not new:
			#装備しようとする装備タイプが不明の場合
			#アイテム装備
			datatype, datacontent = self.createpacket.create09e8(iid, -1, -2, 1)
			self.send(datatype, datacontent, pc.mapclient, None)
			return
		for x in old:
			if int(x) != 0 and x != "":
				#装備先に居る装備を外す時の処理
				pc.sort.item.remove(x)
				pc.sort.item.append(x)
				#アイテム保管場所変更
				datatype, datacontent = self.createpacket.create09e3(x, 02)
				self.send(datatype, datacontent, pc.mapclient, None)
		#アイテム装備
		datatype,datacontent = self.createpacket.create09e8(iid, new, 0, 1)
		self.send(datatype, datacontent, pc.mapclient, None)
		#キャラの見た目を変更
		datatype,datacontent = self.createpacket.create09e9(pc)
		self.sendmap(datatype, datacontent, self.pclist, pc, None)
		if new == 18: # set pet
			eventobj.setpet(pc)
コード例 #2
0
ファイル: packethandle_map.py プロジェクト: pyeco/pyeco
	def do_09e7(self, pc, data, datalength, recvhead, recvtype, recvcontent):
		"""アイテム装備"""
		#pc.reset_attack_info()
		iid = int(recvcontent[0:8],16)
		if not pc.item.get(iid):
			print "[ map ]", "error on item setup", iid
			return
		old, new = pc.setequip(iid, self.itemobj, self.itemdic)
		print "[ map ]", "item setup", pc.item[iid].id, old, new
		if not new:
			#装備しようとする装備タイプが不明の場合
			#アイテム装備
			datatype, datacontent = self.createpacket.create09e8(iid, -1, -2, 1)
			self.send(datatype, datacontent, pc.mapclient, None)
			return
		for x in old:
			if int(x) != 0 and x != "":
				#装備先に居る装備を外す時の処理
				pc.sort.item.remove(x)
				pc.sort.item.append(x)
				#アイテム保管場所変更
				datatype, datacontent = self.createpacket.create09e3(x, 02)
				self.send(datatype, datacontent, pc.mapclient, None)
		#アイテム装備
		datatype,datacontent = self.createpacket.create09e8(iid, new, 0, 1)
		self.send(datatype, datacontent, pc.mapclient, None)
		#キャラの見た目を変更
		datatype,datacontent = self.createpacket.create09e9(pc)
		self.sendmap(datatype, datacontent, self.pclist, pc, None)
		if new == 18: # set pet
			eventobj.setpet(pc)
コード例 #3
0
ファイル: packethandle_map.py プロジェクト: tarathep/pyeco
	def do_11fe(self, pc, data, datalength, recvhead, recvtype, recvcontent):
		"""MAPワープ完了通知"""
		print "[ map ]", "client map loading over"
		pc.visible = True#見える状態になった
		pc.motion = "111"#モーションリセット
		#ログインイベント
		if self.serverobj.loginevent and not pc.loginevent:
			pc.loginevent = True
			pc.e = copy.copy(self.event)
			pc.e.id = self.serverobj.loginevent
			pc.e.eventhandle.run(pc)
		#キャラ速度通知・変更
		datatype, datacontent = self.createpacket.create1239(pc,pc.status.speed)
		self.send(datatype, datacontent, pc.mapclient, None)
		#クエスト回数・時間
		datatype,  datacontent = self.createpacket.create196e(pc)
		self.send(datatype, datacontent, pc.mapclient, None)
		#ステータス試算結果
		datatype,datacontent = self.createpacket.create0259(pc)
		self.send(datatype, datacontent, pc.mapclient, None)
		#マップ情報完了通知
		datatype,datacontent = self.createpacket.create1b67()
		self.send(datatype,datacontent,pc.mapclient,None)
		
		#0.43 add
		#キャラの状態
		datatype, datacontent = self.createpacket.create157c(pc)
		self.send(datatype, datacontent, pc.mapclient, None)
		#スキル一覧0
		datatype,datacontent = self.createpacket.create0226(pc, 0)
		self.send(datatype,datacontent,pc.mapclient,None)
		#スキル一覧1
		datatype,datacontent = self.createpacket.create0226(pc, 1)
		self.send(datatype,datacontent,pc.mapclient,None)
		#リザーブスキル
		datatype,datacontent = self.createpacket.create022e(pc)
		self.send(datatype,datacontent,pc.mapclient,None)
		#HEARTスキル
		datatype, datacontent = self.createpacket.create022d()
		self.send(datatype, datacontent, pc.mapclient, None)
		#キャラの見た目を変更
		datatype, datacontent = self.createpacket.create09e9(pc)
		self.send(datatype, datacontent, pc.mapclient, None)
		#現在のHP/MP/SP/EP
		datatype, datacontent = self.createpacket.create021c(pc)
		self.send(datatype, datacontent, pc.mapclient, None)
		
		#他キャラ情報
		with self.lock_pclist:
			for p in self.pclist.itervalues():
				if not (p.online and p.mapclient):
					continue
				if not (p.charid != pc.charid and p.map == pc.map):
					continue
				#print "send 120c"
				#他キャラ情報→自キャラ
				datatype, datacontent = self.createpacket.create120c(p)
				self.send(datatype, datacontent, pc.mapclient, None)
				if p.pet:
					datatype, datacontent = pc.e.createpacket.create122f(p, p.pet)
					self.send(datatype, datacontent, pc.mapclient, None)
				#自キャラ情報→他キャラ
				datatype, datacontent = self.createpacket.create120c(pc)
				self.send(datatype, datacontent, p.mapclient, None)
		#モンスター情報
		with self.lock_moblist:
			for m in self.moblist.itervalues(): # in self.moblist.keys()
				if m.hp <= 0:
					continue
				if not (m.map == pc.map):
					continue
				#モンスターID通知
				datatype, datacontent = self.createpacket.create122a(pc, (m.sid,), m.npc)
				self.send(datatype, datacontent, pc.mapclient, None)
				#モンスター情報
				datatype, datacontent = self.createpacket.create1220(pc, m)
				self.send(datatype, datacontent, pc.mapclient, None)
		#pet info
		eventobj.unsetpet(pc)
		eventobj.setpet(pc)
コード例 #4
0
ファイル: packethandle_map.py プロジェクト: pyeco/pyeco
	def do_11fe(self, pc, data, datalength, recvhead, recvtype, recvcontent):
		"""MAPワープ完了通知"""
		print "[ map ]", "client map loading over"
		pc.visible = True#見える状態になった
		pc.motion = "111"#モーションリセット
		#ログインイベント
		if self.serverobj.loginevent and not pc.loginevent:
			pc.loginevent = True
			pc.e = copy.copy(self.event)
			pc.e.id = self.serverobj.loginevent
			pc.e.eventhandle.run(pc)
		#キャラ速度通知・変更
		datatype, datacontent = self.createpacket.create1239(pc,pc.status.speed)
		self.send(datatype, datacontent, pc.mapclient, None)
		#クエスト回数・時間
		datatype,  datacontent = self.createpacket.create196e(pc)
		self.send(datatype, datacontent, pc.mapclient, None)
		#ステータス試算結果
		datatype,datacontent = self.createpacket.create0259(pc)
		self.send(datatype, datacontent, pc.mapclient, None)
		#マップ情報完了通知
		datatype,datacontent = self.createpacket.create1b67()
		self.send(datatype,datacontent,pc.mapclient,None)
		
		#0.43 add
		#キャラの状態
		datatype, datacontent = self.createpacket.create157c(pc)
		self.send(datatype, datacontent, pc.mapclient, None)
		#スキル一覧0
		datatype,datacontent = self.createpacket.create0226(pc, 0)
		self.send(datatype,datacontent,pc.mapclient,None)
		#スキル一覧1
		datatype,datacontent = self.createpacket.create0226(pc, 1)
		self.send(datatype,datacontent,pc.mapclient,None)
		#リザーブスキル
		datatype,datacontent = self.createpacket.create022e(pc)
		self.send(datatype,datacontent,pc.mapclient,None)
		#HEARTスキル
		datatype, datacontent = self.createpacket.create022d()
		self.send(datatype, datacontent, pc.mapclient, None)
		#キャラの見た目を変更
		datatype, datacontent = self.createpacket.create09e9(pc)
		self.send(datatype, datacontent, pc.mapclient, None)
		#現在のHP/MP/SP/EP
		datatype, datacontent = self.createpacket.create021c(pc)
		self.send(datatype, datacontent, pc.mapclient, None)
		
		#他キャラ情報
		with self.lock_pclist:
			for p in self.pclist.itervalues():
				if not (p.online and p.mapclient):
					continue
				if not (p.charid != pc.charid and p.map == pc.map):
					continue
				#print "send 120c"
				#他キャラ情報→自キャラ
				datatype, datacontent = self.createpacket.create120c(p)
				self.send(datatype, datacontent, pc.mapclient, None)
				if p.pet:
					datatype, datacontent = pc.e.createpacket.create122f(p, p.pet)
					self.send(datatype, datacontent, pc.mapclient, None)
				#自キャラ情報→他キャラ
				datatype, datacontent = self.createpacket.create120c(pc)
				self.send(datatype, datacontent, p.mapclient, None)
		#モンスター情報
		with self.lock_moblist:
			for m in self.moblist.itervalues(): # in self.moblist.keys()
				if m.hp <= 0:
					continue
				if not (m.map == pc.map):
					continue
				#モンスターID通知
				datatype, datacontent = self.createpacket.create122a(pc, (m.sid,), m.npc)
				self.send(datatype, datacontent, pc.mapclient, None)
				#モンスター情報
				datatype, datacontent = self.createpacket.create1220(pc, m)
				self.send(datatype, datacontent, pc.mapclient, None)
		#pet info
		eventobj.unsetpet(pc)
		eventobj.setpet(pc)