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