From 8709eea88b2eaf09582f06290167b9a997c8fc3e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 05 十二月 2018 15:24:21 +0800
Subject: [PATCH] 4879 【后端】【1.3.100】宗门试练新增扫荡

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py |   83 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 81 insertions(+), 2 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py
index dc8ef28..792eb87 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBHelpBattle.py
@@ -88,13 +88,17 @@
         __OnHelpBattleCheckInResult(curPlayer, msgList, tick)
         
     # 刷新
-    if cmd == "Refresh":
+    elif cmd == "Refresh":
         __OnHelpBattleRefreshResult(curPlayer, msgList, tick)
         
     # 助战记录
-    if cmd == "HelpRecord":
+    elif cmd == "HelpRecord":
         __OnHelpBattleRecord(curPlayer, msgList, tick)
         
+    # 扫荡召唤
+    elif cmd == "SweepCall":
+        __OnHelpBattleSweepCallResult(curPlayer, msgList, tick)
+    
     return
 
 #// B1 05 助战登记 #tagCMHelpBattleCheckIn
@@ -394,6 +398,81 @@
     NetPackCommon.SendFakePack(curPlayer, helpPlayerListPack)
     return
 
+def SendGameServer_SweepCallHelpBattlePlayer(curPlayer, mapID, funcLineID):
+    ## 发送GameServer请求扫荡助战玩家
+    ipyData = IpyGameDataPY.GetIpyGameData("FBHelpBattle", mapID, funcLineID)
+    if not ipyData:
+        return
+    playerID = curPlayer.GetPlayerID()
+    msgInfo = str(["SweepCall", mapID, funcLineID])
+    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "FBHelpBattle", msgInfo, len(msgInfo))
+    GameWorld.Log("SendGameServer_SweepCallHelpBattlePlayer %s" % (msgInfo), playerID)
+    return
+
+def __OnHelpBattleSweepCallResult(curPlayer, msgList, tick):
+    ## 助战扫荡结果处理
+    cmd, mapID, funcLineID, helpBattlePlayerDict = msgList
+    playerID = curPlayer.GetPlayerID()
+    GameWorld.DebugLog("__OnHelpBattleSweepCallResult %s,mapID=%s,funcLineID=%s,helpBattlePlayerDict=%s" 
+                       % (cmd, mapID, funcLineID, helpBattlePlayerDict), playerID)
+    
+    fbFuncIpyData = IpyGameDataPY.GetIpyGameData("FBFunc", mapID)
+    if not fbFuncIpyData:
+        return
+    
+    reason = 0
+    addCoinRate = 10000 # 基础倍率
+    baseFBPoint = fbFuncIpyData.GetFBPoint() # 过关 - 基础仙缘币
+    
+    xianyuanCoinUpper = IpyGameDataPY.GetFuncCfg("HelpBattlePoint", 1) # 每日仙缘币上限
+    relationCoinAddDict = IpyGameDataPY.GetFuncEvalCfg("HelpBattlePoint", 2, {}) # 社交关系加成 {"社交关系":[过关加成, 助战加成], ...} 
+    todayXianyuanCoin = PlayerControl.GetTodayXianyuanCoin(curPlayer) # 今日已获得仙缘币
+    playerXianyuanCoinUpper = xianyuanCoinUpper
+    if curPlayer.GetVIPLv():
+        playerXianyuanCoinUpper += PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_XianyuanCoinUpperAdd)
+        addCoinRate += PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_XianyuanCoinAddPer)
+        
+    relation, relationAdd = 0, 0
+    for helpPlayerInfoDict in helpBattlePlayerDict.values():
+        relation = helpPlayerInfoDict.get("Relation", 0)
+        if not relation:
+            continue
+        relationAddList = relationCoinAddDict.get(str(relation), [])
+        relationAdd += relationAddList[0] if len(relationAddList) == 2 else 0
+        
+    coinAdd = 0
+    if baseFBPoint:
+        coinAdd = int((baseFBPoint + relationAdd) * addCoinRate / 10000.0)
+    canAddMax = max(playerXianyuanCoinUpper - todayXianyuanCoin, 0)
+    coinAddReal = min(coinAdd, canAddMax) # 实际加仙缘币
+    if canAddMax == 0 and not reason:
+        reason = 2
+        
+    GameWorld.DebugLog("扫荡副本增加仙缘币: baseFBPoint=%s,relationAdd=%s,addCoinRate=%s,coinAdd=%s,canAddMax=%s,coinAddReal=%s" 
+                       % (baseFBPoint, relationAdd, addCoinRate, coinAdd, canAddMax, coinAddReal), playerID)
+    if coinAddReal:
+        addDataDict = {"MapID":mapID, "FuncLineID":funcLineID, "IsSweep":1}
+        PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanCoin, coinAddReal, addDataDict=addDataDict)
+        PlayerControl.AddTodayXianyuanCoin(curPlayer, coinAddReal)
+        
+    #扫荡结果给奖励等
+    FBLogic.OnPlayerFBHelpBattleSweepResult(curPlayer, mapID, funcLineID, helpBattlePlayerDict, coinAddReal, reason)
+    
+    # 通知自己获得仙缘币
+    msgPack = ChPyNetSendPack.tagMCAddXianyuanCoinMsg()
+    msgPack.MapID = mapID
+    msgPack.FuncLineID = funcLineID
+    msgPack.Relation = relation
+    msgPack.RelationCoinAdd = relationAdd
+    msgPack.XianyuanCoinAdd = coinAddReal
+    msgPack.Reason = reason
+    #msgPack.CallPlayerID = relationPlayerID
+    #msgPack.CallPlayerName = relationPlayerName
+    msgPack.NameLen = len(msgPack.CallPlayerName)
+    msgPack.IsSweep = 1
+    NetPackCommon.SendFakePack(curPlayer, msgPack)
+    return
+
 def __OnHelpBattleRecord(curPlayer, msgList, tick):
     ## 助战记录同步
     cmd, helpRecordList, isLogin = msgList

--
Gitblit v1.8.0