#!/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 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("GetActionNPCbyType -> ûÓÐÄ¿±ê" , curPlayer.GetPlayerID()) return if tagObj.GetGameObjType() != IPY_GameWorld.gotNPC: #̸»°¶ÔÏó²»¶Ô GameWorld.Log("GetActionNPCbyType -> ̸»°¶ÔÏó²»¶Ô" , curPlayer.GetPlayerID()) return curNPC = GameWorld.GetNPCManager().GetNPCByIndex(tagObj.GetIndex()) if curNPC == None: #ûÓÐÕâ¸öNPC GameWorld.Log("GetActionNPCbyType ->ûÓÐÕâ¸ö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.OnCollectNPCBegin(curPlayer, curNPC, tick): 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, tick): #ÈÎÎñ²É¼¯ÀàNPC curNPC = GetActionNPCbyType(curPlayer, IPY_GameWorld.ntMissionCollect) if not curNPC: return npcID = curNPC.GetNPCID() #²É¼¯½áÊø ÕæÎª³É¹¦ if not ChNPC.OnCollectEnd(curPlayer, curNPC): return # ×Ô¶¨ÒåµÄ²É¼¯NPC NPCCommon.DoCollectNPCOK(curPlayer, npcID, tick) EventShell.EventRespons_MisCollectSuccess(curPlayer, curNPC) return