From e671cc640668d05194dc7a6bc13427a4f70ed1c6 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 23 七月 2019 21:12:58 +0800 Subject: [PATCH] 8154 【后端】【主干】【300】拍卖行优化(系统中间商自动回购并上架一件新装备支持) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py | 90 ++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 85 insertions(+), 5 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 b3c73e9..47385eb 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py @@ -36,6 +36,7 @@ import GameFuncComm import PlayerTJG import IpyGameDataPY +import cPickle import time import random @@ -107,6 +108,8 @@ EventShell.EventResponse_OnFamilyLVUp(curPlayer) if curPlayer.GetFamilyMemberLV() != refreshPack.GetFamilyMemberLV(): + # 因为仙盟职位没有存DBPlayer,而跨服后又没有Family信息,所以这里做个存储,用于跨服用 + curPlayer.SetReceivedSalary(refreshPack.GetFamilyMemberLV()) curPlayer.SetFamilyMemberLV(refreshPack.GetFamilyMemberLV()) #通知周围玩家家族职位刷新 #curPlayer.Notify_FamilyMemberLVRefresh() @@ -186,7 +189,7 @@ def __OnFamilyLVBuffChange(curPlayer, tick): return # 跨服服务器不处理,防止登录跨服服务器后无战盟导致战力下降 - if GameWorld.IsMergeServer(): + if GameWorld.IsCrossServer(): return familyLVBuffSkillTypeID = ReadChConfig.GetEvalChConfig("FamilyLVBuff") @@ -588,7 +591,7 @@ return #请求记录申请进入家族信息 - sendMsg = str([familyID, curPlayer.GetFightPower()]) + sendMsg = cPickle.dumps([familyID, curPlayer.GetFightPower()], 2) curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_AddFamilyAction, ShareDefine.Def_ActionType_FamilyAdd, '', sendMsg, len(sendMsg)) @@ -632,6 +635,15 @@ PlayerFamilyTech.Sync_PlayerFamilyTechLV(curPlayer) SyncFamilyActivityInfo(curPlayer) Sync_FamilyDayRewardState(curPlayer) + return + +def FamilyPlayerOnLoginCross(curPlayer): + ## 登录跨服服务器 + crossFamilyMemberLV = curPlayer.GetReceivedSalary() + if crossFamilyMemberLV: + curPlayer.SetFamilyMemberLV(crossFamilyMemberLV) + GameWorld.DebugLog("跨服登录设置仙盟职位等级: %s" % crossFamilyMemberLV, curPlayer.GetPlayerID()) + return @@ -734,7 +746,7 @@ ## 添加家族事件记录 def AddFamilyEventNote(curPlayer, eventType, valueList): ##同步记录到GameServer, eventType默认为value1 - sendMsg = str([eventType] + valueList) + sendMsg = cPickle.dumps([eventType] + valueList, 2) curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_AddFamilyAction, ShareDefine.Def_ActionType_FamilyEvent, '', sendMsg, len(sendMsg)) GameWorld.DebugLog("AddFamilyEventNote sendMsg=%s" % sendMsg) return @@ -848,7 +860,7 @@ def UpdateFamilyName(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - if GameWorld.IsMergeServer(): + if GameWorld.IsCrossServer(): #itemuse_lzxkoy_0:不可在跨服环境下使用改名功能。 PlayerControl.NotifyCode(curPlayer, "itemuse_lzxkoy_0") return @@ -920,4 +932,72 @@ clientPack = ChPyNetSendPack.tagMCFamilyDayAward() clientPack.GetState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyDayAward) NetPackCommon.SendFakePack(curPlayer, clientPack) - return \ No newline at end of file + return + + +#// A6 06 家族兑换活跃令 #tagCMFamilyActivityExchange +# +#struct tagCMFamilyActivityExchange +#{ +# tagHead Head; +# BYTE Count; //材料所在背包索引的数量 +# WORD IndexList[Count]; //材料所在背包索引列表 +# DWORD ItemIDList[Count]; //材料所在背包物品ID列表 +#}; +## 家族兑换活跃令 +# @param playerIndex 玩家索引 +# @param clientData 客户端封包 +# @param tick 时间 +# @return None +def OnFamilyActivityExchange(index, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) + if not clientData.Count: + return + playerID = curPlayer.GetID() + eatIndexList = clientData.IndexList + eatItemIDList = clientData.ItemIDList + givePoint = 0 #分解得到活跃令 + familyDonateDict = IpyGameDataPY.GetFuncEvalCfg('FamilyDonate', 1, {}) + familyDonateSpecialDict = IpyGameDataPY.GetFuncEvalCfg('FamilyDonate', 2, {}) + itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) + for i, index in enumerate(eatIndexList): + eatItem = itemPack.GetAt(index) + if not ItemCommon.CheckItemCanUse(eatItem): + GameWorld.DebugLog("物品不可用,无法兑换!itemIndex=%s" % index) + continue + eatItemID = eatItem.GetItemTypeID() + if eatItemID != eatItemIDList[i]: + GameWorld.Log('家族兑换活跃令 发的物品ID不对应index=%s eatItemID=%s,ItemIDList[i]=%s' % (index, eatItemID, eatItemIDList[i]), playerID) + continue + if eatItem.GetIsBind(): + GameWorld.DebugLog("装备已绑定,无法兑换!itemIndex=%s" % index) + continue + if eatItem.GetEndureReduceType(): + GameWorld.DebugLog("有时效耐久物品,无法兑换!itemIndex=%s" % index) + continue + if eatItemID in familyDonateSpecialDict: + addPoint = familyDonateSpecialDict[eatItemID] + else: + if not ItemCommon.CheckItemIsEquip(eatItem): + GameWorld.DebugLog("非装备,无法兑换!itemIndex=%s" % index) + continue + itemColor = eatItem.GetItemColor() + if str(itemColor) not in familyDonateDict: + continue + isSuite = eatItem.GetSuiteID() + addPoint = familyDonateDict[str(itemColor)][1 if isSuite else 0] + itemCnt = eatItem.GetCount() + givePoint += addPoint * itemCnt + ItemCommon.DelItem(curPlayer, eatItem, itemCnt, True, ChConfig.ItemDel_FamilyStore, {'addPoint':addPoint}, True) + + if not givePoint: + GameWorld.DebugLog("家族兑换活跃令,没有装备可兑换!") + return + PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyActivity, givePoint) + + #通知结果 + packData = ChPyNetSendPack.tagMCFamilyActivityExchangeResult() + packData.Clear() + packData.Point = givePoint + NetPackCommon.SendFakePack(curPlayer, packData) + return -- Gitblit v1.8.0