| | |
| | | import PlayerFamilyTech
|
| | | import PlayerFamilyRedPacket
|
| | | import PlayerFamilyZhenfa
|
| | | import PlayerTongTianLing
|
| | | import PlayerWeekParty
|
| | | import PlayerActivity
|
| | | import ItemControler
|
| | | import SkillCommon
|
| | | import BuffSkill
|
| | | import ItemCommon
|
| | |
| | | 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
|
| | |
|
| | | ##--------------------------------------------------------------------------------------------------
|