| #!/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 PlayerPrestigeSys  | 
| 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) # ÏÈÖ±½ÓдÕâ±ß´¥·¢Ò»Ï£¬×Ô¶¨Òå²É¼¯µÄ²»ÔÙ´¦ÀíºóÃæµÄ´úÂë  | 
|           | 
|         return  | 
|       | 
|     EventShell.EventRespons_MisCollectSuccess(curPlayer, curNPC)  | 
|      |