From f59c80a64aa99e451082cce8d338ce1faa53b00a Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期二, 26 三月 2019 20:05:58 +0800 Subject: [PATCH] 6374 新版无绑玉,原先绑玉再仙玉的扣法改成 扣仙玉 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py | 180 ++++++++++++++++++++++------------------------------------- 1 files changed, 68 insertions(+), 112 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 febbcc7..9155840 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py @@ -229,6 +229,63 @@ 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 @@ -288,6 +345,9 @@ return curPlayer.SetActionObj(curNPC) + + if NPCCommon.OnCollectNPCBegin(curPlayer, curNPC, tick): + return prepareTime = FBLogic.GetFBPrepareTime(curPlayer, curNPC) @@ -785,31 +845,10 @@ curPlayer.SetMP(curPlayer.GetMaxMP()) #---给予玩家新手物品--- - itemControler = ItemControler.PlayerItemControler(curPlayer) - firstLoginGiveItemList = ReadChConfig.GetEvalChConfig("FirstLogin_GiveItem") - for itemID, itemCount, itemBind in firstLoginGiveItemList: - if itemID == 0: - continue - giveItem = ItemCommon.CreateSingleItem(itemID) - - if not giveItem: - GameWorld.ErrLog('__FirstLoginOnEnter giveItemErr = %s'%(itemID), playerID) - continue - - if itemCount > 0: - ItemControler.SetItemCount(giveItem, itemCount, curPlayer.GetPlayerID(), curPlayer.GetAccID(), - curPlayer.GetPlayerName()) - - ItemControler.SetItemIsBind(giveItem, itemBind) - - if not itemControler.PutInItem(IPY_GameWorld.rptItem, giveItem): - GameWorld.ErrLog('__FirstLoginOnEnter packFull, giveItemErr = %s'%(itemID), playerID) - giveItem.Clear() - continue - - #---初始化装备显隐---前端自己设置 - #curPlayer.SetEquipShowSwitch(IPY_GameWorld.revClothesCoat|IPY_GameWorld.revWeaponCoat|IPY_GameWorld.revMask) + #---初始化装备显隐 第1套*10+没有套装 + curPlayer.SetEquipShowSwitch(10) + PlayerControl.SetFaceEquipIndex(curPlayer, 11012014) #默认触发一次功能开启 if curPlayer.GetLV() == 1: @@ -1681,13 +1720,6 @@ RunQuestEvent(curPlayer, "on_goldinvest", "on_goldinvest", Def_RunQuestType_Normal) RunQuestEvent(curPlayer, "on_goldinvest", investType, Def_RunQuestType_Normal) return - -def EventRespons_OnBuyTeHuiItem(curPlayer, shopID, itemShopIndex): - # 购买特惠商店物品 - RunQuestEvent(curPlayer, "on_buy_tehuiitem", "on_buy_tehuiitem", Def_RunQuestType_Normal) - RunQuestEvent(curPlayer, "on_buy_tehuiitem", shopID, Def_RunQuestType_Normal) - RunQuestEvent(curPlayer, "on_buy_tehuiitem", "%s_%s" % (shopID, itemShopIndex), Def_RunQuestType_Normal) - return def EventRespons_OnActivatePet(curPlayer, petID): # 激活宠物 @@ -1813,10 +1845,6 @@ RunQuestEvent(curPlayer, "realmup", realmlv, Def_RunQuestType_RunAll) return -def EventRespons_MWSoulActive(curPlayer, soulid): - #法宝之魂激活 - RunQuestEvent(curPlayer, "mwsoulactive", soulid, Def_RunQuestType_RunAll) - return def EventRespons_PassQueenRelecs(curPlayer, lineID, grade): #X级通关X层娲皇遗迹 @@ -1838,9 +1866,9 @@ RunQuestEvent(curPlayer, "trialexange", costItemID, Def_RunQuestType_Normal) return -def EventRespons_EquipByPlace(curPlayer, equipplace): +def EventRespons_EquipByPlace(curPlayer, itemClassLV, equipplace): #穿戴某部位装备(非时效) - RunQuestEvent(curPlayer, "equipbyplace", equipplace, Def_RunQuestType_Normal) + RunQuestEvent(curPlayer, "equipbyplace", '%s_%s'%(itemClassLV, equipplace), Def_RunQuestType_Normal) return def EventRespons_CompoundEquip(curPlayer, itemColor, itemQuality): @@ -1863,9 +1891,10 @@ RunQuestEvent(curPlayer, "storedonate", "storedonate", Def_RunQuestType_Normal) return -def EventRespons_EquipPlus(curPlayer): +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_EquipStar(curPlayer): @@ -4158,79 +4187,6 @@ # @return 返回值无意义 # @remarks 客户端封包响应 //0D 0C 材料加工#tagCMaterialCompound def StuffMachining(index, tick): -# curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) -# -# materialCompoundPack = IPY_GameWorld.IPY_CMaterialCompound() -# itemIndex = materialCompoundPack.GetItemIndex() -# -# curItemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) -# curItem = curItemPack.GetAt(itemIndex) -# -# #类型不符合 -# if not ItemCommon.CheckItemByType(curItem, ChConfig.Def_Type_Machining_Stuff): -# PlayerControl.NotifyCode(curPlayer, "GeRen_jin_287294") -# return -# -# #[金钱,金钱类型] -# curEffMoney = curItem.GetEffectByIndex(1) -# useMoney = curEffMoney.GetEffectValue(0) -# useMoneyType = curEffMoney.GetEffectValue(1) -# -# #判断金钱 -# if not PlayerControl.HaveMoney(curPlayer, useMoneyType, useMoney): -# return -# -# #[等级,数量] -# curEffInfo = curItem.GetEffectByIndex(0) -# curEffectID = curEffInfo.GetEffectID() -# curItemLv = curEffInfo.GetEffectValue(0) -# useCount = curEffInfo.GetEffectValue(1) -# -# #---数量验证--- -# hasCount = curItem.GetCount() -# if useCount > hasCount: -# PlayerControl.NotifyCode(curPlayer , "GeRen_jin_293296") -# return -# -# #查找更高一级的材料 -# findItemData = ItemCommon.FindItemFromDataByEffValue(ChConfig.Def_Type_Machining_Stuff, curEffectID, curItemLv+1) -# -# #已经是顶级材料 -# if findItemData == None: -# PlayerControl.NotifyCode(curPlayer, "GeRen_jin_708106") -# return -# -# #---创建物品,放入背包,失败则要删除物品--- -# newItem = ItemCommon.CreateSingleItem(findItemData.GetItemTypeID()) -# ItemControler.SetItemIsBind(newItem, curItem.GetIsBind()) -# -# isBind = newItem.GetIsBind() -# -# newItemTypeID = newItem.GetItemTypeID() -# newItemCount = newItem.GetCount() -# -# #是否成功放入背包 -# itemControl = ItemControler.PlayerItemControler(curPlayer) -# if not itemControl.PutInItem(IPY_GameWorld.rptItem, newItem): -# PlayerControl.NotifyCode(curPlayer, "GeRen_jin_650657") -# newItem.Clear() -# return -# -# curItemID = curItem.GetItemTypeID() #合成材料ID -# -# #---扣钱物品并记录--- -# PlayerControl.PayMoney(curPlayer, useMoneyType, useMoney) -# -# ItemCommon.DelItem(curPlayer, curItem, useCount, True, 'ComposeChip') -# -# #生成物品 -# PlayerControl.NotifyCode(curPlayer, 'GeRen_jin_557507', [newItemTypeID, newItemCount]) -# -# #手续费流向记录 -# PlayerControl.DataServerMoneyLog(curPlayer, useMoneyType, 650, par = useMoney, msg = "poundage") -# -# -# DataRecordPack.DR_StuffMachining(curPlayer, newItemTypeID, newItemCount, isBind) return @@ -5003,7 +4959,7 @@ PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371") return for itemID, itemCount, isBind in itemList: - ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem]) + ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem]) #给经验 giveExp = 0 -- Gitblit v1.8.0