#!/usr/bin/python #-*- coding: GBK -*- #---------------------------------------------------------------------------------------------------- # #---------------------------------------------------------------------------------------------------- # ##@package PlayerMissionCollect # Íæ¼ÒÈÎÎñ²É¼¯NPC # # @author Alee # @date 2010-4-28 # @version 1.5 # # ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ # @change: "2010-05-12 18:30" zhengyang Ìí¼Ó×¢ÊÍ # @change: "2010-07-08 10:40" Alee Æï³Ë״̬ÎÞ·¨²É¼¯ # @change: "2010-09-16 09:55" Alee ÂíÉÏ¿ÉÒԲɼ¯ # @change: "2010-11-22 12:15" Alee ²É¼¯ÏÞÖÆ # @change: "2014-04-14 12:00" hxp Ôö¼Ó×Ô¶¨Òå²É¼¯NPC #--------------------------------------------------------------------- """Version = 2014-04-14 12:00""" #--------------------------------------------------------------------- #µ¼Èë import GameWorld import IPY_GameWorld import ChConfig import EventShell import ChNPC import PlayerControl import OperControlManager import NPCCommon import FBLogic import AttackCommon import GameObj #--------------------------------------------------------------------- '''Version = 2010-09-16 09:55''' #--------------------------------------------------------------------- #È«¾Ö #--------------------------------------------------------------------- ## ͨ¹ýÀàÐÍ»ñÈ¡Íæ¼Ò²É¼¯¶ÔÏóNPC # @param curPlayer µ±Ç°Íæ¼Ò # @param npcType npcÀàÐÍ # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def GetActionNPCbyType(curPlayer, npcType): #»ñµÃNPC tagObj = curPlayer.GetActionObj() if tagObj == None: #ûÓÐÄ¿±ê GameWorld.Log("FuncCall -> ûÓÐÄ¿±ê" , curPlayer.GetPlayerID()) return if tagObj.GetGameObjType() != IPY_GameWorld.gotNPC: #̸»°¶ÔÏó²»¶Ô GameWorld.Log("FuncCall -> ̸»°¶ÔÏó²»¶Ô" , curPlayer.GetPlayerID()) return curNPC = GameWorld.GetNPCManager().GetNPCByIndex(tagObj.GetIndex()) if curNPC == None: #ûÓÐÕâ¸öNPC GameWorld.Log("FuncCall ->ûÓÐÕâ¸öNPC" , curPlayer.GetPlayerID()) return if curNPC.GetType() != npcType: #ÀàÐͲ»¶Ô return if curNPC.GetCurAction() == IPY_GameWorld.laNPCDie or GameObj.GetHP(curNPC) <= 0: #ËÀÍö return return curNPC ## ֪ͨXML # @param curPlayer µ±Ç°Íæ¼Ò # @param curNPC µ±Ç°npc # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def QueryMissionCollect(curPlayer, curNPC, tick): #²É¼¯ÐÐΪ״̬, ¿Í»§¶ËÏÞÖÆ if not OperControlManager.IsObjCanDoAction(curPlayer, ChConfig.Def_Obj_ActState_ClientAct, IPY_GameWorld.oalCollect): return #ÂíÆ¥ÖÐÔÊÐí²É¼¯ if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck : #GeRen_hwj35_0 ÎÞ·¨²É¼¯ PlayerControl.NotifyCode(curPlayer, "GeRen_hwj35_0") return #ÏÈÉèÖöÔÏó£¬ÈÎÎñ¿É²É¼¯µÃµ½¶ÔÏóNPC curPlayer.SetActionObj(curNPC) # ×Ô¶¨ÒåµÄ²É¼¯NPC if NPCCommon.DoCollectNPCBegin(curPlayer, curNPC): return EventShell.EventRespons_MisCollectTime(curPlayer, curNPC) ## »ñµÃ²É¼¯Ê±¼ä£¬¿ªÊ¼²É¼¯ DoType_Collect_Time µ÷Óà # @param curPlayer µ±Ç°Ê±¼ä # @param curMission µ±Ç°ÈÎÎñ # @param curConditionNode xml½Úµã£¨condition) # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def BeginMissionCollect(curPlayer, curMission, curConditionNode): curNPC = GetActionNPCbyType(curPlayer, IPY_GameWorld.ntMissionCollect) if not curNPC: return #¸ù¾Ý·µ»ØµÄ²É¼¯Ê±¼ä£¬ÅжϿɷñ²É¼¯ misColTime = int(curConditionNode.GetAttribute("coltime")) if not misColTime: return #֪ͨ¿ªÊ¼ PlayerControl.Sync_PrepareBegin( curPlayer, misColTime, IPY_GameWorld.pstMissionCollecting, prepareID = curNPC.GetID() ) #Ìí¼ÓÕâ¸öNPCµÄÉËѪÁÐ±í£¬ÓÃÓÚ¶à¸öÈËÒ»Æð²É¼¯£¬Ò»È˳ɹ¦ºó£¬ÆäËûÈË´ò¶Ï AttackCommon.AddHurtValue(curNPC, curPlayer.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, 1) return ## ²É¼¯½áÊø´¦Àí # @param curPlayer # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def EndMissionCollect(curPlayer): #ÈÎÎñ²É¼¯ÀàNPC curNPC = GetActionNPCbyType(curPlayer, IPY_GameWorld.ntMissionCollect) if not curNPC: return npcID = curNPC.GetNPCID() #²É¼¯½áÊø ÕæÎª³É¹¦ if not ChNPC.OnCollectEnd(curPlayer, curNPC): return # ×Ô¶¨ÒåµÄ²É¼¯NPC if NPCCommon.DoCollectNPCOK(curPlayer, npcID): EventShell.EventRespons_MisCollectSuccess(curPlayer, curNPC) # ÏÈÖ±½ÓдÕâ±ß´¥·¢Ò»Ï£¬×Ô¶¨Òå²É¼¯µÄ²»ÔÙ´¦ÀíºóÃæµÄ´úÂë FBLogic.OnCollectOK(curPlayer, npcID, GameWorld.GetGameWorld().GetTick()) return EventShell.EventRespons_MisCollectSuccess(curPlayer, curNPC)