4999 【bt】【英文】【越南】优化灵宠战斗(主人不攻击时,灵宠达到攻击间隔也会主动攻击可攻击的目标;灵宠攻击目标增加可攻击视野内主动怪,攻击顺序为:主人攻击目标 > 攻击主人的目标 > 视野内主动怪)
2个文件已修改
32 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_105.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_105.py
@@ -18,6 +18,7 @@
import AICommon
import ChConfig
import GameObj
import PetControl
Def_LastAI1ProTick = "LastAI1ProTick" # 最后一次执行tick
@@ -60,6 +61,10 @@
        posX, posY = petControl.GetMoveNearPos(curPlayer.GetPosX(), curPlayer.GetPosY(), 1)
        rolePet.ResetPos(posX, posY)
    
    if tick - rolePet.GetAttackTick() >= rolePet.GetAtkInterval():
        PetControl.PetFight(curPlayer, tick)
    #===========================================================================
    # skillManager = rolePet.GetSkillManager()
    # for index in range(0, skillManager.GetSkillCount()):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
@@ -47,6 +47,7 @@
import PassiveBuffEffMng
import ChNetSendPack
import IpyGameDataPY
import AttackCommon
#---------------------------------------------------------------------
DefPetRebornHPRate = 100  # 宠物死亡复活血量百分比
@@ -93,6 +94,32 @@
            if not curTag or GameObj.GetHP(curTag) <= 0:
                continue
        
        # 还没有就从视野中查找
        if not curTag or GameObj.GetHP(curTag) <= 0:
            seePlayerCount = rolePet.GetInSightObjCount()
            for i in range(0, seePlayerCount):
                seeObj = rolePet.GetInSightObjByIndex(i)
                if seeObj == None:
                    continue
                seeObjID = seeObj.GetID()
                seeObjType = seeObj.GetGameObjType()
                # 只允许主动攻击NPC,且目标NPC是主动怪
                if seeObjType != IPY_GameWorld.gotNPC:
                    continue
                seeObjDetail = GameWorld.GetObj(seeObjID, seeObjType)
                if not seeObjDetail:
                    continue
                if seeObjDetail.GetAtkType() == 1:
                    # 1为非主动怪
                    continue
                if not AttackCommon.CheckCanAttackTag(rolePet, seeObjDetail):
                    continue
                relation = BaseAttack.GetTagRelation(rolePet, seeObjDetail, None, tick)[0]
                if relation != ChConfig.Type_Relation_Enemy:
                    continue
                curTag = seeObjDetail
                break
    if not curTag or GameObj.GetHP(curTag) <= 0:
        return