From 7bd89df4994934b9a5810e6b62383e6773b8339b Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 12 十月 2023 20:28:47 +0800 Subject: [PATCH] 9952 【BT0.1】【主干】仙盟修改(传功) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 114 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 e03761f..43f0e35 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py @@ -31,6 +31,10 @@ import PlayerFamilyTech import PlayerFamilyRedPacket import PlayerFamilyZhenfa +import PlayerTongTianLing +import PlayerWeekParty +import PlayerActivity +import ItemControler import SkillCommon import BuffSkill import ItemCommon @@ -1184,3 +1188,113 @@ return ##-------------------------------------------------------------------------------------------------- +##--------------------------------------- 仙盟传功 -------------------------------------------------- +#// A6 15 传功操作 #tagCMChuangongOP +# +#struct tagCMChuangongOP +#{ +# tagHead Head; +# BYTE OPType; // 操作类型:1-邀请;2-回应;3-领奖; +# DWORD PlayerID; // 目标玩家ID;回应时为邀请方玩家ID +# BYTE OPData; // 操作数据,可选:回应时为是否同意 +#}; +def OnChuangongOP(index, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) + opType = clientData.OPType + tagPlayerID = clientData.PlayerID + opData = clientData.OPData + + if tagPlayerID and curPlayer.GetPlayerID() == tagPlayerID: + GameWorld.DebugLog("不能自己传功") + return + + if opType == 1: + __Chuangong_Invite(curPlayer, tagPlayerID) + elif opType == 2: + __Chuangong_Response(curPlayer, tagPlayerID, opData) + elif opType == 3: + __Chuangong_GetAward(curPlayer) + return + +def SendGameServer_FamilyChuangong(curPlayer, msgType, msgData): + playerID = curPlayer.GetPlayerID() + GameWorld.DebugLog("传功同步GameServer: msgType=%s,%s" % (msgType, msgData), playerID) + msgInfo = str([msgType, msgData]) + GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(playerID, 0, 0, "FamilyChuangong", msgInfo, len(msgInfo)) + return + +def __CheckCanChuangong(curPlayer): + playerID = curPlayer.GetPlayerID() + remainCnt = PlayerActivity.GetDailyActionrRemainCnt(curPlayer, ShareDefine.DailyActionID_FamilyChuanGong) + if remainCnt <= 0: + GameWorld.DebugLog("没有传功次数了", playerID) + return + openServerDayLimit = IpyGameDataPY.GetFuncCfg("FamilyChuangong", 1) + if openServerDayLimit: + openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1 + if openServerDay > openServerDayLimit: + GameWorld.DebugLog("当前开服天不能传功: openServerDay=%s > %s" % (openServerDay, openServerDayLimit), playerID) + return + return True + +def __Chuangong_Invite(curPlayer, tagPlayerID): + ## 传功邀请 + if not __CheckCanChuangong(curPlayer): + return + SendGameServer_FamilyChuangong(curPlayer, "Invite", [tagPlayerID]) + return + +def __Chuangong_Response(curPlayer, tagPlayerID, isOK): + ## 传功回应 + SendGameServer_FamilyChuangong(curPlayer, "Response", [tagPlayerID, isOK]) + return + +def __Chuangong_GetAward(curPlayer): + ## 传功领奖 + if not __CheckCanChuangong(curPlayer): + return + PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyChuanGong, 1) + + playerID = curPlayer.GetPlayerID() + fromLV = curPlayer.GetLV() + + # 给经验 + totalExp = 0 + giveRound = IpyGameDataPY.GetFuncCfg("FamilyChuangong", 3) + worldlv = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) + playerControl = PlayerControl.PlayerControl(curPlayer) + for index in range(giveRound): + reLV = curPlayer.GetLV() + reExp = PlayerControl.GetPlayerReExp(curPlayer) + giveExp = eval(IpyGameDataPY.GetFuncCompileCfg("FamilyChuangong", 2)) + finalAddExp = playerControl.AddExp(giveExp, ShareDefine.Def_ViewExpType_SysEx) + totalExp += finalAddExp + GameWorld.DebugLog("传功经验: 轮次=%s,reLV=%s,reExp=%s,finalAddExp=%s, %s" % (index, reLV, reExp, finalAddExp, totalExp), playerID) + + PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FamilyChuanGong, 1) + PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_ChuanGong, 1) + + # 给物品 + giveItemList = IpyGameDataPY.GetFuncEvalCfg("FamilyChuangong", 4) + ItemControler.GivePlayerItemOrMail(curPlayer, giveItemList) + + # 同步结果 + syncItemList = [] + for itemID, itemCount, _ in giveItemList: + syncItem = ChPyNetSendPack.tagMCChuangongItem() + syncItem.Clear() + syncItem.ItemID = itemID + syncItem.ItemCount = itemCount + syncItemList.append(syncItem) + clientPack = ChPyNetSendPack.tagMCChuangongResult() + clientPack.Clear() + clientPack.FromLV = fromLV + clientPack.ToLV = curPlayer.GetLV() + clientPack.Exp = totalExp % ChConfig.Def_PerPointValue + clientPack.ExpPoint = totalExp / ChConfig.Def_PerPointValue + clientPack.AwardItemList = syncItemList + clientPack.ItemCount = len(clientPack.AwardItemList) + NetPackCommon.SendFakePack(curPlayer, clientPack) + return + +##-------------------------------------------------------------------------------------------------- -- Gitblit v1.8.0