#!/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, g_ServerTick  
 | 
from Protocol.PacketsSendPY import tagCMLoginState  
 | 
from Robot import DataDefine  
 | 
  
 | 
import random  
 | 
#from Protocol.PacketsSend import tagCLeaveTeam, tagCPlayerLogOut  
 | 
from Protocol.PacketsSendPY import tagCMSuperAtk, tagSkillPosHurtObj  
 | 
  
 | 
import time  
 | 
  
 | 
  
 | 
##   
 | 
#  
 | 
# ¼Ì³ÐAIBase  
 | 
class AIPlayerActPlayer(AIBase):  
 | 
      
 | 
    ## ËùÓÐAI±ØÐë²ÉÓÃÕâÖй̶¨µÄ³õʼ»¯ÔÐÍ£¬ÒÔ±ãAIMgr×Ô¶¯¼ÓÔØ  
 | 
    #  @param None : None  
 | 
    #  @return bool  
 | 
    #  @remarks ´ËAI²»ÐèÒªÖÜÆÚÐÔ±»µ÷Óã¬ËùÒÔÉèÖÃΪ²»ÆôÓÃTimer  
 | 
    def __init__(self, robot):  
 | 
        AIBase.__init__(self, robot, 3, True, True)  
 | 
        self.SetActive(True)  
 | 
  
 | 
    def _Process( self ):  
 | 
  
 | 
        if not self.robot.GetPlayerInfo().GetStartWorldTick():  
 | 
            return  
 | 
          
 | 
        sendPack = tagCMSuperAtk()  
 | 
        sendPack.Clear()  
 | 
        job = self.robot.GetPlayerInfo().GetJob()  
 | 
        if not job:  
 | 
            return  
 | 
        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() + random.randint(-2, 2)  
 | 
        sendPack.TagPosY = self.robot.GetPlayerInfo().GetPosY() + random.randint(-2, 2)  
 | 
        sendPack.WorldTick = self.robot.GetPlayerInfo().GetWorldTick()  
 | 
  
 | 
        #print "attack--------%s-%s-%s-%s"%(job, sendPack.SkillID, sendPack.WorldTick, self.robot.GetPlayerInfo().GetAccID())  
 | 
        self.robot.SendMapServerPYPack(sendPack)  
 | 
  
 | 
    ## ÏòAIMgr×¢²áÏûÏ¢»Øµ÷º¯Êý  
 | 
    #  @param None : None  
 | 
    #  @return bool  
 | 
    #  @remarks   
 | 
    def _RegisterPacket(self, aiMgr):  
 | 
        #aiMgr.RegNetMsg(0x0614, self.PlayerAttack, True)  
 | 
        pass  
 | 
  
 | 
    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  
 | 
# };  
 | 
#===============================================================================  
 | 
  
 | 
          
 | 
         
 |