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