From e815ab83417d55c5009681832463fba2833cfe0d Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 01 七月 2019 14:30:24 +0800
Subject: [PATCH] 7687 【后端】【主干】娲皇遗迹增加首次S级奖励
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py | 37 ++++++++++++++++++-------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py | 1 +
2 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index e76cf2a..62e70f9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -90,6 +90,7 @@
Over_grade = 'grade' #评级(5-S,4-A,3-B,2-C,1-D)
Over_itemInfo = 'itemInfo' #物品列表 [{"ItemID":101, "ItemCount":10, "IsBind":1, "IsSuite":1, "UserData":"自定义属性字符串"}]
Over_succItemInfo = 'succItemInfo' #物品列表
+Over_firstPassItem = 'firstPassItem' #物品列表
Over_score = 'score' #已获得积分
Over_extrScore = 'extrScore' #已获得额外积分
Over_enterLV = 'enterLV' #进入时等级
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py
index 780e9b1..2a47654 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_QueenRelics.py
@@ -503,20 +503,25 @@
needSyncFBData = False
overDict = {}
if isPass:
+ overDict = {FBCommon.Over_costTime:costTime, FBCommon.Over_grade:grade}
curGrade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [dataMapID])
if curGrade < grade:
GameWorld.DebugLog(" 更新过关评级: dataMapID=%s,lineID=%s,curGrade=%s,rewardGrade=%s"
% (dataMapID, lineID, curGrade, grade), curPlayer.GetPlayerID())
GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, grade, False, [dataMapID])
needSyncFBData = True
-
+ if grade >= maxGrade: #首次S级奖励
+ lineReward = FBCommon.GetFBLineReward(dataMapID, lineID)
+ firstrewardItemList = [[itemID,itemCnt,0] for itemID,itemCnt in lineReward[0]]
+ ItemControler.GivePlayerItemOrMail(curPlayer, firstrewardItemList, 'QueenRelicsMail', event=["QueenRelics", False, {}])
+ overDict[FBCommon.Over_firstPassItem] = FBCommon.GetJsonItemList(firstrewardItemList)
- overDict = {FBCommon.Over_costTime:costTime, FBCommon.Over_grade:grade}
+
if not nextLineID:#没有下一层则给奖励!!
rewardRet = __GivePlayerQueenRelicsReward(curPlayer, dataMapID, rewardLine - 1, lineID, grade, maxGrade, rewardRateList)
if rewardRet:
- startRewardLineID, totalSP, rewardItemList = rewardRet
- overDict.update({FBCommon.Over_sp:totalSP, FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(rewardItemList),
+ startRewardLineID, rewardItemList = rewardRet
+ overDict.update({FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(rewardItemList),
"startRewardLineID":startRewardLineID})
if lineID+1 > curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBHistoryMaxLine % dataMapID):
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FBHistoryMaxLine % dataMapID, lineID+1)
@@ -561,9 +566,7 @@
def __GivePlayerQueenRelicsReward(curPlayer, dataMapID, rewardLineID, curLineID, passGrade, maxGrade, rewardRateList):
## 给玩家过关奖励
- totalSP = 0
totalItemCountDict = {}
-
# 一般是不可能,这里做个理论数值防范
if rewardLineID >= curLineID:
GameWorld.ErrLog("玩家重复结算娲皇过关奖励!rewardLineID=%s >= curLineID=%s" % (rewardLineID, curLineID), curPlayer.GetPlayerID())
@@ -577,8 +580,7 @@
rewardGrade = maxGrade if giveLineID < curLineID else passGrade
lineReward = FBCommon.GetFBLineReward(dataMapID, giveLineID)
- rewardSP = lineReward[0]
- rewardItemList = lineReward[1:]
+ rewardItemList = lineReward[1]
rewardRateIndex = 0 if rewardGrade >= maxGrade else maxGrade - rewardGrade
if rewardRateIndex < 0 or rewardRateIndex >= len(rewardRateList):
GameWorld.ErrLog(" 评级对应奖励比例索引异常: giveLineID=%s,rewardGrade=%s,rewardRateList=%s,maxGrade=%s,rewardRateIndex=%s"
@@ -587,29 +589,26 @@
rewardRate = rewardRateList[rewardRateIndex]
if rewardRate < 100:
- addSP = int(round(rewardSP * rewardRate / 100.0))
giveItemList = []
for itemID, itemCount in rewardItemList:
rewardCount = max(1, int(round(itemCount * rewardRate / 100.0))) # 确保至少1个
giveItemList.append([itemID, rewardCount])
else:
- addSP = rewardSP
giveItemList = rewardItemList
- GameWorld.DebugLog(" 给关卡奖励: giveLineID=%s,rewardGrade=%s,rewardRateList=%s,rewardRate=%s,addSP=%s,giveItemList=%s"
- % (giveLineID, rewardGrade, rewardRateList, rewardRate, addSP, giveItemList), curPlayer.GetPlayerID())
+ GameWorld.DebugLog(" 给关卡奖励: giveLineID=%s,rewardGrade=%s,rewardRateList=%s,rewardRate=%s,giveItemList=%s"
+ % (giveLineID, rewardGrade, rewardRateList, rewardRate, giveItemList), curPlayer.GetPlayerID())
- totalSP += addSP
+
for itemID, itemCount in giveItemList:
totalItemCountDict[itemID] = totalItemCountDict.get(itemID, 0) + itemCount
+
# 给奖励
- PlayerControl.PlayerAddZhenQi(curPlayer, totalSP, eventName="QueenRelics")
-
rewardItemList = []
for itemID, itemCount in totalItemCountDict.items():
- rewardItemList.append([itemID, itemCount, 1])
-
+ rewardItemList.append([itemID, itemCount, 0])
+
needSpace = len(rewardItemList)
emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
if emptySpace < needSpace:
@@ -618,8 +617,8 @@
for itemID, itemCount, isBind in rewardItemList:
ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem], event=["QueenRelics", False, {}])
- GameWorld.DebugLog(" 总奖励:totalSP=%s,rewardItemList=%s" % (totalSP, rewardItemList), curPlayer.GetPlayerID())
- return startRewardLineID, totalSP, rewardItemList
+ GameWorld.DebugLog(" 总奖励:rewardItemList=%s" % (rewardItemList), curPlayer.GetPlayerID())
+ return startRewardLineID, rewardItemList
## 副本行为
--
Gitblit v1.8.0