#!/usr/bin/python # -*- coding: GBK -*- #--------------------------------------------------------------------- # #--------------------------------------------------------------------- ##@package EventShell # @todo: ʼþ¹ÜÀíÆ÷ # # @author: eggxp # @date 2010-4-20 # @version 6.8 # # @note: ¹ÜÀíËùÓÐNPCʼþ´¥·¢½Ó¿Ú #--------------------------------------------------------------------- # @change: "2013-04-15 11:00" wdb ½«ComparePlayerLV_UseItem¸üÃûΪCheckItemUseLV£¬·ÅÈëItemControler # @change: "2013-04-18 17:00" wdb ÎïÆ·ÑÕɫʹÓÃÐÞ¸Ä # @change: "2013-05-03 17:00" wdb npcÉ̵êÐÞ¸Ä # @change: "2013-05-07 15:30" wdb ²Ö¿âÐÞ¸Ä # @change: "2013-05-20 11:00" wdb Ôö¼Ó¸±±¾É¨µ´ # @change: "2013-05-29 11:55" Alee ÐÂÔöɱµÈ¼¶·¶Î§µÄÈÎÎñÂß¼­(дËÀ) # @change: "2013-05-30 10:30" wdb ×°±¸±¦Ê¯ÏâǶµ÷Õû # @change: "2013-06-06 21:30" Alee Õ½¶·×´Ì¬²»¿É½øÈëÈÎÎñ¶Ô»°£¬µ¼Ö¶ÔÏó±ä¸üµÈÎÊÌâ # @change: "2013-07-08 15:00" Alee Ìí¼ÓÆÕͨǿ»¯´¥·¢ÈÎÎñ # @change: "2013-07-09 15:30" Alee ÒѽÓÈÎÎñÉý¼¶´¥·¢Âß¼­ # @change: "2013-07-19 20:00" Alee Ìí¼Ó»Ø¹º # @change: "2013-07-26 17:00" Alee VIP´ò¿ªÔ¶³Ì²Ö¿â # @change: "2013-09-10 20:10" Alee ϵͳÌáʾ³åÍ» # @change: "2013-09-18 17:00" Alee Í˳öËø¶¨Í˳ö½»Ò× # @change: "2013-09-23 19:30" Alee ºìÃûÌáʾÐÞ¸Ä # @change: "2013-11-15 20:20" hxp ¹Ø±Õ07 3A¹ºÂò±³°ü·â°ü¹¦ÄÜ£¬Ôö¼Ó±³°ü³É¹¦ÏµÍ³Ìáʾ # @change: "2013-12-12 14:30" hxp Ôö¼Ó×êʯ¹ºÂò±³°ü¼Æ·Ñµãʼþͬ²½ # @change: "2013-12-13 12:20" hxp ÐÞ¸ÄÊ×µÇÎïÆ·°ó¶¨ÉèÖà # @change: "2013-12-27 16:00" Alee ɾ³ý¶àÓà´úÂë # @change: "2014-01-08 13:20" hxp ÐÞ¸Ä×êʯ¹ºÂò±³°ü»¨·Ñ×êʯ¼Æ·Ñµãʼþͬ²½£¬ÔÚPayMoneyÄڲ㴦Àí # @change: "2014-02-17 17:30" hxp Ôö¼Ó¹ºÂò·ûÎı³°ü¸ñ×Ó # @change: "2014-03-18 19:00" hxp Ê×µÇÔùËÍÎïÆ·¸ÄΪÅäÖÃÎļþÅäÖà # @change: "2014-03-27 19:30" hxp Ôö¼Ó×øÆï»»×° # @change: "2014-04-04 20:00" hxp Ôö¼Ó×øÆï»»¼¼ÄÜ£¬¹Ù¾ô¼¼ÄÜ # @change: "2014-04-07 12:30" hxp ³á°òÏà¹Ø±³°üÎïÆ·½»»» # @change: "2014-04-17 20:30" hxp ÉñÆ÷ʱװ»»×° # @change: "2014-04-22 17:50" xcc Ôö¼ÓÔÚÏßʱ¼äÃâ·Ñ¿ªÆô±³°ü¹¦ÄÜ # @change: "2014-04-26 19:30" hxp ÁìµØÕ½ÇÅ # @change: "2014-04-28 14:00" Alee ɾ³ý²âÊÔ×ʽð # @change: "2014-05-23 14:30" xcc Ôö¼Óħ·½±³°üÎïÆ··ÅÈë½ÇÉ«±³°üµÄ½Ó¿Ú # @change: "2014-05-23 15:40" xcc ÐÞ¸´È«²¿·ÅÈë·ÅÈëʧ°ÜµÄbug # @change: "2014-06-06 17:00" hxp Ôö¼Ó¿ìËÙÍê³ÉÈÎÎñʼþ # @change: "2014-06-23 14:30" Alee ¹Ø±ÕÊä³ö # @change: "2014-07-24 21:30" hxp Ôö¼ÓÉèÖÃÅÜ»·ÈÎÎñÐǼ¶£¬Ò»¼üÍê³ÉËùÓÐÅÜ»·ÈÎÎñ # @change: "2014-07-31 21:30" hxp È¡ÏûºìÃû²»ÄÜÓëNPC¶Ô»°ÏÞÖÆ # @change: "2014-08-26 11:00" hxp NotifyOneMissionÔö¼Ó²ÎÊýÑ¡ÔñÊÇ·ñͬ²½¸ÃÈÎÎñÈ«²¿×ÖµäÐÅÏ¢ # @change: "2014-12-25 16:10" ljd ͬ²½ÉÏÒ»´Î±³°ü¿ª¸ñʱ¼ä # @change: "2015-01-10 23:00" hxp ²Ö¿â¹ºÂòÌØÊâ´¦Àí # @change: "2015-01-14 00:30" hxp Ôö¼Óʼþ»ã±¨ # @change: "2015-01-22 15:00" hxp ¾«¼òlogÊä³ö # @change: "2015-03-20 15:00" hxp Ôö¼ÓÊÕ»ñ¹ûʵ£¬¸±±¾²É¼¯Ê¼þ£»Ôö¼Ó½øÈë¼ÒÔ°´«ËÍÃÅÈë¿Ú # @change: "2015-03-23 11:00" Alee ¼Ò×åÉý¼¶Ê¼þ¸ÄΪ´¥·¢ËùÓнڵã # @change: "2015-03-28 11:40" ljd Ôö¼ÓÈÎÎñ°ëСʱ´¥·¢Ê¼þ×¢²á¡¢¹ºÂòÈÕ³£ÈÎÎñÉÏÏÞ # @change: "2015-04-09 15:00" hxp ¸±±¾ÖÐÎÞ·¨É¾³ýÈÎÎñÌáʾÐÞ¸Ä # @change: "2015-06-15 23:00" hxp ʱװ»»×° # @change: "2015-07-13 14:00" hxp Á÷ÏòÔö¼ÓÍæ¼Ò²ÎÊý # @change: "2015-07-16 15:00" zqx Ôö¼ÓµÀ¾ß¿ªÆô±³°ü¸ñ×Ó # @change: "2015-08-10 14:00" zqx Ð޸Ŀª¸ñ¿ÛµÀ¾ßÂß¼­ # @change: "2015-12-08 18:00" hxp Ôö¼Ó²»ÊÇͨ¹ýNPC¶Ô»°½çÃæ½øÈëµØÍ¼IDÅäÖà # @change: "2016-05-17 18:00" hxp Ôö¼Ó·ÇNPC¶Ô»°Íê³ÉÈÎÎñÁìÈ¡½±Àø # @change: "2016-07-27 10:40" xdh Ê״εǼ¼¤»îÅå´÷³ÆºÅ # @change: "2016-10-28 10:40" xdh ×øÆï¡¢³á°ò¡¢³È×°ÊýÁ¿´¥·¢ÈÎÎñ # @change: "2016-12-26 21:00" xdh ¾ôλÉý½×¡¢²¿Î»Ç¿»¯ÐǼ¶´¥·¢ÈÎÎñ #--------------------------------------------------------------------- #"""Version = 2016-12-26 21:00""" #--------------------------------------------------------------------- import IPY_GameWorld import GameWorld import EventSrc import ChConfig import QuestManager import QuestRunner import PlayerControl import FunctionNPCCommon import FBLogic import ItemControler import ItemCommon import QuestCommon import copy import GameLogInfo import time import GameServerRefresh import PlayerMissionCollect import ReadChConfig import PlayerFamily import ShareDefine import Operate_PlayerBuyZhenQi import Func_6 import DataRecordPack import PlayerCoin import PlayerTrade import PlayerExpandPackCfgMgr import EventReport import PlayerCoat import PlayerGatherSoul #import PlayerArrestTask import PlayerRune import IpyGameDataPY import FormulaControl import GameFuncComm import ChPyNetSendPack import NetPackCommon import NPCCommon import PlayerVip import PlayerGoldInvest import GameObj import math import random #--------------------------------------------------------------------- #ÿÈÕÈÎÎñ×îС´¥·¢µÈ¼¶ Day_Event_Trig_Min_LV = 21 #ÈÎÎñ´¥·¢Ä£Ê½ Def_RunQuestType_Normal = 1 #ÆÕͨ #Def_RunQuestType_NoAnswer = 2 #²»ÐèÒª»ØÓ¦(LVUp) Def_RunQuestType_RunAll = 3 #ÔËÐÐËùÓÐ(OnDay), ÿÈÕÅж¨(²»ÄÜÖ»ÔÚonLVUPµÄʱºòÅж¨, ÒòÎªÍæ¼Ò¿ÉÄÜÅѹú, Åѹúºó, Èç¹ûÖ»ÔÚonLVUPµÄʱºòд, ÄÇôÅѹúºó½Ó²»µ½Ã¿ÈÕÈÎÎñ) Def_RunQuest_ChangeMap_Tick = 1000 Def_Warehouse_FuncName = "Func_6" # ²Ö¿âÏà¹Ø¹¦ÄÜpyÃû ############################################################ #def QuestRunner_GetFunc(name): # return GameWorld.GetExecFunc(EventSrc, "QuestRunner.%s"%name) #--------------------------------------------------------------------- #µ¼ÈëËùÓеÄNPCAI GameWorld.ImportAll("Script\\Event\\" , "EventSrc") GameWorld.ImportAll("Script\\Event\\" , "") #--------------------------------------------------------------------- ##C++´¥·¢·â°üÖØ¶ÁËùÓÐʼþ #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks C++´¥·¢·â°üÖØ¶ÁËùÓÐʼþ def ReloadEvent(tick): scriptPath = ChConfig.GetAppPath() + "Script\\Event\\EventSrc" GameWorld.ReloadScript(scriptPath, "EventSrc") scriptPath = ChConfig.GetAppPath() + "Script\\Event" GameWorld.ReloadScript(scriptPath, "") #ÖØÐ¶Áȡʼþ QuestManager.ReloadQuests(tick) DoReloadRefresh() return #--------------------------------------------------------------------- #=============================================================================== # //08 01 ʼþ´¥·¢#tagCNPCTalk # tagCNPCTalk * GettagCNPCTalk(); # # class IPY_CNPCTalk # { # public: # # int GetNPCID(); # # int GetPosX(); # # int GetPosY(); # }; #=============================================================================== ##¿Í»§¶Ë//08 01·â°üÏìÓ¦ ʼþ´¥·¢#tagCNPCTalk #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë//08 01·â°üÏìÓ¦ ʼþ´¥·¢#tagCNPCTalk def BeginEvent(index, tick): GameWorld.GetPsycoFunc(__Func_BeginEvent)(index, tick) return ##¿Í»§¶Ë//08 01·â°üÏìÓ¦ ʼþ´¥·¢#tagCNPCTalk #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë//08 01·â°üÏìÓ¦ ʼþ´¥·¢#tagCNPCTalk def __Func_BeginEvent(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) if curPlayer.GetPlayerAction() != IPY_GameWorld.paNull: #Íæ¼Ò״̬²»ÊÇ¿ÕÏÐ״̬ return #·À³ÁÃÔ if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_Wallow_LV) > ChConfig.Def_GameWallow_LV_First: PlayerControl.NotifyCode(curPlayer, "AvoidSink09") return #=============================================================================== # #ÒÆ¶¯Öв»Ö´Ðд˲Ù×÷ # if curPlayer.IsMoving(): # PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_0") # return #=============================================================================== if tick - curPlayer.GetResetWorldPosAskTick() < Def_RunQuest_ChangeMap_Tick: #[bug]2009.4.25 #1. Íæ¼Ò½øÈë·ÙÌìÈܶ´(ÈÎÎñ״̬ÉèÖÃΪ2) #2. ÔڵȴýÇл»µØÍ¼»ØÓ¦Ö®Ç°, ÆÕͨÁÄÌì(ÈÎÎñ״̬ÉèÖÃΪ1) #3. ½øÈëµØÍ¼ÁË #ÕâÑù¾Í¿ÉÒÔË¢·ÙÌìÈܶ´ GameWorld.GodLog(curPlayer, "BeginEvent, ResetWorldPosAskTick") return #Íæ¼Ò´¥·¢Ê¼þ sendPack = IPY_GameWorld.IPY_CNPCTalk() sendPack_EventNPCID = sendPack.GetNPCID() sendPack_NPCPosX = sendPack.GetPosX() sendPack_NPCPosY = sendPack.GetPosY() if sendPack_EventNPCID == 0: #Ŀǰ²»´¦ÀíµØµã´¥·¢Ààʼþ return #2010/5/6 ÒÆ¶¯ÖнÓÊܿͻ§¶Ë·â°ü(Òò¿Í»§¶ËÒÆ³ýStopmove), УÑéÎó²î, ÀÛ¼Ó #=========================================================================== # if not PlayerControl.PlayerRefreshPos(curPlayer, curPlayer, sendPack_NPCPosX, sendPack_NPCPosY): # #Íæ¼Òµ±Ç°Î»ÖÃË¢ÐÂʧ°Ü # #GameWorld.Log(' CheckUseSkill RefreshPosErr packPos = ( %s, %s ), playerPos = ( %s, %s )'%( posX, posY, curPlayer.GetPosX(), curPlayer.GetPosY() ), curPlayerID ) # return #=========================================================================== #Ö´ÐжԻ°Âß¼­ EventLogic(curPlayer, sendPack_EventNPCID, tick) return #// C1 06 ¿ç·þNPC¶Ô»° #tagCMCrossNPCTalk # #struct tagCMCrossNPCTalk #{ # tagHead Head; # WORD ObjID; # DWORD NPCID; # WORD PosX; # WORD PosY; #}; def OnCrossNPCTalk(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) objID = clientData.ObjID npcID = clientData.NPCID #posX = clientData.PosX #posY = clientData.PosY if GameWorld.IsCrossServer(): return lastTick = curPlayer.GetDictByKey("CrossNPCTalkTick") if tick - lastTick < 2000: return curPlayer.SetDict("CrossNPCTalkTick", tick) npcData = GameWorld.GetGameData().FindNPCDataByID(npcID) if not npcData: GameWorld.ErrLog("¿ç·þNPCID²»´æÔÚ! npcID=%s" % npcID) return # ĿǰÔÝÖ§³Ö¿ç·þ²É¼¯ if npcData.GetType() not in [IPY_GameWorld.ntCollection, IPY_GameWorld.ntMissionCollect]: return collectNPCIpyData = IpyGameDataPY.GetIpyGameData("CollectNPC", npcID) if collectNPCIpyData: if not NPCCommon.CheckCanCollectByNPCID(curPlayer, npcID, collectNPCIpyData): return msgDict = {"PlayerID":curPlayer.GetPlayerID(), "ObjID":objID, "NPCID":npcID} GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_CollectNPC, msgDict) return def ClientServerMsg_CollectNPC(curPlayer, msgData, serverGroupID, tick): ## ÊÕµ½×Ó·þͬ²½µÄ²É¼¯NPC objID = msgData["ObjID"] npcID = msgData["NPCID"] curNPC = GameWorld.FindNPCByID(objID) if not curNPC: return if npcID != curNPC.GetNPCID(): GameWorld.ErrLog("²É¼¯¿ç·þNPC´íÎó!npcID=%s != curNPCID=%s" % (npcID, curNPC.GetNPCID())) return EventLogic(curPlayer, objID, tick) return ##¿Í»§¶Ë//08 01·â°üÏìÓ¦ ×Ô¶¨Ò庯Êý: ʼþ´¦Àí #@param curPlayer µ±Ç°Íæ¼Ò #@param eventNPCID ʼþNPCID #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë//08 01·â°üÏìÓ¦ ×Ô¶¨Ò庯Êý: ʼþ´¦Àí def EventLogic(curPlayer, eventNPCID, tick): #¼ì²éÍæ¼ÒºÍNPCµÄ¾àÀëÔÚ²»ÔÚ¶Ô»°·¶Î§ÄÚ curNPC = GameWorld.GetNPCManager().FindNPCByID(eventNPCID) #ûÓÐÕâ¸öNPC if curNPC == None : return #¿É½øÈëʼþÀàÐÍNPC eventNPCType = [IPY_GameWorld.ntFunctionNPC, IPY_GameWorld.ntCollection, IPY_GameWorld.ntMissionCollect] if curNPC.GetType() not in eventNPCType: GameWorld.Log("²»ÊǶԻ°NPC, ²»ÄܶԻ° %d"%(curNPC.GetType()) , curPlayer.GetPlayerID()) return dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), curNPC.GetPosX(), curNPC.GetPosY()) if dist > ChConfig.Def_EventDist: #Íæ¼Ò¾àÀë¹ýÔ¶, ²»ÄÜ´¥·¢ curPlayer.ResetPos(curPlayer.GetPosX(), curPlayer.GetPosY()) return if curNPC.GetType() == IPY_GameWorld.ntCollection: #¼Ò×åÕ½µÄËþºÍÆå, ¶Ô»°»á¿ªÊ¼¶Á½ø¶ÈÌõ __BeginCollect(curPlayer, curNPC, tick) return #ÈÎÎñ²É¼¯NPC if curNPC.GetType() == IPY_GameWorld.ntMissionCollect: PlayerMissionCollect.QueryMissionCollect(curPlayer, curNPC, tick) return #Çå¿ÕÍæ¼Ò´«Ë͵ØÍ¼´ø×ßµÄNPC #ÒòΪ¸±±¾ÈÎÎñÖÐ, Èç¹û¸±±¾ÈËÂú²»Äܽø, »á´«ËÍÒ»´Î¶àÒ»Ö»NPC... curPlayer.ClearChangeMapTakeCreateNPC() #ÔÚXML±íÖÐÕÒµ½Õâ¸öNPCµÄ½Å±¾ EventRespons_OnVisit(curPlayer, curNPC) return ##¿Í»§¶Ë//08 01·â°üÏìÓ¦ ×Ô¶¨Ò庯Êý: ¿ªÊ¼¼Ò×åÕ½ÖеÄËþºÍÆÚÀ­½ø¶ÈÌõ #@param curPlayer µ±Ç°Íæ¼Ò #@param curNPC ʼþNPCʵÀý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë//08 01·â°üÏìÓ¦ ×Ô¶¨Ò庯Êý: ¿ªÊ¼¼Ò×åÕ½ÖеÄËþºÍÆÚÀ­½ø¶ÈÌõ def __BeginCollect(curPlayer, curNPC, tick): result = FBLogic.OnCanCollect(curPlayer, curNPC, tick) if not result: #²»¿É²É¼¯ return curPlayer.SetActionObj(curNPC) PlayerControl.ChangePlayerAction(curPlayer, IPY_GameWorld.paNull) if NPCCommon.OnCollectNPCBegin(curPlayer, curNPC, tick): return prepareTime = FBLogic.GetFBPrepareTime(curPlayer, curNPC) collTimeReduceRate = PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_CollTimeReduceRate) if collTimeReduceRate: prepareTime = max(1000, int(prepareTime * (ShareDefine.Def_MaxRateValue - collTimeReduceRate) / float(ShareDefine.Def_MaxRateValue))) PlayerControl.Sync_PrepareBegin(curPlayer, prepareTime, IPY_GameWorld.pstCollecting, prepareID = curNPC.GetID()) ##Ìí¼ÓÕâ¸öNPCµÄÉËѪÁÐ±í£¬ÓÃÓÚ¶à¸öÈËÒ»ÆðÇÀÆå£¬Ò»È˳ɹ¦ºó£¬ÆäËûÈË´ò¶Ï curNPC_HurtList = curNPC.GetPlayerHurtList() import AttackCommon AttackCommon.AddHurtValue(curNPC, curPlayer.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, 1) return #--------------------------------------------------------------------- #=============================================================================== # //08 02 ʼþ»ØÓ¦#tagCNPCAnswer # tagCNPCAnswer * GettagCNPCAnswer(); # # class IPY_CNPCAnswer # { # public: # # int GetAnswerLen(); # //size = AnswerLen # char * GetAnswer(); # }; #=============================================================================== ##¿Í»§¶Ë//08 02·â°üÏìÓ¦ ʼþ»ØÓ¦#tagCNPCAnswer #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë//08 02·â°üÏìÓ¦ ʼþ»ØÓ¦#tagCNPCAnswer def EventAnswer(index, tick): GameWorld.GetPsycoFunc(__Func_EventAnswer)(index, tick) return ##¿Í»§¶Ë//08 02·â°üÏìÓ¦ ʼþ»ØÓ¦#tagCNPCAnswer #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë//08 02·â°üÏìÓ¦ ʼþ»ØÓ¦#tagCNPCAnswer def __Func_EventAnswer(index, tick): timeClock = time.clock() curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # if curPlayer.GetPlayerAction() != IPY_GameWorld.paEvent: # #Íæ¼Ò²»ÔÚʼþÖÐ,·µ»Ø # GameWorld.Log("EventAnswer, Íæ¼Ò²»ÔÚʼþÖÐ", curPlayer.GetID()) # return if tick - curPlayer.GetResetWorldPosAskTick() < Def_RunQuest_ChangeMap_Tick: #[bug]2009.4.25 #1. Íæ¼Ò½øÈë·ÙÌìÈܶ´(ÈÎÎñ״̬ÉèÖÃΪ2) #2. ÔڵȴýÇл»µØÍ¼»ØÓ¦Ö®Ç°, ÆÕͨÁÄÌì(ÈÎÎñ״̬ÉèÖÃΪ1) #3. ½øÈëµØÍ¼ÁË #ÕâÑù¾Í¿ÉÒÔË¢·ÙÌìÈܶ´ GameWorld.GodLog(curPlayer, "EventAnswer, ResetWorldPosAskTick") return sendPack = IPY_GameWorld.IPY_CNPCAnswer() answer = sendPack.GetAnswer() if answer == "": #Íæ¼Ò»Ø´ðΪ¿Õ GameWorld.Log("Íæ¼Ò»Ø´ðΪ¿Õ" , curPlayer.GetPlayerID()) return answerBase = copy.deepcopy(answer) answer = answer.lower() if answer == "cancel": #GameWorld.Log("Íæ¼ÒÇ¿ÖÆ½áÊøÊ¼þ" , curPlayer.GetPlayerID()) DoExitEvent(curPlayer) return funcHead = "fc_" xmlFuncHead = "evt_" curNPC = QuestRunner.GetPlayerTalkNPC(curPlayer) #ºìÃûÍæ¼ÒÎÞ·¨½Ó,½»ÈÎÎñ # if curPlayer.GetPlayerNameColor() == IPY_GameWorld.pncRed and __Check_FunctionNPC_Talk_RedName(curNPC): # PlayerControl.NotifyCode(curPlayer, "PK_lhs_161795") # #½áÊøÊ¼þ # DoExitEvent(curPlayer) # return if curNPC != None and not GameWorld.IsSameCountry(curPlayer, curNPC) : #PK_lhs_372238 ÎÒ²»»á¸øµÐÈËÌṩÈκΰïÖúµÄ! #²»Í¬¹ú¼®, ²»ÄܺÍNPC¶Ô»° #PlayerControl.NotifyCode(curPlayer, "PK_lhs_372238") DoExitEvent(curPlayer) return GameWorld.DebugLog("%s(%d) ·ÃÎÊNPC»ØÓ¦: %s"%(curPlayer.GetName(), curPlayer.GetID(), answerBase) , curPlayer.GetPlayerID()) if answer.find(funcHead) == 0: #ÊÇʼþÏìÓ¦ if curNPC == None: #ûÓÐÕâ¸öNPC GameWorld.Log("funcHeadûÓÐÕâ¸öNPC" , curPlayer.GetPlayerID()) return #µÃµ½Íæ¼ÒµÄ¶ÔÏó funcAnswer = answerBase.replace(funcHead, "") responseType="Func_%d"%curNPC.GetFunctionType() callFunc = GameWorld.GetExecFunc(EventSrc, "%s.%s"%(responseType, funcAnswer)) if callFunc == None: #º¯Êýµ÷Óò»¿ÉʹÓà GameWorld.Log("»ØÓ¦Ê¼þÏìÓ¦ %s %s²»¿ÉʹÓÃ"%(responseType, funcAnswer) , curPlayer.GetPlayerID()) return callFunc(curPlayer, tick) return elif answer.find(xmlFuncHead) == 0: #ÔËÐÐFuncĿ¼ÏµÄXMLÎļþ #ʼþ¶Ô»°(¿ªÍ¨²Ö¿â, ¹ºÂòæô³µÂíÆ¥Ê¹ÓÃʱ¼äµÈ funcAnswer = answer.replace(xmlFuncHead, "") QuestsEvent = QuestManager.GetAllQuestsEvents() curNPC = QuestRunner.GetPlayerTalkNPC(curPlayer) if curNPC == None: #ûÓÐÕâ¸öNPC GameWorld.Log("GetPlayerTalkNPCûÓÐÕâ¸öNPC" , curPlayer.GetPlayerID()) return #µÃµ½NPCµÄTypeID funcType = curNPC.GetFunctionType() key = ("function_npc", "%d_%s.xml"%(funcType, funcAnswer)) if QuestsEvent.has_key(key): for event in QuestsEvent[key]: nodeList = event[1].GetXMLEventLoader().GetNodeList() #ÔËÐÐfunction_npcĿ¼ÏµÄ[funcType].xmlÎļþ if QuestRunner.RunFunctionQuest(curPlayer, nodeList) != True: GameWorld.Log("ÈÎÎñʼþ¶Ô»°Ö´ÐÐʧ°Ü" , curPlayer.GetPlayerID()) DoExitEvent(curPlayer) else: GameWorld.Log("¹þÏ¸ÌØËøÂðÀû(¾«Áé×åÓï) %s"%(str(key)) , curPlayer.GetPlayerID()) DoExitEvent(curPlayer) return else: #ÆÕͨ¶Ô»° QuestRunner.RunPlayerAnswer(curPlayer, answer) #¼Ç¼ÈÎÎñÏà¹ØÐÅÏ¢ GameLogInfo.LogInfo_MissionTime(timeClock) GameLogInfo.LogInfo_MissionCount(1) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷×°±¸ÆÕͨǿ»¯Ê¹ÓôÎÊý #@param curPlayer Íæ¼ÒʵÀý #@param curNPC NPCʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnKillById »÷ɱָ¶¨IDµÄ¹ÖÎï def EventRespons_OnEquipNormalPlus(curPlayer, itemID): RunQuestEvent(curPlayer, "on_equip_normal_plus", itemID, Def_RunQuestType_Normal) return ## ÈÎÎñ´¥·¢Æ÷_OnVisit ºÍNPC¶Ô»° #@param curPlayer Íæ¼ÒʵÀý #@param curNPC NPCʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnVisit ºÍNPC¶Ô»° def EventRespons_OnVisit(curPlayer, curNPC): #GameWorld.Log("·ÃÎÊNPCËø×¡" , curPlayer.GetPlayerID()) curPlayer.BeginEvent() curPlayer.SetActionObj(curNPC) #µÃµ½NPCµÄTypeID npcTypeID = curNPC.GetNPCID() #GameWorld.Log("%s(%d) ·ÃÎÊNPC %d"%(curPlayer.GetName(), curPlayer.GetID(),npcTypeID) , curPlayer.GetPlayerID()) if QuestRunner.RunQuestOnVisit(curPlayer, npcTypeID) != True: GameWorld.Log("%sÈÎÎñ¶Ô»°Ö´ÐÐʧ°Ü"%(npcTypeID) , curPlayer.GetPlayerID()) DoExitEvent(curPlayer) return #--------------------------------------------------------------------- ##ÈÎÎñ_ÿÈÕÈÎÎñ //0.xml, º¯Êýµ÷Óà QuestRunner.RunQuest Ö´ÐÐÂß¼­ #@param curPlayer Íæ¼ÒʵÀý #@param eventName ʼþ×ÖµäÃû #@param trigID ʼþ×ÖµäÖµ #@param eventDictName Ëæ»úʼþ×ÖµäÃû£¬´¢´æID #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ_ÿÈÕÈÎÎñ //0.xml, º¯Êýµ÷Óà QuestRunner.RunQuest Ö´ÐÐÂß¼­ def RunDayEvent(curPlayer, eventName, trigID, eventDictName): QuestsEvent = QuestManager.GetAllQuestsEvents() key = (eventName, "0.xml") #ÒòΪÿÈÕÈÎÎñɱ¹ÖËæ»ú, ËùÒÔÖ»ÓÐÓÃ0.xmlÀ´¶ÁÈ¡ if not QuestsEvent.has_key(key) : return curQuestList = QuestsEvent[key] if len(curQuestList) == 0: GameWorld.Log("%s ûÓд¥·¢!"%str(key) , curPlayer.GetPlayerID()) return for event in curQuestList: questID = event[0] curMission = curPlayer.FindMission(questID) if curMission == None: continue killRangeName = "killrangenpclv" #Ö¸¶¨NPCµÈ¼¶·¶Î§ killRangeLV = curMission.GetProperty(killRangeName) #´ÓÒ»¸ö·¶Î§Ëæ»ú³öÒ»¸öÖ¸¶¨Öµ eventID = curMission.GetProperty(eventDictName) #ɱÈÎÒâ¹Ö anyKill = curMission.GetProperty(QuestCommon.Def_Day_Event_Any_Kill) #·ûºÏÒ»Ñù¼´¿ÉÖ´ÐÐ if anyKill == 0 and eventID != trigID and killRangeLV == 0: continue if killRangeLV > 0: curMission.SetProperty(killRangeName, trigID, False) QuestRunner.RunQuest(curPlayer, questID, event[1].GetXMLEventLoader().GetNodeList()) #--------------------------------------------------------------------- ##ÈÎÎñ_ÈÎÎñʼþ #@param curPlayer Íæ¼ÒʵÀý #@param eventName ʼþ×ÖµäÃû #@param fileID ʼþXMLÎļþÃû #@param runType Ö´Ðз½Ê½ Def_RunQuestType_ #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ_ÈÎÎñʼþ def RunQuestEvent(curPlayer, eventName, fileID, runType): eventName = eventName.lower() QuestsEvent = QuestManager.GetAllQuestsEvents() key = (eventName, "%s.xml"%str(fileID)) if not QuestsEvent.has_key(key) : #GameWorld.DebugLog("RunQuestEvent ûÓÐkey = %s !" % str(key), curPlayer.GetPlayerID()) return False curQuestList = QuestsEvent[key] if len(curQuestList) == 0: GameWorld.Log("%s ûÓд¥·¢!"%str(key) , curPlayer.GetPlayerID()) return for event in curQuestList: questID = event[0] #δ¼¤»îµÄÈÎÎñÒ²ÐèÒª´¥·¢, Ô­Òò: ÈÎÎñδ¼¤»î, µ«ÊÇ»¹Êǻᱣ´æÔÚÍæ¼ÒÉíÉÏ #Ô­Òò: Íæ¼ÒÒ»ÌìÖ»ÄÜÁìȡһ´Î»î¶¯, ²»¹Ü»î¶¯¿ªÆô¶àÉÙ´Î #ËùÒÔÒªÈ÷Ǽ¤»î״̬´¥·¢onday #2009.2.15 ¸üÐÂ, δ¼¤»îµÄ»î¶¯²»»á´¥·¢, ²»¿¼Âǻɾ³ý curQuestData = QuestManager.FindQuest(questID) curMission = curPlayer.FindMission(questID) if curQuestData != None and curQuestData.Type == QuestCommon.Def_GM_Active_Mission_Type: #¼ì²éÓÐûÓ줻î #ûÓ줻î, Ìø¹ý if not GameWorld.GetGameWorld().IsEventActive(questID): if curMission == None: continue #ÊÇÍê³ÉµÄÈÎÎñ if curMission.GetState() == ChConfig.Def_Mission_State_Over: continue #GameWorld.Log("Íæ¼Ò´¥·¢ÈÎÎñ: %s - %d"%(str(key), questID) , curPlayer.GetPlayerID()) if runType == Def_RunQuestType_RunAll: #ÔËÐÐËùÓнڵã QuestRunner.RunAllQuest(curPlayer, questID, event[1].GetXMLEventLoader().GetNodeList()) continue # elif runType == Def_RunQuestType_NoAnswer: # QuestRunner.RunQuestNoAnswer(curPlayer, questID, event[1].GetXMLEventLoader().GetNodeList()) # continue # curMission = curPlayer.FindMission(questID) if curMission == None: continue if runType != Def_RunQuestType_RunAll and curMission.GetState() == ChConfig.Def_Mission_State_Over: #ÈÎÎñÒѾ­Íê³É continue if runType == Def_RunQuestType_Normal: QuestRunner.RunQuest(curPlayer, questID, event[1].GetXMLEventLoader().GetNodeList()) return True #--------------------------------------------------------------------- def Event_OnKillByID(curPlayer, npcID): #ÔËÐÐon_kill_by_idĿ¼ÏµÄ[NPCTypeID].xmlÎļþ RunQuestEvent(curPlayer, "on_kill_by_id", npcID, Def_RunQuestType_Normal) #´¥·¢Ã¿ÈÕÈÎÎñɱ¹Ö RunDayEvent(curPlayer, "on_kill_by_id", npcID, QuestCommon.Def_Kill_Npc_ID) return ##ÈÎÎñ´¥·¢Æ÷_OnKillById »÷ɱָ¶¨IDµÄ¹ÖÎï #@param curPlayer Íæ¼ÒʵÀý #@param curNPC NPCʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnKillById »÷ɱָ¶¨IDµÄ¹ÖÎï def EventRespons_OnKillById(curPlayer, curNPC): #µÃµ½NPCµÄTypeID npcTypeID = curNPC.GetNPCID() QuestRunner.SetKillNPC(curNPC) Event_OnKillByID(curPlayer, npcTypeID) #´¥·¢°´µÈ¼¶É±¹Ö EventRespons_OnKillByLv(curPlayer, curNPC) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnKillByLv »÷ɱָ¶¨µÈ¼¶µÄ¹ÖÎï #@param curPlayer Íæ¼ÒʵÀý #@param curNPC NPCʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnKillByLv »÷ɱָ¶¨µÈ¼¶µÄ¹ÖÎï def EventRespons_OnKillByLv(curPlayer, curNPC): if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull: return #µÃµ½NPCµÄTypeID npcLV = NPCCommon.GetNPCLV(curNPC) #ÔËÐÐon_kill_by_lvĿ¼ÏµÄ[NPCTypeID].xmlÎļþ #QuestRunner.SetKillNPC(curNPC) RunQuestEvent(curPlayer, "on_kill_by_lv", npcLV, Def_RunQuestType_Normal) #´¥·¢Ã¿ÈÕÈÎÎñɱ¹Ö RunDayEvent(curPlayer, "on_kill_by_lv", npcLV, QuestCommon.Def_Kill_Npc_LV) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_Íê³ÉijÊÖ»úÈÎÎñ # @param curPlayer£ºÍæ¼ÒʵÀý # @param curTaskType£º('1_MissionId'£ºÓÎÀú½­ºþ£»'2_MissionId'£ºÐ¦¶÷¼£») # @return None def EventRespons_OnPhoneAchieveTask(curPlayer, curTaskType): RunQuestEvent(curPlayer, "on_phone_achieve_task", curTaskType, Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnGet Íæ¼ÒʰȡÎïÆ· #@param curPlayer Íæ¼ÒʵÀý #@param itemTypeID ÎïÆ·ID #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnGet Íæ¼ÒʰȡÎïÆ· def EventRespons_OnGet(curPlayer, itemTypeID): RunQuestEvent(curPlayer, "on_get", itemTypeID, Def_RunQuestType_Normal) #´¥·¢Ã¿ÈÕÈÎÎñµÃµ½ÎïÆ· RunDayEvent(curPlayer, "on_get", itemTypeID, QuestCommon.Def_Item_ID) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnTruckDisappear ïÚ³µ¶ªÊ§´¥·¢ÈÎÎñ #@param curPlayer Íæ¼ÒʵÀý #@param taskID ïÚ³µÊ¼þID #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnTruckDisappear ïÚ³µ¶ªÊ§´¥·¢ÈÎÎñ def EventRespons_OnTruckDisappear(curPlayer, taskID): GameWorld.Log("æô³µ¶ªÊ§, ´¥·¢æô³µ¶ªÊ§ÈÎÎñ %d"%(taskID), curPlayer.GetPlayerID()) RunQuestEvent(curPlayer, "on_truck_disappear", taskID, Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnTruckDestroy ïÚ³µ´òÀô¥·¢ÈÎÎñ #@param curPlayer Íæ¼ÒʵÀý #@param taskID ïÚ³µÊ¼þID #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnTruckDestroy ïÚ³µ´òÀô¥·¢ÈÎÎñ def EventRespons_OnTruckDestroy(curPlayer, taskID): GameWorld.Log("æô³µ´òÀÃ, ´¥·¢æô³µ´òÀÃÈÎÎñ %d"%(taskID), curPlayer.GetPlayerID()) RunQuestEvent(curPlayer, "on_truck_destroy", taskID, Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##×Ô¶¨Ò庯Êý:OnEnter Íæ¼ÒÉÏÏß´¥·¢GM¿ª¹ØµÄ»î¶¯ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ×Ô¶¨Ò庯Êý:OnEnter Íæ¼ÒÉÏÏß´¥·¢GM¿ª¹ØµÄ»î¶¯ def PlayerGMEventTrig(curPlayer): gameWorld = GameWorld.GetGameWorld() #¼ì²éÍæ¼Ò´¥·¢GMʼþ(´¥·¢on_activeºÍon_deactive) #QuestManager.FindQuest delQuestList = [] for i in range(0, curPlayer.GetMissionCount()): curMission = curPlayer.GetMissionByIndex(i) missionID = curMission.GetMissionID() missionData = QuestManager.FindQuest(missionID) if missionData == None: continue if missionData.Type != QuestCommon.Def_GM_Active_Mission_Type: continue #¼ì²é½ÚÇìÈÎÎñ if not gameWorld.IsEventActive(missionID): #Íæ¼ÒÓнÚÇìÈÎÎñ, µ«ÊÇÈÎÎñÒѾ­¹Ø±ÕÁË #×¢Òâ: ÕâÀïÊÇÔÚforÖÐɾ³ý!!! delQuestList.append(missionID) #EventResponse_OnDeActive(curPlayer, missionID) for missionID in delQuestList: EventResponse_OnDeActive(curPlayer, missionID) for i in range(gameWorld.GetActiveEventCount()): missionID = gameWorld.GetActiveEventByIndex(i) if curPlayer.FindMission(missionID): #Íæ¼ÒÓÐÕâ¸öÈÎÎñ continue #Íæ¼ÒûÓÐÕâ¸ö½ÚÇìÈÎÎñ, ÐèÒª´¥·¢ EventResponse_OnActive(curPlayer, missionID) return #--------------------------------------------------------------------- ##´¥·¢ËùÓÐËûÈË·¢²¼µÄÈÎÎñ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ×Ô¶¨Ò庯Êý:´¥·¢ËùÓÐËûÈË·¢²¼µÄÈÎÎñ def PlayerMissionPubEventTrig(curPlayer): #¼ì²éÍæ¼Ò´¥·¢GMʼþ(´¥·¢on_activeºÍon_deactive) #QuestManager.FindQuest missionPubManager = GameWorld.GetGameWorld().GetDBMissionPubManager() for i in range(missionPubManager.GetCount()): curMissionPub = missionPubManager.GetAt(i) missionID = curMissionPub.GetMissionID() if curPlayer.FindMission(missionID): #Íæ¼ÒÓÐÕâ¸öÈÎÎñ continue #´¥·¢ËûÈË·¢²¼µÄÈÎÎñ CheckTrigMissionPub(curPlayer, curMissionPub) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnEnter ÈÎÎñDZ¹æÔò,Íæ¼ÒµÚÒ»´ÎµÇ½ÓÎÏ·ÒªÌí¼ÓÈÎÎñ1¸øÍæ¼Ò #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnEnter ÈÎÎñDZ¹æÔò,Íæ¼ÒµÚÒ»´ÎµÇ½ÓÎÏ·ÒªÌí¼ÓÈÎÎñ1¸øÍæ¼Ò def EventResponse_OnEnter(curPlayer): curPlayerID = curPlayer.GetID() #quests = QuestManager.GetQuests() addMission = QuestCommon.GetCommonMission(curPlayer) if addMission == None: #Ö´ÐеÚÒ»´ÎµÇ½Âß¼­ __FirstLoginOnEnter(curPlayer) addMission = QuestCommon.GetCommonMission(curPlayer) if addMission == None: GameWorld.ErrLog('EventResponse_OnEnter, Íæ¼Ò = %sÎÞ·¨»ñµÃ¹«¹²ÈÎÎñ'%(curPlayer.GetName()), curPlayer.GetID()) return if addMission.GetState() != ChConfig.Def_Mission_State_NoAccept: return #Íæ¼ÒµÚÒ»¸öÈÎÎñûÓÐ×ö,Ëø×¡ GameWorld.Log("Íæ¼ÒµÚÒ»¸öÈÎÎñûÓÐ×ö, Ëø×¡", curPlayerID) #curPlayer.BeginEvent() curPlayer.SetDict(ChConfig.Def_PlayerKey_Frist_Lock, 1) #µ÷ÓÃÖ´ÐÐÐÂÊÖÈÎÎñ RunQuestEvent(curPlayer, "on_enter", ChConfig.Def_XML_FirstLogin, Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##Íæ¼ÒµÚÒ»´ÎµÇ½ÓÎÏ·Âß¼­, ÈçÈÎÎñ¼ÓÔØÂß¼­, ×Ô¶¯Ñ§Ï°¼¼ÄÜ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ×Ô¶¨Ò庯Êý:Íæ¼ÒµÚÒ»´ÎµÇ½ÓÎÏ·Âß¼­, ÈçÈÎÎñ¼ÓÔØÂß¼­, ×Ô¶¯Ñ§Ï°¼¼ÄÜ def __FirstLoginOnEnter(curPlayer): playerID = curPlayer.GetID() GameWorld.Log('Íæ¼ÒÊǵÚÒ»´Î½øÈëÓÎÏ·', playerID) # ÌØÊâ˵Ã÷£º Èç¹ûµØÍ¼Ã»ÓÐÍêÈ«³õʼ»¯ºÃ£¬¿Í»§¶Ë¶Ï¿ª»òÕßÒì³£µÈÇé¿ö»á´¥·¢RunGateGameServerMapServerKickOutPlayerNoSave # ÄÇôÔÚDoPlayerLogin ÖÐÉèÖõÄÊý¾Ý½«²»»á±»±£´æ£¬ Èç»áµ¼ÖµÚÒ»¸öÈÎÎñÖØ¸´´¥·¢ÎÊÌ⣬¼Ç¼¶à´Î·¢ËÍ EventReport.WriteEvent_Entry(curPlayer, 4) #EventReport.EventReport(ShareDefine.Def_UserAction_FirstLogin, "", curPlayer) #---¸øÍæ¼ÒÐÂÊÖÈÎÎñ--- addMission = QuestCommon.AddNewMission(curPlayer, ChConfig.Def_MissionID_FirstLogin) #¹ã²¥ÐÂÔöÈÎÎñ NotifyOneMission(curPlayer, addMission) #---²¹ÂúѪÂúħ--- GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer)) curPlayer.SetMP(curPlayer.GetMaxMP()) #---¸øÓèÍæ¼ÒÐÂÊÖÎïÆ·--- #---³õʼ»¯×°±¸ÏÔÒþ µÚ1Ì×*10+ûÓÐÌ××° curPlayer.SetEquipShowSwitch(10) PlayerControl.SetFaceEquipIndex(curPlayer, 11012014) #ĬÈÏ´¥·¢Ò»´Î¹¦ÄÜ¿ªÆô if curPlayer.GetLV() == 1: GameFuncComm.DoFuncOpenLogic(curPlayer) #³õʼ»¯×é¶Ó״̬ autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1) autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2) PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck)) #°´Æ½Ì¨¸øÊ׸ö³ÆºÅ #PlayerDienstgrad.GiveFirstLoginDienstgrad(curPlayer) #Íæ¼ÒĬÈ϶ñÃûÖµ curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue) #±ê¼ÇÒѵǽ¹ý£¬ÓÃÓÚ·ÇͬһÌì¶þ´ÎµÇ½ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_OtherDayLogin, 1) #curPlayer.SetDict("ThunderLogin", 1) #¼Ç¼µÚÒ»´ÎµÇ½ DataRecordPack.DR_FirstLogin(curPlayer.GetAccID(), curPlayer.GetIP(), curPlayer) #ÄÚ²¿ºÅ¸øÓèÔª±¦ #PlayerCoin.GiveGoldByCreate(curPlayer) #Ê×µÇÓʼþ mailList = IpyGameDataPY.GetFuncEvalCfg("MailLVAward", 2) for mailTypeKey, mailItemList in mailList: PlayerControl.SendMailByKey(mailTypeKey, [curPlayer.GetPlayerID()], mailItemList) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnLogin Íæ¼ÒµÇ½ÓÎÏ·´¥·¢ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnLogin Íæ¼ÒµÇ½ÓÎÏ·´¥·¢ def EventResponse_OnLogin(curPlayer): #´¥·¢GM¿ª¹Ø»î¶¯ # PlayerGMEventTrig(curPlayer) #´¥·¢ËûÈË·¢²¼»î¶¯ # PlayerMissionPubEventTrig(curPlayer) RunQuestEvent(curPlayer, "on_login", "on_login", Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_On_GameServer_Login ´ËʼþÐèÒªGameServer³õʼ»¯Íæ¼Òºó£¬·µ»ØÊǼÒ×峤ºó´¥·¢ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_On_GameServer_Login ´ËʼþÐèÒªGameServer³õʼ»¯Íæ¼Òºó£¬·µ»ØÊǼÒ×峤ºó´¥·¢ def EventResponse_On_GameServer_Login(curPlayer): #ÉèÖÃΪ¼Ò×峤£¨GameServerÒÑÑéÖ¤£¬MapServer»¹Ã»Ë¢Ð£© curPlayer.SetFamilyMemberLV(IPY_GameWorld.fmlLeader) RunQuestEvent(curPlayer, "on_gs_login", "on_gs_login", Def_RunQuestType_RunAll) return #=============================================================================== # # #³ÇÃŻ¿ªÊ¼´¥·¢ÈÎÎñʼþ # def EventResponse_On_Open_Gate_War(curPlayer): # if not curPlayer.GetGameServerInitOK(): # GameServerRefresh.Set_Mission_No_ID_On_Open_Gate_War( curPlayer , 1 ) # return # # RunQuestEvent(curPlayer, "on_open_gate_war", "on_open_gate_war", Def_RunQuestType_RunAll) # return # # #³ÇÃŻ½áÊø´¥·¢ÈÎÎñʼþ # def EventResponse_On_Close_Gate_War(curPlayer): # if not curPlayer.GetGameServerInitOK(): # GameServerRefresh.Set_Mission_No_ID_On_Close_Gate_War( curPlayer , 1 ) # return # # RunQuestEvent(curPlayer, "on_close_gate_war", "on_close_gate_war", Def_RunQuestType_RunAll) # return # # #³ÇÃŻÖеǽ´¥·¢ÈÎÎñʼþ # def EventResponse_On_Gate_War_Login(curPlayer): # RunQuestEvent(curPlayer, "on_gate_war_login", "on_gate_war_login", Def_RunQuestType_RunAll) # return # # #³ÇÃŻºóµÇ½´¥·¢ÈÎÎñʼþ # def EventResponse_Not_Gate_War_Login(curPlayer): # RunQuestEvent(curPlayer, "not_gate_war_login", "not_gate_war_login", Def_RunQuestType_RunAll) # return #=============================================================================== #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnGameEvent ÌøÎèµöÓã½ø¶ÈÌõ½áÊøºó´¥·¢ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnGameEvent ÌøÎèµöÓã½ø¶ÈÌõ½áÊøºó´¥·¢ def EventRespons_OnGameEvent(curPlayer): RunQuestEvent(curPlayer, "on_game_event", "on_game_event", Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnMap Íæ¼ÒµÇ½µØÍ¼ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnMap Íæ¼ÒµÇ½µØÍ¼ def EventResponse_OnMap(curPlayer): RunQuestEvent(curPlayer, "on_map", "on_map", Def_RunQuestType_Normal) return ##ÈÎÎñ´¥·¢Æ÷_OnMapEx Íæ¼ÒµÇ½µØÍ¼ #@param curPlayer Íæ¼ÒʵÀý #@return None def EventResponse_OnMapEx(curPlayer): RunQuestEvent(curPlayer, "on_map_ex", "on_map_ex", Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_LVUp µ±Íæ¼ÒÉý¼¶µÄʱºò´¥·¢ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_LVUp µ±Íæ¼ÒÉý¼¶µÄʱºò´¥·¢ def EventResponse_LVUp(curPlayer): #ÒѽÓÈÎÎñÉý¼¶´¥·¢Âß¼­ RunQuestEvent(curPlayer, "on_lv_up", "on_lv_up", Def_RunQuestType_Normal) #2010/5/18 LvUp´¥·¢ÓɶÁÈ¡XMLÐÞ¸ÄΪ¶ÁÈ¡ÅäÖñíLvUpTrigMissionID #Éý¼¶´¥·¢ÈÎÎñ·Ö2ÖÖ: 1.Ìí¼ÓÈÎÎñ²¢ÇÒ´¥·¢ÈÎÎñXMLÂß¼­£¬ÈÎÎñÒÑ´æÔÚÔòÖ»´¥·¢XMLÂß¼­ # 2.²»Ìí¼ÓÈÎÎñ£¬Èç¹ûÈÎÎñ´æÔڲŴ¥·¢XMLÂß¼­ #{ Ö°Òµ:{{µÈ¼¶:[ ´¥·¢ÈÎÎñIDÁбí] } } missionDist = ReadChConfig.GetEvalChConfig('LvUpTrigMissionID') #¸ù¾ÝÌõ¼þ¹ýÂË×Öµä missionJobDist = missionDist.get(curPlayer.GetJob()) if not missionJobDist: #GameWorld.ErrLog('EventResponse_LVUp, job = %s'%(curPlayer.GetJob()), curPlayer.GetID()) return missionIDList = missionJobDist.get(curPlayer.GetLV()) if not missionIDList: #GameWorld.ErrLog('EventResponse_LVUp, lv = %s'%(curPlayer.GetLV()), curPlayer.GetID()) # Éý¼¶Ö»´¥·¢ÈÎÎñXML£¬²»Ìí¼ÓÈÎÎñ __LVUpNoAddMission(curPlayer) return #¸øÓèÈÎÎñ±ê־λ isGiveMission = False for missionID in missionIDList: if curPlayer.FindMission(missionID): GameWorld.ErrLog('EventResponse_LVUp, hasSameMissionID = %s'%(missionID), curPlayer.GetID()) continue isGiveMission = True #Ìí¼ÓÐÂÈÎÎñ¸øÍæ¼Ò addMission = QuestCommon.AddNewMission(curPlayer, missionID) NotifyOneMission(curPlayer, addMission) if isGiveMission: #LvUp_Get_Task µÈ¼¶ÌáÉý,ÄúÓÐеÄÈÎÎñ¿É½ÓÊÜ! PlayerControl.NotifyCode(curPlayer , "LvUp_Get_Task") RunQuestEvent(curPlayer, "on_lv_up", curPlayer.GetLV(), Def_RunQuestType_RunAll) #=============================================================================== # #ÄÜ·ñ´¥·¢³ÇÃŻ # __IsGateWar(curPlayer) #=============================================================================== return True ## Éý¼¶Ö»´¥·¢ÈÎÎñXML£¬²»Ìí¼ÓÈÎÎñ # @param curPlayer Íæ¼ÒʵÀý # @return None def __LVUpNoAddMission(curPlayer): missionDist = ReadChConfig.GetEvalChConfig('LvUpTrigMissionNotAdd') #¸ù¾ÝÌõ¼þ¹ýÂË×Öµä lvTrigMissionList = missionDist.get(curPlayer.GetJob()) if lvTrigMissionList == None: return if curPlayer.GetLV() not in lvTrigMissionList: return RunQuestEvent(curPlayer, "on_lv_up", curPlayer.GetLV(), Def_RunQuestType_RunAll) #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_ͨÓûÏìÓ¦, µ¥¸öÍæ¼Ò #@param curPlayer Íæ¼ÒʵÀý #@param eventName ʼþ×ÖµäÃû #@param fileID ʼþXMLÎļþÃû #@return ·µ»ØÖµÎÞÒâÒå #@remarks def EventResponse_OnAction(curPlayer, eventName, fileID): RunQuestEvent(curPlayer, eventName, fileID, Def_RunQuestType_RunAll) return ##ÈÎÎñ´¥·¢Æ÷_ͨÓûÏìÓ¦, È«·þÍæ¼Ò #@param eventName ʼþ×ÖµäÃû #@param fileID ʼþXMLÎļþÃû #@return ·µ»ØÖµÎÞÒâÒå #@remarks def EventResponse_OnActionAllMapPlayer(eventName, fileID): playerManager = GameWorld.GetPlayerManager() for i in range(0, playerManager.GetPlayerCount()): curPlayer = playerManager.GetPlayerByIndex(i) if not GameWorld.IsNormalPlayer(curPlayer): continue EventResponse_OnAction(curPlayer, eventName, fileID) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnHalfHour ÿ°ëСʱ´¥·¢Ò»´Î #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnHour ÿСʱ´¥·¢Ò»´Î def EventResponse_OnHalfHour(curPlayer): RunQuestEvent(curPlayer, "on_halfhour", "on_halfhour", Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnHour ÿСʱ´¥·¢Ò»´Î #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnHour ÿСʱ´¥·¢Ò»´Î def EventResponse_OnHour(curPlayer): RunQuestEvent(curPlayer, "on_hour", "on_hour", Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnDay ÿÌì´¥·¢Ò»´Î #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnDay ÿÌì´¥·¢Ò»´Î def EventResponse_OnDay(curPlayer): RunQuestEvent(curPlayer, "on_day", "on_day", Def_RunQuestType_RunAll) RunQuestEvent(curPlayer, "on_day", "on_dayex", Def_RunQuestType_Normal) #ÇåÉͽðÈÎÎñ½±Àø PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardState % QuestCommon.Def_Mission_Type_RunDaily, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardRecord % QuestCommon.Def_Mission_Type_RunDaily, 0) NotifyRunEndAward(curPlayer, QuestCommon.Def_Mission_Type_RunDaily) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnWeek ÿÖÜ´¥·¢Ò»´Î #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnWeek ÿÖÜ´¥·¢Ò»´Î def EventResponse_OnWeek(curPlayer): RunQuestEvent(curPlayer, "on_week", "on_week", Def_RunQuestType_RunAll) #ÇåÏÉÃËÈÎÎñ½±Àø PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardState % QuestCommon.Def_Mission_Type_RunFamily, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardRecord % QuestCommon.Def_Mission_Type_RunFamily, 0) NotifyRunEndAward(curPlayer, QuestCommon.Def_Mission_Type_RunFamily) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnLeaveFamily Íæ¼ÒÀ뿪¼Ò×å´¥·¢( ×Ô¶¯/±»¶¯ ) #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnLeaveFamily Íæ¼ÒÀ뿪¼Ò×å´¥·¢( ×Ô¶¯/±»¶¯ ) def EventResponse_OnLeaveFamily(curPlayer): if not curPlayer.GetGameServerInitOK(): GameServerRefresh.Set_Mission_No_ID_OnLeaveFamily(curPlayer , 1) return RunQuestEvent(curPlayer, "on_leave_family", "on_leave_family", Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnMemberChange ¼Ò×峤±ä¸ü #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnMemberChange ¼Ò×峤±ä¸ü def EventResponse_OnMemberChange(curPlayer): if not curPlayer.GetGameServerInitOK(): GameServerRefresh.Set_Mission_No_ID_OnMemberChange(curPlayer , 1) return GameWorld.Log('EventResponse_OnMemberChange' , curPlayer.GetID()) RunQuestEvent(curPlayer, 'on_member_change', 'on_member_change', Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnFamily ½øÈë¼Ò×å #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnFamily ½øÈë¼Ò×å def EventResponse_OnFamily(curPlayer): RunQuestEvent(curPlayer, "on_family", "on_family", Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnCreateFamily ´´½¨¼Ò×å #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnCreateFamily ´´½¨¼Ò×å def EventResponse_OnCreateFamily(curPlayer): RunQuestEvent(curPlayer, "on_create_family", "on_create_family", Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnFamilyAdd ¼ÓÈë¼Ò×å #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå def EventResponse_OnFamilyAdd(curPlayer): RunQuestEvent(curPlayer, "on_add_family", "on_add_family", Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnFamilyLVUp ¼Ò×åÉý¼¶ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå def EventResponse_OnFamilyLVUp(curPlayer): RunQuestEvent(curPlayer, "on_lv_up_family", "on_lv_up_family", Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnLeaveMap À뿪µØÍ¼ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnLeaveMap À뿪µØÍ¼ def EventResponse_OnLeaveMap(curPlayer): RunQuestEvent(curPlayer, "on_leave_map", "on_leave_map", Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnFBTimeOut ¸±±¾Ê±¼ä½áÊø #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnFBTimeOut ¸±±¾Ê±¼ä½áÊø def EventResponse_OnFBTimeOut(curPlayer): RunQuestEvent(curPlayer, "on_fb_timeout", "on_fb_timeout", Def_RunQuestType_Normal) return #=============================================================================== # #¹¥»÷³ÇÃÅʼþ´¥·¢ # def EventResponse_OnAttackGate(curPlayer): # RunQuestEvent(curPlayer, "on_attack_gate", "on_attack_gate", Def_RunQuestType_Normal) # return #=============================================================================== #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnKillEnemy »÷É±Íæ¼Òʼþ´¥·¢ #@param attackPlayer ¹¥»÷Õß #@param deadPlayer ËÀÍöµÄÍæ¼Ò #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnKillEnemy »÷É±Íæ¼Òʼþ´¥·¢ def EventResponse_OnKillEnemy(attackPlayer, deadPlayer): RunQuestEvent(attackPlayer, "on_kill_enemy", "on_kill_enemy", Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnEnemyKill ±»Íæ¼Ò»÷ɱʼþ´¥·¢ #@param deadPlayer ËÀÍöµÄÍæ¼Ò #@param attackPlayer ¹¥»÷Õß #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnEnemyKill ±»Íæ¼Ò»÷ɱʼþ´¥·¢ def EventResponse_OnEnemyKill(deadPlayer, attackPlayer): RunQuestEvent(deadPlayer, "on_enemy_kill", "on_enemy_kill", Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷vipµÈ¼¶¸Ä±ä #@param curPlayer Íæ¼Ò #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷vipµÈ¼¶¸Ä±ä´¥·¢ def EventResponse_OnVipLvUp(curPlayer, vipLV): RunQuestEvent(curPlayer, "on_viplv_up", vipLV, Def_RunQuestType_RunAll) return ##ÈÎÎñ´¥·¢Æ÷¹ºÂòvipÀñ°ü #@param curPlayer Íæ¼Ò #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷vipµÈ¼¶¸Ä±ä´¥·¢ def EventResponse_BuyVIPItem(curPlayer, vipLV): RunQuestEvent(curPlayer, "buyvipitem", "buyvipitem", Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_Active ÒѾ­ÎÞʹÓÃÁË #@param curPlayer Íæ¼ÒʵÀý #@param typeName ÀàÐÍ #@param missionID ÈÎÎñID #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_Active ÒѾ­ÎÞʹÓÃÁË def __EventResponse_Active(curPlayer, typeName, missionID): eventName = typeName fileID = typeName QuestsEvent = QuestManager.GetAllQuestsEvents() key = (eventName, "%s.xml"%str(fileID)) if not QuestsEvent.has_key(key) : return False curQuestList = QuestsEvent[key] if len(curQuestList) == 0: GameWorld.Log("%s ûÓд¥·¢!"%str(key) , curPlayer.GetPlayerID()) return for event in curQuestList: questID = event[0] if questID != missionID: continue #GameWorld.Log("Íæ¼Ò´¥·¢ÈÎÎñ: %s - %d"%(str(key), questID) , curPlayer.GetPlayerID()) #ÔËÐÐËùÓнڵã QuestRunner.RunAllQuest(curPlayer, questID, event[1].GetXMLEventLoader().GetNodeList()) break return #--------------------------------------------------------------------- ##´¥·¢µ¥¸öËûÈË·¢²¼µÄÈÎÎñ #@param curPlayer Íæ¼ÒʵÀý #@param curMissionPub ·¢²¼µÄÈÎÎñÊý¾Ý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ×Ô¶¨Ò庯Êý:´¥·¢µ¥¸öËûÈË·¢²¼µÄÈÎÎñ def CheckTrigMissionPub(curPlayer, curMissionPub): missionID = curMissionPub.GetMissionID() if curPlayer.FindMission(missionID): #Íæ¼ÒÓÐÕâ¸öÈÎÎñ return missinoPubType = curMissionPub.GetMissinoPubType() #¼ì²é´¥·¢ÈÎÎñ·¢²¼ if missinoPubType == IPY_GameWorld.mptFamily: #¼Ò×å·¢²¼ if curPlayer.GetFamilyID() == 0: return if curPlayer.GetFamilyID() != curMissionPub.GetPubID(): return EventResponse_OnMissionPub(curPlayer, missionID) elif missinoPubType == IPY_GameWorld.mptCountry: #¼Ò×å·¢²¼ if curPlayer.GetCountry() != curMissionPub.GetPubID(): return EventResponse_OnMissionPub(curPlayer, missionID) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnMissionPub ËûÈË·¢²¼ÈÎÎñ #@param curPlayer Íæ¼ÒʵÀý #@param missionID ÈÎÎñID #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnMissionPub ËûÈË·¢²¼ÈÎÎñ def EventResponse_OnMissionPub(curPlayer, missionID): if not curPlayer.GetGameServerInitOK(): GameServerRefresh.Set_Mission_Have_ID_OnMissionPub(curPlayer , missionID) return RunQuestEvent(curPlayer, 'on_pub', missionID, Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnActive ´¥·¢GM¿ª¹ØÈÎÎñ #@param curPlayer Íæ¼ÒʵÀý #@param missionID ÈÎÎñID #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnActive ´¥·¢GM¿ª¹ØÈÎÎñ def EventResponse_OnActive(curPlayer, missionID): if not curPlayer.GetGameServerInitOK(): GameServerRefresh.Set_Mission_Have_ID_OnActive(curPlayer , missionID) return RunQuestEvent(curPlayer, 'on_active', missionID, Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnDeActive ¹Ø±ÕGM¿ª¹ØÈÎÎñ #@param curPlayer Íæ¼ÒʵÀý #@param missionID ÈÎÎñID #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnDeActive ¹Ø±ÕGM¿ª¹ØÈÎÎñ def EventResponse_OnDeActive(curPlayer, missionID): if not curPlayer.GetGameServerInitOK(): GameServerRefresh.Set_Mission_Have_ID_OnDeActive(curPlayer , missionID) return RunQuestEvent(curPlayer, 'on_deactive', missionID, Def_RunQuestType_RunAll) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_OnDig ÍÚ±¦½ø¶ÈÌõ½áÊøºó´¥·¢ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_OnDig ÍÚ±¦½ø¶ÈÌõ½áÊøºó´¥·¢ def EventResponse_OnDig(curPlayer): #Íæ¼ÒÍڵش¥·¢ QuestRunner.InitTreasureNotifyContentList() #GameWorld.Log("¿ªÊ¼ÍÚµØ") for i in range(0, curPlayer.GetMissionCount()): curMission = curPlayer.GetMissionByIndex(i) #Õâ¸öÈÎÎñÒѾ­×öÍêÁË(-1) »òÕß Õâ¸öÈÎÎñ»¹Ã»ÓнÓ(0) if curMission.GetState() in [ChConfig.Def_Mission_State_NoAccept, ChConfig.Def_Mission_State_Over]: continue RunQuestEvent(curPlayer, "on_dig", curMission.GetMissionID(), Def_RunQuestType_Normal) treasureNotifyList = QuestRunner.GetTreasureNotifyContentList() #µÃµ½ÌáʾµÄ×î¸ßµÈ¼¶ minLV = 0 minIndex = -1 for i in range(0, len(treasureNotifyList)): if minLV == 0: minLV = treasureNotifyList[i].LV minIndex = i continue if treasureNotifyList[i].LV < minLV: minLV = treasureNotifyList[i].LV minIndex = i if minIndex == -1: #ûÓÐÍÚ±¦ÈÎÎñ curPlayer.Notify(0, "n") return missionID = treasureNotifyList[minIndex].MissionID #Í¨ÖªÍæ¼Ò curPlayer.Notify(missionID, treasureNotifyList[minIndex].Content) #curPlayer.NotifyMiddle(missionID, QuestRunner.TreasureNotifyContentList[minIndex].Content) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_LVFull µ±Ç°µÈ¼¶Âú¼¶µÄʱºò´¥·¢ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_LVFull µ±Ç°µÈ¼¶Âú¼¶µÄʱºò´¥·¢ def EventResponse_LVFull(curPlayer): #µÃµ½NPCµÄTypeID #ÔËÐÐon_visitĿ¼ÏµÄ[NPCTypeID].xmlÎļþ questID = curPlayer.GetLV() * 100 return RunQuestEvent(curPlayer, "on_lv_full", questID, Def_RunQuestType_RunAll) #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_MisCollectTime ѯÎÊÊÇ·ñ¿É²É¼¯¸ÃNPC #@param curPlayer Íæ¼ÒʵÀý #@param curNPC NPCʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_MisCollectTime ѯÎÊÊÇ·ñ¿É²É¼¯¸ÃNPC def EventRespons_MisCollectTime(curPlayer, curNPC): #µÃµ½NPCµÄTypeID npcTypeID = curNPC.GetNPCID() #GameWorld.Log("ѯÎÊÊÇ·ñ¿É²É¼¯¸ÃNPC, NPCID %d"%(npcTypeID)) #ÔËÐÐon_coltime_by_idĿ¼ÏµÄ[NPCTypeID].xmlÎļþ RunQuestEvent(curPlayer, "on_coltime_by_id", npcTypeID, Def_RunQuestType_Normal) #ÅÜ»·ÈÎÎñËæ»ú²É¼¯Ê±£¬ÎÞNPCID ÔËÐÐon_coltime_by_idĿ¼ÏµÄ0.xmlÎļþ RunQuestEvent(curPlayer, "on_coltime_by_id", 0, Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷_MisCollectSuccess ²É¼¯½ø¶ÈÌõ½áÊøºó´¥·¢ #@param curPlayer Íæ¼ÒʵÀý #@param curNPC NPCʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÈÎÎñ´¥·¢Æ÷_MisCollectSuccess ²É¼¯½ø¶ÈÌõ½áÊøºó´¥·¢ def EventRespons_MisCollectSuccess(curPlayer, curNPC): #µÃµ½NPCµÄTypeID npcTypeID = curNPC.GetNPCID() #GameWorld.Log("²É¼¯¸ÃNPC³É¹¦, NPCID %d"%(npcTypeID)) #ÔËÐÐon_collect_by_idĿ¼ÏµÄ[NPCTypeID].xmlÎļþ RunQuestEvent(curPlayer, "on_collect_by_id", npcTypeID, Def_RunQuestType_Normal) #Ëæ»ú²É¼¯ RunDayEvent(curPlayer, "on_collect_by_id", npcTypeID, QuestCommon.Def_Collect_Npc_ID) return #--------------------------------------------------------------------- ##ÈÎÎñ´¥·¢Æ÷CatchPetOK, ×¥³è³É¹¦. # @param curPlayer Íæ¼ÒʵÀý # @param curNPC NPCʵÀý # @return ·µ»ØÖµÎÞÒâÒå # @remarks ×¥³è³É¹¦ def EventRespons_CatchPetOK(curPlayer, curNPC): #ÔËÐÐon_catch_pet_ok_by_idĿ¼ÏµÄ[NPCTypeID].xmlÎļþ #RunQuestEvent(curPlayer, "on_catch_pet_ok_by_id", curNPC.GetNPCID(), Def_RunQuestType_Normal) return def EventRespons_LearnSkill(curPlayer, skillTypeID): # ѧϰ¼¼ÄÜ RunQuestEvent(curPlayer, "on_learnskill", skillTypeID, Def_RunQuestType_Normal) return ##ÈÎÎñ´¥·¢Æ÷ ÅÜ»·ÈÎÎñ´¥·¢ÏÂÒ»¸öÅÜ»·ÈÎÎñ´¥·¢Ïà¹ØÊ¼þ # @param curPlayer Íæ¼ÒʵÀý # @param missionID ÏÂÒ»¸öÅÜ»·ÈÎÎñID # @return ·µ»ØÖµÎÞÒâÒå # @remarks ÈÎÎñ´¥·¢Æ÷ ÅÜ»·ÈÎÎñ´¥·¢ÏÂÒ»¸öÅÜ»·ÈÎÎñ´¥·¢Ïà¹ØÊ¼þ def EventRespons_SetRunAround(curPlayer, missionID): RunQuestEvent(curPlayer, "on_run_around", missionID, Def_RunQuestType_Normal) ##FBʼþ´¥·¢ # @param curPlayer Íæ¼ÒʵÀý # @param eventName ʼþÃû # @return ·µ»ØÖµÎÞÒâÒå def EventRespons_FBEvent(curPlayer, eventName): RunQuestEvent(curPlayer, "fb_event", eventName, Def_RunQuestType_Normal) ##Ìí¼ÓºÃÓѳɹ¦´¥·¢ # @param curPlayer Íæ¼ÒʵÀý # @param eventName ʼþÃû # @return ·µ»ØÖµÎÞÒâÒå def EventRespons_AddFriendSucceed(curPlayer, eventName): RunQuestEvent(curPlayer, "add_friend_succeed", eventName, Def_RunQuestType_Normal) return ##buffÏûʧ´¥·¢ # @param curPlayer Íæ¼ÒʵÀý # @param eventName ʼþÃû # @return ·µ»ØÖµÎÞÒâÒå def EventRespons_BuffDisappear(curPlayer, eventName): RunQuestEvent(curPlayer, "buff_disappear", eventName, Def_RunQuestType_Normal) return ##Ãëcd´¥·¢ # @param curPlayer Íæ¼ÒʵÀý # @param eventName ʼþÃû # @return ·µ»ØÖµÎÞÒâÒå def EventRespons_ClearCDTime(curPlayer, eventName): RunQuestEvent(curPlayer, "clear_cd_time", eventName, Def_RunQuestType_Normal) return ##³åѨ # @param curPlayer Íæ¼ÒʵÀý # @param eventName ʼþÃû # @return ·µ»ØÖµÎÞÒâÒå def EventRespons_OpenXueWei(curPlayer, eventName): RunQuestEvent(curPlayer, "open_xuewei", eventName, Def_RunQuestType_Normal) return ##Íæ¼Òʼþ # @param curPlayer Íæ¼ÒʵÀý # @param eventName ʼþÃû # @return ·µ»ØÖµÎÞÒâÒå def EventRespons_PlayerEvent(curPlayer, eventName): RunQuestEvent(curPlayer, "player_event", eventName, Def_RunQuestType_Normal) return ##ʹÓÃÔ¶³Ì¹¦ÄÜʼþ # @param curPlayer Íæ¼ÒʵÀý # @param eventName ʼþÃû # @return ·µ»ØÖµÎÞÒâÒå def EventRespons_DirectFuncEvent(curPlayer, eventName): RunQuestEvent(curPlayer, "direct_event", eventName, Def_RunQuestType_Normal) return ##¹ÙÖ°(ÍþÍû)Ïà¹Ø´¥·¢ # @param curPlayer Íæ¼ÒʵÀý # @param eventName ʼþÃû # @return ·µ»ØÖµÎÞÒâÒå def EventRespons_PlayerPrestige(curPlayer, eventName): RunQuestEvent(curPlayer, "player_prestige", eventName, Def_RunQuestType_Normal) return ## É̵깺ÂòÎïÆ·´¥·¢ # @param curPlayer Íæ¼ÒʵÀý # @param itemID ÎïÆ·ID # @param itemCnt ÎïÆ·ÊýÁ¿ # @return None def EventRespons_BuyItem(curPlayer, itemID, itemCnt): curPlayer.SetDict(ChConfig.Def_PlayerKey_BuyItemCnt, itemCnt) RunQuestEvent(curPlayer, "buy_item", "buy_item_%s"%itemID, Def_RunQuestType_Normal) return ## NPCËÀÍöÃþ¹ÖÂß¼­ # @param curPlayer Íæ¼ÒʵÀý # @param curNPC npcʵÀý # @return None def EventRespons_OnKillByFeel(curPlayer, curNPC): #µÃµ½NPCµÄTypeID npcTypeID = curNPC.GetNPCID() #ÔËÐÐon_kill_by_feelĿ¼ÏµÄ[NPCTypeID].xmlÎļþ QuestRunner.SetKillNPC(curNPC) RunQuestEvent(curPlayer, "on_kill_by_feel", npcTypeID, Def_RunQuestType_Normal) #´¥·¢Ã¿ÈÕÈÎÎñɱ¹Ö RunDayEvent(curPlayer, "on_kill_by_feel", npcTypeID, QuestCommon.Def_Kill_Npc_ID) EventRespons_OnKillByLv(curPlayer, curNPC) return ## Íê³ÉÈÎÎñ # @param curPlayer Íæ¼ÒʵÀý # @param taskID ÈÎÎñid # @param rewardPer ½±Àø±¶Öµ°Ù·Ö±È, Èç150Ϊ1.5±¶½±Àø # @return None def EventRespons_OnFinishTask(curPlayer, taskID, rewardPer=100): curMission = curPlayer.FindMission(taskID) if curMission == None: GameWorld.ErrLog("Íæ¼ÒÎÞ¸ÃÈÎÎñ: %s" % taskID, curPlayer.GetPlayerID()) return missionState = curMission.GetState() if missionState != ChConfig.Def_Mission_State_CanComplete: GameWorld.DebugLog("ÈÎÎñ״̬(%s)²»¿ÉÌá½»£¬²»ÄÜÍê³ÉÈÎÎñ£¡taskID=%s" % (missionState, taskID)) return curQuestData = QuestManager.FindQuest(taskID) rewardPer = 100 if rewardPer <= 0 else rewardPer moneyType, moneyCnt = 0, 0 # »·ÈÎÎñÖ§³Ö¶à±¶½±ÀøÁìÈ¡ if curQuestData != None and curQuestData.Type in QuestCommon.Def_RunTask_Type_List: if rewardPer != 100: rewardCostDict = ReadChConfig.GetEvalChConfig("RunAround_MulRewardCost") if rewardPer not in rewardCostDict: GameWorld.ErrLog("²»Ö§³Ö¸Ã¶à±¶½±Àø±ÈÀý: taskID=%s,rewardPer=%s" % (taskID, rewardPer), curPlayer.GetPlayerID()) return moneyType, moneyCnt = rewardCostDict[rewardPer] if not PlayerControl.HaveMoney(curPlayer, moneyType, moneyCnt): return curMission.SetProperty(QuestRunner.Def_Task_Reward_Per, rewardPer, False) isOK = RunQuestEvent(curPlayer, "on_finish", taskID, Def_RunQuestType_Normal) if not isOK: GameWorld.DebugLog("OnFinishTask ʧ°Ü£¡") return if moneyCnt > 0: PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_MissionDel, {"taskID":taskID, "rewardPer":rewardPer, ChConfig.Def_Cost_Reason_SonKey:taskID}) return ## ¿ìËÙÍê³ÉÈÎÎñ # @param curPlayer Íæ¼ÒʵÀý # @param missionID ÈÎÎñid # @return None def EventRespons_OnQuickFinishTask(curPlayer, missionID): RunQuestEvent(curPlayer, "quick_finish_task", missionID, Def_RunQuestType_Normal) return ## Ò»¼üÍê³ÉËùÓл·ÈÎÎñ # @param curPlayer Íæ¼ÒʵÀý # @param missionID ÈÎÎñid # @return None def EventRespons_OnQuickFinishAllAround(curPlayer, missionID): RunQuestEvent(curPlayer, "on_quick_finish_all_around", missionID, Def_RunQuestType_Normal) return ## ÉèÖÃÈÎÎñÐǼ¶ # @param curPlayer Íæ¼ÒʵÀý # @param missionID ÈÎÎñid # @return None def EventRespons_OnSetMissionStar(curPlayer, missionID): RunQuestEvent(curPlayer, "on_set_mission_star", missionID, Def_RunQuestType_Normal) return ## ÊÕ»ñ¹ûʵ # @param curPlayer Íæ¼ÒʵÀý # @param eventName # @return None def EventRespons_OnPlantHarvest(curPlayer, eventName): RunQuestEvent(curPlayer, "on_plant_harvest", eventName, Def_RunQuestType_Normal) return ## ¸±±¾²É¼¯NPC # @param curPlayer Íæ¼ÒʵÀý # @param eventName # @return None def EventRespons_OnFBCollect(curPlayer, eventName): RunQuestEvent(curPlayer, "on_fb_collect", eventName, Def_RunQuestType_Normal) return ## ¹ºÂòÈÕ³£ÈÎÎñ´ÎÊýÉÏÏÞ # @param curPlayer Íæ¼ÒʵÀý # @param eventName # @return None def EventRespons_OnBuyDayMissionSum(curPlayer, buyNum): RunQuestEvent(curPlayer, "on_buy_mission_sum", buyNum, Def_RunQuestType_RunAll) return ## ´©×°±¸´¥·¢ÅжÏËù´©³È×°ÊýÁ¿ # @param curPlayer Íæ¼ÒʵÀý # @param eventName # @return None def EventRespons_OrangeQualityCnt(curPlayer, equipcnt): RunQuestEvent(curPlayer, "quality_orange_cnt", equipcnt, Def_RunQuestType_Normal) return ## ²¿Î»Ç¿»¯ÐǼ¶ # @param curPlayer Íæ¼ÒʵÀý # @param eventName # @return None def EventRespons_OnEquipPartStarUp(curPlayer, upstar): RunQuestEvent(curPlayer, "on_equippartstarup", "on_equippartstarup", Def_RunQuestType_Normal) return ## ¾ôλÉý½× # @param curPlayer Íæ¼ÒʵÀý # @param eventName # @return None def EventRespons_OnOfficialUp(curPlayer, officialLV, starIndex): #ÐǼ¶*100+½×¼¶ RunQuestEvent(curPlayer, "on_officialup", starIndex*100+officialLV, Def_RunQuestType_Normal) return ## ͨ¹ØÊÔÁ¶Ö®ËþµÚX²ã # @param curPlayer Íæ¼ÒʵÀý # @param eventName # @return None def EventRespons_TrialTowerCnt(curPlayer, cnt): RunQuestEvent(curPlayer, "on_trialtowercnt", cnt, Def_RunQuestType_Normal) return ## ͨ¹ØÌìÐÇËþµÚX²ã # @param curPlayer Íæ¼ÒʵÀý # @param eventName # @return None def EventRespons_SkyTowerCnt(curPlayer, cnt): RunQuestEvent(curPlayer, "skytowerpass", cnt, Def_RunQuestType_Normal) return ##»¤ËÍX´ÎÃÀÅ® # @param curPlayer Íæ¼ÒʵÀý # @param eventName ʼþÃû # @return ·µ»ØÖµÎÞÒâÒå def EventRespons_TruckCnt(curPlayer): RunQuestEvent(curPlayer, "on_truckcnt", "on_truckcnt", Def_RunQuestType_Normal) ##·Ö½âÈÎÒâX¼þ³È×° # @param curPlayer Íæ¼ÒʵÀý # @param eventName ʼþÃû # @return ·µ»ØÖµÎÞÒâÒå def EventRespons_EquipDecompose(curPlayer): RunQuestEvent(curPlayer, "on_equipdecompose", "on_equipdecompose", Def_RunQuestType_Normal) return def EventRespons_OnBuyNobleVIP(curPlayer, nobleType): # ¹ºÂò¹ó×å RunQuestEvent(curPlayer, "on_buy_noblevip", "on_buy_noblevip", Def_RunQuestType_Normal) RunQuestEvent(curPlayer, "on_buy_noblevip", nobleType, Def_RunQuestType_Normal) return def EventRespons_OnGoldInvest(curPlayer, investType): # °ó×êͶ×Ê RunQuestEvent(curPlayer, "on_goldinvest", "on_goldinvest", Def_RunQuestType_Normal) RunQuestEvent(curPlayer, "on_goldinvest", investType, Def_RunQuestType_Normal) return def EventRespons_OnActivatePet(curPlayer, petID): # ¼¤»î³èÎï RunQuestEvent(curPlayer, "on_activatepet", "on_activatepet", Def_RunQuestType_Normal) RunQuestEvent(curPlayer, "on_activatepet", petID, Def_RunQuestType_Normal) return def EventRespons_MagicWeaponLV(curPlayer, mwID, lv): # ·¨±¦½âËø½ø¶È RunQuestEvent(curPlayer, "magicweaponlv", '%s_%s'%(mwID, lv), Def_RunQuestType_RunAll) return def EventRespons_MagicWeaponFBPassLV(curPlayer, mwID, lv): # ħ×å·¨±¦¹Ø¿¨½ø¶È RunQuestEvent(curPlayer, "mwfbpasslv", '%s_%s'%(mwID, lv), Def_RunQuestType_Normal) return def EventRespons_SuccessFinish(curPlayer, succID): # ÁìÈ¡Íê³É¾Í RunQuestEvent(curPlayer, "successfinish", succID, Def_RunQuestType_RunAll) return def EventRespons_KillWorldBoss(curPlayer): # »÷ɱÊÀ½çBOSS RunQuestEvent(curPlayer, "killworldboss", 'killworldboss', Def_RunQuestType_Normal) return def EventRespons_KillWorldBossByFeel(curPlayer): #ÃþÊÀ½çBOSS RunQuestEvent(curPlayer, "killworldbossbyfeel", 'killworldbossbyfeel', Def_RunQuestType_Normal) return def EventRespons_SealDemon(curPlayer): # »ñµÃ·âħ̳110¼¶ÒÔÉÏBOSSÉ˺¦ÅÅÃûµÚÒ» RunQuestEvent(curPlayer, "sealdemon", "sealdemon", Def_RunQuestType_Normal) return def EventRespons_HorseMultiple(curPlayer, multiple): #×øÆïÎ¹ÑøX±¶±©»÷Ò»´Î RunQuestEvent(curPlayer, "horsemultiple", multiple, Def_RunQuestType_Normal) return def EventRespons_HorseLV(curPlayer, horselv): #ÈÎÒâ×øÆïµ½X¼¶ RunQuestEvent(curPlayer, "horselv", horselv, Def_RunQuestType_Normal) return def EventRespons_FBEncourage(curPlayer, mapid): #¸±±¾¹ÄÎ輸´Î RunQuestEvent(curPlayer, "fbencourage", mapid, Def_RunQuestType_Normal) return def EventRespons_AddFriend(curPlayer, cnt): #ºÃÓÑÊýÁ¿ RunQuestEvent(curPlayer, "addfriend", cnt, Def_RunQuestType_Normal) return def EventRespons_DujieFBHelp(curPlayer): #ÏÉÃË»¤·¨ RunQuestEvent(curPlayer, "dujiehelp", "dujiehelp", Def_RunQuestType_Normal) return def EventRespons_DujieFBHelpPass(curPlayer): #¶É½ÙÖúÕ½ RunQuestEvent(curPlayer, "dujiehelppass", "dujiehelppass", Def_RunQuestType_Normal) return def EventRespons_PassiveSet(curPlayer): #±»¶¯¼¼ÄÜÉèÖà RunQuestEvent(curPlayer, "passiveset", "passiveset", Def_RunQuestType_Normal) return def EventRespons_PlusGodWeapon(curPlayer, weaponType): #Éñ±ø´¸Á¶ RunQuestEvent(curPlayer, "plusgodweapon", "plusgodweapon", Def_RunQuestType_Normal) RunQuestEvent(curPlayer, "plusgodweapon", weaponType, Def_RunQuestType_Normal) return def EventRespons_GodWeaponUp(curPlayer, weaponType, attrLV): # Éñ±øÉý¼¶ RunQuestEvent(curPlayer, "godweaponup", "%s_%s"%(weaponType, attrLV), Def_RunQuestType_Normal) return def EventRespons_RefineItem(curPlayer, alchemyLV, alchemyItemID): #°ËØÔ¯Á¶µ¤ #ÕâÁ½¸ö½Ó¿Ú²ß»®ÔÝʱ²»Óã¬ÏÈ×¢ÊÍ£¬Ê¹ÓÃеÄÁ¬Ä³¸öµ¤Ò©½Ó¿Ú #RunQuestEvent(curPlayer, "refineitem", alchemyLV, Def_RunQuestType_Normal) #RunQuestEvent(curPlayer, "refineitem", "refineitem", Def_RunQuestType_Normal) RunQuestEvent(curPlayer, "refineitem", alchemyItemID, Def_RunQuestType_Normal) return def EventRespons_RefineStoveUp(curPlayer, alchemyLV): #°ËØÔ¯ÉýÖÁX¼¶ RunQuestEvent(curPlayer, "refinestoveup", alchemyLV, Def_RunQuestType_RunAll) return def EventRespons_GetRealmPoint(curPlayer): #»ñµÃÐÞÐеã RunQuestEvent(curPlayer, "getrealmpoint", "getrealmpoint", Def_RunQuestType_Normal) return def EventRespons_MWSkillUp(curPlayer): #·¨±¦¼¼ÄÜÉý¼¶ RunQuestEvent(curPlayer, "mwskillup", "mwskillup", Def_RunQuestType_Normal) return def EventRespons_ShopBuy(curPlayer, shopid): #Ö¸¶¨É̵êÂò¶«Î÷ RunQuestEvent(curPlayer, "shopbuy", shopid, Def_RunQuestType_Normal) return def EventRespons_GetLastRunTaskAward(curPlayer, taskType): #ÅÜ»·×îÖÕ½±ÀøÁìÈ¡ RunQuestEvent(curPlayer, "on_lastruntask_award", taskType, Def_RunQuestType_Normal) return def EventRespons_RunTaskAllCnt(curPlayer, tastType, allcnt): #µ±ÌìÒÑÍê³ÉÅÜ»·Êý RunQuestEvent(curPlayer, "runtaskallcnt", '%s_%s'%(tastType, allcnt), Def_RunQuestType_Normal) return def EventRespons_RealmUp(curPlayer, realmlv): #¾³½çÉý¼¶ RunQuestEvent(curPlayer, "realmup", realmlv, Def_RunQuestType_RunAll) return def EventRespons_RealmXXZLAward(curPlayer, taskID): #¾³½çÐÞÏÉ֮·Íê³ÉÈÎÎñ RunQuestEvent(curPlayer, "realmxxzlaward", taskID, Def_RunQuestType_RunAll) return def EventRespons_PassQueenRelecs(curPlayer, lineID, grade): #X¼¶Í¨¹ØX²ãæ´»ÊÒż£ RunQuestEvent(curPlayer, "passqueenrelecs", '%s_%s'%(lineID, grade), Def_RunQuestType_Normal) return def EventRespons_HorseUp(curPlayer): #×øÆïÉý¼¶ RunQuestEvent(curPlayer, "horseup", "horseup", Def_RunQuestType_Normal) return def EventRespons_SuitPlus(curPlayer, cnt): #2½×Ç¿»¯·À¾ßÌ××°X¼þ RunQuestEvent(curPlayer, "suitplus", cnt, Def_RunQuestType_Normal) return def EventRespons_TrialExchange(curPlayer, costItemID): #×ÚÃÅÊÔÁ¶¶Ò»»×°±¸ RunQuestEvent(curPlayer, "trialexange", costItemID, Def_RunQuestType_Normal) return def EventRespons_EquipByPlace(curPlayer, itemClassLV, equipplace): #´©´÷ij²¿Î»×°±¸(·ÇʱЧ) RunQuestEvent(curPlayer, "equipbyplace", '%s_%s'%(itemClassLV, equipplace), Def_RunQuestType_Normal) return def EventRespons_CompoundEquip(curPlayer, itemColor, itemQuality): #×°±¸ºÏ³ÉijƷÖÊijÐǼ¶ RunQuestEvent(curPlayer, "compoundequip", '%s_%s'%(itemColor, itemQuality), Def_RunQuestType_Normal) return def EventRespons_EquipWash(curPlayer, washType, washLV): #×°±¸Ï´Á·ÖÁX¼¶ RunQuestEvent(curPlayer, "equipwash", '%s_%s'%(washType, washLV), Def_RunQuestType_Normal) return def EventRespons_AddBourseItem(curPlayer): #Éϼܼ¯ÊÐÎïÆ· RunQuestEvent(curPlayer, "addbourseitem", "addbourseitem", Def_RunQuestType_Normal) return def EventRespons_StoreDonate(curPlayer): #¾èÏ×ÏÉÃË×°±¸ RunQuestEvent(curPlayer, "storedonate", "storedonate", Def_RunQuestType_Normal) return def EventRespons_EquipPlus(curPlayer, classLV, partPlusLV): #Ç¿»¯µÈ¼¶±ä»¯ RunQuestEvent(curPlayer, "equipplus", "equipplus", Def_RunQuestType_Normal) RunQuestEvent(curPlayer, "equipplus", '%s_%s'%(classLV, partPlusLV), Def_RunQuestType_Normal) return def EventRespons_EquipPlusEvolve(curPlayer, nextEvolveLV): #Ç¿»¯½ø»¯ RunQuestEvent(curPlayer, "equipplusevolve", "equipplusevolve", Def_RunQuestType_Normal) return def EventRespons_Talk(curPlayer, eventName): #ƵµÀ·¢ÑÔ RunQuestEvent(curPlayer, "talk", eventName, Def_RunQuestType_Normal) return def EventRespons_FairyDomain(curPlayer, eventType): #Íê³ÉçÎç¿ÏÉÓòʼþ RunQuestEvent(curPlayer, "fairydomain", 'fairydomain', Def_RunQuestType_Normal) RunQuestEvent(curPlayer, "fairydomain", eventType, Def_RunQuestType_Normal) return def EventRespons_AroundMission(curPlayer, missionType): #Íê³ÉÅÜ»·ÈÎÎñ RunQuestEvent(curPlayer, "aroundfinish", missionType, Def_RunQuestType_Normal) return def EventRespons_Pray(curPlayer, prayType): #Íê³ÉÆíÔ¸ RunQuestEvent(curPlayer, "pray", prayType, Def_RunQuestType_Normal) return def EventRespons_ThinkMagicWeapon(curPlayer): #¸ÐÓ¦·¨±¦ RunQuestEvent(curPlayer, "thinkfabao", 'thinkfabao', Def_RunQuestType_Normal) return def EventRespons_ElementSkill(curPlayer, mainSkillID, skillElementType, updSelectSkillLV): #¼¤»îÎåÐÐר¾« Ö÷¼¼ÄÜID_ר¾«ÀàÐÍ_¼¤»îµÈ¼¶.xml RunQuestEvent(curPlayer, "elementskill", '%s_%s_%s'%(mainSkillID, skillElementType, updSelectSkillLV), Def_RunQuestType_Normal) return def EventRespons_EquipStarUp(curPlayer): #×°±¸ÉýÐÇ RunQuestEvent(curPlayer, "equipstarup", 'equipstarup', Def_RunQuestType_Normal) return def EventRespons_InlayStone(curPlayer): #±¦Ê¯ÏâǶ RunQuestEvent(curPlayer, "inlaystone", 'inlaystone', Def_RunQuestType_Normal) return def EventRespons_StoneChange(curPlayer): # ±¦Ê¯±ä¸ü RunQuestEvent(curPlayer, "stonechange", 'stonechange', Def_RunQuestType_Normal) return def EventRespons_EquipItem(curPlayer): #´©ÍÑ×°±¸ RunQuestEvent(curPlayer, "equipitem", 'equipitem', Def_RunQuestType_Normal) return def EventRespons_SkillUp(curPlayer, FuncType, skillLV): #Éý¼¶¼¼ÄÜ RunQuestEvent(curPlayer, "skillup", FuncType, Def_RunQuestType_Normal) RunQuestEvent(curPlayer, "skillup", '%s_%s' % (FuncType, skillLV), Def_RunQuestType_Normal) return def EventRespons_LingGenQualityUP(curPlayer, attrID, qualityLV): #Áé¸ùÉýÆ· RunQuestEvent(curPlayer, "linggenqualityup", '%s_%s' % (attrID, qualityLV), Def_RunQuestType_Normal) return def EventRespons_AddPoint(curPlayer): #Áé¸ù¼Óµã RunQuestEvent(curPlayer, "addpoint", '0', Def_RunQuestType_Normal) return def EventRespons_ActivityAward(curPlayer, awardIndex): #»îÔ¾Áì½± RunQuestEvent(curPlayer, "activityaward", awardIndex, Def_RunQuestType_Normal) return def EventRespons_AddActivityValue(curPlayer): # Ôö¼Ó»îÔ¾¶È RunQuestEvent(curPlayer, "addactivity", "addactivity", Def_RunQuestType_Normal) return def EventRespons_HorsePetBoss(curPlayer): #²Î¼ÓÆï³èBOSS RunQuestEvent(curPlayer, "horsepetboss", 'horsepetboss', Def_RunQuestType_Normal) return def EventRespons_LingGenReset(curPlayer): #Áé¸ùÖØÖà RunQuestEvent(curPlayer, "linggenreset", 'linggenreset', Def_RunQuestType_Normal) return def EventRespons_UseMissionItem(curPlayer, missionID): # ʹÓÃÎïÆ·´¥·¢ÈÎÎñ RunQuestEvent(curPlayer, "usemissionitem", missionID, Def_RunQuestType_RunAll) return def EventRespons_XBXZ(curPlayer, MWID): # Ïɱ¦Ñ°Ö÷Áì½± RunQuestEvent(curPlayer, "xbxz", MWID, Def_RunQuestType_Normal) return def EventRespons_AddAuctionEquip(curPlayer, color): # ÉϼÜ×°±¸ÅÄÆ· RunQuestEvent(curPlayer, "addauctionequip", color, Def_RunQuestType_Normal) return def EventRespons_BuyAuctionEquip(curPlayer, color): # ¹ºÂò×°±¸ÅÄÆ· RunQuestEvent(curPlayer, "buyauctionequip", color, Def_RunQuestType_Normal) return def EventRespons_OnMoneyChange(curPlayer, moneyType): # »õ±Ò±ä¸üʱ # ÔÝ¿ª·ÅÁéʯ if moneyType not in [IPY_GameWorld.TYPE_Price_Gold_Paper]: return RunQuestEvent(curPlayer, "onmoneychange", moneyType, Def_RunQuestType_Normal) return def EventRespons_ActivityPlace(curPlayer, event, runall=False): ''' »îÔ¾·ÅÖÃʼþ @param event: ¿ÉÆô¶¯ canstart¡¢Æô¶¯ start¡¢¿ÉÁì½± cangetreward¡¢Áì½± getreward ''' RunQuestEvent(curPlayer, "activityplace", event, Def_RunQuestType_RunAll if runall else Def_RunQuestType_Normal) return def EventRespons_ArenaBattleOver(curPlayer): # ÌôÕ½¾º¼¼³¡ - ½áËã²ÅËã RunQuestEvent(curPlayer, "arenabattleover", "arenabattleover", Def_RunQuestType_Normal) return def EventRespons_ArenaHighestScore(curPlayer): # ˢоº¼¼³¡ÀúÊ·×î¸ß·Ö RunQuestEvent(curPlayer, "arenahighestscore", "arenahighestscore", Def_RunQuestType_Normal) return #--------------------------------------------------------------------- #================================================================================ #=============================================================================== # //08 07 Íæ¼ÒÇл»µØÍ¼#tagCChangeMap # tagCChangeMap * GettagCChangeMap(); # # class IPY_CChangeMap # { # public: # //´«Ë͵ãID # int GetTransportID(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 07 Íæ¼ÒÇл»µØÍ¼#tagCChangeMap #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 07 Íæ¼ÒÇл»µØÍ¼#tagCChangeMap def ChangeMap(index, tick): GameWorld.GetPsycoFunc(__Func_ChangeMap)(index, tick) return ##¿Í»§¶Ë·â°üÏìÓ¦//08 07 Íæ¼ÒÇл»µØÍ¼#tagCChangeMap #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 07 Íæ¼ÒÇл»µØÍ¼#tagCChangeMap def __Func_ChangeMap(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) changeMapPack = IPY_GameWorld.IPY_CChangeMap() if PlayerChangeMap(curPlayer, changeMapPack.GetTransportID(), tick): return #´«ËÍʧ°Ü, ÉèÖÃÍæ¼Ò¿ÉÒÔÒÆ¶¯ curPlayer.SetCanMove(True) return #--------------------------------------------------------------------- ##Íæ¼Òͨ¹ý´«Ë͵ã, ´«Ë͵ØÍ¼ #@param curPlayer Íæ¼ÒʵÀý #@param transportID ´«Ë͵ãID #@param tick ʱ¼ä´Á #@return ²¼¶ûÖµ #@remarks Íæ¼Òͨ¹ý´«Ë͵ã, ´«Ë͵ØÍ¼ def PlayerChangeMap(curPlayer, transportID, tick): transport = GameWorld.GetGameData().FindTransportByID(transportID) if transport == None: #GameWorld.Log("ûÓдËÇл»µã = %s"%(transportID) , curPlayer.GetPlayerID()) return False #Çл»µØÍ¼×ø±ê¾àÀë dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), transport.GetPosX(), transport.GetPosY()) #²»ÔÚÇл»µã·¶Î§ÄÚ if dist > transport.GetRange() + 16: # if curPlayer.GetPosX() < transport.GetPosX()-dist or curPlayer.GetPosX() > transport.GetPosX()+dist or curPlayer.GetPosY() < transport.GetPosY()-dist or curPlayer.GetPosY() > transport.GetPosY()+dist: #GameWorld.Log("Íæ¼Ò²»ÔÚÇл»µãÄÚ" , curPlayer.GetPlayerID()) curPlayer.ResetPos(curPlayer.GetPosX(), curPlayer.GetPosY()) GameWorld.GodLog(curPlayer, '´«Ë͵ã¾àÀë¹ýÔ¶ = %s, Range = %s'%(dist, transport.GetRange())) return False #ÔÚÇл»µã·¶Î§ÄÚ£¬Çл»µØÍ¼ mapID = transport.GetTargetMapID() targetPosX = transport.GetTargetPosX() targetPosY = transport.GetTargetPosY() if not PlayerControl.CanEnterMap(curPlayer, mapID): #Íæ¼Ò²»¿É½øÈë¸Ã³¡¾° return False # #Ìí¼ÓÓÐÏÞÎÞµÐBUFF # SkillCommon.AddBuffBySkillType(curPlayer, ChConfig.Def_SkillID_LimitSuperBuff, tick) #2. Íæ¼ÒÇл»µØÍ¼£¨µØÍ¼ID£¬X£¬Y£© curTruck = curPlayer.GetTruck() if curTruck: isTakeTruck = curTruck.GetMode() != IPY_GameWorld.trmStop else: isTakeTruck = False PlayerControl.PlayerResetWorldPos(curPlayer, mapID, targetPosX, targetPosY, isTakeTruck, canLock = False) return True #--------------------------------------------------------------------- #=============================================================================== # //08 0A ½áÊøÊ¼þ#tagCCancelEvent # tagCCancelEvent * GettagCCancelEvent(); # # class IPY_CCancelEvent # { # public: # # int GetType(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 0A ½áÊøÊ¼þ#tagCCancelEvent #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 0A ½áÊøÊ¼þ#tagCCancelEvent def ExitEvent(index, tick): GameWorld.GetPsycoFunc(__Func_ExitEvent)(index, tick) return ##¿Í»§¶Ë·â°üÏìÓ¦//08 0A ½áÊøÊ¼þ#tagCCancelEvent #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 0A ½áÊøÊ¼þ#tagCCancelEvent def __Func_ExitEvent(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) DoExitEvent(curPlayer) #¸±±¾À뿪ʼþ FBLogic.OnExitEvent(curPlayer, tick) return #--------------------------------------------------------------------- #°Ñµ±Ç°ÈÎÎñ֪ͨ¸ø¿Í»§¶Ë #/**ÈÎÎñ״̬¶¨Òå*/ #enum TMissionState #{ # msNoMission = 0, ///<δ½Ó # msProcessing, ///<½øÐÐÖÐ # msCanComplete, ///<¿ÉÌá½» # msComplete, ///<ÒÑÍê³É # msFail, ///<ʧ°Ü # msNoExist, ///<æô³µ²»´æÔÚ #}; #ÌØÊâÈÎÎñ״̬¶¨Òå: #0 : δ½Ó #-1: ÒÑÍê³É #-2: æô³µ¶ªÊ§ #-3: æô³µ±»´òÀà #-4: ÈÎÎñδ´ïµ½¿É½Ó״̬ #-5: ÈÎÎñ¿ÉÌá½» ##ˢе¥¶ÀµÄÈÎÎñ #@param curPlayer Íæ¼ÒʵÀý #@param curMission ÈÎÎñʵÀý #@param isFirstLogin ÊÇ·ñµÚÒ»´ÎµÇ½ #@return ·µ»ØÖµÎÞÒâÒå #@remarks ˢе¥¶ÀµÄÈÎÎñ def NotifyOneMission(curPlayer, curMission, isFirstLogin = False, isNotifyAll = True): #state = curMission.GetState() #֪ͨÈÎÎñ×Öµä if isNotifyAll: curMission.Notify_AllProperty() #з½Ê½: Ë¢ÐÂÕâ¸ö QuestRunner.RefreshMission(curPlayer, curMission) # GameWorld.Log("state = %d"%state) # missionState = curMission.GetMissionState() # lastMissionState = missionState # taskID = curMission.GetMissionID() # # if QuestManager.FindQuest(taskID) == None: # GameWorld.Log("ÈÎÎñID = %d ûÓÐÈÎÎñÃèÊö!"%taskID) # return # # questData = QuestManager.FindQuest(taskID) # taskName = questData.Name # # if taskName == "": # #GameWorld.Log("ÈÎÎñÃû³Æ = ¿Õ") # return # # parentID = 0 # if state == -1: # missionState = IPY_GameWorld.msComplete # if state == -4: # missionState = IPY_GameWorld.msNoExist # # if missionState == IPY_GameWorld.msNoMission and state != 0: # missionState = IPY_GameWorld.msProcessing # # curMission.SetMissionState(missionState) # # if questData.Type == 8 and state == 0: # #ÈÎÎñÀàÐÍ:8 ΪÓÂÕßÈÎÎñ(¾íÖáÈÎÎñ), ²»Í¨Öª¸ø¿Í»§¶Ë # return # # # # if state == 0: # #״̬µÈÓÚ0, Ö»ÏÔʾµÆ ## GameWorld.Log("״̬µÈÓÚ0, Ö»ÏÔʾµÆ") # QuestRunner.ShowMissionLight(curPlayer, curMission) # # #ÔÚÈÎÎñ²éѯÖÐÌí¼ÓÕâ¸öÈÎÎñ # QuestRunner.NotifyNewQuestInfo(curPlayer, curMission) # return # # if not isFirstLogin and lastMissionState == missionState: # #GameWorld.Log("lastMissionState = %d curMissionState = %s"%(lastMissionState, missionState)) # GameWorld.Log("Íæ¼Òµ±Ç°ÈÎÎñ¸üÐÂ, ÃèÊö²»±ä") # return # GameWorld.Log("Íæ¼Òµ±Ç°ÈÎÎñ: %s, state = %d"%(taskName, state)) # # # #if questData.Invisible == 0 or missionState !=: # # #Èç¹ûÈÎÎñΪÒþ²ØÈÎÎñ, Ôò²»ÏÔʾ¸ø¿Í»§¶Ë¿´µ½ # taskType = QuestManager.FindQuest(taskID).Type # curPlayer.NotifyTaskInfo(taskType, questData.NameCode, taskID, parentID, missionState) # # # if state == -1 or state == -4: # #ÈÎÎñIDΪ-1»òÕß-4, ±íʾÈÎÎñÒѾ­Íê³É, ²»ÐèÒª½øÒ»²½ÏÔʾÈÎÎñÏêϸÇé¿ö # curPlayer.Sync_ClearMapMissionLight(taskID) # return # # # # #·¢ËÍËùÓÐÈÎÎñ×·×ÙÐÅÏ¢ # QuestRunner.ShowMissionInfo(curPlayer, curMission, -1) # # #·¢ËÍËùÓеƵÄÐÅÏ¢ # QuestRunner.ShowMissionLight(curPlayer, curMission) #--------------------------------------------------------------------- ##°ÑÍæ¼Òµ±Ç°µÄËùÓÐÈÎÎñ·¢Ë͸ø¿Í»§¶Ë, Èç¹ûÍæ¼ÒÊǵÚÒ»´ÎµÇ¼, °ÑËùÓÐÈÎÎñ·¢¸ø¿Í»§¶Ë #@param curPlayer Íæ¼ÒʵÀý #@param isFirstLogin ÊÇ·ñµÚÒ»´ÎµÇ½ #@return ·µ»ØÖµÎÞÒâÒå #@remarks °ÑÍæ¼Òµ±Ç°µÄËùÓÐÈÎÎñ·¢Ë͸ø¿Í»§¶Ë, Èç¹ûÍæ¼ÒÊǵÚÒ»´ÎµÇ¼, °ÑËùÓÐÈÎÎñ·¢¸ø¿Í»§¶Ë def NotifyAllQuestDetail(curPlayer, isFirstLogin = False): notifyMissionList = [] for i in range(0, curPlayer.GetMissionCount()): curMission = curPlayer.GetMissionByIndex(i) notifyMissionList.append(curMission) for curMission in notifyMissionList: #ÔÚ֪ͨÈÎÎñµÄʱºò, »áɾ³ýÈÎÎñ, ËùÒÔÒªÖØ½¨Ò»´ÎÁбí NotifyOneMission(curPlayer, curMission, isFirstLogin) return #ÈÎÎñÃèÊö #def GetTaskDetail(index, tick): # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # sendPack = IPY_GameWorld.IPY_CGetTaskDetail() # sendTaskID = sendPack.GetTaskID() # curTask = curPlayer.FindMission(sendTaskID) # if curTask == None: # GameWorld.Log("ûÓÐÕâ¸öÈÎÎñ%d"%sendTaskID) # return # # descriptionIndex = 0 # state = curTask.GetState() # questDescriptionList = QuestManager.FindQuest(sendTaskID).QuestDescriptionList # # rewardNode = None # if state == -1 or state ==0: # #ÈÎÎñÒѾ­Íê³É/ûÓнӣ¬ ûÓн±Àø½Úµã # descriptionIndex = len(questDescriptionList) - 1 # questDescs = QuestManager.GetQuestDescriptions() # if questDescs.has_key(sendTaskID): # detail = questDescs[sendTaskID] # else: # descriptionIndex = curTask.GetDescriptionIndex() # #µÃµ½ÈÎÎñ½±Àø, Æ´½Ó # rewardNode = QuestRunner.GetRewardNode(curPlayer, curTask) # #ÈÎÎñÃèÊöÌæ»» # detail = questDescriptionList[descriptionIndex].Msg # if detail == "": # return # # # if rewardNode != None: # #ÈÎÎñÃèÊöÓëÈÎÎñ½±ÀøÌæ»» # #detail = detail + QuestRunner.ReplaceNPCTalkText(curPlayer, curTask, rewardNode.FindChildNode("msg").GetXML()) # detail = "%s %s"%(detail, rewardNode.FindChildNode("msg").GetAttribute("code")) # curPlayer.NotifyTaskDetail(sendPack.GetType(), curTask, detail) # return ############################################################# ##»Ø¾ø×°±¸¼Ó¹¤·â°ü #@param curPlayer Íæ¼ÒʵÀý #@param funcAnswer ÏìÓ¦µÄʼþ #@return ÎÞ #@remarks »Ø¾ø×°±¸¼Ó¹¤·â°ü def SyncMakeItemRefuse(curPlayer, funcAnswer): answerDict = { 'EquipAddStar' : ShareDefine.Def_mitLVUpStar, #ÉýÐÇ } answerType = answerDict.get(funcAnswer) if answerType == None: return curPlayer.Sync_MakeItemAnswer(answerType, ChConfig.Def_ComposeState_None) #--------------------------------------------------------------------- ##Ô¶³ÌÖ´ÐÐNPC¹¦ÄÜ #@param curPlayer Íæ¼ÒʵÀý #@param responseType ʼþÏìÓ¦ÀàÐÍ #@param funcAnswer ÏìÓ¦µÄʼþ #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÊÇ·ñÖ´Ðгɹ¦ #@remarks Ô¶³ÌÖ´ÐÐNPC¹¦ÄÜ def FuncDirectCall(curPlayer, responseType, funcAnswer, tick, clientData=None): #Ô¶³Ìʼþ,״̬ͳһÅÐ¶Ï if not FunctionNPCCommon.CheckPlayerCanStateEvent(curPlayer): #Í˳ö»Ø°ü SyncMakeItemRefuse(curPlayer, funcAnswer) return callFunc = GameWorld.GetExecFunc(EventSrc, "%s.%s"%(responseType, funcAnswer)) if callFunc == None: #º¯Êýµ÷Óò»¿ÉʹÓà GameWorld.Log("¹¦ÄÜ»ØÓ¦Ê¼þÏìÓ¦ %s %s²»¿ÉʹÓÃ"%(responseType, funcAnswer) , curPlayer.GetPlayerID()) #Í˳ö»Ø°ü SyncMakeItemRefuse(curPlayer, funcAnswer) return if clientData: return GameWorld.GetPsycoFunc(callFunc)(curPlayer, clientData, tick) return GameWorld.GetPsycoFunc(callFunc)(curPlayer, tick) #--------------------------------------------------------------------- ## NPC¶Ô»°Ö´ÐÐNPC¹¦ÄÜ #@param curPlayer Íæ¼ÒʵÀý #@param funcAnswer ÏìÓ¦µÄʼþ #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÊÇ·ñÖ´Ðгɹ¦ #@remarks NPC¶Ô»°Ö´ÐÐNPC¹¦ÄÜ def FuncCall(curPlayer, funcAnswer, tick): 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 responseType = "Func_%d"%curNPC.GetFunctionType() if not responseType: return callFunc = GameWorld.GetExecFunc(EventSrc, "%s.%s"%(responseType, funcAnswer)) if callFunc == None: #º¯Êýµ÷Óò»¿ÉʹÓà GameWorld.Log("FuncCall ->¹¦ÄÜ»ØÓ¦Ê¼þÏìÓ¦ %s %s²»¿ÉʹÓÃ"%(responseType, funcAnswer) , curPlayer.GetPlayerID()) return return GameWorld.GetPsycoFunc(callFunc)(curPlayer, tick) #--------------------------------------------------------------------- # //08 11 ÌØÊâÈÎÎñ½á¹û#tagEndSpecialEvent # # struct tagEndSpecialEvent # { # tagHead Head; # BYTE Type; //1. ¿ªÊ¼´òÔì 2. ¿ªÊ¼¼ø¶¨ 3. ... # }; #--------------------------------------------------------------------- #=============================================================================== # //08 0B ´òÔìÎïÆ·#tagCMakeItem # tagCMakeItem * GettagCMakeItem(); # # class IPY_CMakeItem # { # public: # //´òÔìµÄÎïÆ·ID # int GetMakeItemID(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 0B ´òÔìÎïÆ·#tagCMakeItem #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 0B ´òÔìÎïÆ·#tagCMakeItem def MakeItem(index, tick): return #=============================================================================== # //08 19 ´òÔì×°±¸#tagCBuildEquip # int GetBuildID(); //´òÔìID # int GetItem1Count(); //ʹÓÃÎïÆ·1¸öÊý # int GetItem2Count(); //ʹÓÃÎïÆ·2¸öÊý # int GetItem3Count(); //ʹÓÃÎïÆ·3¸öÊý # int GetItem4Count(); //ʹÓÃÎïÆ·4¸öÊý # int GetItem5Count(); //ʹÓÃÎïÆ·5¸öÊý # int GetItem6Count(); //ʹÓÃÎïÆ·6¸öÊý # int GetBuildMode(); //´òÔìģʽ£¬Ä¿Ç°ÓУºÄ¬ÈÏ£¬°ó¶¨£¬·Ç°ó¶¨´òÔìģʽ #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 19 ´òÔì×°±¸#tagCBuildEquip #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 19 ´òÔì×°±¸#tagCBuildEquip def BuildEquip(index, tick): # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # FuncDirectCall(curPlayer, "Func_102", "BuildEquip", tick) return #--------------------------------------------------------------------- #=============================================================================== # //08 03 Íæ¼Ò¹ºÂòÎïÆ·#tagCBuyItemList # tagCBuyItemList * GettagCBuyItemList(); # # class IPY_CBuyItemList # { # public: # # int GetBuyItemIndex(); # //¹ºÂòÊýÁ¿ # int GetBuyCount(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 03 Íæ¼Ò¹ºÂòÎïÆ·#tagCBuyItemList #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 03 Íæ¼Ò¹ºÂòÎïÆ·#tagCBuyItemList def BuyItem(index, tick): #µÃµ½Íæ¼ÒµÄ¶ÔÏó curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) result = FuncDirectCall(curPlayer, "FunctionNPCCommon", "BuyItem", tick) if result: PlayerControl.NotifyCode(curPlayer, "BuyResSucceed") return #=============================================================================== # //A2 03 »Ø¹ºÎïÆ· #tagCMBuyItemBack # # struct tagCMBuyItemBack # { # tagHead Head; # BYTE Index; //±³°üλÖÃË÷Òý # }; #=============================================================================== ## »Ø¹ºÎïÆ· # @param None # @return None def BuyItemBack(index, clientPack, tick): #µÃµ½Íæ¼ÒµÄ¶ÔÏó curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FunctionNPCCommon.BuyItemBack(curPlayer, clientPack, tick) return #=============================================================================== # //0E 04 Íæ¼Ò¼ø¶¨ÎïÆ·#tagCShopIdentifyItem # tagCShopIdentifyItem * GettagCShopIdentifyItem(); # # class IPY_CShopIdentifyItem # { # public: # # int GetTYPE(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0E 04 Íæ¼Ò¼ø¶¨ÎïÆ·#tagCShopIdentifyItem #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0E 04 Íæ¼Ò¼ø¶¨ÎïÆ·#tagCShopIdentifyItem def IdentifyItem(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //12 01 ´ò¿ªÐżþ#tagCOpenLetter # tagCOpenLetter * GettagCOpenLetter(); # # class IPY_COpenLetter # { # public: # //ÐżþID # char * GetMailID(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//12 01 ´ò¿ªÐżþ#tagCOpenLetter #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//12 01 ´ò¿ªÐżþ#tagCOpenLetter def OpenLetter(index, tick): #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #FuncCall(curPlayer, "OpenLetter", tick) return #--------------------------------------------------------------------- #=============================================================================== # //12 02 ·¢ËÍÐżþ#tagCSendMail # tagCSendMail * GettagCSendMail(); # # class IPY_CSendMail # { # public: # //Ä¿±êÃû³Æ # char * GetTagName(); # //Ö÷Ìâ # char * GetTitle(); # # int GetContentLen(); # //size = ContentLen # char * GetContent(); # //Òø×Ó # int GetMoney(); # //ÀàÐÍ: TLetterType, ×Ô¼º¸¶·Ñ, ¶Ô·½¸¶·Ñ # int GetLetterType(); # //·¢ËÍÎïÆ·ÊýÁ¿ # int GetItemCount(); # //size = ItemCount # int GetItem(int index); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//12 02 ·¢ËÍÐżþ#tagCSendMail #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//12 02 ·¢ËÍÐżþ#tagCSendMail def SendLetter(index, tick): #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #FuncCall(curPlayer, "SendLetter", tick) return #--------------------------------------------------------------------- #=============================================================================== # //12 05 ÍËÐÅ#tagCReturnMail # tagCReturnMail * GettagCReturnMail(); # # class IPY_CReturnMail # { # public: # # char * GetMailID(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//12 05 ÍËÐÅ#tagCReturnMail #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//12 05 ÍËÐÅ#tagCReturnMail def ReturnLetter(index, tick): #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #FuncCall(curPlayer, "ReturnLetter", tick) return #--------------------------------------------------------------------- #=============================================================================== # //12 06 ɾ³ýÐżþ#tagCDeleteMail # tagCDeleteMail * GettagCDeleteMail(); # # class IPY_CDeleteMail # { # public: # # char * GetMailID(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//12 06 ɾ³ýÐżþ#tagCDeleteMail #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//12 06 ɾ³ýÐżþ#tagCDeleteMail def DeleteLetter(index, tick): #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #FuncCall(curPlayer, "DeleteLetter", tick) return #--------------------------------------------------------------------- #=============================================================================== # //12 07 ÖÃΪ±£´æ#tagCSaveMail # tagCSaveMail * GettagCSaveMail(); # # class IPY_CSaveMail # { # public: # # char * GetMailID(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//12 07 ÖÃΪ±£´æ#tagCSaveMail #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//12 07 ÖÃΪ±£´æ#tagCSaveMail def SaveLetter(index, tick): #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #FuncCall(curPlayer, "SaveLetter", tick) return #--------------------------------------------------------------------- #=============================================================================== # //12 03 ÌáÈ¡ÐżþµÄÇ®#tagCGetMailMoney # tagCGetMailMoney * GettagCGetMailMoney(); # # class IPY_CGetMailMoney # { # public: # # char * GetMailID(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//12 03 ÌáÈ¡ÐżþµÄÇ®#tagCGetMailMoney #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//12 03 ÌáÈ¡ÐżþµÄÇ®#tagCGetMailMoney def GetLetterMoney(index, tick): #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #FuncCall(curPlayer, "GetLetterMoney", tick) return #--------------------------------------------------------------------- #=============================================================================== # //12 04 ÌáÈ¡ÐżþÎïÆ·#tagCGetMailItem # tagCGetMailItem * GettagCGetMailItem(); # # class IPY_CGetMailItem # { # public: # # char * GetMailID(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//12 04 ÌáÈ¡ÐżþÎïÆ·#tagCGetMailItem #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//12 04 ÌáÈ¡ÐżþÎïÆ·#tagCGetMailItem def GetLetterItem(index, tick): #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #FuncCall(curPlayer, "GetLetterItem", tick) return #--------------------------------------------------------------------- #=============================================================================== # //08 05 Íæ¼ÒÐÞÀíÎïÆ·#tagCShopRepairItem # tagCShopRepairItem * GettagCShopRepairItem(); # # class IPY_CShopRepairItem # { # public: # # int GetPackType(); # # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 05 Íæ¼ÒÐÞÀíÎïÆ·#tagCShopRepairItem #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 05 Íæ¼ÒÐÞÀíÎïÆ·#tagCShopRepairItem def RepairItem(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncDirectCall(curPlayer, "FunctionNPCCommon", "RepairItem", tick) return #--------------------------------------------------------------------- #=============================================================================== # //08 06 ÂôÎïÆ·#tagCPlayerSellItem # tagCPlayerSellItem * GettagCPlayerSellItem(); # # class IPY_CPlayerSellItem # { # public: # //±³°üÀàÐÍ # int GetPackType(); # //ÎïÆ·Ë÷Òý # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 06 ÂôÎïÆ·#tagCPlayerSellItem #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 06 ÂôÎïÆ·#tagCPlayerSellItem def SellItem(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) result = FuncDirectCall(curPlayer, "FunctionNPCCommon", "SellItem", tick) sendData = IPY_GameWorld.IPY_CPlayerSellItem() packType = sendData.GetPackType() return #--------------------------------------------------------------------- #=============================================================================== # //08 0C ºÏ³É#tagCMerge # tagCMerge * GettagCMerge(); # # class IPY_CMerge # { # int GetCompoundTimes();//ºÏ³É´ÎÊý # int GetIsAutoBuy();//ÊÇ·ñ×Ô¶¯¹ºÂò¸½¼Ó²ÄÁÏ # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 0C ºÏ³É#tagCMerge #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 0C ºÏ³É#tagCMerge def MergeItem(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //08 0E ÎïÆ·°ó¶¨#tagCBindItem # tagCBindItem * GettagCBindItem(); # # class IPY_CBindItem # { # public: # //°ó¶¨Ó¡¼ÇµÄindex # int GetBindStoneIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 0E ÎïÆ·°ó¶¨#tagCBindItem #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 0E ÎïÆ·°ó¶¨#tagCBindItem def BindItem(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //08 0F ×°±¸´ò¿×#tagCMakeHoleItem # tagCMakeHoleItem * GettagCMakeHoleItem(); # # class IPY_CMakeHoleItem # { # public: # //ÊÇ·ñ×Ô¶¯¹ºÂò, Èç¹û×Ô¶¯¹ºÂò, ÔòÏÂÃæ×Ö¶ÎÎÞЧ # int GetAutoBuyItem(); # //·þÎñÆ÷¶Ë×Ô¼ºÕÒ´ò¿×λÖà # int GetMakeHoleType(); # //ÊÇ·ñʹÓð󶨲ÄÁÏ, Ϊ1ÊÇÈ«²¿ÓÃ, 0ΪֻÓò»°ó¶¨µÄ # int GetIsUseBindItem(); # }; #=============================================================================== # ----->>>ÇØÊ¼»Ê°æ·â°ü, ÔÝʱ²»ÓÃ<<<----- ##¿Í»§¶Ë·â°üÏìÓ¦//08 0F ×°±¸´ò¿×#tagCMakeHoleItem #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 0F ×°±¸´ò¿×#tagCMakeHoleItem def MakeHoleItem(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //08 10 ×°±¸ÉýÐÇ#tagCItemLVUpStar # tagCItemLVUpStar * GettagCItemLVUpStar(); # # class IPY_CItemLVUpStar # { # public: # //ÊÇ·ñ×Ô¶¯¹ºÂò, Èç¹û×Ô¶¯¹ºÂò, ÔòÏÂÃæ×Ö¶ÎÎÞЧ # int GetAutoBuyItem(); # //±³°üÐÇʯλÖà # int GetStarStoneIndex(); # //ÊÇ·ñʹÓ÷À±¬·û # int GetUseFangBaoFu(); # //·À±¬¸½Index # int GetFangBaoFuIndex(); # //ÊÇ·ñ×Ô¶¯¹ºÂò·À±¬·û # int GetAutoBuyFangBaoFu(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦08 10 ×°±¸ÉýÐÇ#tagCItemLVUpStar #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦08 10 ×°±¸ÉýÐÇ#tagCItemLVUpStar def ItemLVUpStar(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //08 11 ÏâǶ±¦Ê¯#tagCInsertStone # tagCInsertStone * GettagCInsertStone(); # # class IPY_CInsertStone # { # public: # //±¦Ê¯Î»Öà # int GetStoneIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 11 ÏâǶ±¦Ê¯#tagCInsertStone #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 11 ÏâǶ±¦Ê¯#tagCInsertStone def InsertStone(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //08 12 ²ð½âÎïÆ·#tagCDepartItem # tagCDepartItem * GettagCDepartItem(); # # class IPY_CDepartItem # { # public: # # int GetType(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 12 ²ð½âÎïÆ·#tagCDepartItem #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 12 ²ð½âÎïÆ·#tagCDepartItem def DepartItem(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0D 01 ºÏ³ÉÎïÆ··ÅÈë±³°ü#tagCPutItemInComposePack # tagCPutItemInComposePack * GettagCPutItemInComposePack(); # # class IPY_CPutItemInComposePack # { # public: # //±³°üλÖà # int GetItemIndex(); # //·ÅÈëλÖà # int GetMakePackIndex(); # //·ÅÈëÊýÁ¿ # int GetCount(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0D 01 ºÏ³ÉÎïÆ··ÅÈë±³°ü#tagCPutItemInComposePack #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0D 01 ºÏ³ÉÎïÆ··ÅÈë±³°ü#tagCPutItemInComposePack def PutItemInCompose(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0D 02 È¡³öºÏ³É±³°üÎïÆ·#tagCGetItemInComposePack # tagCGetItemInComposePack * GettagCGetItemInComposePack(); # # class IPY_CGetItemInComposePack # { # public: # //ºÏ³ÉλÖà # int GetComposePackIndex(); # //ÎïÆ·Î»Öà # int GetItemIndex(); # //È¡³öÊýÁ¿ # int GetCount(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0D 02 È¡³öºÏ³É±³°üÎïÆ·#tagCGetItemInComposePack #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0D 02 È¡³öºÏ³É±³°üÎïÆ·#tagCGetItemInComposePack def GetItemInCompose(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0D 03 ºÏ³É±³°üÖÐÍ϶¯ÎïÆ·#tagCMoveItemInComposePack # tagCMoveItemInComposePack * GettagCMoveItemInComposePack(); # # class IPY_CMoveItemInComposePack # { # public: # //ÆðʼλÖà # int GetSrcIndex(); # //Ä¿±êλÖà # int GetDestIndex(); # # int GetCount(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0D 03 ºÏ³É±³°üÖÐÍ϶¯ÎïÆ·#tagCMoveItemInComposePack #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0D 03 ºÏ³É±³°üÖÐÍ϶¯ÎïÆ·#tagCMoveItemInComposePack def MoveItemInCompose(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0D 04 ÎïÆ··ÅÈë×¼±¸²ð½â±³°ü#tagCPutItemInBreakPreparePack # tagCPutItemInBreakPreparePack * GettagCPutItemInBreakPreparePack(); # # class IPY_CPutItemInBreakPreparePack # { # public: # //±³°üλÖà # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0D 04 ÎïÆ··ÅÈë×¼±¸²ð½â±³°ü#tagCPutItemInBreakPreparePack #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0D 04 ÎïÆ··ÅÈë×¼±¸²ð½â±³°ü#tagCPutItemInBreakPreparePack def PutItemInBreakPreparePack(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0D 05 ´Ó²ð½â×¼±¸±³°üÖÐÈ¡³ö#tagCGetBackItemInBreakPrepare # tagCGetBackItemInBreakPrepare * GettagCGetBackItemInBreakPrepare(); # # class IPY_CGetBackItemInBreakPrepare # { # public: # //²ð½â±³°üµÄλÖà # int GetBreakPrepareIndex(); # //Íϵ½Ä¿µÄµØµÄλÖà # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦ //0D 05 ´Ó²ð½â×¼±¸±³°üÖÐÈ¡³ö#tagCGetBackItemInBreakPrepare #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦ //0D 05 ´Ó²ð½â×¼±¸±³°üÖÐÈ¡³ö#tagCGetBackItemInBreakPrepare def GetBackItemInBreakPrepare(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0D 06 ´Ó²ð½â½á¹û±³°üÖÐÈ¡³ö#tagCGetBackItemInBreakItem # tagCGetBackItemInBreakItem * GettagCGetBackItemInBreakItem(); # # class IPY_CGetBackItemInBreakItem # { # public: # //²ð½â½á¹û±³°üλÖà # int GetBreakItemIndex(); # //È¡³öÊýÄ¿ # int GetCount(); # //±³°üλÖà # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0D 06 ´Ó²ð½â½á¹û±³°üÖÐÈ¡³ö#tagCGetBackItemInBreakItem #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0D 06 ´Ó²ð½â½á¹û±³°üÖÐÈ¡³ö#tagCGetBackItemInBreakItem def GetBackItemInBreakItem(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0D 07 È¡³öºÏ³É½á¹û±³°ü#tagCGetItemFromResultPack # tagCGetItemFromResultPack * GettagCGetItemFromResultPack(); # # class IPY_CGetItemFromResultPack # { # public: # # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0D 07 È¡³öºÏ³É½á¹û±³°ü#tagCGetItemFromResultPack #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0D 07 È¡³öºÏ³É½á¹û±³°ü#tagCGetItemFromResultPack def GetItemFromResultPack(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0D 08 ·ÅÈëºÏ³É½á¹û±³°ü#tagCPutInResultPack # tagCPutInResultPack * GettagCPutInResultPack(); # # class IPY_CPutInResultPack # { # public: # # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0D 08 ·ÅÈëºÏ³É½á¹û±³°ü#tagCPutInResultPack #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0D 08 ·ÅÈëºÏ³É½á¹û±³°ü#tagCPutInResultPack def PutItemInResultPack(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0E 01 ¼ø¶¨ÎïÆ··ÅÈë±³°ü#tagCPutItemInIdentify # tagCPutItemInIdentify * GettagCPutItemInIdentify(); # # class IPY_CPutItemInIdentify # { # public: # //±³°üλÖà # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0E 01 ¼ø¶¨ÎïÆ··ÅÈë±³°ü#tagCPutItemInIdentify #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0E 01 ¼ø¶¨ÎïÆ··ÅÈë±³°ü#tagCPutItemInIdentify def PutItemInIdentify(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0E 02 È¡³ö¼ø¶¨±³°üÄÚµÄÎïÆ·#tagCGetBackItemInIdentify # tagCGetBackItemInIdentify * GettagCGetBackItemInIdentify(); # # class IPY_CGetBackItemInIdentify # { # public: # //ÎïÆ·Î»Öà # int GetItemIndex(); # //È¡³öÊýÁ¿ # int GetCount(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0E 02 È¡³ö¼ø¶¨±³°üÄÚµÄÎïÆ·#tagCGetBackItemInIdentify #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0E 02 È¡³ö¼ø¶¨±³°üÄÚµÄÎïÆ·#tagCGetBackItemInIdentify def GetItemInIdentify(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0E 03 ¼ø¶¨½áÊø#tagCIdentifyOK # tagCIdentifyOK * GettagCIdentifyOK(); # # class IPY_CIdentifyOK # { # public: # //ÎÞÒâÒå # int GetType(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0E 03 ¼ø¶¨½áÊø#tagCIdentifyOK #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0E 03 ¼ø¶¨½áÊø#tagCIdentifyOK def IdentifyOK(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //08 15 ²ð½âÎïÆ·±¦Ê¯#tagCBreakItemStone # tagCBreakItemStone * GettagCBreakItemStone(); # # class IPY_CBreakItemStone # { # public: # //ÎïÆ·µÄµÚ¼¸¸ö±¦Ê¯ # int GetStoneIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 15 ²ð½âÎïÆ·±¦Ê¯#tagCBreakItemStone #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 15 ²ð½âÎïÆ·±¦Ê¯#tagCBreakItemStone def DigItemStone(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //08 16 ʹÓÃÍþ¶û¸Õ#tagCUseWeiErGangIncreaseEndure # tagCUseWeiErGangIncreaseEndure * GettagCUseWeiErGangIncreaseEndure(); # # class IPY_CUseWeiErGangIncreaseEndure # { # public: # //Íþ¶û¸ÕλÖà # int GetGangStoneIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 16 ʹÓÃÍþ¶û¸Õ#tagCUseWeiErGangIncreaseEndure #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 16 ʹÓÃÍþ¶û¸Õ#tagCUseWeiErGangIncreaseEndure def UseWegAddEndure(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 27 ´«ËµÎïÆ·ºÏ³É#tagCLegendMerge # tagCLegendMerge * GettagCLegendMerge(); # # class IPY_CLegendMerge # { # public: # //Index # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 27 ´«ËµÎïÆ·ºÏ³É#tagCLegendMerge #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 27 ´«ËµÎïÆ·ºÏ³É#tagCLegendMerge def LegendItemMerge(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //08 17 ½â³ý°ó¶¨#tagCCancelBind # tagCCancelBind * GettagCCancelBind(); # # class IPY_CCancelBind # { # public: # //°ó¶¨Ó¡¼ÇµÄindex # int GetUnBindStoneIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 17 ½â³ý°ó¶¨#tagCCancelBind #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 17 ½â³ý°ó¶¨#tagCCancelBind def UnBindItem(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //08 18 Õ½»êÌ××°ºÏ³É#tagCSoulOfWarMerge # tagCSoulOfWarMerge * GettagCSoulOfWarMerge(); # # class IPY_CSoulOfWarMerge # { # public: # //ÊÇ·ñʹÓð󶨲ÄÁÏ # int GetUseBindItem(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 18 Õ½»êÌ××°ºÏ³É#tagCSoulOfWarMerge #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 18 Õ½»êÌ××°ºÏ³É#tagCSoulOfWarMerge def SoulOfWarEquip(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 23 ÐÞÀí·¨±¦#tagCRepairFabao # tagCRepairFabao * GettagCRepairFabao(); # # class IPY_CRepairFabao # { # public: # //·¨±¦µÄλÖà # int GetFabaoIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 23 ÐÞÀí·¨±¦#tagCRepairFabao #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 23 ÐÞÀí·¨±¦#tagCRepairFabao def RepairFaBao(index , tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 22 ÌáÁ¶·¨±¦#tagCForgeFaBao # tagCForgeFaBao * GettagCForgeFaBao(); # # class IPY_CForgeFaBao # { # public: # //ÌáÁ¶¶àÉÙ·ÖÖÓ # int GetTime(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 22 ÌáÁ¶·¨±¦#tagCForgeFaBao #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 22 ÌáÁ¶·¨±¦#tagCForgeFaBao def ForgeFaBao(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 25 ·¨±¦ºÏ³É#tagCFaBaoMix # tagCFaBaoMix * GettagCFaBaoMix(); # # class IPY_CFaBaoMix # { # public: # //3¸öºÏ³ÉÒ»¸ö # int GetItemIndex1(); # # int GetItemIndex2(); # # int GetItemIndex3(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 25 ·¨±¦ºÏ³É#tagCFaBaoMix #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 25 ·¨±¦ºÏ³É#tagCFaBaoMix def MixFaBao(index , tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 34 ·¨±¦·ÉÉý#tagCFaBaoFly # tagCFaBaoFly * GettagCFaBaoFly(); # # class IPY_CFaBaoFly # { # public: # //Index # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 34 ·¨±¦·ÉÉý#tagCFaBaoFly #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 34 ·¨±¦·ÉÉý#tagCFaBaoFly def FaBaoFly(index , tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 35 Ĩȥ·¨±¦¼¼ÄÜ#tagCFaBaoForget # tagCFaBaoForget * GettagCFaBaoForget(); # # class IPY_CFaBaoForget # { # public: # //Index # int GetItemIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 35 Ĩȥ·¨±¦¼¼ÄÜ#tagCFaBaoForget #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 35 Ĩȥ·¨±¦¼¼ÄÜ#tagCFaBaoForget def FaBaoForget(index , tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 36 ·¨±¦ÈÚºÏ#tagCFaBaoMerge # tagCFaBaoMerge * GettagCFaBaoMerge(); # # class IPY_CFaBaoMerge # { # public: # //×ó±ßÄǸö·¨±¦ # int GetFaBao1Index(); # //ÓÒ±ßÄǸö·¨±¦ # int GetFaBao2Index(); # //µÚÒ»¸öÎïÆ·, ºìºìµÄ¶¹×Ó # int GetItem1Cnt(); # //µÚ¶þ¸öÎïÆ·, Ô²Ô²µÄÇò # int GetItem2Cnt(); # //µÚÈý¸öÎïÆ·, ¾íÖá # int GetItem3Cnt(); # //ÊÇ·ñʹÓð󶨲ÄÁÏ # int GetUseBindItem(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 36 ·¨±¦ÈÚºÏ#tagCFaBaoMerge #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 36 ·¨±¦ÈÚºÏ#tagCFaBaoMerge def FaBaoMerge(index , tick): return #--------------------------------------------------------------------- #=============================================================================== # //0F 0E ¼Ò×å¾èÏ×Òø×Ó#tagCContributeSilver def ContributeFamilyMoney(index , tick): # ʹÓÃРA6 05 ¼Ò×å¾èÏ× #tagCMFamilyDonate return #--------------------------------------------------------------------- #=============================================================================== # //07 28 5ÐÐת»»#tagCItemChangeProperty # tagCItemChangeProperty * GettagCItemChangeProperty(); # # class IPY_CItemChangeProperty # { # public: # //ÊÇ·ñ²ÄÁϲ»×ã×Ô¶¯¹ºÂò # int GetAutoBuyStuff(); # //ÊÇ·ñʹÓð󶨲ÄÁÏ # int GetUseBindItem(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 28 5ÐÐת»»#tagCItemChangeProperty #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 28 5ÐÐת»»#tagCItemChangeProperty def ItemChangeProperty(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 29 Áé»ê·âÓ¡#tagCItemChangeGiveSoul # tagCItemChangeGiveSoul * GettagCItemChangeGiveSoul(); # # class IPY_CItemChangeGiveSoul # { # public: # //ÊÇ·ñ²ÄÁϲ»×ã×Ô¶¯¹ºÂò # int GetAutoBuyStuff(); # //ÊÇ·ñʹÓð󶨲ÄÁÏ # int GetUseBindItem(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 29 Áé»ê·âÓ¡#tagCItemChangeGiveSoul #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 29 Áé»ê·âÓ¡#tagCItemChangeGiveSoul def ItemChangeGiveSoul(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 30 Áé»êת»»#tagCItemChangeSoul # tagCItemChangeSoul * GettagCItemChangeSoul(); # # class IPY_CItemChangeSoul # { # public: # //ÊÇ·ñ²ÄÁϲ»×ã×Ô¶¯¹ºÂò # int GetAutoBuyStuff(); # //ÊÇ·ñʹÓð󶨲ÄÁÏ # int GetUseBindItem(); # //ÊÇ·ñʹÓÃÁé»êʯ # int GetUseIceStone(); # //ÊÇ·ñ×Ô¶¯¹ºÂò # int GetIceStoneAutoBuy(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 30 Áé»êת»»#tagCItemChangeSoul #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 30 Áé»êת»»#tagCItemChangeSoul def ItemChangeSoul(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 31 Ç©Ãû¸Ä±äÖé#tagCItemChangeMark # tagCItemChangeMark * GettagCItemChangeMark(); # # class IPY_CItemChangeMark # { # public: # //ÊÇ·ñʹÓð󶨲ÄÁÏ # int GetUseBindItem(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 31 Ç©Ãû¸Ä±äÖé#tagCItemChangeMark #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 31 Ç©Ãû¸Ä±äÖé#tagCItemChangeMark def ItemChangeMark(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 32 Ç©ÃûÖé#tagCItemChangeGiveMark # tagCItemChangeGiveMark * GettagCItemChangeGiveMark(); # # class IPY_CItemChangeGiveMark # { # public: # //ÊÇ·ñʹÓð󶨲ÄÁÏ # int GetUseBindItem(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 32 Ç©ÃûÖé#tagCItemChangeGiveMark #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 32 Ç©ÃûÖé#tagCItemChangeGiveMark def ItemChangeGiveMark(index, tick): return #--------------------------------------------------------------------- ##ÖØÖñ³°üµÈ¼¶ #@param curPlayer Íæ¼ÒʵÀý #@param addPackCnt ¿ªÆôµÈ¼¶ #@return ²¼¶ûÖµ #@remarks ×Ô¶¨Ò庯Êý ÉèÖñ³°üµÈ¼¶ def ResetBackPack(curPlayer, addPackCnt = 1): packType = IPY_GameWorld.rptItem #³õʼ»¯Íæ¼Ò±³°ü if packType not in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys(): return keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key] #ÒѾ­¿ªÆôµÄ±³°ü¸ñ×ÓÊý packCount = ItemCommon.GetPackInitCount(packType) + curPlayer.NomalDictGetProperty(keyName) resetPackCnt = packCount + addPackCnt curPack = curPlayer.GetItemManager().GetPack(packType) if resetPackCnt > curPack.GetMaxCount(): return False #ÉèÖÃÍæ¼Ò±³°üÊýÁ¿ curPack.SetCount(resetPackCnt) PlayerControl.NomalDictSetProperty(curPlayer, keyName, curPlayer.NomalDictGetProperty(keyName) + addPackCnt) #³õʼ»¯Íæ¼Ò±³°ü PlayerControl.Init_ItemPack(curPlayer) PlayerControl.NotifyCode(curPlayer, "GeRen_hwj35_149184", [addPackCnt]) return True #--------------------------------------------------------------------- ##ÉèÖòֿâµÈ¼¶ #@param curPlayer Íæ¼ÒʵÀý #@param addWarehouseCnt ²Ö¿âµÈ¼¶ #@param needNotify ÊÇ·ñÐèҪϵͳÌáʾ #@return ²¼¶ûÖµ #@remarks ×Ô¶¨Ò庯Êý ÉèÖòֿâµÈ¼¶ def ResetWarehouse(curPlayer, addWarehouseCnt = 1, needNotify = True): packType = IPY_GameWorld.rptWarehouse #³õʼ»¯Íæ¼Ò±³°ü if packType not in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys(): return keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key] count = ItemCommon.GetPackInitCount(packType) + curPlayer.NomalDictGetProperty(keyName) + addWarehouseCnt curPack = curPlayer.GetItemManager().GetPack(packType) if count > curPack.GetMaxCount(): return False #ÉèÖòֿâ¸ñ×ÓÊý curPack.SetCount(count) PlayerControl.NomalDictSetProperty(curPlayer, keyName, curPlayer.NomalDictGetProperty(keyName) + addWarehouseCnt) #³õʼ»¯²Ö¿â PlayerControl.Init_Warehouse(curPlayer) if not needNotify: return True PlayerControl.NotifyCode(curPlayer, "GeRen_hwj35_874335", [addWarehouseCnt]) return True #--------------------------------------------------------------------- #=============================================================================== # //0C 01 ±³°üÎïÆ··ÅÈë²Ö¿â#tagCPutItemInWarehouse # tagCPutItemInWarehouse * GettagCPutItemInWarehouse(); # # class IPY_CPutItemInWarehouse # { # public: # //±³°üλÖà # int GetItemIndex(); # //·ÅÈëλÖà # int GetWarehouseIndex(); # //·ÅÈëÊýÁ¿ # int GetCount(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0C 01 ±³°üÎïÆ··ÅÈë²Ö¿â#tagCPutItemInWarehouse #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0C 01 ±³°üÎïÆ··ÅÈë²Ö¿â#tagCPutItemInWarehouse def PutItemInWarehouse(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "PutItemInWarehouse", tick) return #--------------------------------------------------------------------- #=============================================================================== # //0C 02 È¡³ö²Ö¿âÎïÆ·#tagCGetItemInWarehouse # tagCGetItemInWarehouse * GettagCGetItemInWarehouse(); # # class IPY_CGetItemInWarehouse # { # public: # //²Ö¿âλÖà # int GetWarehouseIndex(); # //ÎïÆ·Î»Öà # int GetItemIndex(); # //È¡³öÊýÁ¿ # int GetCount(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0C 02 È¡³ö²Ö¿âÎïÆ·#tagCGetItemInWarehouse #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0C 02 È¡³ö²Ö¿âÎïÆ·#tagCGetItemInWarehouse def GetItemInWarehouse(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "GetItemInWarehouse", tick) return #--------------------------------------------------------------------- #=============================================================================== # //0C 03 ²Ö¿âÈ¡³ö½ðÇ®#tagCGetMoneyInWarehouse # tagCGetMoneyInWarehouse * GettagCGetMoneyInWarehouse(); # # class IPY_CGetMoneyInWarehouse # { # public: # //½ðÇ®ÀàÐÍ # int GetMoneyType(); # //Ç® # int GetMoney(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0C 03 ²Ö¿âÈ¡³ö½ðÇ®#tagCGetMoneyInWarehouse #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0C 03 ²Ö¿âÈ¡³ö½ðÇ®#tagCGetMoneyInWarehouse def GetMoneyInWarehouse(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "GetMoneyInWarehouse", tick) return #--------------------------------------------------------------------- #=============================================================================== # //0C 04 ²Ö¿â·ÅÈë½ðÇ®#tagCPutMoneyInWarehouse # tagCPutMoneyInWarehouse * GettagCPutMoneyInWarehouse(); # # class IPY_CPutMoneyInWarehouse # { # public: # //½ðÇ®ÀàÐÍ # int GetMoneyType(); # //½ðÇ® # int GetMoney(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0C 04 ²Ö¿â·ÅÈë½ðÇ®#tagCPutMoneyInWarehouse #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0C 04 ²Ö¿â·ÅÈë½ðÇ®#tagCPutMoneyInWarehouse def PutMoneyInWarehouse(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "PutMoneyInWarehouse", tick) return #--------------------------------------------------------------------- #=============================================================================== # //0C 05 ÉèÖòֿâÃÜÂë#tagCSetWarehousePsw # tagCSetWarehousePsw * GettagCSetWarehousePsw(); # # class IPY_CSetWarehousePsw # { # public: # //µ±Ç°ÃÜÂë(¿Õ±íʾûÓÐÃÜÂë) # char * GetPsw(); # //¾ÉÃÜÂë # char * GetOldPsw(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0C 05 ÉèÖòֿâÃÜÂë#tagCSetWarehousePsw #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0C 05 ÉèÖòֿâÃÜÂë#tagCSetWarehousePsw def SetWarehousePsw(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "SetWarehousePsw", tick) return #--------------------------------------------------------------------- #=============================================================================== # //0C 06 Ëø¶¨²Ö¿â#tagCSetWarehouseLock # tagCSetWarehouseLock * GettagCSetWarehouseLock(); # # class IPY_CSetWarehouseLock # { # public: # //0: ½âËø 1:Ëø¶¨ # int GetIsLock(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0C 06 Ëø¶¨²Ö¿â#tagCSetWarehouseLock #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0C 06 Ëø¶¨²Ö¿â#tagCSetWarehouseLock def SetWarehouseLock(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "SetWarehouseLock", tick) return #--------------------------------------------------------------------- #=============================================================================== # //0C 07 ¿Í»§¶Ë·¢ËͲֿâÃÜÂë#tagSendWarehousePsw # tagSendWarehousePsw * GettagSendWarehousePsw(); # # class IPY_SendWarehousePsw # { # public: # # char * GetPsw(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0C 07 ¿Í»§¶Ë·¢ËͲֿâÃÜÂë#tagSendWarehousePsw #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0C 07 ¿Í»§¶Ë·¢ËͲֿâÃÜÂë#tagSendWarehousePsw def SendWarehousePsw(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "SendWarehousePsw", tick) return #--------------------------------------------------------------------- #=============================================================================== # //0C 08 µÚÒ»´Î´ò¿ª²Ö¿â#tagCInitWarehousePsw # tagCInitWarehousePsw * GettagCInitWarehousePsw(); # # class IPY_CInitWarehousePsw # { # public: # //ÃÜÂë # char * GetPsw(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0C 08 µÚÒ»´Î´ò¿ª²Ö¿â#tagCInitWarehousePsw #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0C 08 µÚÒ»´Î´ò¿ª²Ö¿â#tagCInitWarehousePsw def InitWarehousePsw(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "InitWarehousePsw", tick) DoExitEvent(curPlayer) return #--------------------------------------------------------------------- #=============================================================================== # //07 10 ²Ö¿âÖØÕû#tagCWarehouseReset # tagCWarehouseReset * GettagCWarehouseReset(); # # class IPY_CWarehouseReset # { # public: # # int GetType(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//07 10 ²Ö¿âÖØÕû#tagCWarehouseReset #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//07 10 ²Ö¿âÖØÕû#tagCWarehouseReset def ResetWarehouseItem(index, tick): #=============================================================================== # ±³°üÖØÕûºÏ²¢ 07 0F # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # FuncCall(curPlayer, "ResetWarehouseItem", tick) #=============================================================================== return #--------------------------------------------------------------------- #=============================================================================== # //07 0F ±³°üÖØÕû#tagCItemPackReset # //¶ÔÐÔÄÜÓбȽϴóµÄÓ°Ïì # # struct tagCItemPackReset # { # BYTE Type; //±³°üÀàÐÍ # WORD ItemBeginIndex; //ÎïÆ·ÆðʼË÷Òý # WORD ItemEndIndex; //ÎïÆ·½áÊøË÷Òý # }; #=============================================================================== ## ÎïÆ·ÖØÕû(·â°ü²ÎÊý) # @param index ÎïÆ·Ë÷Òý # @param tick µ±Ç°Ê±¼ä # @return None # @remarks º¯ÊýÏêϸ˵Ã÷. def ResetItem(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) sendPack = IPY_GameWorld.IPY_CItemPackReset() sendPack_PackIndex = sendPack.GetType() sendPack_ItemBeginIndex = sendPack.GetItemBeginIndex() sendPack_ItemEndIndex = sendPack.GetItemEndIndex() #·â°ü¼ì²é if sendPack_PackIndex not in ChConfig.Def_CanItemResetPack: GameWorld.ErrLog('ResetItem TypeErr = %s'%(sendPack_PackIndex), curPlayer.GetID()) return #Íæ¼Ò±³°ü¼ì²é rolePack = curPlayer.GetItemManager().GetPack(sendPack_PackIndex) if sendPack_ItemBeginIndex < 0 or sendPack_ItemBeginIndex >= sendPack_ItemEndIndex \ or sendPack_ItemEndIndex >= rolePack.GetCount(): GameWorld.ErrLog('ResetItem IndexErr = %s,%s'%(sendPack_ItemBeginIndex, sendPack_ItemEndIndex), curPlayer.GetID()) return #²Ö¿â±³°üÌØÊâ´¦Àí: ÿ´ÎÕûÀíÒ»Ò³ #=========================================================================== # if sendPack_PackIndex == IPY_GameWorld.rptWarehouse: # #if sendPack_ItemEndIndex - sendPack_ItemBeginIndex >= ChConfig.Def_ItemReset_WarehousePageCnt: # # GameWorld.ErrLog('ResetItem WarehouseIndexErr = %s,%s'%(sendPack_ItemBeginIndex, sendPack_ItemEndIndex), curPlayer.GetID()) # # return # # #Íæ¼Òµ±Ç°×´Ì¬²»ÊÇ²Ö¿â´æÈ¡×´Ì¬ # if curPlayer.GetWarehouseState() != IPY_GameWorld.wsWarehouse: # return #=========================================================================== #±³°üÕûÀíÂß¼­ ItemControler.ResetItem(curPlayer, sendPack_PackIndex, sendPack_ItemBeginIndex, sendPack_ItemEndIndex, tick) return #--------------------------------------------------------------------- #=============================================================================== # //08 14 ³ÆºÅºÏ³É#tagCTitleMix # tagCTitleMix * GettagCTitleMix(); # # class IPY_CTitleMix # { # public: # //×îÖÕÒªºÏ³ÉµÄ³ÆºÅ # int GetTitleID(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 14 ³ÆºÅºÏ³É#tagCTitleMix #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 14 ³ÆºÅºÏ³É#tagCTitleMix def MixTitle(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncCall(curPlayer, "MixTitle", tick) return #--------------------------------------------------------------------- #=============================================================================== # //0C 09 ²Ö¿âÍ϶¯ÎïÆ·#tagMoveItemInWarehouse # tagMoveItemInWarehouse * GettagMoveItemInWarehouse(); # # class IPY_MoveItemInWarehouse # { # public: # //ÆðʼλÖà # int GetSrcIndex(); # //Ä¿±êλÖà # int GetDestIndex(); # # int GetCount(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//0C 09 ²Ö¿âÍ϶¯ÎïÆ·#tagMoveItemInWarehouse #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//0C 09 ²Ö¿âÍ϶¯ÎïÆ·#tagMoveItemInWarehouse def MoveItemInWarehouse(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) FuncDirectCall(curPlayer, Def_Warehouse_FuncName, "MoveItemInWarehouse", tick) return #--------------------------------------------------------------------- ##ÖØ¶ÁÈÎÎñˢР#@param ÎÞ #@return ·µ»ØÖµÎÞÒâÒå #@remarks ÖØ¶ÁÈÎÎñˢРdef DoReloadRefresh(): #¸³Öµ QuestRunner.SetFindQuestFunc(QuestManager.FindQuest) QuestRunner.SetFunctionNPCTalk(QuestManager.GetFunctionNPCTalk()) QuestRunner.SetFindDefaultTalkFunc(QuestManager.FindDefaultTalk) QuestRunner.SetQuestTrig(QuestManager.GetQuestTrig()) QuestRunner.SetQuestDescriptions(QuestManager.GetQuestDescriptions()) QuestRunner.SetAllQuestsEvents(QuestManager.GetAllQuestsEvents()) #--------------------------------------×Ô¶¨Òå·½·¨ ##½áÊøÊ¼þÏìÓ¦ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ×Ô¶¨Ò庯Êý:½áÊøÊ¼þÏìÓ¦ def DoExitEvent(curPlayer): #ÔÊÐíÕûÀí±³°ü #ExitEvent() »á°Ñ״̬Çå¿Õ,Onday»á´¥·¢£¬ÐèÒª»¹Ô­ playerAction = curPlayer.GetPlayerAction() curPlayer.SetForbiddenResetItem(0) ExitCompose(curPlayer) ExitWarehouse(curPlayer) #ExitRepair(curPlayer) ExitCreateFamily(curPlayer) ExitBillboard(curPlayer) #ExitEventLock(curPlayer) #npcÉ̵êÍ˳ö ExitNPCShop(curPlayer) #PlayerTrade.LeaveTrade(curPlayer, 0) # Çå³ýpy×Ô¶¨Òå״̬ #ClearPyPlayerAction(curPlayer) #µ÷Óõײã½áÊøÊ¼þ #±ÜÃâ²ß»®±ä¸ü£¬µ¼ÖÂÆäËûÍ˳öËø¶¨Ê¼þʹÈÎÎñ1δ½ÓÈ¡¾ÍÍ˳öËø¶¨ if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_Frist_Lock) != 1: curPlayer.ExitEvent() if playerAction == IPY_GameWorld.paSit: #»¹Ô­´ò×ø PlayerControl.SetIsNeedProcess(curPlayer, True) #Íæ¼Ò×øÏ curPlayer.Sit() #GameWorld.Log("Íæ¼ÒÍ˳öËùÓÐʼþ³É¹¦" , curPlayer.GetPlayerID()) return True #--------------------------------------------------------------------- ## npcÉ̵êÍ˳ö # @param curPlayer Íæ¼ÒʵÀý # @return ·µ»ØÖµÎÞÒâÒå def ExitNPCShop(curPlayer): # ÉèÖõ±Ç°É̵êµÄnpcidΪ0 curPlayer.SetDict(ChConfig.Def_PlayerKey_TradeTagNPC, 0) return ## Çå³ýpy×Ô¶¨Òå״̬ # @param curPlayer Íæ¼ÒʵÀý # @return ·µ»ØÖµÎÞÒâÒå def ClearPyPlayerAction(curPlayer): #Çå³ýpy×Ô¶¨Òå״̬ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PyPlayerAction, 0) return #--------------------------------------------------------------------- ##½áÊø²é¿´ÅÅÐаñ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ×Ô¶¨Ò庯Êý:½áÊø²é¿´ÅÅÐаñ def ExitBillboard(curPlayer): if curPlayer.GetWatchBillboardState() == 0: return curPlayer.GameServer_SetWatchBillboardState(0) return #--------------------------------------------------------------------- ##½áÊø²Ö¿âʼþ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ×Ô¶¨Ò庯Êý:½áÊø²Ö¿âʼþ def ExitWarehouse(curPlayer): curPlayer.SetWarehouseState(IPY_GameWorld.wsNull) return #--------------------------------------------------------------------- ##½áÊø´òÔìʼþ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ×Ô¶¨Ò庯Êý:½áÊø´òÔìʼþ def ExitCompose(curPlayer): curPlayer.SetComposeItemState(IPY_GameWorld.cisNull) return #--------------------------------------------------------------------- ##½áÊøÐÞÀíʼþ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ×Ô¶¨Ò庯Êý:½áÊøÐÞÀíʼþ def ExitRepair(curPlayer): if curPlayer.GetEventHaveFixItem() == True: #Ë¢ÐÂÊôÐÔ playerControl = PlayerControl.PlayerControl(curPlayer) playerControl.RefreshAllState() #ÖØÖÃ״̬ curPlayer.SetEventHaveFixItem(False) #--------------------------------------------------------------------- ##½áÊø´´½¨¼Ò×åʼþ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå #@remarks ×Ô¶¨Ò庯Êý:½áÊø´´½¨¼Ò×åʼþ def ExitCreateFamily(curPlayer): PlayerFamily.SendPack_GameServer_ClearViewFamilyState(curPlayer) return #--------------------------------------------------------------------- #=============================================================================== # //08 09 È¡ÏûÈÎÎñ#tagCCancelTask # tagCCancelTask * GettagCCancelTask(); # # class IPY_CCancelTask # { # public: # # int GetTaskID(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//08 09 È¡ÏûÈÎÎñ#tagCCancelTask #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//08 09 È¡ÏûÈÎÎñ#tagCCancelTask def DeleteMission(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) pack = IPY_GameWorld.IPY_CCancelTask() missionID = pack.GetTaskID() curMission = curPlayer.FindMission(missionID) if not curMission: return missionState = curMission.GetState() #δ½ÓÈÎÎñ»òÒÑÍê³ÉÈÎÎñ²»¿É·ÅÆú if missionState in [ ChConfig.Def_Mission_State_NoAccept, ChConfig.Def_Mission_State_Over ]: return #ÒÆ¶¯Öв»Ö´Ðд˲Ù×÷ if curPlayer.IsMoving(): #PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_0") return if curPlayer.GetPlayerAction()!= IPY_GameWorld.paNull: #ÄúÖ»ÓÐÔÚ¿ÕÏÐ״̬ÏÂ²Å¿É·ÅÆúÈÎÎñ PlayerControl.NotifyCode(curPlayer, "Task_cannot_Delete02") return #if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull: # PlayerControl.NotifyCode(curPlayer, "GeRen_hgg_880525") # return curQuestData = QuestManager.FindQuest(missionID) if not curQuestData: return #·ÅÆúÐüÉÍÈÎÎñ #if missionID == ChConfig.Def_ArrestMissionID: # PlayerArrestTask.OnDeleteArrestTask(curPlayer) #ÏÈÔÚÈÎÎñ±íÖÐÕÒÊý¾Ý, Èç¹ûÕÒµ½ÁË, ¾Í²»±éÀúXMLÁË if __DoLogic_DeleteMission(curPlayer, curMission): GameWorld.Log("ÔÚÈÎÎñ±íÖÐÕÒÊý¾Ý, ɾ³ýÈÎÎñ = %s, ״̬ = %s"%(missionID, missionState), curPlayer.GetID()) return #GameWorld.Log("ÔÚXMLÖвéÕÒÊý¾Ý, ɾ³ýÈÎÎñ = %s, ״̬ = %s"%(missionID, missionState), curPlayer.GetID()) #ɾ³ý±íÖÐÎÞ, ¾Í¶ÁXML( ÕâÀïµÄÈÎÎñÓ¦¸Ã¶¼ÊÇȫͼÈÎÎñ, ÈçÿÈÕÈÎÎñ ) RunQuestEvent(curPlayer, "on_delete", missionID, Def_RunQuestType_Normal) return #--------------------------------------------------------------------- ##¶ÁÊý¾Ý¿âÈÎÎñɾ³ý±í, ɾ³ýÈÎÎñ # @param curPlayer Íæ¼ÒʵÀý # @param curMission ÈÎÎñʵÀý # @return ·µ»ØÖµÕæ, ɾ³ý³É¹¦ # @remarks ×Ô¶¨Ò庯Êý, ¶ÁÊý¾Ý¿âÈÎÎñɾ³ý±í, ɾ³ýÈÎÎñ def __DoLogic_DeleteMission(curPlayer, curMission): missionID = curMission.GetMissionID() GameWorld.Log("__DoLogic_DeleteMission---%s"%missionID, curPlayer.GetID()) delMissionData = GameWorld.GetGameData().GetMissionDeleteByID(missionID) #ÈÎÎñɾ³ý±íÖÐÎÞ´ËÈÎÎñ if not delMissionData: return #ÊÇ·ñÇå³ýïÚ³µ if delMissionData.GetDeleteTruck(): #Íæ¼ÒÓµÓÐïÚ³µ, ÇÒïÚ³µIDºÍÈÎÎñIDÒ»Ö if curPlayer.GetTruckID() != 0 and curPlayer.GetTruckEventID() == missionID: curPlayer.GameServer_DelTruck() #ÊÇ·ñÐèҪɾ³ýÎïÆ· for index in range(0, delMissionData.GetDeleteItemCount()): delItemData = delMissionData.GetDeleteItemAt(index) delItemID = delItemData.GetID() #0±íʾȫ²¿É¾³ý delItemCount = delItemData.GetCount() ItemCommon.DelMissionItem(curPlayer, IPY_GameWorld.rptItem, delItemID, delItemCount, missionID) #ɾ³ýÕâ¸öÈÎÎñ QuestCommon.DeleteMission(curPlayer, missionID) #ÊÇ·ñÓд¥·¢ÐÂÈÎÎñ nextMissionID = delMissionData.GetNextMissionID() if nextMissionID > 0: curAddMission = QuestCommon.AddNewMission(curPlayer, nextMissionID) NotifyOneMission(curPlayer, curAddMission) return True #--------------------------------------------------------------------- #=============================================================================== # //04 03 ÈÎÎñ´«ËÍ#tagCMissionTransport # tagCMissionTransport * GettagCMissionTransport(); # # class IPY_CMissionTransport # { # public: # # int GetMapID(); # # int GetPosX(); # # int GetPosY(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦//04 03 ÈÎÎñ´«ËÍ#tagCMissionTransport #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦//04 03 ÈÎÎñ´«ËÍ#tagCMissionTransport def MissionMove(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 37 Ê¥Æ÷Ç¿»¯#tagCShengQiQiangHua # tagCShengQiQiangHua * GettagCShengQiQiangHua(); # # class IPY_CShengQiQiangHua # { # public: # //Ê¥Æ÷λÖà # int GetDestIndex(); # //×Ô¶¯Âò²ÄÁÏ # int GetAutoBuyMaterial(); # // ²»Ê¹Óð󶨲ÄÁÏÇ¿»¯ # int GetNotUserBindMaterial(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦ //07 37 Ê¥Æ÷Ç¿»¯#tagCShengQiQiangHua #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦ //07 37 Ê¥Æ÷Ç¿»¯#tagCShengQiQiangHua def ShengQiQiangHua(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //07 38 Çå³ýÊ¥Æ÷¸½¼ÓÊôÐÔ#tagCClearShengQiAttrs # tagCClearShengQiAttrs * GettagCClearShengQiAttrs(); # # class IPY_CClearShengQiAttrs # { # public: # # int GetDestIndex(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦ //07 38 Çå³ýÊ¥Æ÷¸½¼ÓÊôÐÔ#tagCClearShengQiAttrs #@param index Íæ¼ÒË÷Òý #@param tick ʱ¼ä´Á #@return ·µ»ØÖµÎÞÒâÒå #@remarks ¿Í»§¶Ë·â°üÏìÓ¦ //07 38 Çå³ýÊ¥Æ÷¸½¼ÓÊôÐÔ#tagCClearShengQiAttrs def ClearShengQiAttrs(index, tick): return #--------------------------------------------------------------------- #--------------------------------------------------------------------- #=============================================================================== # //0D 0E ±¦Ê¯ºÏ³É#tagCStoneCompound # tagCStoneCompound * GettagCStoneCompound(); # # class IPY_CStoneCompound # { # public: # // ºÏ³É´ÎÊý # int GetCompoundCount(); # // ºÏ³Éģʽ # int GetCompoundTimes(); # // ×Ô¶¯¹ºÂò # int GetIsAutoBuy(); # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦ //0D 0E ±¦Ê¯ºÏ³É#tagCStoneCompound # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå # @remarks ¿Í»§¶Ë·â°üÏìÓ¦ //0D 0E ±¦Ê¯ºÏ³É#tagCStoneCompound def StoneCompound(index, tick): # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # FuncDirectCall(curPlayer, "Func_103", "BeginStoneCompound", tick) return #=============================================================================== # //A1 06 ×°±¸Ì××°»¯#tagCEquipSuite # # struct tagCEquipSuite # { # tagHead Head; # BYTE EquipPackType; //×°±¸ËùÔÚ±³°üÀàÐÍ # DWORD ItemIndex; //×°±¸±³°üË÷Òý # }; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦ //08 1A ×°±¸Ì××°»¯#tagCEquipSuite # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå # @remarks ¿Í»§¶Ë·â°üÏìÓ¦ //08 1A ×°±¸Ì××°»¯#tagCEquipSuite def EquipMakeSuit(index, clientData, tick): #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #FuncDirectCall(curPlayer, "Func_104", "EquipMakeSuit", tick, clientData) return #=============================================================================== #//A1 05 ×°±¸¸½Ä§ #tagCEquipAddSkill # #struct tagCEquipAddSkill #{ # tagHead Head; # BYTE EquipPackType; //×°±¸ËùÔÚ±³°üÀàÐÍ # BYTE Type; // 0-Çå¿Õ;1-¸½¼Ó # WORD EquipIndex; // ×°±¸ÔÚ±³°üÖеÄË÷Òý #}; #=============================================================================== ##¿Í»§¶Ë·â°üÏìÓ¦ # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå # @remarks ¿Í»§¶Ë·â°üÏìÓ¦ //0D 09 ×°±¸¸½Ä§#tagCEquipAddSkill def MagicAttached(index, clientData, tick): # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # FuncDirectCall(curPlayer, "Func_104", "MagicAttached", tick, clientData) return #=================================================================================================== # //0D 11 ÍþÍû×°±¸ºÏ³É·â°ü#tagCPrestigeEquipMerge # tagCPrestigeEquipMerge * GettagCPrestigeEquipMerge(); # # class IPY_CPrestigeEquipMerge # { # public: # # //ºÏ³ÉÀàÐÍ # int GetType(); # //×°±¸Ë÷Òý # int GetEquipIndex(); # //²ÄÁÏË÷Òý # int GetMaterialIndex(); # }; #=================================================================================================== ##0D 11 ÍþÍû×°±¸ºÏ³É·â°ü#tagCPrestigeEquipMerge # @param curPlayer Íæ¼ÒʵÀý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå # @remarks ¿Í»§¶Ë·â°üÏìÓ¦ //0D 11 ÍþÍû×°±¸ºÏ³É·â°ü#tagCPrestigeEquipMerge def PrestigeEquipMerge(index, tick): # # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # FuncDirectCall(curPlayer, "Func_106", "PrestigeEquipMerge", tick) return #=============================================================================== # //0D 0C ²ÄÁϼӹ¤#tagCMaterialCompound # # struct tagCMaterialCompound # { # tagHead Head; # WORD ItemIndex; // ²ÄÁÏÔÚ±³°üÖеÄË÷Òý # }; #=============================================================================== ##²ÄÁϼӹ¤·â°ü£¬µãÒ»´ÎÖ»ºÏÒ»´Î£¬£¨Ë鯬ºÏ³É£© # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå # @remarks ¿Í»§¶Ë·â°üÏìÓ¦ //0D 0C ²ÄÁϼӹ¤#tagCMaterialCompound def StuffMachining(index, tick): return ##½øÈ븱±¾³¡¾°ÑéÖ¤. # @param curPlayer Íæ¼ÒʵÀý # @param mapID µØÍ¼ID # @param tick ʱ¼ä´Á # @return ÊÇ·ñÑéÖ¤³É¹¦ # @remarks ¿Í»§¶Ë·â°üÏìÓ¦ def DoLogic_EnterFbGameEvent(curPlayer, mapID, tick): #ÔÝÆÁ±ÎNPCÑéÖ¤ÅÐ¶Ï return # #ûÓÐNPC¶Ô»°µ¯½çÃæ # if mapID in ChConfig.Def_EnterFB_NoNPCForm or mapID in ReadChConfig.GetEvalChConfig("MapID_NoNPCForm"): # return True # # callName = ChConfig.Def_EnterFb_CallNPCFunc.get(mapID) # # if callName == None: # return False # # result = FuncCall(curPlayer, callName, tick) # # if not result: # return False # # return True #--------------------------------------------------------------------- ## ¹ºÂò²Ö¿â·â°ü //0C 10 ¹ºÂò²Ö¿â¿Õ¼ä # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ÎÞ·µ»ØÖµ # @remarks ¹ºÂò²Ö¿â·â°ü def BuyWarehouse(index, tick): # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # # #ת»»Íæ¼ÒµÄ»õ±Ò # buyWarehouseType = PlayerControl.ChangeMoneyType(curPlayer, ChConfig.Def_BuyWarehouse_Type) # # if not PlayerControl.HaveMoney(curPlayer, buyWarehouseType, ChConfig.Def_BuyWarehouse_Cost): # #½ðÇ®²»×ã # return # # if not ResetWarehouse(curPlayer): # #²Ö¿â¿Õ¼äÒÑÂú # return # # #---¿ÛÍæ¼ÒÇ®--- # if not PlayerControl.PayMoney(curPlayer, buyWarehouseType, ChConfig.Def_BuyWarehouse_Cost): # GameWorld.ErrLog('BuyWarehouse PayMoneyErr') # return # # #ÊÖÐø·ÑÁ÷Ïò¼Ç¼ # PlayerControl.DataServerMoneyLog(curPlayer, buyWarehouseType, 656, par = ChConfig.Def_BuyWarehouse_Cost) return #--------------------------------------------------------------------- ##//07 3A ¹ºÂòÎïÆ·±³°ü¿Õ¼ä#tagCBuyBackpack # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ÎÞ·µ»ØÖµ # @remarks ¹ºÂòÎïÆ·±³°ü¿Õ¼ä def BuyItemPack(index, tick): # ¹Ø±Õ´Ë·â°ü¹¦ÄÜ£¬ÇëʹÓÃͨÓùºÂò·â°ü07 41 return # # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # #ת»»Íæ¼ÒµÄ»õ±Ò # useMoneyType = PlayerControl.ChangeMoneyType(curPlayer, ChConfig.Def_BuyItemPack_Type) # # #ÑéÖ¤Íæ¼Ò»õ±Ò # if not PlayerControl.HaveMoney(curPlayer, useMoneyType, ChConfig.Def_BuyItemPack_Cost): # return # # if not ResetBackPack(curPlayer): # #±³°ü¿Õ¼äÒÑÂú # return # # #---¿ÛÍæ¼ÒÇ®--- # if not PlayerControl.PayMoney(curPlayer, useMoneyType, ChConfig.Def_BuyItemPack_Cost): # GameWorld.ErrLog('BuyItemPack PayMoneyErr') # return # # #ÊÖÐø·ÑÁ÷Ïò¼Ç¼ # PlayerControl.DataServerMoneyLog(curPlayer, useMoneyType, 655, par = ChConfig.Def_BuyItemPack_Cost) # return #--------------------------------------------------------------------- #=============================================================================== # #//07 3CͨÓñ³°ü²Ù×÷#tagCBackpackOperate # #//¶ÔÐÔÄÜÓ°ÏìºÜС # //////////////////////////////////////////////////////////// # tagCBackpackOperate*GettagCBackpackOperate(); # class IPY_CBackpackOperate # { # int GetSrcBackpack();//Ô´±³°üÀàÐÍ # int GetDesBackPack();//Ä¿±ê±³°üÀàÐÍ # int GetSrcIndex();//Æðʼλ # int GetDestIndex();//Ä¿±êλÖà # int GetCount();//ÎïÆ·ÊýÁ¿ # } #=============================================================================== ## ͨÓñ³°ü²Ù×÷#tagCBackpackOperate # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ÎÞ·µ»ØÖµ # @remarks 07 3CͨÓñ³°ü²Ù×÷#tagCBackpackOperate def BackpackOperate(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) sendPack = IPY_GameWorld.IPY_CBackpackOperate() pack_SrcBackpack = sendPack.GetSrcBackpack() pack_DesBackPack = sendPack.GetDesBackPack() pack_SrcIndex = sendPack.GetSrcIndex() pack_DestIndex = sendPack.GetDestIndex() pack_ItemCount = sendPack.GetCount() FunctionNPCCommon.BackpackOperate(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex, pack_ItemCount, tick) return #--------------------------------------------------------------------- #=============================================================================== # //07 3D ͨÓñ³°üÎïÆ·½»»»#tagCPackItemExchange # //¶ÔÐÔÄܼ¸ºõÎÞÓ°Ïì # struct tagCPackItemExchange # { # BYTE SrcBackpack;//Ô´±³°üÀàÐÍ # BYTE DesBackPack;//Ä¿±ê±³°üÀàÐÍ # WORD SrcIndex;//ÆðʼλÖà # WORD DestIndex;//Ä¿±êλÖà # }; #=============================================================================== ## ͨÓñ³°üÎïÆ·½»»»#tagCPackItemExchange # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ÎÞ·µ»ØÖµ # @remarks //07 3D ͨÓñ³°üÎïÆ·½»»»#tagCPackItemExchange def PackItemExchange(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) sendPack = IPY_GameWorld.IPY_CPackItemExchange() pack_SrcBackpack = sendPack.GetSrcBackpack() pack_DesBackPack = sendPack.GetDesBackPack() pack_SrcIndex = sendPack.GetSrcIndex() pack_DestIndex = sendPack.GetDestIndex() # ·ûÓ¡½»»» if PlayerRune.SwitchRune(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex): return # ¾Û»ê½»»» if PlayerGatherSoul.SwitchGatherSoul(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex): return #ʱװ if PlayerCoat.SwitchCoat(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex): return FunctionNPCCommon.PackItemExchange(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex, tick) return #--------------------------------------------------------------------- #=============================================================================== # //08 1B ʹÓÃÐÞÀíµÀ¾ßÐÞÀí×°±¸#tagCRepairEquip # struct tagCRepairEquip # { # tagHead Head # WORD ItemIndex; // µÀ¾ßË÷Òý # BYTE PackType; //±³°üÀàÐÍ # WORD EquipIndex; //×°±¸ÔÚÏàÓ¦±³°üÖеÄË÷Òý # }; #=============================================================================== ##ʹÓÃÐÞÀíµÀ¾ßÐÞÀí×°±¸#tagCRepairEquip # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå # @remarks ¿Í»§¶Ë·â°üÏìÓ¦ //08 1B ʹÓÃÐÞÀíµÀ¾ßÐÞÀí×°±¸#tagCRepairEquip def ChangeEquipEndure(index, tick): return #//07 3F ʹÓõÀ¾ßÔö¼Ó×î´óÁéÎÆ´ÎÊý#tagCUseIncreaseMaxAddSkill #struct tagCUseIncreaseMaxAddSkill #{ #tagHead Head; #WORD ItemIndex; // µÀ¾ßË÷Òý #BYTE PackType; //±³°üÀàÐÍ #WORD EquipIndex; //×°±¸ÔÚÏàÓ¦±³°üÖеÄË÷Òý #}; ##ʹÓõÀ¾ßÔö¼Ó×î´óÁéÎÆ´ÎÊý # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå def UseIncreaseMaxAddSkill(index, tick): return # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # sendPack = IPY_GameWorld.IPY_CUseIncreaseMaxAddSkill() # # Operate_MagicAttached.UseIncreaseMaxAddSkill(curPlayer, sendPack.GetItemIndex(), # sendPack.GetPackType(), sendPack.GetEquipIndex()) #=============================================================================== # //07 42 ÎïÆ·ÄÜÁ¿×ªÒÆ#tagCItemTransfer # struct tagCItemTransfer # { # tagHead Head; # BYTE PackType; //±³°üÀàÐÍ:rptItem, rptEquip, rptWarehouse # BYTE ItemPlace; # BYTE TransferType; //×ªÒÆÀàÐÍ # }; #=============================================================================== ##ÎïÆ·ÄÜÁ¿×ªÒÆ # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå def ItemEnergyTransfer(index, tick): # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # # #±ÜÃâ·´¸´²Ù×÷ # if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_ChangeEnergy) \ # < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_ChangeEnergy]: # return # # curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_ChangeEnergy, tick) # # pack = IPY_GameWorld.IPY_CItemTransfer() # Operate_MagicAttached.ItemEnergyTransfer(curPlayer, pack.GetPackType(), # pack.GetItemPlace(), pack.GetTransferType()) return #--------------------------------------------------------------------- #=============================================================================== # //16 0B³èÎïÁ¶»¯#tagCPetRefinery # struct tagCPetRefinery # { # tagHead Head; # DWORD PetID;//³èÎïID # }; #=============================================================================== ##³èÎïÁ¶»¯. # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå # @remarks ¿Í»§¶Ë·â°üÏìÓ¦ //16 0B³èÎïÁ¶»¯#tagCPetRefinery def CPetRefinery(index, tick): return #=============================================================================== #//07 41 ͨÓùºÂòPack¿Õ¼ä#tagCOpenPackCount # struct tagCOpenPackCount # { # tagHead Head; # BYTE PackType; //±³°üÀàÐÍ:rptItem, rptEquip, rptWarehouse # BYTE Count; //¹ºÂò¸ñÊý # }; #=============================================================================== ##¹ºÂò¸÷ÖÖ°ü¹ü¸ñ×Ó # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return ·µ»ØÖµÎÞÒâÒå def OpenPackCount(index, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) pack = IPY_GameWorld.IPY_COpenPackCount() packType = pack.GetPackType() if packType not in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys(): return buyCount = pack.GetCount() #ÒѹºÂò¸ñ×ÓÊý keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict[packType][ChConfig.Def_PlayerPackDict_Index_Key] curGridCnt = curPlayer.NomalDictGetProperty(keyName) #ĬÈϸñ×ÓÊý initCnt = ItemCommon.GetPackInitCount(packType) curPack = curPlayer.GetItemManager().GetPack(packType) curPackMaxCnt = curPack.GetMaxCount() if packType in [IPY_GameWorld.rptPetCabinetPet, IPY_GameWorld.rptCabinetWeaponCoat, IPY_GameWorld.rptCabinetDressCoat, IPY_GameWorld.rptCabinetHorse]: vipLv = curPlayer.GetVIPLv() #curPackMaxCnt = ChConfig.Def_PackCnt_Fashion + PlayerVip.GetVipCabinetAddGridCnt(vipLv) openAnonCnt = initCnt + curGridCnt + buyCount if curPackMaxCnt < openAnonCnt: #ÊýÁ¿³¬¹ý×î´ó¸ñ×ÓÊý GameWorld.DebugLog("¹ºÂò±³°ü¸ñ×Ó£¬ÊýÁ¿³¬¹ý×î´ó¸ñ×ÓÊý£¡packType=%s,buyCount=%s" % (packType, buyCount)) return isBuyOK, costMoneyList = DoOpenGrid(curPlayer, curGridCnt, packType, buyCount) if not isBuyOK: return #fromIndex, toIndex = curGridCnt + 1, curGridCnt + buyCount # GameWorld.Log("fromIndex=%s toIndex=%s"%(fromIndex, toIndex)) PlayerControl.NomalDictSetProperty(curPlayer, keyName, curGridCnt + buyCount) if packType == IPY_GameWorld.rptItem: #±³°üˢРPlayerControl.Init_ItemPack(curPlayer) #¿ª¸ñ×Ó£¬¼Ó¾­Ñé #OpenPackAddExp(curPlayer, packType, fromIndex, toIndex) PlayerControl.NotifyCode(curPlayer, "GeRen_liubo_671654") #PlayerControl.SyncOnLineTimeTotal(curPlayer) #PlayerControl.SyncOnLineTimeLastOpenPack(curPlayer, packType) elif packType == IPY_GameWorld.rptWarehouse: #²Ö¿âˢРPlayerControl.Init_Warehouse(curPlayer) #¿ª¸ñ×Ó£¬¼Ó¾­Ñé #OpenPackAddExp(curPlayer, packType, fromIndex, toIndex) else: #ÊÕÄɹñˢРPlayerControl.Init_CabinetCountByType(curPlayer, packType) DataRecordPack.DR_OpenPackCount(curPlayer, packType, buyCount, curPlayer.NomalDictGetProperty(keyName)) if costMoneyList: #Ïû·Ñ¼Ç¼ for moneyType, money in costMoneyList: GameWorld.Login_Interface_GoldRec(curPlayer, 0, 1, 'BuyPackGrid', moneyType, money) return ##¿ªÆô¸ñ×Ó¿ÛµÀ¾ß×êʯ # @param curPlayer Íæ¼Ò¶ÔÏó # @param buyMoney ×êʯÏûºÄ # @param packType ±³°üÀàÐÍ # @param curPack ÎïÆ·¹ÜÀíÆ÷ # @param buyPackMoneyType »õ±ÒÀàÐÍ # @param buyCount ¹ºÂò¸ñ×ÓÊý # @return None ÊÇ·ñ¹ºÂò³É¹¦, Íæ¼ÒÊÇ·ñÓÐÇ®¿î def DoOpenGrid(curPlayer, curGridCnt, packType, buyCount): curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) itemId = IpyGameDataPY.GetFuncCfg('OpenBagItem') itemCntFormula = IpyGameDataPY.GetFuncCompileCfg('OpenBagItem', 2) buyMoney = IpyGameDataPY.GetFuncCfg('OpenBagItem', 3) totalItemCnt = 0 for index in range(curGridCnt+1, curGridCnt + buyCount+1): itemcnt = eval(itemCntFormula) totalItemCnt += itemcnt hasEnough, indexList, findItemIsBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(itemId, curPack, totalItemCnt) needMoney = lackCnt * buyMoney if not hasEnough else 0 # ÐèÒª¸¶Ç® costMoneyList = [] if needMoney > 0: costMoneyList = PlayerControl.HaveMoneyEx(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, needMoney) if costMoneyList == []: #½ðÇ®²»×ã return False, costMoneyList #¸¶¿î for moneyType, moneyCnt in costMoneyList: infoDict = {"BuyCount":buyCount, ChConfig.Def_Cost_Reason_SonKey:packType} if not PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt, ChConfig.Def_Cost_BuyPack, infoDict, 1): return False, costMoneyList # ¿ÛµÀ¾ß delCnt = max(0, totalItemCnt - lackCnt) # ʵ¼Ê¿Û³ýµÄ¸öÊý if indexList: ItemCommon.ReduceItem(curPlayer, curPack, indexList, delCnt, True) return True, costMoneyList ##¿ªÆôÎïÆ·±³°ü¸ñ×Ó»ò²Ö¿â¸ñ×Ó¿ÉÔö¼ÓµÄ¾­ÑéÖµ # @param curPlayer Íæ¼Ò¶ÔÏó # @param packType ±³°üÀàÐÍ # @param packType ±³°üÀàÐÍ # @param packType ±³°üÀàÐÍ # @param needRefresh ÊÇ·ñÐèҪˢÐÂÍæ¼ÒÊôÐÔ # @return None def OpenPackAddExp(curPlayer, packType, fromIndex, toIndex, needRefresh = True): cfgObj = PlayerExpandPackCfgMgr.GetExpandPackCfg(curPlayer, packType) #ÕÒ²»ÕÒÕâÖÖ±³°üµÄÅäÖÃÐÅÏ¢¶ÔÏó if not cfgObj: # GameWorld.Log("not cfgObj") return attrInfo = cfgObj.GetTotalCanAddAttrInfo(curPlayer, fromIndex, toIndex) #ûÕÒµ½ÊôÐÔÐÅÏ¢ if not attrInfo: # GameWorld.Log("not attrInfo") return # GameWorld.Log("attrInfo=%s"%attrInfo) playerControl = PlayerControl.PlayerControl(curPlayer) #Ôö¼Ó¾­Ñé #֪ͨ»ñµÃ¾­Ñé addExp = attrInfo.get("Exp", 0) if 0 != addExp: playerControl.AddExp(addExp) if needRefresh: #ÖØË¢Ö÷½ÇÊôÐÔ playerControl.RefreshAllState() #--------------------------------------------------------------------- #=============================================================================== # //16 0D ³èÎï×°±¸ºÏ³É#tagPetEquipMerge # struct tagPetEquipMerge # { # tagHead Head; # DWORD StuffIndex1; //×°±¸Ë÷Òý # DWORD StuffIndex2; //×°±¸Ë÷Òý # DWORD StuffIndex3; //×°±¸Ë÷Òý # BYTE AutoBuy; //ÊÇ·ñ×Ô¶¯¹ºÂò½á»êµÆ # }; #=============================================================================== ##³èÎï×°±¸ºÏ³É#tagPetEquipMerge # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return None # @remarks def CPetEquipMerge(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //08 26 ×°±¸Ö±½ÓÉýÐÇ#tagCEquipUpStarImmediately # struct tagCEquipUpStarImmediately # { # tagHead Head; # WORD ItemIndex; // µÀ¾ßË÷Òý # BYTE PackType; //±³°üÀàÐÍ # WORD EquipIndex; //×°±¸ÔÚÏàÓ¦±³°üÖеÄË÷Òý # }; #=============================================================================== ##×°±¸Ö±½ÓÉýÐÇ#tagCEquipUpStarImmediately # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return None # @remarks def CEquipUpStarImmediately(index, tick): return #--------------------------------------------------------------------- #=============================================================================== # //0D 12 Éñ±ø»½ÐÑ#tagCEquipWakeUp # struct tagCEquipWakeUp # { # tagHead Head; # WORD ItemIndex; //²ÄÁÏÔÚÎïÆ·±³°üÖеÄλÖÃË÷Òý # BYTE PackType; //±³°üÀàÐÍ # WORD EquipIndex; //×°±¸ÔÚÏàÓ¦±³°üÖеÄË÷Òý # }; #=============================================================================== ##Éñ±ø»½ÐÑ#tagCEquipWakeUp # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return None # @remarks def CEquipWakeUp(index, tick): return #=============================================================================== # #07 43 tagCEsotericaStudy # #struct tagCEsotericaStudy # #{ # # tagHead Head; # # WORD ItemIndex; # #}; #=============================================================================== ##ѧϰÎäÁÖÃØóÅ # @param index Íæ¼ÒË÷Òý # @param tick ʱ¼ä´Á # @return None def LearnWuLinSkill(index, tick): return #=============================================================================== # //A0 10 ¹ºÂòÕæÆø#tagPyCMBuyZhenqi # struct tagPyCMBuyZhenqi # { # tagHead Head; # }; #=============================================================================== ## A0 10 ¹ºÂòÕæÆø#tagPyCMBuyZhenqi # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None # @remarks def PlayerBuyZhenqi(index, clientData, tick): #Operate_PlayerBuyZhenQi.PlayerBuyZhenQi(index, clientData, tick) return #=============================================================================== #=============================================================================== # //B0 15 Íæ¼ÒÁìÈ¡Êղؼн±Àø#tagAskCollectPrize # struct tagAskCollectPrize # { # tagHead Head; # }; #=============================================================================== ## B0 15 Íæ¼ÒÁìÈ¡Êղؼн±Àø#tagAskCollectPrize # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None # @remarks def PlayerGetFavoriteAward(index, clientData, tick): return #=============================================================================== # //B0 01 ´ò¿ªÔ¶³ÌÉ̵ê # # struct tagPyOpenLongShop # { # tagHead Head; # }; #=============================================================================== ## B0 01 ´ò¿ªÔ¶³ÌÉ̵ê # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None # @remarks def PlayerOpenLongShop(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) #ºìÃûÍæ¼ÒÎÞ·¨Ê¹ÓÃÔ¶³ÌÉ̵ê if curPlayer.GetPlayerNameColor() == IPY_GameWorld.pncRed or curPlayer.GetPKValue() > 0: PlayerControl.NotifyCode(curPlayer, "PK_lhs_161795") return #µ±Ç°vipµÈ¼¶²»ÄÜʹÓÃÔ¶³ÌÉ̵ê #if not PlayerVip.GetVipCanLongShop(curPlayer): # moneyCnt, moneyType = ReadChConfig.GetEvalChConfig("DirectShopCost") # if not PlayerControl.PayMoney(curPlayer, moneyType, moneyCnt): # #½ðÇ®²»×ã # return # FunctionNPCCommon.StartTrade(curPlayer, tick) #´¥·¢ÈÎÎñ EventRespons_DirectFuncEvent(curPlayer, "open_shop") return #=============================================================================== #//A2 04 ÇëÇó´ò¿ªÔ¶³Ì²Ö¿â #tagCMOpenLongWarehouse # #struct tagCMOpenLongWarehouse #{ # tagHead Head; #}; #=============================================================================== ## A2 04 ÇëÇó²Ö¿âÎïÆ· # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None # @remarks def PlayerOpenLongWarehouse(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) # Ôݲ»¼ÓCD·À·¶ curPlayer.Sync_WarehouseItem() return #=============================================================================== # //B0 06 ²é¿´¼Ò×åÕ½ÉêÇëÐÅÏ¢ #tagViewAllFamilyInfo # # struct tagViewAllFamilyInfo # { # tagHead Head; # }; #=============================================================================== ## B0 06 ²é¿´¼Ò×åÕ½ÉêÇëÐÅÏ¢ # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None # @remarks def ViewAllFamilyInfo(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) PlayerFamily.SendPack_GameServer_ViewAllFamily(curPlayer) return #=============================================================================== # //B0 07 ²é¿´¼Ò×åÕù°ÔÕ½ÐÅÏ¢ #tagViewAllFamilyBattlenfo # # struct tagViewAllFamilyBattlenfo # { # tagHead Head; # }; #=============================================================================== ## B0 07 ²é¿´¼Ò×åÕù°ÔÕ½ÐÅÏ¢ # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None # @remarks def ViewAllFamilyBattlenfo(index, clientData, tick): return #=============================================================================== #//B0 31 ¿Í»§¶ËµÇÈ뷽ʽ #tagPlayerLoginType # #struct tagPlayerLoginType # #{ # tagHead Head; # BYTE LoginType; //ÀàÐÍ #}; #==================================== ## B0 31 ¿Í»§¶ËµÇÈ뷽ʽ # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None def OnPlayerLoginType(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_LoginType, clientData.LoginType) EventRespons_OnRevLoginType(curPlayer) return #=============================================================================== #//B0 32 µÇÈëÆ÷µÇÈëÁìÈ¡½±Àø #tagFastLoginPrize # #struct tagFastLoginPrize #{ # tagHead Head; #}; #==================================== ## B0 32 µÇÈëÆ÷µÇÈëÁìÈ¡½±Àø # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None def OnRewardByLoginType(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) RunQuestEvent(curPlayer, "on_logintype", "on_reward_bylogintype", Def_RunQuestType_Normal) return #======================================================================================================================= # //A0 17 ÁìȡÿÌìÎïÆ· #tagGiveItemByDay # # struct tagGiveItemByDay # # { # tagHead Head; # }; #======================================================================================================================= ## A0 17 ÁìȡÿÈÕÎïÆ· # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None def GiveItemByDay(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) EventRespons_PlayerEvent(curPlayer, "player_give_item") return ##ÈÎÎñ´¥·¢Æ÷ÔڼǼµÇ½ģʽµÄʱºò´¥·¢ #@param curPlayer Íæ¼ÒʵÀý #@return ·µ»ØÖµÎÞÒâÒå def EventRespons_OnRevLoginType(curPlayer): RunQuestEvent(curPlayer, "on_revlogintype_event", "on_revlogintype_event", Def_RunQuestType_Normal) return #// A2 07 ½ÓÊÜÈÎÎñ #tagCMTakeTask # #struct tagCMTakeTask #{ # tagHead Head; # DWORD TaskID; #}; def OnTakeTask(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) missionID = clientData.TaskID curMission = curPlayer.FindMission(missionID) if not curMission: return missionState = curMission.GetState() if missionState != ChConfig.Def_Mission_State_NoAccept: return curQuestData = QuestManager.FindQuest(missionID) if not curQuestData: return QuestCommon.SetPlayerMissionState(curPlayer, curMission, 1) return #// A2 18 Íê³ÉÈÎÎñ #tagCMFinishTask # #struct tagCMFinishTask #{ # tagHead Head; # DWORD TaskID; # WORD RewardPer; // ½±Àø°Ù·Ö±È, ĬÈÏ100; 150Ôò´ú±í1.5±¶ #}; def OnPlayerFinishTask(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) taskID = clientData.TaskID rewardPer = clientData.RewardPer if taskID <= 0: return EventRespons_OnFinishTask(curPlayer, taskID, rewardPer) return #// A2 06 ¿ìËÙÍê³ÉÈÎÎñ#tagCMQuickFinishMission # #struct tagCMQuickFinishMission #{ # tagHead Head; # DWORD MissionID; # BYTE DoType; // 0-Ö»Íê³É±¾´Î£»1-Íê³ÉËùÓл·ÈÎÎñ #}; def PlayerQuickFinishTask(index, clientData, tick): missionID = clientData.MissionID if missionID <= 0: return curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) doType = clientData.DoType if doType == 1: EventRespons_OnQuickFinishAllAround(curPlayer, missionID) return curQuestData = QuestManager.FindQuest(missionID) curMission = curPlayer.FindMission(missionID) if not curQuestData or not curMission: return isFree = PlayerGoldInvest.CanQuickFinishMissionFree(curPlayer) costMoneyInfo = IpyGameDataPY.GetFuncEvalCfg("QuickFinishMission", 1) if costMoneyInfo and not isFree and curQuestData.Type in QuestCommon.Def_RunTask_Type_List: moneyType, moneyValue = costMoneyInfo if not PlayerControl.PayMoney(curPlayer, moneyType, moneyValue, ChConfig.Def_Cost_MissionDel, {"MissionID":missionID}): return EventRespons_OnQuickFinishTask(curPlayer, missionID) return ## A2 09 ÉèÖû·ÈÎÎñÐǼ¶#tagCMSetRunMissionStar # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None def PlayerSetRunMissionStar(index, clientData, tick): missionID = clientData.MissionID if missionID <= 0: return curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) EventRespons_OnSetMissionStar(curPlayer, missionID) return ## A2 15 ¹ºÂòÈÕ³£ÈÎÎñ´ÎÊýÉÏÏÞ#tagCMBuyDayMissionSum # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None def PlayerBuyDayMissionSum(index, clientData, tick): buyNum = clientData.BuyNum if buyNum <= 0: return curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) EventRespons_OnBuyDayMissionSum(curPlayer, buyNum) return ## A2 15 ÁìÈ¡»·ÈÎÎñÿÂÖ½±Àø#tagCMGetRunTaskEndAward # @param index Ë÷Òý # @param clientData ·â°ü½á¹¹Ìå # @param tick ʱ¼ä´Á # @return None def OnGetRunTaskAward(index, clientData, tick): taskType = clientData.Type if taskType not in [QuestCommon.Def_Mission_Type_RunDaily, QuestCommon.Def_Mission_Type_RunFamily]: GameWorld.DebugLog('ÁìÈ¡»·ÈÎÎñÿÂÖ½±Àø ÀàÐÍ´íÎó %s'%taskType) return curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) hasGotAward = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RunTaskAwardState % taskType) if hasGotAward: GameWorld.DebugLog('ÁìÈ¡»·ÈÎÎñÿÂÖ½±Àø Òѽ±Àø ÀàÐÍ %s'%taskType) return #ÎïÆ·½±Àø itemList = [] itemAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 3, {}) if str(taskType) in itemAwardDict: itemList = itemAwardDict[str(taskType)] # ¼ì²é±³°ü needSpace = len(itemList) packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace) if needSpace > packSpace: PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371") return for itemID, itemCount, isBind in itemList: ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem]) #¸ø¾­Ñé giveExp = 0 expAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 4, {}) if str(taskType) in expAwardDict: reExp = PlayerControl.GetPlayerReExp(curPlayer) giveExp = eval(expAwardDict[str(taskType)]) PlayerControl.PlayerControl(curPlayer).AddExp(giveExp) #¸øÇ® moneyType = 0 moneyNum = 0 runTaskMoneyAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward') if taskType in runTaskMoneyAwardDict: specialAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward', 2, {}) if taskType in specialAwardDict: rate, moneyCnt = specialAwardDict[taskType] if GameWorld.CanHappen(rate): moneyNum = moneyCnt if taskType == QuestCommon.Def_Mission_Type_RunDaily: PlayerControl.WorldNotify(0, 'CoinTaskReward', [curPlayer.GetName()]) moneyType, minMoney, maxMoney = runTaskMoneyAwardDict[taskType] if not moneyNum: moneyNum = random.randint(minMoney, maxMoney) if moneyType == ShareDefine.TYPE_Price_Family_Contribution: PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, moneyNum, True, ShareDefine.Def_AddFAVReason_DoFamilyMisson) else: addDataDict = {ChConfig.Def_Give_Reason_SonKey:"Run"} PlayerControl.GiveMoney(curPlayer, moneyType, moneyNum, ChConfig.Def_GiveMoney_Mission, addDataDict, False) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardRecord % taskType, moneyNum) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardState % taskType, 1) GameWorld.DebugLog('ÁìÈ¡»·ÈÎÎñÿÂÖ½±Àø³É¹¦ moneyType=%s, moneyNum=%s, itemList=%s, giveExp=%s'%(moneyType, moneyNum, itemList, giveExp)) #֪ͨ¿Í»§¶Ë NotifyRunEndAward(curPlayer, taskType) #ɾ³ýÁìÈ¡½±ÀøµÄÈÎÎñ (¸ÄÓÉÈÎÎñ½Å±¾´¥·¢ÏÂÒ»»·) EventRespons_GetLastRunTaskAward(curPlayer, taskType) # runTaskAwardTaskIDDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAwardTaskID') # runTaskAwardTaskID = runTaskAwardTaskIDDict.get(taskType, 0) # if runTaskAwardTaskID: # QuestCommon.DeleteMission(curPlayer, runTaskAwardTaskID) #¸üÐÂÏÂÂÖÈÎÎñ # mission_1 = QuestCommon.GetCommonMission(curPlayer) # if not mission_1: # return # nextMissionID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RunTaskNextMissionID % taskType) # if not nextMissionID: # #ûÓÐÏÂÂÖÈÎÎñ # return # PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskNextMissionID % taskType, 0) # if not curPlayer.FindMission(nextMissionID): # QuestCommon.AddNewMission(curPlayer, nextMissionID) # nextMission = curPlayer.FindMission(nextMissionID) # QuestCommon.SetPlayerMissionState(curPlayer, nextMission, 1) # nextMission.SetMissionState(1) # nextMission.SetDescriptionIndex(0) # # #ÏÈÇå¿Õ×ÖµäÔÙÉèÖÃеÄ×Öµä # curPlayer.Sync_ClearMissionDict(nextMissionID) # nextMission.ClearProperty() # Def_Around_AllCount = QuestRunner.GetRunKey(taskType, QuestRunner.Key_Around_AllCount) # Def_Around_Count = QuestRunner.GetRunKey(taskType, QuestRunner.Key_Around_Count) # mission_1.SetProperty(Def_Around_Count,0) # #×Ü»·Êý # allCount = mission_1.GetProperty(Def_Around_AllCount) # #µ¥ÂÖÒÑ×ö»·Êý # #aroundCount = mission_1.GetProperty(Def_Around_Count) # nextMission.SetProperty(Def_Around_AllCount, allCount) # nextMission.SetProperty(Def_Around_Count, 0) # # #ÉèÖÃËæ»úÈÎÎñʼþ # EventRespons_SetRunAround(curPlayer, nextMissionID) # # # # NotifyOneMission(curPlayer, nextMission, isNotifyAll = False) return def NotifyRunEndAward(curPlayer, taskType=-1): ## ֪ͨÅÜ»·ÂÖ½±Àø taskTypeList = [QuestCommon.Def_Mission_Type_RunDaily, QuestCommon.Def_Mission_Type_RunFamily] if taskType == -1 else [taskType] infoPack = ChPyNetSendPack.tagMCRunTaskAwardInfo() infoPack.Clear() infoPack.InfoList = [] for ttype in taskTypeList: recordPack = ChPyNetSendPack.tagMCRunTaskAwardRecord() recordPack.Type = ttype recordPack.Num = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RunTaskAwardRecord % ttype) recordPack.AwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RunTaskAwardState % ttype) infoPack.InfoList.append(recordPack) infoPack.Cnt = len(infoPack.InfoList) NetPackCommon.SendFakePack(curPlayer, infoPack) return #// A2 24 ´¥ÅöNPC #tagCMTouchNPC # #struct tagCMTouchNPC #{ # tagHead Head; # DWORD ObjID; #}; def MoveTouchNPC(index, clientData, tick): #´¥ÅöNPC curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) eventNPCID = clientData.ObjID curNPC = GameWorld.GetNPCManager().FindNPCByID(eventNPCID) #ûÓÐÕâ¸öNPC if curNPC == None : return dist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), curNPC.GetPosX(), curNPC.GetPosY()) if dist > ChConfig.Def_EventDist: #Íæ¼Ò¾àÀë¹ýÔ¶, ²»ÄÜ´¥·¢ return if curNPC.GetType() != ChConfig.ntTouchKill: return if not FBLogic.OnCanMoveTouchNPC(curPlayer, curNPC, tick): return #¸±±¾ FBLogic.OnMoveTouchNPC(curPlayer, curNPC, tick) #Âß¼­´¦ÀíÍêºóɱËÀNPC npcControl = NPCCommon.NPCControl(curNPC) npcControl.SetKilled() return ## ¿Í»§¶ËÈÎÎñ¼ÆÊý #=============================================================================== # //A2 25 ¿Í»§¶ËÈÎÎñ¼ÆÊý # tagCMClientTaskCount # # struct tagCMClientTaskCount # { # tagHead Head; # DWORD CountID; // ¼ÆÊýID£¬¿Í»§¶ËÓë²ß»®Ô¼¶¨£¬¿ÉÒÔÊÇNPCID»òÆäËû # }; #=============================================================================== def ClientTaskCount(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) RunQuestEvent(curPlayer, "on_client_by_id", clientData.CountID, Def_RunQuestType_Normal)