From 43e7b36534ba2bb1bb4e399d1536061e5890ab99 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 16 十月 2025 10:47:58 +0800
Subject: [PATCH] 263 【主界面】头像系统(内政-幻境阁系统)-服务端(优化改名逻辑)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py | 54 +++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 43 insertions(+), 11 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
index e5b7047..6ac98f7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
@@ -30,7 +30,6 @@
import IPY_GameWorld
import ItemControler
import GameFuncComm
-import ItemCommon
import DBDataMgr
import DirtyList
import ObjPool
@@ -156,6 +155,7 @@
curMember.SetOffTime(0) # 在线0,脱机1,>1离线时间
curMember.RefreshMember(curPlayer)
Sync_FamilyInfo(curPlayer)
+ SendFamilyActionInfo(curPlayer, familyID, ShareDefine.Def_ActionType_FamilyData)
#通知招人
if GetFamilyMemberHasPow(curMember, FamilyPowerID_Call):
@@ -179,6 +179,29 @@
#战力刷新在DBFamily.OnMinute
PlayerFamilyEmblem.CheckExpireEmblem()
return
+
+def RefreshFamilyMember(curPlayer):
+ ## 玩家成员相关属性变更时同步更新家族成员信息
+ familyID = curPlayer.GetFamilyID()
+ if not familyID:
+ return
+ familyMgr = DBDataMgr.GetFamilyMgr()
+ family = familyMgr.FindFamily(familyID)
+ if not family:
+ return
+ playerID = curPlayer.GetPlayerID()
+ member = family.FindMember(playerID)
+ if not member:
+ return
+ member.RefreshMember(curPlayer)
+ return
+
+def GetRenameTime(dataAction): return dataAction.GetValue1()
+def SetRenameTime(dataAction, setTime): dataAction.SetValue1(setTime)
+def GetFamilyDataAction(familyID):
+ ## 家族额外数据存储的行为数据,可以视为Family公共数据的一个扩展
+ action = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ShareDefine.Def_ActionType_FamilyData)
+ return action.GetOneAction(True)
#// A6 04 创建家族 #tagCMCreateFamily
#
@@ -506,6 +529,7 @@
memInfo.RealmLV = member.GetRealmLV()
memInfo.Face = member.GetFace()
memInfo.FacePic = member.GetFacePic()
+ memInfo.TitleID = member.GetTitleID()
memInfo.FightPower = member.GetFightPower()
memInfo.FightPowerEx = member.GetFightPowerEx()
memInfo.FmLV = member.GetFmLV()
@@ -776,6 +800,7 @@
reqInfo.RealmLV = viewCache.GetRealmLV()
reqInfo.Face = viewCache.GetFace()
reqInfo.FacePic = viewCache.GetFacePic()
+ reqInfo.TitleID = viewCache.GetTitleID()
reqInfo.FightPower = viewCache.GetFightPower()
reqInfo.FightPowerEx = viewCache.GetFightPowerEx()
reqInfo.ServerID = viewCache.GetServerID()
@@ -1222,7 +1247,7 @@
def UpdateFamilyName(index, clientData, tick):
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
newName = clientData.NewName
- itemIndex = clientData.ItemIndex
+ #itemIndex = clientData.ItemIndex
playerID = curPlayer.GetPlayerID()
familyID = curPlayer.GetFamilyID()
@@ -1240,18 +1265,24 @@
GameWorld.DebugLog("非盟主不可改名!", playerID)
return
+ cdHours = IpyGameDataPY.GetFuncCfg("FamilyRename", 2)
+ if cdHours:
+ cdSeconds = cdHours * 3600
+ curTime = int(time.time())
+ dataAction = GetFamilyDataAction(familyID)
+ lastRenameTime = GetRenameTime(dataAction)
+ if lastRenameTime and (curTime - lastRenameTime) < cdSeconds:
+ GameWorld.DebugLog("仙盟改名CD中! lastRenameTime=%s,cdHours=%s" % (GameWorld.ChangeTimeNumToStr(lastRenameTime), cdHours))
+ return
+
familyName = CheckInputFamilyName(curPlayer, newName)
if not familyName:
return
- itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- curItem = itemPack.GetAt(itemIndex)
- if not ItemCommon.CheckItemCanUse(curItem) or curItem.GetType() != ChConfig.Def_ItemType_ChangeFamilyName:
- GameWorld.DebugLog("没有仙盟改名道具! itemIndex=%s" % itemIndex, playerID)
+ moneyType, moneyValue = IpyGameDataPY.GetFuncEvalCfg("FamilyRename", 1)
+ if moneyType and moneyValue and not PlayerControl.PayMoney(curPlayer, moneyType, moneyValue, "FamilyRename"):
return
- ItemCommon.DelItem(curPlayer, curItem, 1, True, 'UpdateFamilyName')
- #oldName = curFamily.GetName()
family.SetName(familyName)
infoPack = GetPack_FamilyInfo(familyID)
@@ -1264,10 +1295,11 @@
continue
Sync_FamilyInfo(player, infoPack)
player.SetFamilyName(familyName)
- player.Notify_FamilyNameRefresh() #//04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
+ #player.Notify_FamilyNameRefresh() #//04 36 周围玩家家族名刷新#tagPlayerFamilyNameRefresh
- #PlayerCompensation.SendMailByKey('FamilyNameChange', memberIDList, [], [oldName, familyName])
- #PlayerControl.WorldNotify(0, 'Family_ChangeName', [oldName, familyName])
+ if cdHours:
+ SetRenameTime(dataAction, curTime)
+ SendFamilyActionInfo(None, familyID, ShareDefine.Def_ActionType_FamilyData)
return
#// A6 20 搜索家族列表 #tagCMViewFamilyPage
--
Gitblit v1.8.0