From 93367a2607db214ec6dda86bd796c1291bc06a49 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 27 三月 2019 15:29:05 +0800
Subject: [PATCH] 3167 【BUG】【2.0】拍卖,消耗了仙玉没获得拍品
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py | 193 +++++++++++++++++------------------------------
1 files changed, 71 insertions(+), 122 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 0e6ff72..fbfbc0c 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,25 +1720,11 @@
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):
# 激活宠物
RunQuestEvent(curPlayer, "on_activatepet", "on_activatepet", Def_RunQuestType_Normal)
RunQuestEvent(curPlayer, "on_activatepet", petID, Def_RunQuestType_Normal)
- return
-
-def EventRespons_OnActiveMagicWeapon(curPlayer, mwID):
- # 激活法宝
- RunQuestEvent(curPlayer, "on_activemagicweapon", mwID, Def_RunQuestType_Normal)
- RunQuestEvent(curPlayer, "on_activemagicweaponex", mwID, Def_RunQuestType_RunAll)
- RunQuestEvent(curPlayer, "on_activemagicweaponex", 0, Def_RunQuestType_RunAll)
return
def EventRespons_MagicWeaponLV(curPlayer, mwID, lv):
@@ -1813,10 +1838,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 +1859,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 +1884,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):
@@ -3703,7 +3725,7 @@
curPlayer.SetForbiddenResetItem(0)
ExitCompose(curPlayer)
ExitWarehouse(curPlayer)
- ExitRepair(curPlayer)
+ #ExitRepair(curPlayer)
ExitCreateFamily(curPlayer)
ExitBillboard(curPlayer)
#ExitEventLock(curPlayer)
@@ -3712,9 +3734,9 @@
#npc商店退出
ExitNPCShop(curPlayer)
- PlayerTrade.LeaveTrade(curPlayer, 0)
+ #PlayerTrade.LeaveTrade(curPlayer, 0)
# 清除py自定义状态
- ClearPyPlayerAction(curPlayer)
+ #ClearPyPlayerAction(curPlayer)
#调用底层结束事件
#避免策划变更,导致其他退出锁定事件使任务1未接取就退出锁定
@@ -4158,79 +4180,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 +4952,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