From ef5751c8eb642ca7371d48c9a50be89212a4d722 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 03 六月 2019 19:48:28 +0800
Subject: [PATCH] 7064 【后端】【2.0】后端给绑玉防范处理(扣绑玉默认扣仙玉,屏蔽给绑玉并输出流向)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 4 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py | 7 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetMoney.py | 9 +++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_SkillBook.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 36 ++++++------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 9 +---
6 files changed, 30 insertions(+), 36 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index e4ef773..7adbf10 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -263,7 +263,7 @@
Def_ItemID_FamilyContribution = 26 # 直接给战盟贡献点
Def_ItemID_FamilyActive = 28 # 直接给战盟活跃点
Def_ItemID_SP = 29 # 直接给sp
-Def_ItemID_GoldPaper = 30 # 直接给绑玉
+#Def_ItemID_GoldPaper = 30 # 直接给绑玉
Def_ItemID_RealmPoint = 24 # 直接给修行点
Def_ItemID_BossReborn = 21 # 直接给boss复活点
Def_ItemID_Ysog = 4306 # 直接给符印融合石
@@ -271,7 +271,7 @@
Def_ItemID_SoulSplinters = 701 # 直接给聚魂碎片
Def_ItemID_SoulCore = 702 # 直接给核心环
Def_ItemID_Honor = 2141 # 直接给荣誉
-Def_TransformItemIDList = [Def_ItemID_FamilyContribution, Def_ItemID_FamilyActive, Def_ItemID_SP, Def_ItemID_GoldPaper,
+Def_TransformItemIDList = [Def_ItemID_FamilyContribution, Def_ItemID_FamilyActive, Def_ItemID_SP, #Def_ItemID_GoldPaper,
Def_ItemID_RealmPoint, Def_ItemID_SilverMoney, Def_ItemID_BossReborn, Def_ItemID_Ysog,
Def_ItemID_SoulDust, Def_ItemID_SoulSplinters, Def_ItemID_SoulCore, Def_ItemID_Honor, Def_ItemID_GoldMoney]
#---------------------------------------------------------------------
@@ -807,11 +807,6 @@
#内网GM等级
Def_GM_LV_God = 90
#---------------------------------------------------------------------
-#游戏中所有的金钱类型
-Def_MoneyType_All = [IPY_GameWorld.TYPE_Price_Gold_Money, # 元宝
- IPY_GameWorld.TYPE_Price_Gold_Paper, # 礼券
- IPY_GameWorld.TYPE_Price_Silver_Money, # 银子
- ]
#客户端心跳响应封包间隔(毫秒)
Def_PlayerOnLineReply_ClientReply = 30000 #30000
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
index ba57c0f..d9b5574 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/DataRecordPack.py
@@ -842,6 +842,13 @@
return
+## 获得金钱失败
+def DR_GiveMoneyError(curPlayer, priceType, value, giveType, addDataDict):
+ dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(),
+ 'AccID':curPlayer.GetAccID(), "GiveType":giveType, "GiveValue":value, "AddDataDict":addDataDict}
+ SendEventPack("GiveMoneyError_%s" % priceType, dataDict, curPlayer)
+ return
+
## 获得物品
# @param curPlayer: 玩家实例
# @param eventName: 功能事件名
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetMoney.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetMoney.py
index 016aee6..790f9ea 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetMoney.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetMoney.py
@@ -52,11 +52,16 @@
#0文不处理
if moneyCount < 0:
return
+ isOK = False
playerMoney = PlayerControl.GetMoney(curPlayer, moneyType)
if playerMoney > moneyCount:
- PlayerControl.PayMoney(curPlayer, moneyType, playerMoney - moneyCount, ChConfig.Def_Cost_GM, {ChConfig.Def_Cost_Reason_SonKey:"SetMoney"})
+ isOK = PlayerControl.PayMoney(curPlayer, moneyType, playerMoney - moneyCount, ChConfig.Def_Cost_GM, {ChConfig.Def_Cost_Reason_SonKey:"SetMoney"})
elif playerMoney < moneyCount:
- PlayerControl.GiveMoney(curPlayer, moneyType, moneyCount - playerMoney, ChConfig.Def_GiveMoney_GM, {ChConfig.Def_Give_Reason_SonKey:"SetMoney"})
+ isOK = PlayerControl.GiveMoney(curPlayer, moneyType, moneyCount - playerMoney, ChConfig.Def_GiveMoney_GM, {ChConfig.Def_Give_Reason_SonKey:"SetMoney"})
+ else:
+ isOK = True
+ if not isOK:
+ GameWorld.DebugAnswer(curPlayer, "设置玩家货币失败,详见日志或流向")
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index ba8e28f..42e6a88 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -1017,8 +1017,8 @@
PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyActivity, itemCount)
elif itemID == ChConfig.Def_ItemID_SP:
PlayerControl.PlayerAddZhenQi(curPlayer, itemCount)
- elif itemID == ChConfig.Def_ItemID_GoldPaper:
- PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, itemCount)
+ #elif itemID == ChConfig.Def_ItemID_GoldPaper:
+ # PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Paper, itemCount, eventName, addDict)
elif itemID == ChConfig.Def_ItemID_RealmPoint:
PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_RealmPoint, itemCount)
elif itemID == ChConfig.Def_ItemID_BossReborn:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_SkillBook.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_SkillBook.py
index 4bf62a6..b48b299 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_SkillBook.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_SkillBook.py
@@ -109,7 +109,6 @@
if skillLVNeedMoneyCount > 0:
#付钱
- skillLVNeedMoneyType = PlayerControl.ChangeMoneyType(curPlayer, skillLVNeedMoneyType)
if not PlayerControl.PayMoney(curPlayer, skillLVNeedMoneyType, skillLVNeedMoneyCount):
return False
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 5fd7c7e..9a1a4cb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -2663,22 +2663,6 @@
return playerlist
#---------------------------------------------------------------------
-##转变付费货币类型
-# @param curPlayer 玩家实例
-# @param moneyType 货币类型 1表示金子,2表示金票,3表示银子,4表示银票, 5:金子/金票 6:银子/银票
-# @return 返回值, 货币类型
-# @remarks 转变付费货币类型
-def ChangeMoneyType(curPlayer, moneyType):
-# if moneyType == 5:
-# return curPlayer.GetUseGoldType()
-#
-# if moneyType == 6:
-# return curPlayer.GetUseSilverType()
- if moneyType not in ChConfig.Def_MoneyType_All:
- GameWorld.ErrLog("金钱类型填写错误 %s" % moneyType)
-
- return moneyType
-#---------------------------------------------------------------------
##获取玩家货币数
# @param curPlayer 玩家实例
# @param TYPE_Price ,货币类型
@@ -2887,6 +2871,9 @@
GameWorld.Log('###---扣钱异常 = %s' % (price), curPlayer.GetPlayerID())
return False
+ if type_Price == IPY_GameWorld.TYPE_Price_Gold_Paper:
+ type_Price = IPY_GameWorld.TYPE_Price_Gold_Money #新版无绑玉,原先绑玉再仙玉的扣法改成 扣仙玉 2019/6/3
+
#金子支付
if type_Price == IPY_GameWorld.TYPE_Price_Gold_Money:
curPlayerGold = curPlayer.GetGold()
@@ -3155,13 +3142,13 @@
GiveMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney, value)
addDataDict["BourseMoney"] = GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
- elif priceType == IPY_GameWorld.TYPE_Price_Gold_Paper:
- if curPlayer.GetGoldPaper() + value > ChConfig.Def_PlayerTotalMoney_Gold:
- #超过金钱上限
- NotifyCode(curPlayer, "MoneyIsFull", [priceType])
- return
-
- curPlayer.SetGoldPaper(curPlayer.GetGoldPaper() + value)
+# elif priceType == IPY_GameWorld.TYPE_Price_Gold_Paper:
+# if curPlayer.GetGoldPaper() + value > ChConfig.Def_PlayerTotalMoney_Gold:
+# #超过金钱上限
+# NotifyCode(curPlayer, "MoneyIsFull", [priceType])
+# return
+#
+# curPlayer.SetGoldPaper(curPlayer.GetGoldPaper() + value)
elif priceType == IPY_GameWorld.TYPE_Price_Silver_Money:
# 金钱支持超过20亿, 暂不做上限控制
@@ -3191,7 +3178,8 @@
PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_GetRealmPoint, value)
EventShell.EventRespons_GetRealmPoint(curPlayer)
else:
- GameWorld.Log("金钱类型错误, priceType = %s" % (priceType), curPlayer.GetPlayerID())
+ GameWorld.ErrLog("金钱类型错误, priceType=%s,value=%s,giveType=%s" % (priceType, value, giveType), curPlayer.GetPlayerID())
+ DataRecordPack.DR_GiveMoneyError(curPlayer, priceType, value, giveType, addDataDict)
return
if isSysHint and priceType != ShareDefine.TYPE_Price_BourseMoney:
--
Gitblit v1.8.0