From 167357e8425d0dc12f41ed5fdfd4d95f2c2a5aaf Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 29 五月 2025 19:19:20 +0800 Subject: [PATCH] 16 卡牌服务端(删除旧版xml任务、镖车等不需要内容) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py | 4631 ----------------------------------------------------------- 1 files changed, 2 insertions(+), 4,629 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py index 8df02d0..ac64644 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py @@ -47,7 +47,6 @@ # @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 增加事件汇报 @@ -72,61 +71,24 @@ 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 PlayerPrestigeSys -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") @@ -142,2199 +104,7 @@ 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 <n color="255,0,0">我不会给敌人提供任何帮助的!</n> - #不同国籍, 不能和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 - -#--------------------------------------------------------------------- -##任务触发器_完成某手机任务 -# @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 任务潜规则,玩家第一次登陆游戏要添加任务1给玩家 -#@param curPlayer 玩家实例 -#@return 返回值无意义 -#@remarks 任务触发器_OnEnter 任务潜规则,玩家第一次登陆游戏要添加任务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 - -#--------------------------------------------------------------------- -def EventResponse_Funcopen(curPlayer, funcID): - ## 功能开启触发 - RunQuestEvent(curPlayer, "funcopen", funcID, 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 <n color="0,255,0" BKCOLOR="0,0,0">等级提升,您有新的任务可接受!</n> - 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 - -def EventResponse_MineAreaPull(curPlayer, isRob): - ## 福地采集物品 - RunQuestEvent(curPlayer, "minearea_pull", "rob" if isRob else "self", Def_RunQuestType_Normal) - RunQuestEvent(curPlayer, "minearea_pull", 0, 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_KillBoss(curPlayer, indexMark): - # 击杀BOSS - RunQuestEvent(curPlayer, "killboss", indexMark, 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): - #穿戴某部位装备(非时效) - RunQuestEvent(curPlayer, "equipbyplace", '%s_%s'%(itemClassLV, equipplace), Def_RunQuestType_Normal) - return - -def EventRespons_CompoundEquip(curPlayer, itemColor, itemQuality): - #装备合成某品质某星级 - 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_AddAuction(curPlayer): - # 上架拍品 - RunQuestEvent(curPlayer, "addauction", 0, Def_RunQuestType_Normal) - return - -def EventRespons_BuyAuction(curPlayer): - # 购买拍品 - RunQuestEvent(curPlayer, "buyauction", 0, 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 ############################################################# ##回绝装备加工封包 @@ -2421,55 +191,7 @@ 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(); @@ -2515,224 +237,9 @@ 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(); @@ -2753,805 +260,9 @@ #@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() + FuncDirectCall(curPlayer, "FunctionNPCCommon", "SellItem", tick) 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(); @@ -3603,169 +314,6 @@ 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 @@ -3818,545 +366,7 @@ #背包整理逻辑 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 # #//对性能影响很小 @@ -4428,93 +438,6 @@ 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 @@ -4546,12 +469,6 @@ 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: @@ -4570,8 +487,6 @@ 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) @@ -4580,8 +495,6 @@ elif packType == IPY_GameWorld.rptWarehouse: #仓库刷新 PlayerControl.Init_Warehouse(curPlayer) - #开格子,加经验 - #OpenPackAddExp(curPlayer, packType, fromIndex, toIndex) else: #收纳柜刷新 @@ -4640,184 +553,6 @@ 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 @@ -4837,349 +572,6 @@ 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 21 领取跑环每轮结束奖励 #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) - ItemControler.NotifyGiveAwardInfo(curPlayer, itemList, "RunTaskEndAward", giveExp, {moneyType:moneyNum}) - - #删除领取奖励的任务 (改由任务脚本触发下一环) - 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 @@ -5218,22 +610,3 @@ npcControl.SetKilled() return - -## 客户端任务计数 -#=============================================================================== -# //A2 25 客户端任务计数 # tagCMClientTaskCount -# -# struct tagCMClientTaskCount -# { -# tagHead Head; -# DWORD CountID; // 计数ID,客户端与策划约定,可以是NPCID或其他 -# BYTE Type; // 1-杀怪 -# }; -#=============================================================================== -def ClientTaskCount(index, clientData, tick): - curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - countType = clientData.Type - RunQuestEvent(curPlayer, "on_client_by_id", clientData.CountID, Def_RunQuestType_Normal) - #if countType == 1: - # PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1) - return -- Gitblit v1.8.0