From a65d363c813b7d554de1ce2edad271162ad86d55 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 19 八月 2025 17:33:53 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(计算战力支持属性系数参数,技能战力参数支持;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 331 +++++++++++++++++--------------------------------------
1 files changed, 102 insertions(+), 229 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 1678a8b..a88b907 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -38,7 +38,6 @@
import PlayerGameWallow
import NetPackCommon
import ChPyNetSendPack
-import Operate_PlayerBuyZhenQi
import DataRecordPack
import PlayerBillboard
import UpdatePlayerName
@@ -51,22 +50,17 @@
import PlayerFamily
import PlayerLoginDayAward
import PlayerGodWeapon
-import PlayerWorldAverageLv
import PlayerGoldInvest
import PlayerActivity
import FBCommon
-import PlayerBindJadeWheel
import BossHurtMng
import PlayerWishingWell
-import PlayerAttrFruit
import PlayerSuccess
import PlayerDienstgrad
import PlayerFreeGoods
import PlayerRecover
-import GameLogic_IceLode
import GameLogic_SkyTower
import PlayerEquipDecompose
-import PlayerGreatMaster
import PlayerGatherSoul
import PlayerGatherTheSoul
import PlayerFairyDomain
@@ -95,7 +89,6 @@
import PlayerVip
import PlayerRefineStove
import PassiveBuffEffMng
-import PlayerDiceEx
import GameLogic_XMZZ
import PlayerFlashSale
import PlayerFlashGiftbag
@@ -174,7 +167,11 @@
import IPY_ServerDefine
import CommFunc
from PyMongoDB import RecvPackToMapDB
+import PyMongoMain
import PlayerTalk
+import PlayerHero
+import PlayerOnline
+import TurnAttack
import datetime
import time
@@ -198,6 +195,7 @@
#@return 返回值无意义
#@remarks 玩家登陆游戏初始化
def InitLoginPlayer(curPlayer, tick):
+ PlayerOnline.OnPlayerLogin(curPlayer)
#初始化玩家的时钟个数
if curPlayer.GetTickTypeCount() == 0:
curPlayer.SetTickTypeCount(ChConfig.TYPE_Player_Tick_Count)
@@ -216,37 +214,6 @@
#刷新人物日期状态
#GameWorld.Log('PlayerEventCounter.UpdatePlayerLoginTime')
PlayerEventCounter.UpdatePlayerLoginTime(curPlayer)
- return
-
-##非同一天二次登陆
-# @param curPlayer 玩家实例
-# @return None
-def NoteOtherDayLogin(curPlayer):
- #记录过或者未登陆过 不记录
- if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_OtherDayLogin) != 1:
- return
-
- logoffTimeStr = curPlayer.GetLogoffTime().strip()
- loginTimeStr = curPlayer.GetLoginTime().strip()
- #curTimeStr = GameWorld.GetCurrentDataTimeStr()
-
- #防范外部逻辑错误,或异常情况
- if logoffTimeStr in ['', '0'] or loginTimeStr in ['', '0']:
- return
-
- logoffTimeDate = GameWorld.GetDateTimeByStr(logoffTimeStr.split()[0], ChConfig.TYPE_Time_Format_Day)
-
- #同一天不记录
- if logoffTimeDate == GameWorld.GetDateTimeByStr(loginTimeStr.split()[0], ChConfig.TYPE_Time_Format_Day):
- return
-
- #GameWorld.Log("OtherDayLogin offtime = %s" % logoffTimeDate)
-
- DataRecordPack.DR_OtherDayLogin(curPlayer.GetAccID(), curPlayer.GetIP(), curPlayer)
-
- #标记为已记录
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_OtherDayLogin, 2)
-
return
#// A1 20 货币兑换 #tagCMMoneyExchange
@@ -480,7 +447,6 @@
def DoPlayerLogin(curPlayer, tick):
#这里只做初始化逻辑
curPlayer.SetDict(ChConfig.Def_PlayerKey_LoadMapIsLogin, 1)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RealLoginOK, 0) # 每次登录重置
#通知时间
Sync_PyServerDataTimeToClient(curPlayer)
@@ -513,8 +479,6 @@
curPlayer.SetLoginTime(GameWorld.GetCurrentDataTimeStr())
#初始化玩家背包
InitPlayerPack(curPlayer)
- #通知玩家物品信息
- __Sync_PackDetel(curPlayer)
if GameWorld.IsCrossServer():
SkillCommon.PlayerLoginMergeServerSkillLogic(curPlayer, tick)
@@ -540,7 +504,10 @@
# 离线过久恢复为非跨服状态
if PlayerControl.GetCrossMapID(curPlayer):
PlayerControl.SetCrossMapID(curPlayer, 0)
-
+
+ __FirstLoginOnEnter(curPlayer)
+
+ TurnAttack.OnPlayerLogin(curPlayer)
SyncGuideState(curPlayer)
#上线检查一次装备属性
@@ -556,16 +523,11 @@
#通知玩家技能信息
__Sync_ClientSkill(curPlayer)
- #清除国家答题Buff
- #PlayerExam.DoLogic_ExitExam(curPlayer, tick, needRefresh = False)
#清除VIPbuff
#BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_VIPExp_SkillTypeID, tick)
#通知玩家的buff
__Sync_ClientBuff(curPlayer)
-
- #初始化现实时间物品
- InitRealityTimeItem(curPlayer, tick)
#---刷新了玩家属性, 登陆只刷新一次,其他地方不用刷
DoPlayerLoginInMap(curPlayer, tick)
@@ -577,14 +539,11 @@
PlayerPrestigeSys.OnLogin(curPlayer)
#DataRecordPack.DR_PlayerLogin(curPlayer)
EventReport.WriteEvent_login(curPlayer)
-
+
# 合服首登处理
__DoMixServerFirstLogin(curPlayer)
PlayerBillboard.BillboardOnLogin(curPlayer)
- #非同一天二次登陆, 应该放在该函数中的SetLoginTime之后
- NoteOtherDayLogin(curPlayer)
-
#上线时通知脱机挂时被击杀的离线时间
__Sync_PlayerOffline(curPlayer, tick)
@@ -596,12 +555,6 @@
#PK模式
SyncPKModel(curPlayer)
-
- #装备相关信息
- ChEquip.OnPlayerEquipLoginLogic(curPlayer)
-
- #大师
- PlayerGreatMaster.MasterOnLogin(curPlayer)
#通知VIP
PlayerVip.DoOnLogin(curPlayer, tick)
@@ -612,11 +565,6 @@
#---玩家上线, 宠物逻辑处理---
PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
PlayerPet.OnPlayerPetLogin(curPlayer)
-
- __FirstLoginOnEnter(curPlayer)
-
- #清空玩家万能背包中的任务物品
- ItemControler.ClearPackEventItem(curPlayer, IPY_GameWorld.rptAnyWhere)
#PlayerLoginNotify(curPlayer, tick)
@@ -630,9 +578,6 @@
# 首充/天天首充/充值豪礼
PlayerGoldGift.OnLogin(curPlayer)
- #通知购买功能中各购买类型的已购买和可购买次数
- Operate_PlayerBuyZhenQi.DoPlayerLogin(curPlayer)
-#
# #通知功能首次触发情况
GameFuncComm.Sync_FuncOpenState(curPlayer)
#
@@ -682,14 +627,8 @@
# 副本进入时间
FBCommon.FBOnLogin(curPlayer)
- #世界等级
- PlayerWorldAverageLv.OnLogin(curPlayer)
-
# 投资理财
PlayerGoldInvest.OnLogin(curPlayer)
-
- #属性果实使用情况
- PlayerAttrFruit.AttrFruitOnLogin(curPlayer)
#成就
PlayerSuccess.SuccOnLogin(curPlayer)
@@ -773,8 +712,6 @@
FunctionNPCCommon.ShopItemOnLogin(curPlayer)
# 通知设置的被动功法
#PassiveBuffEffMng.OnLoginGFPassive(curPlayer)
- #我要太极
- PlayerDiceEx.DiceExOnLogin(curPlayer)
#仙魔之争
GameLogic_XMZZ.OnXMZZLogin(curPlayer)
PlayerOnlinePrize.OnPlayerLogin(curPlayer)
@@ -844,8 +781,6 @@
PlayerDogz.OnPlayerLogin(curPlayer)
# 骑宠
FamilyRobBoss.OnPlayerLogin(curPlayer)
- # 绑玉转盘
- PlayerBindJadeWheel.OnLogin(curPlayer)
# 许愿池
PlayerWishingWell.OnLogin(curPlayer)
#幸运鉴宝
@@ -909,17 +844,14 @@
该函数为地图最终登录成功才会执行到,以后一些功能类的登录处理建议均写到这里
旧的功能先不动( __DoPlayerLoginServer 函数中的功能),如果有登录相关的bug再考虑是否移动到此函数
'''
-
- if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RealLoginOK):
- #切地图的不处理,切地图的也会触发该函数
- return
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_RealLoginOK, 1)
GameWorld.Log("MapServer->DoPlayerRealLoginOK", curPlayer.GetPlayerID())
if GameWorld.IsCrossServer():
pass
else:
+ PyMongoMain.GetUserCtrlDB().OnPlayerLogin(curPlayer)
+ PlayerHero.OnPlayerLogin(curPlayer)
PlayerMail.OnPlayerLogin(curPlayer)
PlayerChatBox.OnPlayerLogin(curPlayer)
PlayerFace.OnPlayerLogin(curPlayer)
@@ -956,9 +888,11 @@
return
def __FirstLoginOnEnter(curPlayer):
- ## 首登处理,先return
- return
+ ## 首登处理
+
playerID = curPlayer.GetID()
+ if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FirstLogin):
+ return
GameWorld.Log('玩家是第一次进入游戏', playerID)
# 特殊说明: 如果地图没有完全初始化好,客户端断开或者异常等情况会触发RunGateGameServerMapServerKickOutPlayerNoSave
@@ -968,24 +902,19 @@
#---补满血满魔---
GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer))
- curPlayer.SetMP(curPlayer.GetMaxMP())
-
- #---给予玩家新手物品---
+ #curPlayer.SetMP(curPlayer.GetMaxMP())
#默认触发一次功能开启
if curPlayer.GetLV() == 1:
GameFuncComm.DoFuncOpenLogic(curPlayer)
#初始化组队状态
- autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1)
- autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2)
- PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck))
+ #autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1)
+ #autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2)
+ #PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck))
#玩家默认恶名值
- curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue)
-
- #标记已登陆过,用于非同一天二次登陆
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_OtherDayLogin, 1)
+ #curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue)
#curPlayer.SetDict("ThunderLogin", 1)
#记录第一次登陆
@@ -995,12 +924,14 @@
mailList = IpyGameDataPY.GetFuncEvalCfg("MailLVAward", 2)
for mailTypeKey, mailItemList in mailList:
PlayerControl.SendMailByKey(mailTypeKey, [curPlayer.GetPlayerID()], mailItemList)
+
+ PlayerHero.OnPlayerFirstLogin(curPlayer)
+
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FirstLogin, 1)
return
-## 合服首登处理
-# @param curPlayer
-# @return None
def __DoMixServerFirstLogin(curPlayer):
+ ## 合服首登处理
isMixServer = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
if not isMixServer:
return
@@ -1142,18 +1073,6 @@
rolePack = itemManager.GetPack(packIndex)
rolePack.Sync_Refresh()
- # 刷下装备评分,仓库可以暂不处理,取出装备后登录触发刷新
- for i in xrange(rolePack.GetCount()):
- curItem = rolePack.GetAt(i)
- if curItem.IsEmpty():
- continue
- newScore = ItemCommon.CalcEquipGS(curItem)
- hisScore = ItemCommon.GetEquipGearScore(curItem)
- if hisScore != newScore:
- ItemCommon.SetEquipGearScore(curItem, newScore)
- GameWorld.Log("登录更新装备评分: packType=%s,i=%s,hisScore=%s,newScore=%s,itemID=%s,guid=%s"
- % (packIndex, i, hisScore, newScore, curItem.GetItemTypeID(), curItem.GetGUID()), curPlayer.GetPlayerID())
-
for packIndex in ChConfig.Def_VPackCnt_Dict.keys():
ItemControler.Sync_VPackItem_Refresh(curPlayer, packIndex)
@@ -1184,16 +1103,6 @@
# #itemManager.GetPack(IPY_GameWorld.rptBreakPrepare).Sync_Refresh()
# #itemManager.GetPack(IPY_GameWorld.rptBreakItem).Sync_Refresh()
#===============================================================================
- return
-
-#---------------------------------------------------------------------
-##初始化现实时间物品
-#@param curPlayer 玩家实例
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 初始化现实时间物品
-def InitRealityTimeItem(curPlayer, tick):
- PlayerState.ProcessTimeEquip(curPlayer, tick)
return
#---------------------------------------------------------------------
@@ -1315,25 +1224,29 @@
if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
#副本地图上线切换才加无敌buff
SkillCommon.AddBuffBySkillType_NoRefurbish(curPlayer, ChConfig.Def_SkillID_LimitSuperBuff, tick)
-
- #刷新玩家的视野
- if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or PlayerControl.GetCustomMapID(curPlayer)):
- GameWorld.DebugLog("===登录本服地图时,处于跨服或自定义场景状态,不刷新视野!", curPlayer.GetPlayerID())
+
+ #卡牌改为0视野
+ if curPlayer.GetSightLevel() != curPlayer.GetID():
PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
- elif not GameWorld.IsCrossServer():
- realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer)
- if realmDifficulty:
- GameWorld.DebugLog("===登录本服地图时,处于境界难度地图,自动设置难度! realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID())
- PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty)
-
+ if curPlayer.GetSight() != 0:
+ PlayerControl.SetSight(curPlayer, 0)
+ #刷新玩家的视野
+ #if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or PlayerControl.GetCustomMapID(curPlayer)):
+ # GameWorld.DebugLog("===登录本服地图时,处于跨服或自定义场景状态,不刷新视野!", curPlayer.GetPlayerID())
+ # PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
+ #elif not GameWorld.IsCrossServer():
+ # realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer)
+ # if realmDifficulty:
+ # GameWorld.DebugLog("===登录本服地图时,处于境界难度地图,自动设置难度! realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID())
+ # PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty)
+
PlayerState.ChangePlayerSigh(curPlayer, tick)
if GameWorld.IsCrossServer():
curPlayer.SetForbiddenSyncClientState(False)
- playerControl = PlayerControl.PlayerControl(curPlayer)
- #刷新所有状态
- playerControl.ReCalcAllState()
+ olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
+ olPlayer.ReCalcAllAttr()
if GameWorld.IsCrossServer():
curPlayer.SetForbiddenSyncClientState(True)
@@ -1519,54 +1432,63 @@
#@return 返回值无意义
#@remarks 初始化玩家背包
def InitPlayerPack(curPlayer) :
- itemManager = curPlayer.GetItemManager()
+
+ #设置装备实际个数,默认最大个数
+ PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptEquip, defaultMax=True, isSync=False)
#初始化玩家背包
- PlayerControl.Init_ItemPack(curPlayer)
+ PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptItem)
#初始化玩家仓库
- PlayerControl.Init_Warehouse(curPlayer)
+ #PlayerControl.Init_Warehouse(curPlayer)
+
+ #初始化鉴定背包,默认最大个数用于存放主线掉落
+ PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptIdentify, defaultMax=True)
+
+ #初始化英雄背包
+ PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptHero)
+
+ #初始化临时交换背包,默认最大个数
+ PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTempSwap, defaultMax=True, isSync=False)
+
+ #初始化临时存放背包,默认最大个数
+ PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTempItem, defaultMax=True, isSync=False)
#初始化寻宝背包
- PlayerControl.Init_TreasurePack(curPlayer)
+ PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTreasure)
#初始化神兽物品背包
- curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzItem)
- curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptDogzItem))
- curPack.Sync_PackCanUseCount()
+ #curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzItem)
+ #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptDogzItem))
+ #curPack.Sync_PackCanUseCount()
#初始化神兽装备背包
- curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
- curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptDogzEquip))
- curPack.Sync_PackCanUseCount()
+ #curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
+ #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptDogzEquip))
+ #curPack.Sync_PackCanUseCount()
#初始化垃圾分类背包
- curPack = itemManager.GetPack(ShareDefine.rptGarbage)
- curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptGarbage))
- curPack.Sync_PackCanUseCount()
-
- #初始化临时交换背包
- curPack = itemManager.GetPack(ShareDefine.rptTempSwap)
- curPack.SetCount(ChConfig.Def_PackCnt_TempSwap)
-
- #初始化临时存放背包
- curPack = itemManager.GetPack(ShareDefine.rptTempItem)
- curPack.SetCount(ChConfig.Def_PackCnt_TempItem)
-
- #设置装备实际个数
- curPack = itemManager.GetPack(IPY_GameWorld.rptEquip)
- curPack.SetCount(ItemCommon.GetPackInitCount(IPY_GameWorld.rptEquip))
+ #curPack = itemManager.GetPack(ShareDefine.rptGarbage)
+ #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptGarbage))
+ #curPack.Sync_PackCanUseCount()
#初始化垃圾桶
#curPack = itemManager.GetPack(IPY_GameWorld.rptRecycle)
#curPack.SetCount(ChConfig.Def_PackCnt_Recycle)
#初始化万能背包
- curPack = itemManager.GetPack(IPY_GameWorld.rptAnyWhere)
- curPack.SetCount(IPY_GameWorld.Def_AnyWherePackCount)
+ #curPack = itemManager.GetPack(IPY_GameWorld.rptAnyWhere)
+ #curPack.SetCount(IPY_GameWorld.Def_AnyWherePackCount)
#初始化宠物背包
- curPack = itemManager.GetPack(ShareDefine.rptPet)
- curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptPet))
+ #curPack = itemManager.GetPack(ShareDefine.rptPet)
+ #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptPet))
#curPack.Sync_PackCanUseCount()
+
+ ItemCommon.SyncPackBuyCnt(curPlayer)
+
+ #通知玩家物品信息
+ __Sync_PackDetel(curPlayer)
+
+ ItemControler.CheckGiveBindMoneyTypeItem(curPlayer)
return
#---------------------------------------------------------------------
@@ -1655,16 +1577,21 @@
#将玩家放置在这个地图上
curPlayer.InitPos(curPlayer.GetPosX(), curPlayer.GetPosY())
- #刷新自己的视野
- if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene)):
- GameWorld.DebugLog("===本服LoadMapOK时玩家处于跨服或自定义场景状态,不设置可见!", curPlayer.GetPlayerID())
+ #卡牌改为0视野
+ if curPlayer.GetSightLevel() != curPlayer.GetID():
PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
- elif not GameWorld.IsCrossServer():
- realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer)
- if realmDifficulty:
- GameWorld.DebugLog("===本服LoadMapOK时玩家处于境界难度地图,自动设置难度!realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID())
- PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty)
-
+ if curPlayer.GetSight() != 0:
+ PlayerControl.SetSight(curPlayer, 0)
+ #刷新自己的视野
+ #if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene)):
+ # GameWorld.DebugLog("===本服LoadMapOK时玩家处于跨服或自定义场景状态,不设置可见!", curPlayer.GetPlayerID())
+ # PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
+ #elif not GameWorld.IsCrossServer():
+ # realmDifficulty = PlayerControl.GetMapRealmDifficulty(curPlayer)
+ # if realmDifficulty:
+ # GameWorld.DebugLog("===本服LoadMapOK时玩家处于境界难度地图,自动设置难度!realmDifficulty=%s" % realmDifficulty, curPlayer.GetPlayerID())
+ # PlayerControl.SetRealmDifficulty(curPlayer, realmDifficulty)
+
curPlayer.RefreshView()
curPlayer.SetVisible(True)
@@ -1791,7 +1718,6 @@
PassiveBuffEffMng.OnLoadMapGFPassive(curPlayer)
PlayerYinji.OnLoadMap(curPlayer)
- ItemControler.PlayerItemControler(curPlayer).RefreshStartEquipCount() # 刷新装备珍品星级
#EndLoadMap需放在最后, 0403 tagPlayerLoginLoadOK
curPlayer.EndLoadMap()
@@ -1883,7 +1809,7 @@
NotifyPlayerBasePoint(curPlayer, pointAttrIDList)
playerControl = PlayerControl.PlayerControl(curPlayer)
playerControl.RefreshPlayerAttrState()
- PlayerControl.SetLingGenMaxIndex(curPlayer)
+ #PlayerControl.SetLingGenMaxIndex(curPlayer)
return
#// B2 07 重置加点 #tagCMResetAttrPoint
@@ -2392,28 +2318,6 @@
def PlayerDisconnect(index, tick):
GameWorld.GetPsycoFunc(__Func_PlayerDisconnect)(index, tick)
return
-#---------------------------------------------------------------------
-
-##记录新增有效登陆玩家,登陆10分钟以上玩家才算有效
-# @param curPlayer 玩家实例
-# @return None
-def NoteLoginValid(curPlayer):
- if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_LoginValid) == 1:
- #已记录
- return
-
- #计算时间, 当前减去登陆时间
- diffTime = GameWorld.GetCurrentTime() - GameWorld.GetDateTimeByStr(curPlayer.GetLoginTime().strip())
-
- #10分钟以上才算有效玩家
- if diffTime.days == 0 and diffTime.seconds < 10 * 60:
- return
-
- DataRecordPack.DR_LoginValid(curPlayer.GetAccID(), curPlayer.GetIP(), curPlayer)
-
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_LoginValid, 1)
- return
-
##C++封包触发, 玩家下线
#@param index 玩家索引
@@ -2463,9 +2367,6 @@
#流向记录玩家下线
DataRecordPack.DR_PlayerDisconnect(curPlayer)
- #记录新增有效登陆玩家
- NoteLoginValid(curPlayer)
-
#VIP时间
#PlayerVip.CalcVIPTimeByTick(curPlayer, tick, False)
#在线时间
@@ -2494,6 +2395,9 @@
#离线session
EventReport.WriteEvent_session(curPlayer)
+
+ #需放最后
+ PlayerOnline.OnPlayerLogoff(curPlayer)
return
#---------------------------------------------------------------------
@@ -3481,7 +3385,7 @@
#参考经验
rExp = PlayerControl.GetPlayerReExp(curPlayer)
reLV = curPlayer.GetLV() #参考等级
- worldLvExpRate = PlayerWorldAverageLv.GetWorldAverageLvExpRate(curPlayer) #世界等级经验加成
+ worldLvExpRate = 0
#经验公式
redeemExp = int(eval(recList[1]))
@@ -3532,34 +3436,6 @@
# @param tick: 时间戳
# @return: None
def ReceiveFamilyArrestAward(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- arrestID = clientData.ArrestID
-
- bit = ShareDefine.Def_ArrestOverState_BitDic.get(arrestID)
- if bit == None:
- #没有这个家族悬赏任务
- GameWorld.DebugLog("没有这个家族悬赏任务 arrestID=%s" % arrestID)
- return
-
- receiveState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyArrestAwardState)
-
- if receiveState & pow(2, bit):
- #该任务奖励已经领取
- GameWorld.DebugLog("该任务奖励已经领取 arrestID=%s" % arrestID)
- return
-
- if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FamilyArrestQueryState) == 1:
- #已经在查询中, 不重复查询
- GameWorld.DebugLog("已经在查询中, 不重复查询 arrestID=%s" % arrestID)
- return
-
- sendMsg = '%s' % arrestID
-
- #向GameServer请求该悬赏任务是否已经完成
- curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_FamilyArrest, 0, 'FamilyArrestAward', sendMsg, len(sendMsg))
-
- #设置状态查询中
- curPlayer.SetDict(ChConfig.Def_PlayerKey_FamilyArrestQueryState, 1)
return
@@ -3697,9 +3573,6 @@
# 功能开启奖励
elif rewardType == ChConfig.Def_RewardType_OpenFunc:
GameFuncComm.GetFuncOpenAward(curPlayer, dataEx)
- # 冰晶矿脉星级奖励
- elif rewardType == ChConfig.Def_RewardType_IceLodeStar:
- GameLogic_IceLode.GetIceLodeStarAward(curPlayer, dataEx)
# 领取周狂欢活动奖励
elif rewardType == ChConfig.Def_RewardType_WeekPartyAct:
PlayerWeekParty.GetWeekPartyActionAward(curPlayer, dataEx, dataExStr)
@@ -4440,7 +4313,7 @@
# WORD RealmDifficulty; //境界难度 = 1000 + 所选境界等级,如境界13,则发1013
#};
def OnSelectRealmDifficulty(index, clientData, tick):
- curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
- PlayerControl.SetRealmDifficulty(curPlayer, clientData.RealmDifficulty)
+ #curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+ #PlayerControl.SetRealmDifficulty(curPlayer, clientData.RealmDifficulty)
return
--
Gitblit v1.8.0