#!/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
|
|
|