#!/usr/bin/python # -*- coding: GBK -*- #--------------------------------------------------------------------- # #--------------------------------------------------------------------- ##@package QuestRunnerValue # @todo: ÈÎÎñÖµÌæ»»,¶¨Òå # # @author: eggxp # @date 2010-4-26 # @version 1.4 # # @note: ÌṩÈÎÎñ¹«Ê½Ìæ»» #--------------------------------------------------------------------- # @change: "2013-04-17 20:35" Alee ɾ³ýÈÎÎñ1×Öµä # @change: "2013-05-03 17:30" Alee ɾ³ýÎÞÓÃ×ÖµäºÍÈÎÎñ1×Öµä # @change: "2014-08-26 11:00" hxp ÈÎÎñ״̬±ä¸üÐÞ¸ÄΪ²»Í¬²½¸ÃÈÎÎñÈ«²¿×ÖµäÐÅÏ¢ # @change: "2016-07-18 19:00" hxp ÉèÖÃÈÎÎñ״̬ͳһº¯ÊýÈë¿Ú #--------------------------------------------------------------------- #"""Version = 2016-07-18 19:00""" #--------------------------------------------------------------------- import IPY_GameWorld import ItemControler import random import EventShell import ChConfig import GameWorld import PlayerControl import QuestCommon import PyMapTable #--------------------------------------------------------------------- ##»ñÈ¡·þÎñÆ÷ÈÎÎñ״̬, State # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @return ·µ»ØÖµ, ÈÎÎñ״̬ # @remarks »ñÈ¡·þÎñÆ÷ÈÎÎñ״̬, State def GetState(curPlayer, curMission): return curMission.GetState() #--------------------------------------------------------------------- ##»ñÈ¡ÈÎÎñÊýÖµ # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param conditionName ½ÚµãÃû # @return ·µ»ØÖµ, ÈÎÎñÊýÖµ # @remarks »ñÈ¡ÈÎÎñÊýÖµ def GetValue(curPlayer, curMission, conditionName): if conditionName == "state": conditionName = "Get%s"%conditionName.title() if globals().has_key(conditionName): return globals()[conditionName](curPlayer, curMission) else: return curMission.GetProperty(conditionName) return #--------------------------------------------------------------------- ##¶ÔÁ½¸öÖµ½øÐбȽÏ, ÊÇ·ñ²»ÏàµÈ # @param leftValue AÖµ # @param rightValue BÖµ # @param diff ÈÝ´íÖµ # @return ·µ»ØÖµÕæ, abs(leftValue - rightValue) >= diff # @remarks ¶ÔÁ½¸öÖµ½øÐбȽÏ, ·µ»Ø½á¹û def __EvalDiffer(leftValue, rightValue, diff): if leftValue != rightValue: if diff == "": return True if diff != "" and abs(leftValue - rightValue) >= diff: return True return False #--------------------------------------------------------------------- ##¶ÔÁ½¸öÖµ½øÐбȽÏ, ×óÖµ´óÓÚÓÒÖµ # @param leftValue AÖµ # @param rightValue BÖµ # @param diff ÈÝ´íÖµ # @return ·µ»ØÖµÕæ, leftValue - rightValue >= diff # @remarks ¶ÔÁ½¸öÖµ½øÐбȽÏ, ·µ»Ø½á¹û def __EvalGreat(leftValue, rightValue, diff): if leftValue > rightValue: if diff == "": return True if diff != "" and leftValue - rightValue >= diff: return True return False #--------------------------------------------------------------------- ##¶ÔÁ½¸öÖµ½øÐбȽÏ, ×óֵСÓÚÓÒÖµ # @param leftValue AÖµ # @param rightValue BÖµ # @param diff ÈÝ´íÖµ # @return ·µ»ØÖµ, rightValue - leftValue >= diff # @remarks ¶ÔÁ½¸öÖµ½øÐбȽÏ, ·µ»Ø½á¹û def __EvalLess(leftValue, rightValue, diff): if leftValue < rightValue: #GameWorld.Log("%s - %s - %s"%(leftValue, rightValue, diff)) if diff == "": return True if diff != "" and rightValue - leftValue >= diff: return True return False #--------------------------------------------------------------------- ##¶ÔÁ½¸öÖµ½øÐбȽÏ, ×óÖµµÈÓÚÓÒÖµ # @param leftValue AÖµ # @param rightValue BÖµ # @param diff ÈÝ´íÖµ # @return ·µ»ØÖµ, leftValue == rightValue # @remarks ¶ÔÁ½¸öÖµ½øÐбȽÏ, ·µ»Ø½á¹û def __EvalEqual(leftValue, rightValue, diff): if leftValue == rightValue: return True return False #--------------------------------------------------------------------- ##¶ÔÁ½¸öÖµ½øÐбȽÏ, ×óÖµ´óÓÚµÈÓÚÓÒÖµ # @param leftValue AÖµ # @param rightValue BÖµ # @param diff ÈÝ´íÖµ # @return ·µ»ØÖµ, leftValue - rightValue >= diff: # @remarks ¶ÔÁ½¸öÖµ½øÐбȽÏ, ·µ»Ø½á¹û def __EvalGreat_Equal(leftValue, rightValue, diff): if leftValue >= rightValue: if diff == "": return True if diff != "" and leftValue - rightValue >= diff: return True return False #--------------------------------------------------------------------- ##¶ÔÁ½¸öÖµ½øÐбȽÏ, ×óֵСÓÚµÈÓÚÓÒÖµ # @param leftValue AÖµ # @param rightValue BÖµ # @param diff ÈÝ´íÖµ # @return ·µ»ØÖµ, rightValue - leftValue >= diff # @remarks ¶ÔÁ½¸öÖµ½øÐбȽÏ, ·µ»Ø½á¹û def __EvalLess_Equal(leftValue, rightValue, diff): if leftValue <= rightValue: if diff == "": return True if diff != "" and rightValue - leftValue >= diff: return True return False #--------------------------------------------------------------------- ## Ö´ÐÐ__Eval·µ»Ø½á¹û # @param evalName ʼþÃû # @param leftValue ×óÖµ # @param rightValue ÓÒÖµ # @param diff ÈÝ´íÖµ # @return ·µ»ØÖµ, __EvalÖ´ÐÐÂß¼­ # @remarks Ö´ÐÐ__Eval·µ»Ø½á¹û def GetEval(evalName, leftValue, rightValue, diff = ""): #GameWorld.Log("%s, %s, %s, diff = %s"%(str(leftValue), evalName, str(rightValue), diff)) evalName = "__Eval" + evalName.title() if globals().has_key(evalName): return globals()[evalName](leftValue, rightValue, diff) GameWorld.Log("Can't Find Eval Name = %s leftValue = %s rightValue = %s"%(evalName, leftValue, rightValue)) return #--------------------------------------------------------------------- ##ÉèÖÃÈÎÎñÖµ # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param conditionName ½ÚµãÃû # @param value Öµ # @return ·µ»ØÖµÎÞÒâÒå # @remarks ÉèÖÃÈÎÎñÖµ def Var_Set(curPlayer, curMission, conditionName, value): value = GameWorld.ToIntDef(value, 0) if conditionName == "state": QuestCommon.SetPlayerMissionState(curPlayer, curMission, value) EventShell.NotifyOneMission(curPlayer, curMission, isNotifyAll = False) curMission.SetProperty(conditionName,value) # elif conditionName == "mission": # curMission.SetMissionState(value) # EventShell.NotifyOneMission(curPlayer, curMission) else: #GameWorld.Log(str(value)) #GameWorld.Log(str(conditionName)) curMission.SetProperty(conditionName,value) #--------------------------------------------------------------------- ##Ìí¼ÓÈÎÎñÖµ # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param conditionName ½ÚµãÃû # @param value Öµ # @return ·µ»ØÖµÎÞÒâÒå # @remarks Ìí¼ÓÈÎÎñÖµ def Var_Add(curPlayer, curMission, conditionName, value): value = max(GameWorld.ToIntDef(value, 0), 1) curMission.AddProperty(conditionName,value) #--------------------------------------------------------------------- ##Ëæ»úÉèÖÃÈÎÎñÖµ # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param conditionName ½ÚµãÃû # @param value Öµ # @return ·µ»ØÖµÎÞÒâÒå # @remarks Ëæ»úÉèÖÃÈÎÎñÖµ def Var_Rand_Set(curPlayer, curMission, conditionName, value): valueList = value.split(",") getValueIndex = random.randint(0, len(valueList)-1) getValue = int(valueList[getValueIndex]) if conditionName == "state": QuestCommon.SetPlayerMissionState(curPlayer, curMission, getValue) else: #GameWorld.Log(str(getValue)) #GameWorld.Log(str(valueList)) curMission.SetProperty(conditionName,getValue) #--------------------------------------------------------------------- ##ÈÎÎñÊý¾Ýµ÷¶ÈÆ÷ # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param conditionType ½ÚµãÀàÐÍ # @param conditionName ½ÚµãÃû # @param value Öµ # @return ·µ»ØÖµÎÞÒâÒå # @remarks ÈÎÎñÊý¾Ýµ÷¶ÈÆ÷ def SetValue(curPlayer, curMission, conditionType, conditionName, value): conditionType = conditionType.title() callName = "Var_" + conditionType.title() if globals().has_key(callName): return globals()[callName](curPlayer, curMission, conditionName, value) return #--------------------------------------------------------------------- ##²éÕÒÍæ¼ÒÎïÆ·±³°üÊÇ·ñÓµÓÐÖ¸¶¨IDµÄÎïÆ· # @param curPlayer Íæ¼ÒʵÀý # @param id ÎïÆ·ID # @return ·µ»ØÖµ, ÊÇ·ñÓµÓÐ # @remarks ²éÕÒÍæ¼ÒÎïÆ·±³°üÊÇ·ñÓµÓÐÖ¸¶¨IDµÄÎïÆ· def Find_Item(curPlayer, id): #²éÑ¯Íæ¼ÒÊÇ·ñÓÐidÎïÆ· curItem = ItemControler.FindPlayerItemByItemID(curPlayer, IPY_GameWorld.rptItem, id) if curItem == None: return False return True #--------------------------------------------------------------------- ##²éѯÊÇ·ñ°üº¬(ÎïÆ·,¼¼ÄÜ...) # @param curPlayer Íæ¼ÒʵÀý # @param conditionName ½ÚµãÃû×Ö # @param id ²éÕÒID # @return ·µ»ØÖµ, ²éÕÒ½á¹û # @remarks ²éѯÊÇ·ñ°üº¬(ÎïÆ·,¼¼ÄÜ...) def GetFind(curPlayer, conditionName, id): conditionName = "Find_%s"%conditionName.title() if globals().has_key(conditionName): return globals()[conditionName](curPlayer, id) return #--------------------------------------------------------------------- ##»ñÈ¡Íæ¼ÒµÈ¼¶ # @param curPlayer Íæ¼ÒʵÀý # @return ·µ»ØÖµ, Íæ¼ÒµÈ¼¶, תÉú°´161Ëã # @remarks »ñÈ¡Íæ¼ÒµÈ¼¶ def __GetReincarnationLV(curPlayer): curReinLV = curPlayer.GetReincarnationLv() if curReinLV > 0: return 161 return curPlayer.GetLV() #--------------------------------------------------------------------- ##ÿÖܹ¤×ÊÔÚÏßʱ¼äÌæ»» # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks ÿÖܹ¤×ÊÔÚÏßʱ¼äÌæ»» def __GetTalkReplace_Last_Week_Time(curPlayer, curMission, type, parList): return curPlayer.GetLastWeekOnlineTime() #--------------------------------------------------------------------- ##Çý³ý¸´»îÐéÈõBUFF½ðÇ® # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks Çý³ý¸´»îÐéÈõBUFF½ðÇ® def __GetTalkReplace_Clear_Born_Buff_Money(curPlayer, curMission, type, parList): return 0 ##ŵØÒ½ÉúÏÔʾ½ðÇ® # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks ŵØÒ½ÉúÏÔʾ½ðÇ® def __GetTalkReplace_Health_Money(curPlayer, curMission, type, parList): return GetHealthLostMoney(curPlayer) ##£¨1-½ÇÉ«µ±Ç°ÑªÁ¿°Ù·Ö±È£©*3*½ÇÉ«µÈ¼¶^1.2+£¨1-½ÇÉ«µ±Ç°À¶Á¿°Ù·Ö±È£©*3*½ÇÉ«µÈ¼¶^1.2 ##»ñµÃŵØÒ½Éú»Ö¸´ËùºÄ½ð¶î # @param curPlayer Íæ¼ÒʵÀý # @return ½ð¶î # @remarks »ñµÃŵØÒ½Éú»Ö¸´ËùºÄ½ðÇ® def GetHealthLostMoney(curPlayer): curHP = curPlayer.GetHP() maxHP = curPlayer.GetMaxHP() curMP = curPlayer.GetMP() maxMP = curPlayer.GetMaxMP() lv = curPlayer.GetLV() return int(eval(ChConfig.Def_Helth_Money_Formula)) #--------------------------------------------------------------------- ##ÈÎÎñ½±Àø # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks ÈÎÎñ½±Àø def __GetTalkReplace_Mission_Reward(curPlayer, curMission, type, parList): curNode = QuestCommon.GetRewardNode(curPlayer, curMission) if curNode == None or curNode.IsEmpty(): return "" msgNode = curNode.FindChildNode("msg") return ReplaceNPCTalkText(curPlayer, curMission, msgNode.GetXML()) #--------------------------------------------------------------------- ##ÓéÀÖÈÎÎñÊ£Óàʱ¼ä # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks ÓéÀÖÈÎÎñÊ£Óàʱ¼ä def __GetTalkReplace_Game_Time(curPlayer, curMission, type, parList): #ÓéÀÖ×Üʱ¼ä720ÐÞ¸ÄΪ480·ÖÖÓ sumTime = 8*60 curTime = curMission.GetProperty("count")*30 time = (sumTime - curTime)*60 return time #--------------------------------------------------------------------- ##²îÖµ # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks ²îÖµ def __GetTalkReplace_Sub(curPlayer, curMission, type, parList): valueA = int(parList[0]) valueB = curMission.GetProperty(parList[1]) return valueA - valueB #--------------------------------------------------------------------- ##ÈÙÓþ×é¶ÓµÄÈÙÓþÏÔÊ¾Ìæ»» # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks ÈÙÓþ×é¶ÓµÄÈÙÓþÏÔÊ¾Ìæ»» def __GetTalkReplace_Team_Hornor(curPlayer, curMission, type, parList): return curPlayer.GetTeamHornor() #--------------------------------------------------------------------- ##ÈÙÓþ×é¶ÓµÄ½ðÇ®»»È¡ÏÔÊ¾Ìæ»» # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks ÈÙÓþ×é¶ÓµÄ½ðÇ®»»È¡ÏÔÊ¾Ìæ»» def __GetTalkReplace_Th_Exchange_Money(curPlayer, curMission, type, parList): return curPlayer.GetTeamHornor() / ChConfig.Def_TeamHornor_Money #--------------------------------------------------------------------- ##¹¦Ñ«Ìæ»» # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks ¹¦Ñ«Ìæ»» def __GetTalkReplace_Country_Hornor(curPlayer, curMission, type, parList): return curPlayer.GetCountryLastWeekHornor() #--------------------------------------------------------------------- ##¼Ò×幤×Ê£ºÉÏÖÜÀÛ»ý¼Ò×å»îÔ¾¶ÈÏÔʾ # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks ¼Ò×幤×Ê£ºÉÏÖÜÀÛ»ý¼Ò×å»îÔ¾¶ÈÏÔʾ def __GetTalkReplace_Family_Active_Value(curPlayer, curMission, type, parList): return curPlayer.GetLastWeekFamilyActiveValue() #--------------------------------------------------------------------- ##µã¾íÖµÏÔʾ # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type »õ±ÒÀàÐÍ # @param parList Áбí # @return ·µ»ØÖµ, Ìæ»»µÄÖµ # @remarks µã¾íÖµÏÔʾ def __GetTalkReplace_Coin_Value(curPlayer, curMission, type, parList): missionID = curMission.GetMissionID() return curMission.GetProperty(str(missionID)) #================================================================== #ÔËÐÐFunction_NPCµÄMenu Check, ¼ì²éͨ¹ý²ÅÏÔʾ #--------------------------------------------------------------------- ##ÊÇ·ñÓвֿ⠼ì²éͨ¹ý²ÅÏÔʾ # @param curPlayer Íæ¼ÒʵÀý # @return ·µ»ØÖµÕ棬¿ÉÒÔÏÔʾ # @remarks ÊÇ·ñÓвֿâ def Menu_Check_Have_Ware_House(curPlayer, checkArgs): #¼ì²éÊÇ·ñÓвֿâ if curPlayer.GetWarehouseLV() == 0: return False return True #--------------------------------------------------------------------- ##ÊÇ·ñÓÐÖ°Òµ ¼ì²éͨ¹ý²ÅÏÔʾ # @param curPlayer Íæ¼ÒʵÀý # @return ·µ»ØÖµÕ棬¿ÉÒÔÏÔʾ # @remarks ÊÇ·ñÓÐÖ°Òµ def Menu_Check_Have_Job(curPlayer, checkArgs): return True #--------------------------------------------------------------------- ##¼ì²éÊÇ·ñÓйú¼Ò ¼ì²éͨ¹ý²ÅÏÔʾ # @param curPlayer Íæ¼ÒʵÀý # @return ·µ»ØÖµÕ棬¿ÉÒÔÏÔʾ # @remarks ¼ì²éÊÇ·ñÓйú¼Ò def Menu_Check_Have_Country(curPlayer, checkArgs): #¼ì²éÊÇ·ñÓйú¼Ò if curPlayer.GetCountry() == 1: return False return True #--------------------------------------------------------------------- ##¼ì²éÊÇ·ñÓмÒ×å ¼ì²éͨ¹ý²ÅÏÔʾ # @param curPlayer Íæ¼ÒʵÀý # @return ·µ»ØÖµÕ棬¿ÉÒÔÏÔʾ # @remarks ¼ì²éÊÇ·ñÓмÒ×å def Menu_Check_Have_Family(curPlayer, checkArgs): if curPlayer.GetFamilyID() == 0: return False return True #--------------------------------------------------------------------- ##ÅжÏÍæ¼ÒÏß· # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param curConditionNode ½ÚµãÐÅÏ¢ # @return ·µ»ØÖµ, ÊÇ·ñÅжϳɹ¦ def Menu_Check_Player_Game_Line(curPlayer, checkArgs): argsList = checkArgs.split("|") if len(argsList) != 2: GameWorld.Log("Menu_Check_Player_Game_Line²ÎÊý´íÎó %s"%checkArgs) return False #¿ÉÄÜ»áÓм¸ÌõÏß lineMsg = argsList[0] # ϵͳÌáʾ lineStr = argsList[1] # Ïß·²ÎÊý #ÑéÖ¤ÊÇ·ñÔÚÆÚÍûÏß· if str(PlayerControl.GetPlayerLineID(curPlayer)) not in lineStr: PlayerControl.NotifyCode(curPlayer, lineMsg, [lineStr]) return False return True #--------------------------------------------------------------------- ## ÅжÏÍæ¼ÒµÈ¼¶ # @param curPlayer Íæ¼ÒʵÀý # @param curConditionNode ½ÚµãÐÅÏ¢ # @return ÊÇ·ñÅжϳɹ¦ def Menu_Check_Player_Lv(curPlayer, checkArgs): argsList = checkArgs.split("|") if len(argsList) != 2: GameWorld.Log("Menu_Check_Player_Lv ²ÎÊý´íÎó %s"%checkArgs) return False notifyMsg = argsList[0] # ϵͳÌáʾ tagLv = argsList[1] # ÆÚÍûµÈ¼¶ #ÑéÖ¤ÊÇ·ñΪÆÚÍûµÈ¼¶ÒÔÉÏ if curPlayer.GetLV() < int(tagLv): PlayerControl.NotifyCode(curPlayer, notifyMsg, [tagLv]) return False return True #--------------------------------------------------------------------- ##²Ëµ¥Ñ¡ÏîÑéÖ¤µ÷¶ÈÆ÷ ¼ì²éͨ¹ý²ÅÏÔʾ # @param curPlayer Íæ¼ÒʵÀý # @param menuStr Ñ¡Ïî # @return ·µ»ØÖµÕ棬¿ÉÒÔÏÔʾ # @remarks ²Ëµ¥Ñ¡ÏîÑéÖ¤µ÷¶ÈÆ÷ def RunMenuCheck(curPlayer, menuStr, checkArgs): if menuStr == "": return True callName = "Menu_Check_" + menuStr.title() if globals().has_key(callName): return globals()[callName](curPlayer, checkArgs) GameWorld.Log("Error : %s UnCalled"%callName , curPlayer.GetPlayerID()) return False #===================================================================== ##ÁúÃÅÆå¾ÖÈÎÎñ¸±±¾£©µÄ½±Àø # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @return ·µ»ØÖµÎÞÒâÒå # @remarks ÁúÃÅÆå¾ÖÈÎÎñ¸±±¾£©µÄ½±Àø def GiveSpecialMissionReward_13002(curPlayer, curMission): return #--------------------------------------------------------------------- ##ÌØÊâÈÎÎñ½±Àø # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param curActionNode ¼¤»î½Úµã # @return ·µ»ØÖµ, ÔÊÐí½á¹û # @remarks ÌØÊâÈÎÎñ½±Àø def GiveSpecialMissionReward(curPlayer, curMission, curActionNode): callName = "GiveSpecialMissionReward_%d"%curMission.GetMissionID() if globals().has_key(callName): return globals()[callName](curPlayer,curMission) GameWorld.Log("can't find call %s"%callName , curPlayer.GetPlayerID()) return False #--------------------------------------------------------------------- ##NPC¶Ô»°ÖеÄÌæ»» # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param type ÀàÐÍ # @return ·µ»ØÖµÌæ»»½á¹û # @remarks NPC¶Ô»°ÖеÄÌæ»» def GetNPCTalkReplaceValue(curPlayer, curMission, type): pars = type.split() type = pars[0] pars.pop(0) conditionType = type.title() callName = "__GetTalkReplace_" + conditionType.title() #GameWorld.Log('Func Call : %s'%str(callName)) if globals().has_key(callName): result = str(globals()[callName](curPlayer, curMission, type, pars)) #GameWorld.Log('Func Call Result: %s'%str(result)) return result if curMission == None: GameWorld.Log('###GetNPCTalkReplaceValue ÕÒ²»µ½Ìæ»», type = %s'%type) return '' return str(curMission.GetProperty(type)) #--------------------------------------------------------------------- ##NPC¶Ô»°ÖÐÎÄ×ÖÌæ»» # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @param text ÎÄ×Ö # @return ·µ»ØÖµÌæ»»½á¹û # @remarks NPC¶Ô»°ÖÐÎÄ×ÖÌæ»» def ReplaceNPCTalkText(curPlayer, curMission, text): parseList = QuestCommon.DealWithInPut(text) if len(parseList) == 0: return text #GameWorld.Log('%s--------------------'%text) for i in range(0,len(parseList)): parseList[i] = GetNPCTalkReplaceValue(curPlayer, curMission, parseList[i]) #GameWorld.Log('%s---------------'%parseList[i]) content = QuestCommon.DealWithReverse(text, parseList) #GameWorld.Log('%s---------------'%content) return content #---------------------------------------------------------------------