From ac36bdcfa7db1557790a5b912c3248b22625841f Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 26 十一月 2025 18:49:17 +0800
Subject: [PATCH] Merge branch 'master' of http://mobile.secondworld.net.cn:10010/r/Project_SG_ServerCode
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 58 +++++++++++++++++++++++++++++++---------------------------
1 files changed, 31 insertions(+), 27 deletions(-)
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 d082054..9572b02 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -44,12 +44,10 @@
import GameFuncComm
import IpyGameDataPY
import PyGameData
-import PlayerFeastTravel
import PlayerActTurntable
import PlayerCostRebate
import PlayerActLunhuidian
import GY_Query_CrossRealmReg
-import PlayerGoldInvest
import CrossRealmPlayer
import CrossPlayerData
import PlayerActivity
@@ -58,7 +56,7 @@
import PlayerOnline
import PlayerTask
import PlayerMail
-import PlayerLLMJ
+import TurnAttack
import ChPlayer
import GameObj
@@ -2450,17 +2448,12 @@
return
def GetUnXiantaoCntEquip(curPlayer):
- '''因为战锤对应装备是1个战锤可能对应多个装备掉落,所以分解装备的时候1个战锤需要支持可拆分
- 所以需要支持小数存储,暂定以支持3位小数存储
- '''
- return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip) / 1000.0
+ return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip)
def AddUnXiantaoCntEquip(curPlayer, addCnt):
- unXiantaoCntEquip = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip) + addCnt * 1000
+ unXiantaoCntEquip = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip) + addCnt
return NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntEquip, unXiantaoCntEquip)
def SetUnXiantaoCntEquip(curPlayer, unXiantaoCntEquip):
- ## 保存装备未结算战锤数,保留3位小数
- # @param unXiantaoCntEquip: 实际的未结算数量,支持小数
- unXiantaoCntEquip = int(round(unXiantaoCntEquip, 3) * 1000) # 保留3为小数
+ ## 保存装备未结算战锤数
return NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntEquip, unXiantaoCntEquip)
##玩家是否有钱款
@@ -2765,10 +2758,7 @@
unXiantaoCntBooty = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntBooty % itemID)
NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntBooty % itemID, unXiantaoCntBooty + price)
- PlayerLLMJ.AddUseZhanchui(curPlayer, price)
- PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_UseXiantao, price)
- PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_CutTree, price)
- PlayerActivity.AddDailyTaskValue(curPlayer, ChConfig.DailyTask_CutTree, price)
+ TurnAttack.GetMainFightMgr(curPlayer).useZhanchui += price
unitPrice = price if quantity == 1 else int(math.ceil(price * 1.0 / quantity)) # 单价
#reason_name = "Unknown" if not costType else costType
@@ -2848,7 +2838,6 @@
# 消费返利
if costType not in ChConfig.CostRebate_DisableType:
PlayerCostRebate.AddCostRebateGold(curPlayer, costType, price, infoDict)
- PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_UseGold, price)
else:
GameWorld.DebugLog("不计入消费活动的消费类型!costType=%s" % costType, curPlayer.GetPlayerID())
@@ -2956,8 +2945,9 @@
return
SetMoney(curPlayer, priceType, updPlayerGold)
- if isGiveBourseMoney and updPlayerGold > 0:
- GiveMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney, min(value, updPlayerGold))
+ #废弃交易所额度
+ #if isGiveBourseMoney and updPlayerGold > 0:
+ # GiveMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney, min(value, updPlayerGold))
addDataDict["BourseMoney"] = GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
elif priceType == IPY_GameWorld.TYPE_Price_Gold_Paper:
@@ -4144,7 +4134,6 @@
def Sync_ExpRateChange(curPlayer):
totalExpRate = GetPlayerExpRate(curPlayer)
fightExpRate = curPlayer.GetFightExpRate() # 系统及功能累加
- fightExpRate += PlayerGoldInvest.GetAddFightExpRate(curPlayer)
actExpRateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_ExpRate, {})# 多倍经验活动加成
if actExpRateInfo.get(ShareDefine.ActKey_State):
@@ -4200,11 +4189,11 @@
return totalExpRate
-##外观额外数据: 其他 * 100 + 坐骑外观
-def GetHorseSkinID(curPlayer): return GameWorld.GetValue(curPlayer.GetEquipShowSwitch(), 2, 2)
+##外观额外数据: 其他 * 1000 + 坐骑外观
+def GetHorseSkinID(curPlayer): return GameWorld.GetValue(curPlayer.GetEquipShowSwitch(), 3, 3)
def SetHorseSkinID(curPlayer, horseSkinID):
showValue = curPlayer.GetEquipShowSwitch()
- updShowValue = GameWorld.SetValue(showValue, 2, 2, min(horseSkinID, 99))
+ updShowValue = GameWorld.SetValue(showValue, 3, 3, min(horseSkinID, 999))
curPlayer.SetEquipShowSwitch(updShowValue)
GameWorld.DebugLog("使用坐骑外观: horseSkinID=%s,showValue=%s,updShowValue=%s" % (horseSkinID, showValue, updShowValue))
return
@@ -4304,10 +4293,25 @@
def IsMainLevelPass(curPlayer, lvID):
## 判断玩家是否过关某个主线关卡ID
- # @param lvID: 关卡唯一ID,与策划约定好 = 章节*100+关卡编号
- passChapterID, passLevelNum, _ = GetMainLevelPassInfo(curPlayer)
- passValue = passChapterID * 100 + passLevelNum # 因为pass的记录是带波数的,即当前关卡boss还没过关,所以只有大于该记录值的才算过关
- return passValue > lvID
+ return GetPassMainLevelID(curPlayer) >= lvID
+def GetPassMainLevelID(curPlayer):
+ ## 获取已过关主线关卡ID
+ passChapterID, passLevelNum, _ = GetMainLevelPassInfo(curPlayer) # 当前过关进度包含波,所以需要取上一关的
+ passLVID = 0 # 关卡唯一ID,与策划约定好 = 章节*100+关卡编号
+ if passLevelNum > 1:
+ preLevelNum = passLevelNum - 1
+ passLVID = passChapterID * 100 + preLevelNum
+ GameWorld.DebugLog("非某章节的第1关直接减1即可: passLVID=%s,passChapterID=%s,passLevelNum=%s" % (passLVID, passChapterID, passLevelNum))
+
+ elif passChapterID > 1: # 取上一章节
+ preChapterID = passChapterID - 1
+ levelDataList = IpyGameDataPY.GetIpyGameDataByCondition("MainLevel", {"ChapterID":preChapterID}, True)
+ levelCount = len(levelDataList) if levelDataList else 0
+ if levelCount:
+ passLVID = preChapterID * 100 + levelCount
+ GameWorld.DebugLog("取上一章节作为已过关关卡: passLVID=%s,preChapterID=%s,levelCount=%s,passChapterID=%s,passLevelNum=%s"
+ % (passLVID, preChapterID, levelCount, passChapterID, passLevelNum))
+ return passLVID
## 主线关卡过关进度值 = 章节*10000+关卡编号*100+第x波
def GetMainLevelPassValue(curPlayer): return curPlayer.GetExAttr1()
@@ -4320,7 +4324,7 @@
value = ComMainLevelValue(chapterID, levelNum, wave)
SetMainLevelPassValue(curPlayer, value)
if wave == 0:
- lvID = chapterID * 100 + levelNum
+ lvID = GetPassMainLevelID(curPlayer)
PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_MainLevel, lvID)
PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel)
PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_MainLevel, lvID)
--
Gitblit v1.8.0