From cd1fa79a477ebb9d02d7494ddd0819c361053f0b Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 09 四月 2019 16:36:12 +0800
Subject: [PATCH] 6457 【后端】【2.0】缥缈仙域开发单(奇遇)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py |  449 +++++++++++++++++++++++++-------------------------------
 1 files changed, 200 insertions(+), 249 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 c1735d3..1638a78 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -28,8 +28,6 @@
 # @change: "2013-09-18 17:00" Alee 退出锁定退出交易
 # @change: "2013-09-23 19:30" Alee 红名提示修改
 # @change: "2013-11-15 20:20" hxp 关闭07 3A购买背包封包功能,增加背包成功系统提示
-# @change: "2013-11-27 20:30" hxp 修改结束摆摊状态事件单独处理,不在结束事件中处理
-# @change: "2013-12-10 14:00" hxp 修改查看摆摊状态事件单独处理,不在结束事件中处理
 # @change: "2013-12-12 14:30" hxp 增加钻石购买背包计费点事件同步
 # @change: "2013-12-13 12:20" hxp 修改首登物品绑定设置
 # @change: "2013-12-27 16:00" Alee 删除多余代码
@@ -80,7 +78,6 @@
 import PlayerControl
 import FunctionNPCCommon
 import FBLogic
-import PlayerShopItem
 import ItemControler
 import ItemCommon
 import QuestCommon
@@ -100,7 +97,7 @@
 import PlayerExpandPackCfgMgr
 import EventReport
 import PlayerCoat
-import PlayerSuccess
+import PlayerGatherSoul
 import PlayerArrestTask
 import PlayerRune
 import IpyGameDataPY
@@ -229,6 +226,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 +342,9 @@
         return
     
     curPlayer.SetActionObj(curNPC)
+    
+    if NPCCommon.OnCollectNPCBegin(curPlayer, curNPC, tick):
+        return
     
     prepareTime = FBLogic.GetFBPrepareTime(curPlayer, curNPC)
     
@@ -599,25 +656,29 @@
     Event_OnKillByID(curPlayer, npcTypeID)
     
     #触发按等级杀怪
-    #EventRespons_OnKillByLv(curPlayer, curNPC)
+    EventRespons_OnKillByLv(curPlayer, curNPC)
     return
 #---------------------------------------------------------------------
-###任务触发器_OnKillByLv 击杀指定等级的怪物
-##@param curPlayer 玩家实例
-##@param curNPC NPC实例
-##@return 返回值无意义
-##@remarks 任务触发器_OnKillByLv 击杀指定等级的怪物
-#def EventRespons_OnKillByLv(curPlayer, curNPC):
-#    #得到NPC的TypeID
-#    npcLV = curNPC.GetLV()     
-#    #运行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
+##任务触发器_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 = curNPC.GetLV()     
+    
+    #运行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
 
 #---------------------------------------------------------------------
 ##任务触发器_完成某手机任务
@@ -781,31 +842,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:
@@ -1521,7 +1561,7 @@
     
     #触发每日任务杀怪
     RunDayEvent(curPlayer, "on_kill_by_feel", npcTypeID, QuestCommon.Def_Kill_Npc_ID)
-    
+    EventRespons_OnKillByLv(curPlayer, curNPC)
     return
 
 ## 完成任务
@@ -1617,14 +1657,6 @@
     RunQuestEvent(curPlayer, "on_buy_mission_sum", buyNum, Def_RunQuestType_RunAll)
     return
 
-## 坐骑升阶
-#  @param curPlayer 玩家实例
-#  @param  eventName
-#  @return None
-def EventRespons_OnHorseUp(curPlayer, updClassLV, updStarLV):
-    #星级*100+阶级
-    RunQuestEvent(curPlayer, "on_horseup", updStarLV*100+updClassLV, Def_RunQuestType_Normal)
-    return
 
 ## 穿装备触发判断所穿橙装数量
 #  @param curPlayer 玩家实例
@@ -1685,13 +1717,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):
     # 激活宠物
@@ -1699,16 +1724,14 @@
     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):
     # 法宝解锁进度
     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):
@@ -1810,6 +1833,63 @@
 def EventRespons_RealmUp(curPlayer, realmlv):
     #境界升级
     RunQuestEvent(curPlayer, "realmup", realmlv, 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_EquipStar(curPlayer):
+    #装备总星级变化
+    RunQuestEvent(curPlayer, "equipstar", "equipstar", Def_RunQuestType_Normal)
     return
 #---------------------------------------------------------------------
 
@@ -3642,18 +3722,16 @@
     curPlayer.SetForbiddenResetItem(0)
     ExitCompose(curPlayer)
     ExitWarehouse(curPlayer)
-    ExitRepair(curPlayer)
+    #ExitRepair(curPlayer)
     ExitCreateFamily(curPlayer)
     ExitBillboard(curPlayer)
     #ExitEventLock(curPlayer)
-    #ExitShopItem(curPlayer) # 奇迹只在切地图及下线时关闭摆摊
-    #ExitWatchShopItem(curPlayer)
     #npc商店退出
     ExitNPCShop(curPlayer)
     
-    PlayerTrade.LeaveTrade(curPlayer, 0)
+    #PlayerTrade.LeaveTrade(curPlayer, 0)
     # 清除py自定义状态
-    ClearPyPlayerAction(curPlayer)
+    #ClearPyPlayerAction(curPlayer)
     
     #调用底层结束事件
     #避免策划变更,导致其他退出锁定事件使任务1未接取就退出锁定
@@ -3687,85 +3765,6 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PyPlayerAction, 0)      
     return
 
-
-##结束摆摊事件
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束摆摊事件
-def ExitShopItem(curPlayer):
-    GameWorld.DebugLog("ExitShopItem", curPlayer.GetPlayerID())
-    playerShop = curPlayer.GetPlayerShop()
-    #在摆摊状态
-    if playerShop.GetIsStartShop():
-        PlayerShopItem.DoExitShop(curPlayer , curPlayer.GetPlayerShop())
-        
-    return
-#---------------------------------------------------------------------
-##结束查看摆摊事件
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束查看摆摊事件
-def ExitWatchShopItem(curPlayer):
-    curPlayerShop = curPlayer.GetPlayerShop()
-    
-    if not curPlayerShop.GetIsWatchingShop():
-        return
-
-    openShopPlayer = curPlayer.GetActionPlayer()
-    __DoExitWatchShopItem(curPlayer , openShopPlayer)
-    
-    curPlayerShop.SetIsWatchingShop(0) 
-    return
-#---------------------------------------------------------------------
-##结束查看摆摊事件
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束查看摆摊事件
-def __DoExitWatchShopItem(curPlayer , openShopPlayer):
-    
-    if openShopPlayer == None:
-        return
-    
-    shop = openShopPlayer.GetPlayerShop()
-    #没有开店
-    if not shop.GetIsStartShop():
-        return
-    
-    #商店删除这个玩家
-    shop.DeleteWatchPlayer(curPlayer.GetPlayerID())
-    return
-
-#---------------------------------------------------------------------
-##结束事件锁
-#@param curPlayer 玩家实例
-#@return 返回值无意义
-#@remarks 自定义函数:结束事件锁
-#===============================================================================
-# def ExitEventLock(curPlayer):
-#    if not curPlayer.GetHaveSetEventLock() :
-#        return
-#    
-#    #在摆摊状态不解锁,奇迹摆摊物品解锁只在切地图/下线/玩家主动结束摆摊情况下解锁
-#    playerShop = curPlayer.GetPlayerShop()
-#    if playerShop.GetIsStartShop():
-#        return
-#    
-#    #获得玩家物品管理器
-#    ItemManager = curPlayer.GetItemManager()
-#    #获得背包
-#    curPack = ItemManager.GetPack(IPY_GameWorld.rptItem)
-#    for i in range(curPack.GetCount()):
-#        item = curPack.GetAt(i)
-#        if item == None or item.IsEmpty():
-#            continue
-#        
-#        if not item.GetIsEventLocked():
-#            continue
-#        
-#        #离开事件锁
-#        item.SetIsEventLocked(False)
-#===============================================================================
-        
 #---------------------------------------------------------------------
 ##结束查看排行榜
 #@param curPlayer 玩家实例
@@ -3883,7 +3882,7 @@
 # @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:
@@ -4097,79 +4096,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
     
     
@@ -4317,7 +4243,9 @@
     # 符印交换
     if PlayerRune.SwitchRune(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
         return
-    
+    # 聚魂交换
+    if PlayerGatherSoul.SwitchGatherSoul(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
+        return
     
     #时装
     if PlayerCoat.SwitchCoat(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
@@ -4928,30 +4856,53 @@
     if hasGotAward:
         GameWorld.DebugLog('领取环任务每轮奖励  已奖励 类型 %s'%taskType)
         return
-    runTaskAwardDict = IpyGameDataPY.GetFuncEvalCfg('RunTaskAward')
-    if taskType not in runTaskAwardDict:
-        GameWorld.DebugLog('领取环任务每轮奖励  RunTaskAward 没有配置类型的奖励 类型 %s'%taskType)
-        return
-    moneyNum = 0
-    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 = runTaskAwardDict[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)
+    #物品奖励
+    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)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RunTaskAwardRecord % taskType, moneyNum)
-    GameWorld.DebugLog('领取环任务每轮奖励成功  moneyType=%s, moneyNum=%s'%(moneyType, moneyNum))
+    GameWorld.DebugLog('领取环任务每轮奖励成功  moneyType=%s, moneyNum=%s, itemList=%s, giveExp=%s'%(moneyType, moneyNum, itemList, giveExp))
     
     #通知客户端
     NotifyRunEndAward(curPlayer, taskType)

--
Gitblit v1.8.0