From 7d249be8ea05b26827e39a2409e06931aefb4949 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 03 四月 2019 16:55:10 +0800 Subject: [PATCH] 6430 【后端】【2.0】属性级战力算法优化 6426 【后端】【2.0】装备战力划分 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 206 +++++++++++++++++++------------------------------- 1 files changed, 79 insertions(+), 127 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py index 20f58ff..06c7130 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py @@ -477,10 +477,7 @@ SyncGuideState(curPlayer) #上线检查一次装备属性 - ItemControler.PlayerItemControler(curPlayer).CheckRolePackEquipAttr() - #上线检查加点属性点 - PlayerControl.FixOldAddPoint(curPlayer) - + ItemControler.PlayerItemControler(curPlayer).CheckRolePackEquipAttr() #更新服务器组ID PlayerControl.UpdPlayerServerGroupID(curPlayer) @@ -492,13 +489,10 @@ #通知玩家技能信息 __Sync_ClientSkill(curPlayer) - #清除生产采集Buff - #PlayerControl.DelProduceBuff(curPlayer, tick) #清除国家答题Buff #PlayerExam.DoLogic_ExitExam(curPlayer, tick, needRefresh = False) #清除VIPbuff #BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_VIPExp_SkillTypeID, tick) - #PlayerReincarnation.ReincarOnLogin(curPlayer) #通知玩家的buff __Sync_ClientBuff(curPlayer) @@ -583,9 +577,6 @@ # 首充/天天首充/充值豪礼 PlayerGoldGift.OnLogin(curPlayer) - #玩家回归通知 - #PlayerRecall.PlayerBack(curPlayer) - #通知购买功能中各购买类型的已购买和可购买次数 Operate_PlayerBuyZhenQi.DoPlayerLogin(curPlayer) # @@ -616,72 +607,54 @@ #通知运行成功 curPlayer.BalanceServer_PlayerLoginInitOK() - # 新手指导员上线处理 -# #PlayerFreshmanGuide.FreshmanGuiderOnLogin(curPlayer) -# # 坐骑相关通知 PlayerHorse.PlayerHorseLogin(curPlayer) PlayerTreasure.OnTreasureLogin(curPlayer) -# # 通知累计登陆礼 + # 通知累计登陆礼 PlayerLoginDayAward.OnLoginNotifyLoginDayAward(curPlayer) -# + # 开服活动奖励信息 OpenServerCampaign.OnOpenServerCampaignLogin(curPlayer) -# -# # 节日登陆奖励 -# PlayerFestivalLogin.OnLoginFestivalLogin(curPlayer) # 试炼之塔 GameLogic_TrialTower.OnFBPlayerLogin(curPlayer) # 古神禁地 GameLogic_GodArea.GodAreaOnLogin(curPlayer) -# # 采集NPC次数通知 + # 采集NPC次数通知 NPCCommon.SyncCollNPCTime(curPlayer) -# -# # 特惠活动 -# PlayerTeHui.PlayerLogin_TeHui(curPlayer) -# -# # 自定义商店 -# ShopItemManage.DoOnLogin(curPlayer) -# -# # 每日活跃度 + + # 每日活跃度 PlayerActivity.OnLogin(curPlayer) -# -# # 副本进入时间 + + # 副本进入时间 FBCommon.FBOnLogin(curPlayer) -# -# #天梯竞技场 -# HighLadderTube.OnLogin(curPlayer) -# -# #世界等级 + + #世界等级 PlayerWorldAverageLv.OnLogin(curPlayer) -# + # 投资理财 PlayerGoldInvest.OnLogin(curPlayer) -# -# #节日活动 -# PlayerAction.ActionOnLogin(curPlayer) -# -# #属性果实使用情况 + + #属性果实使用情况 PlayerAttrFruit.AttrFruitOnLogin(curPlayer) -# -# #成就 + + #成就 PlayerSuccess.SuccOnLogin(curPlayer) -# -# #同步自动战斗配置记录 + + #同步自动战斗配置记录 # Sync_AutoFightSetting(curPlayer) -# + PlayerFamily.FamilyPlayerOnLogin(curPlayer, tick) #改到 GameServerRefresh GameSever_PlayerInitOK后处理才能保证玩家已经在Gameserver注册 #PlayerDienstgrad.RefreshBillBoardDienstgrad(curPlayer) # 称号 PlayerDienstgrad.Sync_AllDienstgradOnLogin(curPlayer) -# # 资源找回OnLogin + # 资源找回OnLogin PlayerRecover.RecoverOnLogin(curPlayer) -# -# # 时装 + + # 时装 PlayerCoat.OnLogin_Coat(curPlayer) # 跨服PK @@ -702,17 +675,11 @@ PlayerFlashGiftbag.OnPlayerLogin(curPlayer) #限时抢购 PlayerFlashSale.OnPlayerLogin(curPlayer) -# # 消费VIP -# PlayerCostVIP.CostVIPOnLogin(curPlayer, tick) -# -# # QQ相关奖励OnLogin -# #PlayerQQ.Sync_QQAllAwardRecord(curPlayer) -# -# # 世界boss + # 世界boss BossHurtMng.OnLogin(curPlayer) ChItem.Sync_ItemDayUseCnt(curPlayer) -# # 悬赏登录通知 -# PlayerArrestTask.OnLogin(curPlayer) + # 悬赏登录通知 + #PlayerArrestTask.OnLogin(curPlayer) # 符印登录通知 PlayerRune.PlayerRuneLogin(curPlayer) # 仙盟红包登录通知 @@ -821,6 +788,10 @@ mixServerWorldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_LastMixServerWorldLV) # 合服时的世界等级 GameWorld.Log("玩家合服首登处理! lastMixServerDay=%s,mixServerWorldLV=%s" % (lastMixServerDay, mixServerWorldLV), playerID) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MixLoginDay, lastMixServerDay) + + if curPlayer.GetLV() <= 1: + GameWorld.Log(" 新号不给合服奖励!", playerID) + return # 重置首充双倍 PlayerCoin.DoResetCTGCount(curPlayer, "MixServer") @@ -1593,9 +1564,6 @@ #防止玩家读取地图时未触发OnDay,读取地图后再次验证(2009.9.11) PlayerEventCounter.UpdatePlayerLoginTime(curPlayer) - #特惠活动事件 - #PlayerTeHui.PlayerLoadMapOK(curPlayer) - #设置阵营 if curPlayer.GetFaction() != ChConfig.CampType_Neutral \ and FBCommon.GetRecordMapID(GameWorld.GetMap().GetMapID()) not in ChConfig.Def_MapID_NeedCamp: @@ -1742,80 +1710,67 @@ #@return 返回值无意义 #@remarks //03 01 加属性点#tagCAddPoint def AddPoint(index, tick): - GameWorld.GetPsycoFunc(__Func_AddPoint)(index, tick) return -##//03 01 加属性点#tagCAddPoint -#@param index 玩家索引 -#@param tick 时间戳 -#@return 返回值无意义 -#@remarks //03 01 加属性点#tagCAddPoint -def __Func_AddPoint(index, tick): +#// B2 06 玩家加点 #tagCMAddPoint +# +#struct tagCMAddPoint +#{ +# tagHead Head; +# BYTE PointAttrIDCount; // 加点属性ID个数 +# BYTE PointAttrIDList[PointAttrIDCount]; // 加点属性ID列表 +# WORD PointValueList[PointAttrIDCount]; // 加点属性ID对应的点数列表 +#}; +def OnAddPoint(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - playerControl = PlayerControl.PlayerControl(curPlayer) - #JobQuotiety = PlayerControl.JobQuotiety + pointAttrIDList = clientData.PointAttrIDList + pointValueList = clientData.PointValueList + if not pointAttrIDList or not pointValueList or len(pointAttrIDList) != len(pointValueList): + return + + needTotalPoint = 0 + for i, attrID in enumerate(pointAttrIDList): + if not IpyGameDataPY.GetIpyGameData("RolePoint", attrID): + return + needTotalPoint += pointValueList[i] + curFreePoint = curPlayer.GetFreePoint() - #job = curPlayer.GetJob() - recvAddPoint = IPY_GameWorld.IPY_CAddPoint() - addValue = recvAddPoint.GetPoint() - - #检验是否能够加点 - if addValue < 1 or addValue > curFreePoint: - #检验不通过, 返回 - #GameWorld.ErrLog("(%s,%s)检验是否能够加点,检验不通过, 返回"%(addValue,curFreePoint) , curPlayer.GetPlayerID()) + if needTotalPoint > curFreePoint: + GameWorld.DebugLog("剩余点数不足! curFreePoint(%s) < needTotalPoint(%s)" % (curFreePoint, needTotalPoint)) return - #封包加点类型 - addPointType = recvAddPoint.GetType() - - #加点 - if addPointType == ShareDefine.Def_Effect_STR: - curPlayer.SetBaseSTR(addValue + curPlayer.GetBaseSTR()) + curPlayer.SetFreePoint(curFreePoint - needTotalPoint) + for i, attrID in enumerate(pointAttrIDList): + addPoint = pointValueList[i] + curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AddPointValue % attrID) + updPoint = curPoint + addPoint + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AddPointValue % attrID, updPoint) + GameWorld.DebugLog("玩家加点: attrID=%s,curPoint=%s,addPoint=%s,updPoint=%s" % (attrID, curPoint, addPoint, updPoint)) - elif addPointType == ShareDefine.Def_Effect_PNE: - curPlayer.SetBasePNE(addValue + curPlayer.GetBasePNE()) - - elif addPointType == ShareDefine.Def_Effect_PHY: - curPlayer.SetBasePHY(addValue + curPlayer.GetBasePHY()) - - elif addPointType == ShareDefine.Def_Effect_CON: - curPlayer.SetBaseCON(addValue + curPlayer.GetBaseCON()) - - else: - #异常超出边界 - GameWorld.ErrLog("AddPoint GetTypeErr = %s" % (addPointType) , curPlayer.GetID()) - return - - curPlayer.SetFreePoint(curFreePoint - addValue) - - DataRecordPack.DR_Freepoint(curPlayer, "AddPoint", curFreePoint, {"AddPointType":addPointType}) - playerControl.RefreshPlayerAttrState() - + NotifyPlayerBasePoint(curPlayer, pointAttrIDList) + playerControl = PlayerControl.PlayerControl(curPlayer) + playerControl.RefreshPlayerAttrState() return -def NotifyPlayerBasePoint(curPlayer): - #上线通知基础属性点 - notifyList = [] - notifyBasePointDict = { - IPY_GameWorld.CDBPlayerRefresh_BaseSTR:'BaseSTR', - IPY_GameWorld.CDBPlayerRefresh_BasePHY:'BasePHY', - IPY_GameWorld.CDBPlayerRefresh_BaseCON:'BaseCON', - IPY_GameWorld.CDBPlayerRefresh_BasePNE:'BasePNE', - } - for refreshType, keyStr in notifyBasePointDict.items(): - notifyStruct = ChPyNetSendPack.tagRefreshType() - notifyStruct.RefreshType = refreshType - notifyStruct.Value = getattr(curPlayer, 'Get%s'%keyStr)() - notifyList.append(notifyStruct) +def NotifyPlayerBasePoint(curPlayer, syncAttrIDList=[]): + # 通知基础属性点,已分配的自由点数 + + if not syncAttrIDList: + ipyDataMgr = IpyGameDataPY.IPY_Data() + syncAttrIDList = [ipyDataMgr.GetRolePointByIndex(index).GetAttrID() for index in xrange(ipyDataMgr.GetRolePointCount())] - #属性组合包 通知自己 - sendPack = ChPyNetSendPack.tagObjInfoListRefresh() - sendPack.Clear() - sendPack.ObjID = curPlayer.GetID() - sendPack.ObjType = curPlayer.GetGameObjType() - sendPack.Count = len(notifyList) - sendPack.RefreshType = notifyList - NetPackCommon.SendFakePack(curPlayer, sendPack) + pointAttrIDList = [] + pointValueList = [] + for attrID in syncAttrIDList: + curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AddPointValue % attrID) + pointAttrIDList.append(attrID) + pointValueList.append(curPoint) + + pointInfo = ChPyNetSendPack.tagMCRolePointInfo() + pointInfo.PointAttrIDList = pointAttrIDList + pointInfo.PointValueList = pointValueList + pointInfo.PointAttrIDCount = len(pointAttrIDList) + NetPackCommon.SendFakePack(curPlayer, pointInfo) return #=============================================================================== @@ -5335,9 +5290,6 @@ # 首充礼包奖励 elif rewardType == ChConfig.Def_RewardType_GoldGiftFirst: PlayerGoldGift.GetPlayerGoldGiftFirst(curPlayer) - # 领取法宝之魂奖励 - elif rewardType == ChConfig.Def_RewardType_MWSoulAward: - PlayerMagicWeapon.GetMWSoulAward(curPlayer, dataEx) # 领取极品白拿 elif rewardType == ChConfig.Def_RewardType_FreeGoods: PlayerFreeGoods.OnGetFreeGoods(curPlayer, dataEx) -- Gitblit v1.8.0