xdh
2018-12-22 06eec1e27d26532824a710bba2483b0c7f39c27e
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCAI/AIType_20.py
@@ -25,6 +25,7 @@
import BaseAttack
import FBCommon
import AICommon
import GameMap
import random
@@ -61,6 +62,7 @@
        curTag = GameWorld.FindNPCByID(playerAtkObjID)
        
    npcControl = NPCCommon.NPCControl(curNPC)
    npcControl.RefreshBuffState(tick)
    # 没有玩家正在攻击的目标则取自身的仇恨列表
    if not curTag:
        #GameWorld.DebugLog("没有玩家正在攻击的目标,刷新自身仇恨目标!objID=%s,maxHP=%s" % (curNPC.GetID(), GameObj.GetMaxHP(curNPC)))
@@ -76,10 +78,10 @@
        #GameWorld.DebugLog("没有攻击目标,跟随玩家!objID=%s" % curNPC.GetID())
        dist = GameWorld.GetDist(fbPlayer.GetPosX(), fbPlayer.GetPosY(), curNPC.GetPosX(), curNPC.GetPosY())
        if dist > 12:
            posX, posY = npcControl.GetMoveNearPos(fbPlayer.GetPosX(), fbPlayer.GetPosY(), 3)
            curNPC.ResetPos(posX, posY)
        elif dist > 5:
            npcControl.MoveToObj_Detel(fbPlayer, 5)
            resultPos = GameMap.GetEmptyPlaceInArea(fbPlayer.GetPosX(), fbPlayer.GetPosY(), 3)
            curNPC.ResetPos(resultPos.GetPosX(), resultPos.GetPosY())
        elif dist > 3:
            npcControl.MoveToObj_Detel(fbPlayer, 3)
        return
    __NPCFight(npcControl, curNPC, curTag, tick)
    return
@@ -92,10 +94,20 @@
        return
    tagDist = GameWorld.GetDist(curNPC.GetPosX(), curNPC.GetPosY(), curTag.GetPosX(), curTag.GetPosY())
    GameWorld.DebugLog("    与目标距离: %s" % tagDist)
    if tagDist > 12:
        posX, posY = npcControl.GetMoveNearPos(curTag.GetPosX(), curTag.GetPosY(), 3)
        curNPC.ResetPos(posX, posY)
        tagDist = GameWorld.GetDist(curNPC.GetPosX(), curNPC.GetPosY(), curTag.GetPosX(), curTag.GetPosY())
#    if tagDist > 20:
#        resultPos = GameMap.GetEmptyPlaceInArea(curTag.GetPosX(), curTag.GetPosY(), 3)
#        curNPC.ResetPos(resultPos.GetPosX(), resultPos.GetPosY())
#        tagDist = GameWorld.GetDist(curNPC.GetPosX(), curNPC.GetPosY(), curTag.GetPosX(), curTag.GetPosY())
    delayTick = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_AtkDelayTick)
    if delayTick:
        startAtkTick = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_AtkStartTick)
        if not startAtkTick:
            curNPC.SetDict(ChConfig.Def_NPC_Dict_AtkStartTick, tick)
            startAtkTick = tick
        if tick - startAtkTick < delayTick:
            GameWorld.DebugLog("未到攻击时间,暂不处理!objID=%s" % curNPC.GetID())
            return
        
    #---优先释放技能---
    if AICommon.DoAutoUseSkill(curNPC, curTag, tagDist, tick):