From 442ed90a28985d56986b596f985c702c98019aa7 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 21 一月 2025 17:11:31 +0800
Subject: [PATCH] 10382 【后台】称号管理支持升星(支持升星、设置星级,支持离线设置;发放代币、后台充值、头像管理增加离线操作支持;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py |   34 ++++++++++++++++++++++++++++++++--
 1 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
index bc73a86..38cf5a0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDienstgrad.py
@@ -244,7 +244,8 @@
     # if curDienstgradMgr.GetUseGradID() == dienstgradID:
     #    UnUseDienstgrad(curPlayer)
     #===========================================================================
-        
+    
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleStar % dienstgradID, 0)
     curDienstgradMgr.DeleteDienstgrad(dienstgradID)
     #通知称号删除
     curDienstgradMgr.Sync_PlayerDelDienstgrad(dienstgradID)
@@ -494,6 +495,33 @@
     SyncTitleStarInfo(curPlayer, titleID)
     return
 
+def GMSetTitleStar(curPlayer, titleID, setValue=None):
+    ## GM设置星级
+    
+    curDienstgradMgr = curPlayer.GetDienstgradManager()
+    curDienstgrad = curDienstgradMgr.GetDienstgrad(titleID)
+    if curDienstgrad == None:
+        return False, "The player has not activated the titleID(%s)" % titleID
+    
+    if setValue == None:
+        curStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TitleStar % titleID)
+        setStar = curStar + 1 # 没指定星级时默认升星
+    else:
+        setStar = setValue
+        
+    if setStar > 0:
+        if not IpyGameDataPY.GetIpyGameData("TitleStarUp", titleID, setStar):
+            return False, "The titleID(%s) star(%s) is not exist." % (titleID, setStar)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleStar % titleID, setStar)
+    GameWorld.Log("GM设置称号星级: titleID=%s,setStar=%s" % (titleID, setStar), curPlayer.GetPlayerID())
+    
+    CalcAllDienstgradAttr(curPlayer)
+    playerControl = PlayerControl.PlayerControl(curPlayer)
+    playerControl.RefreshPlayerAttrState()
+    
+    SyncTitleStarInfo(curPlayer, titleID)
+    return True, ""
+
 #-------------------------------------------------------------
 ## 获取已激活称号列表
 #  @param curPlayer
@@ -623,7 +651,9 @@
     return
 
 def SyncTitleStarInfo(curPlayer, titleID=None):
+    force = False
     if titleID > 0:
+        force = True
         syncIDList = [titleID]
     else:
         syncIDList = []
@@ -638,7 +668,7 @@
     titleStarList = []
     for titleID in syncIDList:
         curStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TitleStar % titleID)
-        if not curStar:
+        if not curStar and not force:
             continue
         starInfo = ChPyNetSendPack.tagMCTitleStar()
         starInfo.Clear()

--
Gitblit v1.8.0