Exemplo n.º 1
0
	def unsetequip(self, iid):
		#print pc
		iid = int(iid)
		if iid == 0:
			return
		elif self.equip.head == iid:
			self.equip.head = 0
		elif self.equip.face == iid:
			self.equip.face = 0
		elif self.equip.chestacce == iid:
			self.equip.chestacce = 0
		elif self.equip.tops == iid:
			self.equip.tops = 0
		elif self.equip.bottoms == iid:
			self.equip.bottoms = 0
		elif self.equip.backpack == iid:
			self.equip.backpack = 0
		elif self.equip.right == iid:
			self.equip.right = 0
		elif self.equip.left == iid:
			self.equip.left = 0
		elif self.equip.shoes == iid:
			self.equip.shoes = 0
		elif self.equip.socks == iid:
			self.equip.socks = 0
		elif self.equip.pet == iid:
			self.equip.pet = 0
			eventobj.unsetpet(self)
Exemplo n.º 2
0
Arquivo: pcobj.py Projeto: pyeco/pyeco
	def unsetequip(self, iid):
		#print pc
		iid = int(iid)
		if iid == 0:
			return
		elif self.equip.head == iid:
			self.equip.head = 0
		elif self.equip.face == iid:
			self.equip.face = 0
		elif self.equip.chestacce == iid:
			self.equip.chestacce = 0
		elif self.equip.tops == iid:
			self.equip.tops = 0
		elif self.equip.bottoms == iid:
			self.equip.bottoms = 0
		elif self.equip.backpack == iid:
			self.equip.backpack = 0
		elif self.equip.right == iid:
			self.equip.right = 0
		elif self.equip.left == iid:
			self.equip.left = 0
		elif self.equip.shoes == iid:
			self.equip.shoes = 0
		elif self.equip.socks == iid:
			self.equip.socks = 0
		elif self.equip.pet == iid:
			self.equip.pet = 0
			eventobj.unsetpet(self)
Exemplo n.º 3
0
	def do_001e(self, pc, data, datalength, recvhead, recvtype, recvcontent):
		"""ログアウト(PASS鍵リセット・マップサーバーとのみ通信)"""
		if recvcontent.upper() != "FF":
			print "[ map ]", "client logout"
		#hide pet
		eventobj.unsetpet(pc, True)
		#hide pc
		datatype, datacontent = self.createpacket.create1211(pc)
		self.sendmapwithoutself(datatype, datacontent, self.pclist, pc, None)
Exemplo n.º 4
0
	def do_001e(self, pc, data, datalength, recvhead, recvtype, recvcontent):
		"""ログアウト(PASS鍵リセット・マップサーバーとのみ通信)"""
		if recvcontent.upper() != "FF":
			print "[ map ]", "client logout"
		#hide pet
		eventobj.unsetpet(pc, True)
		#hide pc
		datatype, datacontent = self.createpacket.create1211(pc)
		self.sendmapwithoutself(datatype, datacontent, self.pclist, pc, None)
Exemplo n.º 5
0
	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)
Exemplo n.º 6
0
	def setequip(self, iid, itemobj, itemdic):
		#print pc
		iid = int(iid)
		old = [] #unset list
		new = 0
		item = self.item.get(iid)
		if item == None:
			return old, new
		#頭
		if item.type == "HELM":
			if self.equip.head != 0:
				old.append(self.equip.head)
			self.equip.head = iid
			new = 6
		elif item.type == "ACCESORY_HEAD":
			if self.equip.head != 0:
				old.append(self.equip.head)
			self.equip.head = iid
			new = 7
		#顔
		elif item.type == "FULLFACE":
			if self.equip.face != 0:
				old.append(self.equip.face)
			self.equip.face = iid
			new = 6 #8 before ver315
		elif item.type == "ACCESORY_FACE":
			if self.equip.face != 0:
				old.append(self.equip.face)
			self.equip.face = iid
			new = 8 #9 before ver315
		#胸アクセサリ
		elif item.type == "ACCESORY_NECK" or item.type == "JOINT_SYMBOL":
			if self.equip.chestacce != 0:
				old.append(self.equip.chestacce)
			self.equip.chestacce = iid
			new = 10
		#上半身
		elif item.type in TYPE_TOPS:
			if self.equip.tops != 0:
				old.append(self.equip.tops)
			if item.type == "ONEPIECE" and self.equip.bottoms != 0:
				old.append(self.equip.bottoms)
				self.equip.bottoms = 0
			self.equip.tops = iid
			new = 11
		#下半身
		elif item.type == "ARMOR_LOWER" or item.type == "SLACKS" :
			if self.equip.bottoms != 0:
				old.append(self.equip.bottoms)
			if self.equip.tops != 0:
				cache = self.item.get(self.equip.tops)
				if cache != None and cache.type == "ONEPIECE":
					old.append(self.equip.tops)
					self.equip.tops = 0
			self.equip.bottoms = iid
			new = 12
		#背中
		elif item.type == "BACKPACK":
			if self.equip.backpack != 0:
				old.append(self.equip.backpack)
			self.equip.backpack = iid
			new = 13
		#右手装備
		elif item.type in TYPE_RIGHT:
			if self.equip.right != 0:
				old.append(self.equip.right)
			self.equip.right = iid
			new = 14
		#左手装備
		elif item.type in TYPE_LEFT:
			if self.equip.left != 0:
				old.append(self.equip.left)
			self.equip.left = iid
			new = 15
		#靴
		elif item.type in TYPE_SHOES:
			if self.equip.shoes != 0:
				old.append(self.equip.shoes)
			self.equip.shoes = iid
			new = 16
		#靴下
		elif item.type == "SOCKS":
			if self.equip.socks != 0:
				old.append(self.equip.socks)
			self.equip.socks = iid
			new = 17
		#ペット
		elif item.type in TYPE_PET:
			if self.equip.pet != 0:
				old.append(self.equip.pet)
				eventobj.unsetpet(self)
			self.equip.pet = iid
			new = 18
		return old, new
Exemplo n.º 7
0
	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)
Exemplo n.º 8
0
Arquivo: pcobj.py Projeto: pyeco/pyeco
	def setequip(self, iid, itemobj, itemdic):
		#print pc
		iid = int(iid)
		old = [] #unset list
		new = 0
		item = self.item.get(iid)
		if item == None:
			return old, new
		#頭
		if item.type == "HELM":
			if self.equip.head != 0:
				old.append(self.equip.head)
			self.equip.head = iid
			new = 6
		elif item.type == "ACCESORY_HEAD":
			if self.equip.head != 0:
				old.append(self.equip.head)
			self.equip.head = iid
			new = 7
		#顔
		elif item.type == "FULLFACE":
			if self.equip.face != 0:
				old.append(self.equip.face)
			self.equip.face = iid
			new = 6 #8 before ver315
		elif item.type == "ACCESORY_FACE":
			if self.equip.face != 0:
				old.append(self.equip.face)
			self.equip.face = iid
			new = 8 #9 before ver315
		#胸アクセサリ
		elif item.type == "ACCESORY_NECK" or item.type == "JOINT_SYMBOL":
			if self.equip.chestacce != 0:
				old.append(self.equip.chestacce)
			self.equip.chestacce = iid
			new = 10
		#上半身
		elif item.type in TYPE_TOPS:
			if self.equip.tops != 0:
				old.append(self.equip.tops)
			if item.type == "ONEPIECE" and self.equip.bottoms != 0:
				old.append(self.equip.bottoms)
				self.equip.bottoms = 0
			self.equip.tops = iid
			new = 11
		#下半身
		elif item.type == "ARMOR_LOWER" or item.type == "SLACKS" :
			if self.equip.bottoms != 0:
				old.append(self.equip.bottoms)
			if self.equip.tops != 0:
				cache = self.item.get(self.equip.tops)
				if cache != None and cache.type == "ONEPIECE":
					old.append(self.equip.tops)
					self.equip.tops = 0
			self.equip.bottoms = iid
			new = 12
		#背中
		elif item.type == "BACKPACK":
			if self.equip.backpack != 0:
				old.append(self.equip.backpack)
			self.equip.backpack = iid
			new = 13
		#右手装備
		elif item.type in TYPE_RIGHT:
			if self.equip.right != 0:
				old.append(self.equip.right)
			self.equip.right = iid
			new = 14
		#左手装備
		elif item.type in TYPE_LEFT:
			if self.equip.left != 0:
				old.append(self.equip.left)
			self.equip.left = iid
			new = 15
		#靴
		elif item.type in TYPE_SHOES:
			if self.equip.shoes != 0:
				old.append(self.equip.shoes)
			self.equip.shoes = iid
			new = 16
		#靴下
		elif item.type == "SOCKS":
			if self.equip.socks != 0:
				old.append(self.equip.socks)
			self.equip.socks = iid
			new = 17
		#ペット
		elif item.type in TYPE_PET:
			if self.equip.pet != 0:
				old.append(self.equip.pet)
				eventobj.unsetpet(self)
			self.equip.pet = iid
			new = 18
		return old, new