From 328648da94a07437fc46024f3e9b7e48c2e2ae38 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 29 十月 2024 17:15:29 +0800 Subject: [PATCH] 10275 【越南】【英语】【砍树】【tqxbqy】仙盟珍宝阁-后端 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 109 insertions(+), 0 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 1d7f145..d42e119 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py @@ -183,6 +183,7 @@ curPlayer.SetFamilyActiveValue(0) curPlayer.SetLastWeekFamilyActiveValue(0) curPlayer.SetFamilyLV(0) + PlayerControl.SetLeaveFamilyTimeEx(curPlayer, int(time.time())) #触发玩家离开家族的任务 EventShell.EventResponse_OnLeaveFamily(curPlayer) @@ -637,6 +638,10 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyMoneyDonateCount, 0) Sync_FamilyDayRewardState(curPlayer) __FamilyAffair_Refresh(curPlayer, True) + + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeCut, 0) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy, 0) + Sync_ZhenbaogeInfo(curPlayer) return @@ -652,6 +657,7 @@ Sync_FamilyDayRewardState(curPlayer) __FamilyAffair_CheckReset(curPlayer) PlayerFamilyZhenfa.OnPlayerLogin(curPlayer) + Sync_ZhenbaogeInfo(curPlayer) return def FamilyPlayerOnLoginCross(curPlayer): @@ -1301,3 +1307,106 @@ return ##-------------------------------------------------------------------------------------------------- +##----------------------------------------- 珍宝阁 -------------------------------------------------- +#// A6 16 珍宝阁操作 #tagCMZhenbaogeOP +# +#struct tagCMZhenbaogeOP +#{ +# tagHead Head; +# BYTE OpType; // 操作:0-砍价;1-购买 +#}; +def OnZhenbaogeOP(index, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) + opType = clientData.OpType + playerID = curPlayer.GetPlayerID() + if not curPlayer.GetFamilyID(): + GameWorld.DebugLog("没有仙盟无法操作珍宝阁!", playerID) + return + + # 砍价 + if opType == 0: + leaveTimeEx = PlayerControl.GetLeaveFamilyTimeEx(curPlayer) + cutState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeCut) + if cutState and leaveTimeEx: + cutCDTimes = IpyGameDataPY.GetFuncCfg("Zhenbaoge", 3) * 60 + passTimes = int(time.time()) - leaveTimeEx + if passTimes < cutCDTimes: + GameWorld.DebugLog("今日已砍价变更仙盟砍价CD中! passTimes=%s < %s" % (passTimes, cutCDTimes), playerID) + return + SendGameServer_FamilyZhenbaoge(curPlayer, "Cut", []) + + # 购买 + elif opType == 1: + buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy) + if buyState: + GameWorld.DebugLog("珍宝阁今日已购买!", playerID) + return + moneyType = IpyGameDataPY.GetFuncCfg("Zhenbaoge", 1) + playerMoneyValue = PlayerControl.GetMoney(curPlayer, moneyType) + SendGameServer_FamilyZhenbaoge(curPlayer, "Buy", [playerMoneyValue]) + + return + +def SendGameServer_FamilyZhenbaoge(curPlayer, msgType, msgData): + playerID = curPlayer.GetPlayerID() + tick = GameWorld.GetGameWorld().GetTick() + if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_FamilyZhenbaoge, tick): + GameWorld.DebugLog("请求CD中...", playerID) + return + GameWorld.DebugLog("珍宝阁同步GameServer: msgType=%s,%s" % (msgType, msgData), playerID) + msgInfo = str([msgType, msgData]) + GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(playerID, 0, 0, "FamilyZhenbaoge", msgInfo, len(msgInfo)) + return + +def GameServer_FamilyZhenbaogeRet(curPlayer, resultList): + curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_FamilyZhenbaoge, 0) + playerID = curPlayer.GetPlayerID() + msgType, _ = resultList[:2] + retData = resultList[2:] + GameWorld.Log("仙盟珍宝阁GameServer返回: %s" % str(resultList), playerID) + if msgType == "Cut": + cutPrice = retData[0] + if not cutPrice: + # 砍价失败不处理后续 + return + PlayerControl.NotifyCode(curPlayer, "ZhenbaogeCut", [cutPrice]) + if not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeCut): + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeCut, 1) + Sync_ZhenbaogeInfo(curPlayer) + + elif msgType == "Buy": + isOK = retData[0] + if not isOK: + return + buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy) + if buyState: + #一天只能买一次,防止变更仙盟刷 + return + nowPrice, giveItemList = retData[1:] + + moneyType = IpyGameDataPY.GetFuncCfg("Zhenbaoge", 1) + if nowPrice > 0: + if not PlayerControl.PayMoney(curPlayer, moneyType, nowPrice, "Zhenbaoge"): + GameWorld.ErrLog("珍宝阁购买货币不足! nowPrice=%s" % nowPrice, playerID) + return + elif nowPrice < 0: + PlayerControl.GiveMoney(curPlayer, moneyType, -nowPrice, "Zhenbaoge") + else: # 0不处理 + pass + + if giveItemList: + ItemControler.GivePlayerItemOrMail(curPlayer, giveItemList, event=["Zhenbaoge", False, {}]) + + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy, 1) + Sync_ZhenbaogeInfo(curPlayer) + + return + +def Sync_ZhenbaogeInfo(curPlayer): + clientPack = ChPyNetSendPack.tagMCFamilyZhenbaogeInfo() + clientPack.CutState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeCut) + clientPack.BuyState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy) + NetPackCommon.SendFakePack(curPlayer, clientPack) + return + +##-------------------------------------------------------------------------------------------------- -- Gitblit v1.8.0