#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package NPCAI.AIType_4 # # @todo:¿ìËÙÒÆ¶¯µÄѲÂß¹Ö # @author hxp # @date 2016-11-25 # @version 1.0 # # ÏêϸÃèÊö: ¿ìËÙÒÆ¶¯µÄѲÂß¹Ö, ÒÔË¢¹ÖµãΪÖÐÐÄµã£¬ÒÆ¶¯ÇøÓòΪ°ë¾¶µÄÇøÓòËæ»úÒÆ¶¯ # #------------------------------------------------------------------------------- #"""Version = 2016-11-25 15:00""" #------------------------------------------------------------------------------- import NPCCommon import IPY_GameWorld import GameWorld import random ## ³õʼ»¯ # @param curNPC µ±Ç°npc # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def DoInit(curNPC): curNPC.GetNPCAngry().Init(0) return ## Ö´ÐÐAI # @param curNPC µ±Ç°npc # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def ProcessAI(curNPC, tick): #GameWorld.DebugLog("AIType_4... id=%s,npcID=%s" % (curNPC.GetID(), curNPC.GetNPCID())) npcControl = NPCCommon.NPCControl(curNPC) if curNPC.GetCurAction() == IPY_GameWorld.laNPCDie or curNPC.IsAlive() != True: #NPCËÀÍö, ½øÈëËÀÍöµ¹¼ÆÊ± if npcControl.DieTick(tick) == 0: return curNPCAction = curNPC.GetCurAction() if curNPCAction == IPY_GameWorld.laNPCMove: return PosMap = curNPC.GetRefreshPosAt(curNPC.GetCurRefreshPointIndex()) if not PosMap: return posMapX = PosMap.GetPosX() posMapY = PosMap.GetPosY() #posMapArea = PosMap.GetArea() # Ë¢¹ÖÇøÓò moveDist = PosMap.GetMoveDist() # ÒÆ¶¯ÇøÓò #moveArea = curNPC.GetMoveArea() #posX = curNPC.GetPosX() #posY = curNPC.GetPosY() minMovePosX = posMapX - moveDist maxMovePosX = posMapX + moveDist minMovePosY = posMapY - moveDist maxMovePosY = posMapY + moveDist # Ëæ»úÒ»¸öÒÔË¢¹ÖµãΪÖÐÐÄµã£¬ÒÆ¶¯ÇøÓòΪ°ë¾¶µÄµã randPosX = random.randint(minMovePosX, maxMovePosX) randPosY = random.randint(minMovePosY, maxMovePosY) #NPCÒÆ¶¯ newPoint = GameWorld.GetMap().LineNearToPos(curNPC.GetPosX(), curNPC.GetPosY(), randPosX, randPosY, 0) #GameWorld.DebugLog(" posMap=(%s,%s,%s), moveDist=%s, randPos=(%s,%s),newPoint=(%s,%s)" # % (posMapX, posMapY, posMapArea, moveDist, randPosX, randPosY, newPoint.GetPosX(), newPoint.GetPosY())) curNPC.Move(newPoint.GetPosX(), newPoint.GetPosY()) return