#!/usr/bin/python # -*- coding: GBK -*- # # @todo: ¶ÓÎé # # @author: Alee # @date 2018-1-5 ÏÂÎç05:30:16 # @version 1.0 # # @note: # #--------------------------------------------------------------------- from AI.AIBase import * import logging from Robot.PlayerData import PlayerData from Protocol.PacketsSendPY import tagCMLoginState from Robot import DataDefine import random #from Protocol.PacketsSend import tagCLeaveTeam, tagCPlayerLogOut from Protocol.PacketsSendPY import tagCMSuperAtk, tagSkillPosHurtObj ## # # ¼Ì³ÐAIBase class AIPlayerActPlayer(AIBase): ## ËùÓÐAI±ØÐë²ÉÓÃÕâÖй̶¨µÄ³õʼ»¯Ô­ÐÍ£¬ÒÔ±ãAIMgr×Ô¶¯¼ÓÔØ # @param None : None # @return bool # @remarks ´ËAI²»ÐèÒªÖÜÆÚÐÔ±»µ÷Óã¬ËùÒÔÉèÖÃΪ²»ÆôÓÃTimer def __init__(self, robot): AIBase.__init__(self, robot, 0, False, False) self.SetActive(True) ## ÏòAIMgr×¢²áÏûÏ¢»Øµ÷º¯Êý # @param None : None # @return bool # @remarks def _RegisterPacket(self, aiMgr): aiMgr.RegNetMsg(0x0614, self.PlayerAttack, True) def PlayerAttack(self, pack): if pack.ObjType != 1: return playerID = self.robot.GetPlayerInfo().GetPlayerID() beAttacked = False for atk in pack.HurtList: if atk.ObjType != 1: continue if atk.ObjID == playerID: beAttacked = True break if not beAttacked: return #skillIDDict = {1:100, 2:200, 3:300} job = self.robot.GetPlayerInfo().GetJob() sendPack = tagCMSuperAtk() sendPack.SkillID = job *100 + random.randint(0,3) sendPack.PosX = self.robot.GetPlayerInfo().GetPosX() sendPack.PosY = self.robot.GetPlayerInfo().GetPosY() sendPack.TagPosX = self.robot.GetPlayerInfo().GetPosX() + 3 sendPack.TagPosY = self.robot.GetPlayerInfo().GetPosY() + 3 sendPack.WorldTick = self.robot.GetPlayerInfo().GetWorldTick() sendPack.HurtCount = 1 defender = tagSkillPosHurtObj() defender.ObjType = 1 defender.ObjID = pack.ObjID sendPack.HurtList = [defender] self.robot.SendMapServerPYPack(sendPack) #=============================================================================== # //B4 05 ´øÉ˺¦¶ÓÁеĹ¥»÷ #tagCMSuperAtk # # struct tagSkillPosHurtObj # { # BYTE ObjType; # DWORD ObjID; # BYTE AttackType; //±¬»÷, miss # DWORD HurtHP; # }; # # struct tagCMSuperAtk # { # tagHead Head; # WORD SkillID; # WORD PosX; //¹¥»÷Æðµã # WORD PosY; # WORD TagPosX; //Ä¿±êµã # WORD TagPosY; # DWORD WorldTick; # WORD HurtCount; //É˺¦ÊýÄ¿ # tagSkillPosHurtObj HurtList[HurtCount]; //size = HurtCount # }; #===============================================================================