ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -134,26 +134,6 @@ PacketSubCMD_7=0x35 PacketCallFunc_7=OnHorseStarUp ;玛雅加强 [EquipPlus] ScriptName = Event\EventSrc\Operate_EquipPlus.py Writer = wdb Releaser = wdb RegType = 0 RegisterPackCount = 3 PacketCMD_1=0xA3 PacketSubCMD_1=0x01 PacketCallFunc_1=OnEquipMayaPlus PacketCMD_2=0xA3 PacketSubCMD_2=0x16 PacketCallFunc_2=OnEquipPlusEvolve PacketCMD_3=0xA5 PacketSubCMD_3=0xC7 PacketCallFunc_3=OnActivateMasterPlusLV ;npc交互 [FunctionNPCCommon] ScriptName = Event\EventSrc\FunctionNPCCommon.py @@ -205,27 +185,6 @@ PacketCMD_2=0xA3 PacketSubCMD_2=0x13 PacketCallFunc_2=OnItemDecompound ;装备宝石 [EquipStone] ScriptName = Event\EventSrc\Operate_EquipStone.py Writer = hxp Releaser = hxp RegType = 0 RegisterPackCount = 3 PacketCMD_1=0xA3 PacketSubCMD_1=0x04 PacketCallFunc_1=OnEquipEnchase PacketCMD_2=0xA3 PacketSubCMD_2=0x05 PacketCallFunc_2=OnEquipStonePick PacketCMD_3=0xA3 PacketSubCMD_3=0x06 PacketCallFunc_3=OnEquipStoneUpgrade ;玩家战斗相关 [PlayerBattle] @@ -898,38 +857,6 @@ PacketSubCMD_4=0x46 PacketCallFunc_4=OnBuyTongTianLing ;装备洗练 [EquipWash] ScriptName = Event\EventSrc\Operate_EquipWash.py Writer = hxp Releaser = hxp RegType = 0 RegisterPackCount = 2 PacketCMD_1=0xA3 PacketSubCMD_1=0x25 PacketCallFunc_1=OnEquipWashAttr PacketCMD_2=0xA3 PacketSubCMD_2=0x26 PacketCallFunc_2=OnEquipWashAttrChangeOK ;装备进阶 [EquipEvolve] ScriptName = Event\EventSrc\Operate_EquipEvolve.py Writer = hxp Releaser = hxp RegType = 0 RegisterPackCount = 2 PacketCMD_1=0xA3 PacketSubCMD_1=0x30 PacketCallFunc_1=OnEquipEvolve PacketCMD_2=0xA3 PacketSubCMD_2=0x31 PacketCallFunc_2=OnEquipShenDecompose ;NPC [NPCCommon] ScriptName = NPC\NPCCommon.py @@ -1013,23 +940,6 @@ PacketCMD_1=0xAB PacketSubCMD_1=0x11 PacketCallFunc_1=OnQueryOpenServerCampaignAward ;装备分解 [EquipDecompose] ScriptName = Player\PlayerEquipDecompose.py Writer = xdh Releaser = xdh RegType = 0 RegisterPackCount = 2 PacketCMD_1=0xA3 PacketSubCMD_1=0x2C PacketCallFunc_1=OnDoEquipDecompose PacketCMD_2=0xA3 PacketSubCMD_2=0x2D PacketCallFunc_2=OnDecomposeSetingSave ;寻宝 [PlayerTreasure] @@ -1319,18 +1229,6 @@ PacketCMD_1=0xAA PacketSubCMD_1=0x08 PacketCallFunc_1=OnStartLuckyTreasure ;公共部位星数 [Operate_EquipStar] ScriptName = Event\EventSrc\Operate_EquipStar.py Writer = xdh Releaser = xdh RegType = 0 RegisterPackCount = 1 PacketCMD_1=0xA5 PacketSubCMD_1=0xC5 PacketCallFunc_1=OnEquipPartStarUp ;日常活动 [PlayerActivity] ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3622,12 +3622,6 @@ Def_PDict_PetTrainLV = "PetTrainLV_%s" # 灵宠培养等阶,参数(培养类型) Def_PDict_PetTrainItemCount = "PetTrainItemCount_%s" # 灵宠培养当前阶已吃培养丹个数,参数(培养类型) #装备分解 Def_PDict_EquipDecomposeLV = "EquipDecomposeLV" #等级 Def_PDict_EquipDecomposeExp = "EquipDecomposeExp" #经验 Def_PDict_EquipDecomposeSeting = "EquipDecomposeSeting" #设置数据 Def_PDict_EquipDecomposeCnt = "EquipDecomposeCnt" #已分解件数 #试炼之塔 Def_Player_Dict_TrialTower_PassLV = "TrialTower_PassLV" # 试炼之塔通关层数 Def_Player_Dict_TrialTower_LastDayPassLV = "Tower_LastDayPassLV" # 试炼之塔昨日通关层数 @@ -4887,12 +4881,6 @@ CME_FB_RunDaily:"日常跑环", CME_FB_RunFamily:"战盟跑环", } # 功能对应的事件记录类型 FuncCMEDict = { ShareDefine.GameFuncID_RunDaily:CME_FB_RunDaily, ShareDefine.GameFuncID_RunFamily:CME_FB_RunFamily, } # 需要发送到任务事件扩展记录的类型 ShareDefine.Def_UserAction_ExMissionLog CME_Ex_Log_List = [CME_Class_Horse, CME_Class_Wing, CME_Class_Official] ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipEvolve.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/EventReport.py
@@ -723,13 +723,6 @@ __WriteEvent_mission_log(curPlayer, startType, missionName, isFinish, failReason) return def WriteFuncCMEAcceptable(curPlayer, funcID): return if funcID not in ChConfig.FuncCMEDict: return WriteEvent_custom_mission_log(curPlayer, ChConfig.FuncCMEDict[funcID], ChConfig.CME_Log_Acceptable) return True def WriteEvent_MWSuccess(curPlayer, mwID, succID, logType, isFinish=0): '''写自定义任务 - 法宝成就事件, 事件ID格式: 91+法宝ID+至少4位的成就ID ''' ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/LingQi.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/OpenFunc.py
@@ -95,25 +95,37 @@ GameWorld.DebugLog("GM处理等级开启功能: openFuncID=%s,openFuncIDList=%s,needLV=%s" % (openFuncID, openFuncIDList, needLV), curPlayer.GetPlayerID()) # 优先处理升级 if needLV: if needLV > 1: preLV = needLV - 1 curPlayer.SetLV(preLV) PlayerControl.SetPlayerTotalExp(curPlayer, PlayerControl.GetTotalExpByPlayerLv(preLV)) PlayerControl.PlayerControl(curPlayer).PlayerLvUp() # 获取等级需要的境界 ipyDataMgr = IpyGameDataPY.IPY_Data() for index in range(ipyDataMgr.GetRealmCount()): realmIpyData = ipyDataMgr.GetRealmByIndex(index) if realmIpyData.GetLv() > needRealmLV: needRealmLV = realmIpyData.GetLv() if realmIpyData.GetLVMax() >= needLV: break GameWorld.DebugLog("GM处理境界开启功能: needRealmLV=%s" % needRealmLV, curPlayer.GetPlayerID()) if needRealmLV: curPlayer.SetOfficialRank(max(ChConfig.Def_InitOfficialRank, needRealmLV - 1)) PlayerPrestigeSys.DoRealmLVUpLogic(curPlayer) for limitMissionID in needMissionIDList: if not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_MissionFinish % limitMissionID): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_MissionFinish % limitMissionID, 1) GameWorld.DebugLog("GM处理任务开启功能: needMissionIDList=%s" % needMissionIDList, curPlayer.GetPlayerID()) #最后强制触发一次 #if needMissionIDList: GameFuncComm.DoFuncOpenLogic(curPlayer, needMissionIDList) GameFuncComm.DoFuncOpenLogic(curPlayer) return def __GetOpenFuncLimit(curPlayer, openFuncIDList): maxLV = PlayerControl.GetPlayerMaxLV(curPlayer) maxLV = PlayerControl.GetOpenMaxLV() needLV = 0 needRealmLV = 0 needMissionIDList = [] ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartPlusLV.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartStar.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipWash.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetItemStarLV.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -2005,9 +2005,6 @@ PlayerControl.SendMailByKey("BuyLoveFBCntCoupleMail", [coupleID], addItemList, paramList) return def DoFuncOpen_RunDaily(curPlayer): return EventReport.WriteFuncCMEAcceptable(curPlayer, ShareDefine.GameFuncID_RunDaily) def DoFuncOpen_RunFamily(curPlayer): return EventReport.WriteFuncCMEAcceptable(curPlayer, ShareDefine.GameFuncID_RunFamily) #--------------------------------------------------------------------- ## 副本开启提示(几分钟) # @param openTimeList 开启时间列表[(开启时钟,开启分钟), ] ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -16,16 +16,9 @@ #------------------------------------------------------------------------------ import IPY_GameWorld import GameWorld import ItemControler import PlayerControl import ChConfig import ItemCommon import ShareDefine import ChPyNetSendPack import NetPackCommon import IpyGameDataPY import OpenServerCampaign import FormulaControl import PlayerOnline def RefreshRoleEquipAttr(curPlayer): @@ -72,13 +65,6 @@ PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_MainEquip, mainEquipAttrDict) return ## 刷新装备对人物属性的改变 # @param self 类实例 # @return 返回值无意义 # @remarks 刷新装备对人物属性的改变 def RefreshPlayerEquipAttribute(curPlayer, classLV=0): return #// A3 18 灵器突破 #tagCMLingQiEquipBreak # #struct tagCMLingQiEquipBreak @@ -87,71 +73,6 @@ # DWORD ItemID; //突破的物品ID #}; def OnLingQiEquipBreak(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) breakItemID = clientData.ItemID ipyData = IpyGameDataPY.GetIpyGameData('LingQiAttr', breakItemID) if not ipyData: return nextItemID = ipyData.GetNextItemID() #突破后的物品ID if not IpyGameDataPY.GetIpyGameData('LingQiAttr', nextItemID): return breakItemData = GameWorld.GetGameData().GetItemByTypeID(breakItemID) nextItemData = GameWorld.GetGameData().GetItemByTypeID(nextItemID) if not breakItemData or not nextItemData: return equipIndex = ItemCommon.GetEquipPackIndex(breakItemData) if equipIndex != ItemCommon.GetEquipPackIndex(nextItemData): GameWorld.DebugLog("突破的物品和突破后的物品不是同个装备位!breakItemID=%s,nextItemID=%s" % (breakItemID, nextItemID)) return equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) curEquip = equipPack.GetAt(equipIndex) if not curEquip or curEquip.IsEmpty(): GameWorld.DebugLog("突破的物品未穿戴!breakItemID=%s" % (breakItemID)) return if curEquip.GetEndureReduceType(): GameWorld.DebugLog("突破的物品是时效物品!breakItemID=%s" % (breakItemID)) return if curEquip.GetItemTypeID() != breakItemID: GameWorld.DebugLog("突破的物品未穿戴!breakItemID=%s" % (breakItemID)) return costItemDict = ipyData.GetUpCostItem() itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(costItemDict, itemPack) if lackItemDict: GameWorld.DebugLog("突破消耗物品不足!breakItemID=%s,costItemDict=%s,lackItemDict=%s" % (breakItemID, costItemDict, lackItemDict)) return #扣消耗 ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, 'LingQiEquipBreak') ItemCommon.DelItem(curPlayer, curEquip, 1, False, ChConfig.ItemDel_LingQiEquipBreak, {}, True) #给突破后灵器 if not ItemControler.PutItemInTempSwap(curPlayer, nextItemID): GameWorld.Log("灵器突破后ID(%s)放入临时交换背包失败!" % (nextItemID), curPlayer.GetID()) return ItemCommon.DoLogicSwitchItemEx(curPlayer, ShareDefine.rptTempSwap, IPY_GameWorld.rptEquip, 0, equipIndex) changeItemStarLV = 0 #curItem.GetItemStarLV() changeItemStoneCnt = 0 #curItem.GetUseStoneCount() changeItemHoleCnt = 0 #curItem.GetCanPlaceStoneCount() changeItemUseData = '' curPlayer.ChangeEquip(nextItemID, equipIndex, changeItemStarLV, changeItemHoleCnt, changeItemStoneCnt, changeItemUseData) #刷属性 RefreshPlayerLingQiEquipAttr(curPlayer) playControl = PlayerControl.PlayerControl(curPlayer) playControl.RefreshPlayerAttrState() #通知结果 resultPack = ChPyNetSendPack.tagMCLingQiEquipBreakResult() resultPack.Clear() resultPack.MakeItemID = nextItemID NetPackCommon.SendFakePack(curPlayer, resultPack) PlayerControl.WorldNotify(0, 'SpiritOrgan', [curPlayer.GetName(), breakItemID, nextItemID]) return #// A3 27 灵器培养 #tagCMLingQiTrain @@ -164,220 +85,11 @@ # WORD UseItemCnt; //消耗材料个数 #}; def OnLingQiTrain(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) equipPlace = clientData.EquipPlace # 灵器装备位 trainType = clientData.TrainType # 培养类型 costItemCount = clientData.UseItemCnt # 消耗材料个数 trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LingQiTrainLV % (equipPlace, trainType)) curEatItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LingQiTrainItemCount % (equipPlace, trainType)) GameWorld.DebugLog("灵器培养: equipPlace=%s,trainType=%s,trainLV=%s,costItemCount=%s,curEatItemCount=%s" % (equipPlace, trainType, trainLV, costItemCount, curEatItemCount)) if equipPlace not in ChConfig.EquipPlace_LingQi: return if trainType <= 0 or trainType > GetLingQiTrainTypes(equipPlace): return if trainLV <= 0: GameWorld.DebugLog(" 培养未激活 trainType=%s" % trainType) return trainIpyData = IpyGameDataPY.GetIpyGameData("LingQiTrain", equipPlace, trainType, trainLV) if not trainIpyData: return needRealmLV = trainIpyData.GetNeedRealmLV() curRealmLV = PlayerControl.GetTrainRealmLVReal(curPlayer, 3) if curRealmLV < needRealmLV: GameWorld.DebugLog(" 境界不足,无法培养! curRealmLV(%s) < needRealmLV(%s)" % (curRealmLV, needRealmLV)) return needEatCountTotal = trainIpyData.GetEatCntTotal() if not needEatCountTotal: GameWorld.DebugLog(" 该培养已满级!") return costItemIDList = IpyGameDataPY.GetFuncEvalCfg("LingQiTrain", 1, {}).get(str(equipPlace), []) costItemID = costItemIDList[trainType - 1] if not costItemID or not costItemCount: return costItemIndexList, bindCnt, unBindCnt = ItemCommon.GetPackItemBindStateIndexInfo(curPlayer, costItemID, costItemCount) lackCnt = costItemCount - bindCnt - unBindCnt if lackCnt > 0: GameWorld.DebugLog(" 消耗道具不足,无法培养!costItemID=%s,costItemCount=%s,bindCnt=%s,unBindCnt=%s,lackCnt=%s" % (costItemID, costItemCount, bindCnt, unBindCnt, lackCnt)) return delCnt = costItemCount # 扣除消耗 if delCnt: ItemCommon.DelCostItemByBind(curPlayer, costItemIndexList, bindCnt, unBindCnt, delCnt, "LingQiTrain") updClassLV = trainLV updEatItemCount = curEatItemCount + costItemCount GameWorld.DebugLog(" updEatItemCount=%s,needEatCountTotal=%s" % (updEatItemCount, needEatCountTotal)) if updEatItemCount >= needEatCountTotal: updClassLV += 1 updEatItemCount -= needEatCountTotal GameWorld.DebugLog(" 进阶: updClassLV=%s,updEatItemCount=%s" % (updClassLV, updEatItemCount)) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LingQiTrainLV % (equipPlace, trainType), updClassLV) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LingQiTrainItemCount % (equipPlace, trainType), updEatItemCount) # 升阶 if updClassLV > trainLV: pass Sync_LingQiTrainData(curPlayer, equipPlace) # 刷属性 RefreshPlayerLingQiEquipAttr(curPlayer) PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState() return def GetLingQiTrainTypes(equipPlace): return len(IpyGameDataPY.GetFuncEvalCfg("LingQiTrain", 1, {}).get(str(equipPlace), [])) def Sync_LingQiTrainData(curPlayer, equipPlace): clientPack = ChPyNetSendPack.tagMCLingQiTrainInfo() clientPack.EquipPlace = equipPlace clientPack.TrainLVList = [] clientPack.TrainItemCountList = [] for trainType in xrange(1, GetLingQiTrainTypes(equipPlace) + 1): trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LingQiTrainLV % (equipPlace, trainType)) if trainLV == 0: trainLV = 1 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_LingQiTrainLV % (equipPlace, trainType), trainLV) clientPack.TrainLVList.append(trainLV) clientPack.TrainItemCountList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LingQiTrainItemCount % (equipPlace, trainType))) clientPack.TrainTypes = len(clientPack.TrainLVList) NetPackCommon.SendFakePack(curPlayer, clientPack) return def RefreshPlayerLingQiEquipAttr(curPlayer): ''' 刷新玩家灵器装备属性 ''' return classLV = 0 # 灵器阶默认为0 allAttrList = [{} for _ in range(4)] lingQiAttrList = [{} for _ in range(4)] equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) equipScoreTotal = 0 lv = curPlayer.GetLV() lqAttrFormatDict = IpyGameDataPY.GetFuncEvalCfg("OutOfPrintValue", 2, {}) for equipPlace in ChConfig.EquipPlace_LingQi: ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace) if not ipyData: continue equipIndex = ipyData.GetGridIndex() curEquip = equipPack.GetAt(equipIndex) if not curEquip or curEquip.IsEmpty(): continue if not ItemCommon.CheckItemCanUseByExpireTime(curEquip): # 过期 continue equipScoreTotal += ItemCommon.GetEquipGearScore(curEquip) itemID = curEquip.GetItemTypeID() #基础属性效果 for effIndex in xrange(curEquip.GetEffectCount()): curEff = curEquip.GetEffectByIndex(effIndex) effID = curEff.GetEffectID() if effID == 0: break PlayerControl.CalcAttrDict_Type(effID, curEff.GetEffectValue(0), lingQiAttrList) #灵器属性 lingQiIpyData = IpyGameDataPY.GetIpyGameDataNotLog("LingQiAttr", itemID) if lingQiIpyData: lingQiAttrIDList = lingQiIpyData.GetLingQiAttrID() lingQiAttrValueList = lingQiIpyData.GetLingQiAttrValue() for lqIndex, lqAttrID in enumerate(lingQiAttrIDList): if str(lqAttrID) in lqAttrFormatDict: attrFormat = lqAttrFormatDict[str(lqAttrID)] maxOOPValue = lingQiAttrValueList[lqIndex] lqAttrValue = eval(FormulaControl.GetCompileFormula("LingQiAttrFormat_%s" % lqAttrID, attrFormat)) else: lqAttrValue = lingQiAttrValueList[lqIndex] PlayerControl.CalcAttrDict_Type(lqAttrID, lqAttrValue, lingQiAttrList) # 新培养属性 guardTrainAttrList = [{} for _ in range(4)] wingTrainAttrList = [{} for _ in range(4)] peerlessWeaponTrainAttrList = [{} for _ in range(4)] peerlessWeapon2TrainAttrList = [{} for _ in range(4)] ipyDataMgr = IpyGameDataPY.IPY_Data() for index in xrange(ipyDataMgr.GetLingQiTrainCount()): trainIpyData = ipyDataMgr.GetLingQiTrainByIndex(index) equipPlace = trainIpyData.GetEquipPlace() trainType = trainIpyData.GetTrainType() dataTrainLV = trainIpyData.GetTrainLV() if equipPlace == ShareDefine.retGuard1: lingQiTrainAttrList = guardTrainAttrList elif equipPlace == ShareDefine.retWing: lingQiTrainAttrList = wingTrainAttrList elif equipPlace == ShareDefine.retPeerlessWeapon: lingQiTrainAttrList = peerlessWeaponTrainAttrList elif equipPlace == ShareDefine.retPeerlessWeapon2: lingQiTrainAttrList = peerlessWeapon2TrainAttrList else: continue trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LingQiTrainLV % (equipPlace, trainType)) if dataTrainLV > trainLV: continue elif dataTrainLV == trainLV: trainItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_LingQiTrainItemCount % (equipPlace, trainType)) else: trainItemCount = trainIpyData.GetEatCntTotal() # 等阶额外属性 lvAttrTypeList = trainIpyData.GetLVAttrTypeList() lvAttrValueList = trainIpyData.GetLVAttrValueList() for i, attrID in enumerate(lvAttrTypeList): attrValue = lvAttrValueList[i] PlayerControl.CalcAttrDict_Type(attrID, attrValue, lingQiTrainAttrList) # 培养丹增加属性 eatCntEverytime = trainIpyData.GetEatCntEverytime() if trainItemCount and eatCntEverytime: eatItemAttrTypeList = trainIpyData.GetEatItemAttrTypeList() eatItemAttrValueList = trainIpyData.GetEatItemAttrValueList() attrMultiple = trainItemCount / eatCntEverytime for i, attrID in enumerate(eatItemAttrTypeList): attrValue = eatItemAttrValueList[i] PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, lingQiTrainAttrList) #GameWorld.DebugLog("守护培养属性: %s" % guardTrainAttrList) #GameWorld.DebugLog("翅膀培养属性: %s" % wingTrainAttrList) #GameWorld.DebugLog("灭世培养属性: %s" % peerlessWeaponTrainAttrList) #GameWorld.DebugLog("噬魂培养属性: %s" % peerlessWeapon2TrainAttrList) PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_GuardTarin, guardTrainAttrList) PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_WingTarin, wingTrainAttrList) PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PeerlessWeaponTrain, peerlessWeaponTrainAttrList) PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PeerlessWeapon2Train, peerlessWeapon2TrainAttrList) lqFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2)) PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_LingQi, lqFightPowerEx) #GameWorld.DebugLog("灵器属性1: %s" % allAttrList) #GameWorld.DebugLog("灵器属性2: %s" % lingQiAttrList) #GameWorld.DebugLog("灵器评分战力: equipScoreTotal=%s, %s" % (equipScoreTotal, lqFightPowerEx)) PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingQi, allAttrList) PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingQiAttr, lingQiAttrList) return def CalcAttr_LegendAttr(curPlayer, curEquip, allAttrListEquip, legendAttrDict={}): @@ -395,81 +107,7 @@ # BYTE Star; // 星数 #}; def OnEquipPartSuiteActivate(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) classLV = clientData.ClassLV suiteID = clientData.SuiteID suiteCount = clientData.SuiteCount star = clientData.Star ipyDataList = IpyGameDataPY.GetIpyGameDataList('EquipSuitAttr', suiteID) if not ipyDataList: return actIpyData = None for ipyData in ipyDataList: needCount = ipyData.GetSuiteCnt() needStar = ipyData.GetStar() if suiteCount == needCount and star == needStar: actIpyData = ipyData break if not actIpyData: return activateIndex = actIpyData.GetActivateIndex() # 这里就不判断是否满足件数、星数条件了,算属性的时候本身也是条件之一,是否激活只是附加条件,这里只处理激活状态变更,能否激活前端判断即可 isActivate = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_EquipPartSuiteActivate, activateIndex) if isActivate: return GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_EquipPartSuiteActivate, activateIndex, 1) Sync_EquipPartSuiteActivateInfo(curPlayer) #广播 notifyMark = actIpyData.GetIsNotify() if notifyMark: PlayerControl.WorldNotify(0, 'AllStarLevelUp' if needStar else 'AllStarLevelUp2', [curPlayer.GetPlayerName(), suiteID, suiteCount, star]) RefreshPlayerEquipAttribute(curPlayer, classLV) #刷新所有属性 playControl = PlayerControl.PlayerControl(curPlayer) playControl.RefreshPlayerAttrState() return def Sync_EquipPartSuiteActivateInfo(curPlayer): ## 同步装备位星级套装激活状态信息 #keyCount = 10 ipyDataMgr = IpyGameDataPY.IPY_Data() dataCount = ipyDataMgr.GetEquipSuitAttrCount() if not dataCount: return lastIpyData = ipyDataMgr.GetEquipSuitAttrByIndex(dataCount - 1) if not lastIpyData: return keyCount = 1 + lastIpyData.GetActivateIndex() / 31 activateStateList = [] for i in xrange(keyCount): activateStateList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartSuiteActivate % i)) if activateStateList.count(0) == keyCount: return activateInfo = ChPyNetSendPack.tagMCEquipPartSuiteActivateInfo() activateInfo.SuiteActivateStateInfo = activateStateList activateInfo.Count = len(activateInfo.SuiteActivateStateInfo) NetPackCommon.SendFakePack(curPlayer, activateInfo) return def ChangeEquipEffectByPlusMaster(curPlayer, classLV): # 强化大师特效 if (classLV != GetEquipFacadeClassLV(curPlayer)): return masterPlusLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartMasterPlusLV % classLV) ## 强化大师影响角色外观显示 强化大师等级 * 1000+第几套*10+是否有套装 oldEquipShowSwitch = curPlayer.GetEquipShowSwitch() updEquipShowSwitch = oldEquipShowSwitch % 1000 + oldEquipShowSwitch / 1000000 * 1000000+ 1000 * masterPlusLV GameWorld.DebugLog('强化大师影变化影响角色外观显示,oldEquipShowSwitch=%s,updEquipShowSwitch=%s'% (oldEquipShowSwitch, updEquipShowSwitch)) if oldEquipShowSwitch != updEquipShowSwitch: curPlayer.SetEquipShowSwitch(updEquipShowSwitch) return def ChangeEquipfacadeByHorsePetSkin(curPlayer, skinType, skinIndex): ##骑宠觉醒外观变更 灵宠外观索引*10000000+坐骑外观索引*1000000+灵根特效表key * 1000+第几套*10+是否有套装 @@ -521,198 +159,7 @@ return 0 #获取当前是第几套装备外观 def GetEquipFacadeClassLV(curPlayer):return curPlayer.GetEquipShowSwitch()%1000/10 ## 获取公共部位强化熟练度 def GetEquipPartProficiency(curPlayer, packType, index): return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartProficiency % (packType, index)) ## 设置公共部位强化熟练度 def SetEquipPartProficiency(curPlayer, packType, index, value): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartProficiency % (packType, index), value) return ## 获取公共部位强化等级 def GetEquipPartPlusLV(curPlayer, packType, index): return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusLV % (packType, index)) ## 设置公共部位强化等级 def SetEquipPartPlusLV(curPlayer, packType, index, curEquip, setPlusLV): befPlusLV = GetEquipPartPlusLV(curPlayer, packType, index) if befPlusLV == setPlusLV: return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartPlusLV % (packType, index), setPlusLV) #=========================================================================== # if curEquip and not curEquip.IsEmpty(): # curEquip.SetItemStarLV(starLV) #=========================================================================== # 同步更新强化总等级 befTotalPlusLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalPlusLV) updTotalPlusLV = max(0, befTotalPlusLV + setPlusLV - befPlusLV) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalPlusLV, updTotalPlusLV) GameWorld.DebugLog("设置强化等级: index=%s,befPlusLV=%s,setPlusLV=%s,befTotalPlusLV=%s,updTotalPlusLV=%s" % (index, befPlusLV, setPlusLV, befTotalPlusLV, updTotalPlusLV)) return ## 获取公共部位强化进化等级 def GetEquipPartPlusEvolveLV(curPlayer, packType, index): return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusEvolveLV % (packType, index)) ## 设置公共部位强化进化等级 def SetEquipPartPlusEvolveLV(curPlayer, packType, index, setEvolveLV): befEvolveLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusEvolveLV % (packType, index)) if befEvolveLV == setEvolveLV: return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartPlusEvolveLV % (packType, index), setEvolveLV) # 同步更新进化总等级 befTotalPlusEvolveLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalPlusEvolveLV) updTotalPlusEvolveLV = max(0, befTotalPlusEvolveLV + setEvolveLV - befEvolveLV) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalPlusEvolveLV, updTotalPlusEvolveLV) GameWorld.DebugLog("设置进化等级: index=%s,befEvolveLV=%s,setEvolveLV=%s,befTotalPlusEvolveLV=%s,updTotalPlusEvolveLV=%s" % (index, befEvolveLV, setEvolveLV, befTotalPlusEvolveLV, updTotalPlusEvolveLV)) return ## 通知公共部位强化等级 def NotifyEquipPartPlusLV(curPlayer, packType=IPY_GameWorld.rptEquip, index=None): ePartStarLVPack = ChPyNetSendPack.tagMCEquipPartPlusInfo() ePartStarLVPack.Clear() ePartStarLVPack.InfoList = [] syncIndexList = [] if index == None: equipMaxClasslv = IpyGameDataPY.GetFuncCfg('EquipMaxClasslv') for equipPlace in ChConfig.Pack_EquipPart_CanPlusStar.get(packType, []): for classlv in xrange(1, equipMaxClasslv+1): ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classlv, equipPlace) if not ipyData: continue syncIndexList.append(ipyData.GetGridIndex()) else: syncIndexList = [index] for i in syncIndexList: ePartStarLV = ChPyNetSendPack.tagMCEquipPartPlusLV() ePartStarLV.Clear() ePartStarLV.PackType = packType ePartStarLV.EquipIndex = i ePartStarLV.EquipPartStarLV = GetEquipPartPlusLV(curPlayer, packType, i) ePartStarLV.Proficiency = GetEquipPartProficiency(curPlayer, packType, i) ePartStarLV.EvolveLV = GetEquipPartPlusEvolveLV(curPlayer, packType, i) ePartStarLVPack.InfoList.append(ePartStarLV) ePartStarLVPack.Count = len(ePartStarLVPack.InfoList) NetPackCommon.SendFakePack(curPlayer, ePartStarLVPack) return ## 全身强化等级 def GetTotalPlusLV(curPlayer, isActive=True): return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalPlusLV) ## 全身进化等级 def GetTotalPlusEvolveLV(curPlayer): return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalPlusEvolveLV) ## 全身橙装及以上装备数 def GetEquipOrangeCount(curPlayer): return curPlayer.NomalDictGetProperty(ChConfig.Def_PlayerKey_EquipOrangeCount) # 获取装备的强化类型 def GetEquipPlusType(curEquip): equipPlace = curEquip.GetEquipPlace() plusTypeDict = IpyGameDataPY.GetFuncEvalCfg("StrengthenLevelLimit", 1) if not plusTypeDict: GameWorld.ErrLog("没有强化类型映射表") return return plusTypeDict.get(equipPlace) # 获取满套装化的最低阶数,如5件套,4件5级,1件3级,则返回3 def GetEquipSuitsLVByType(curPlayer, suitType, groupType): return 0 # suiteLV = 999 # equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType') # if groupType not in equipSuitTypeDict: # return 0 # maxCnt = len(equipSuitTypeDict[groupType]) # cnt = 0 # for equipPlace in equipSuitTypeDict[groupType]: # curSuiteLV = GetEquipPartSuiteLV(curPlayer, equipPlace, suitType) # if curSuiteLV > 0: # cnt += 1 # suiteLV = min(curSuiteLV, suiteLV) # # if cnt != maxCnt: # return 0 # return 0 if suiteLV == 999 else suiteLV def SetEquipPartStar(curPlayer, index, setStarLV): #设置公共部位星数 befStarLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartStar % index) if befStarLV == setStarLV: return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartStar % index, setStarLV) # 同步更新星级总等级 befTotalStarLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalEquipStar) updTotalStarLV = max(0, befTotalStarLV + setStarLV - befStarLV) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalEquipStar, updTotalStarLV) # 开服活动数据 OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_StarLV, updTotalStarLV) GameWorld.DebugLog("设置部位星级: index=%s,befStarLV=%s,setStarLV=%s,befTotalStarLV=%s,updTotalStarLV=%s" % (index, befStarLV, setStarLV, befTotalStarLV, updTotalStarLV)) return def GetEquipPartStar(curPlayer, equipPackindex): #获取公共部位星数 return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartStar % equipPackindex) ## 获取公共部位生效的星数, 因装备的最高可到星数影响,用于算当前装备属性使用, 不影响全身星级 def GetEquipPartStarByRank(curPlayer, equipPackindex, curEquip): maxStarLV = ItemCommon.GetItemMaxStar(curEquip) return min(GetEquipPartStar(curPlayer, equipPackindex), maxStarLV) def GetTotalEquipStars(curPlayer): ##获取部位总星数 return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalEquipStar) ## 通知公共部位星数 def NotifyEquipPartStar(curPlayer, index=None): ePartStarLVPack = ChPyNetSendPack.tagMCEquipPartStarInfo() ePartStarLVPack.Clear() ePartStarLVPack.InfoList = [] syncIndexList = [] if index == None: equipMaxClasslv = IpyGameDataPY.GetFuncCfg('EquipMaxClasslv') for equipPlace in ChConfig.Pack_EquipPart_CanPlusStar.get(IPY_GameWorld.rptEquip, []): for classlv in xrange(1, equipMaxClasslv+1): ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classlv, equipPlace) if not ipyData: continue syncIndexList.append(ipyData.GetGridIndex()) else: syncIndexList = [index] for index in syncIndexList: ePartStarLV = ChPyNetSendPack.tagMCEquipPartStar() ePartStarLV.Clear() ePartStarLV.EquipPackIndex = index ePartStarLV.Star = GetEquipPartStar(curPlayer, index) ePartStarLVPack.InfoList.append(ePartStarLV) ePartStarLVPack.Count = len(ePartStarLVPack.InfoList) NetPackCommon.SendFakePack(curPlayer, ePartStarLVPack) return ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -30,7 +30,6 @@ import PlayerFamily import ChPyNetSendPack import NetPackCommon import Operate_EquipStone import PlayerXiangong import IpyGameDataPY import DataRecordPack ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -29,9 +29,6 @@ import EventReport import ChItem import IpyGameDataPY import Operate_EquipStone import Operate_EquipWash import FormulaControl import ChPyNetSendPack import NetPackCommon import PyGameData @@ -839,65 +836,6 @@ return 0 keyStr = ChConfig.Def_VPackCnt_Dict[packindex] return IpyGameDataPY.GetFuncCfg(keyStr) ## 杀怪掉落提示 # @param curPlayer 当前玩家 # @return None def NotifyItemDropByKill(curPlayer, curItem, npcID, notifyMark='', mapID=0): return #吕超说此处屏蔽 def CacheNotifyEquipDetailInfo(curPlayer, curEquip): ''' 缓存装备广播信息中的装备明细信息 因为本版本需要的查看的内容相对较多,为了减少全服广播流量消耗,所以先进行缓存,玩家点击查看时再进行查询 ''' guid = curEquip.GetGUID() packType = curEquip.GetItemPlaceType() packIndex = curEquip.GetItemPlaceIndex() if packType != IPY_GameWorld.rptEquip: return guid classLV = GetItemClassLV(curEquip) if not classLV: return guid itemID = curEquip.GetItemTypeID() #部位星级 equipStar = ChEquip.GetEquipPartStarByRank(curPlayer, packIndex, curEquip) #部位强化数据 plusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, packIndex) plusEvolveLV = ChEquip.GetEquipPartPlusEvolveLV(curPlayer, packType, packIndex) #部位洗练数据 washLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashLV % packIndex) washValueList = [] for attrNum in xrange(1, Operate_EquipWash.Def_EquipWashMaxAttrCount + 1): value = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashValue % (packIndex, attrNum)) washValueList.append(value) #部位宝石数据 stoneIDList = Operate_EquipStone.GetEquipIndexStoneIDList(curPlayer, packIndex) #本阶已穿装备ID [[itemID,star], ...] classItems = [] ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'ClassLV':classLV}, True) if ipyDataList: equipPack = curPlayer.GetItemManager().GetPack(packType) for ipyData in ipyDataList: index = ipyData.GetGridIndex() classEquip = equipPack.GetAt(index) if not classEquip or classEquip.IsEmpty(): continue equipID = classEquip.GetItemTypeID() star = ChEquip.GetEquipPartStarByRank(curPlayer, index, classEquip) classItems.append([equipID, star]) cacheInfo = [guid, itemID, equipStar, plusLV, plusEvolveLV, washLV, washValueList, stoneIDList, classItems] cacheInfo = json.dumps(cacheInfo, ensure_ascii=False) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "NotifyEquipDetailInfo", cacheInfo, len(cacheInfo)) return guid ## 使用物品的特殊提示 # @param curPlayer 当前玩家 @@ -1993,40 +1931,10 @@ DR_DelItem(curPlayer, packIndex, "VPack_%s" % packIndex if not eventName else eventName, dataDict) ItemControler.Sync_VPackItem_Clear(curPlayer, packIndex, placeList) return ## 获取物品最高强化进化等级 # @param itemType: 物品类型 # @return 最大星级,0为不可强化 def GetItemMaxPlusEvolveLV(curPlayer, equipPackindex, curItem): packType = IPY_GameWorld.rptEquip curPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, equipPackindex) equipPlace = curItem.GetEquipPlace() ipyData = IpyGameDataPY.InterpolationSearch('EquipPlusEvolve', 'NeedPlusLV', curPlusLV, {'EquipPlace':equipPlace}) if not ipyData: return 0 return ipyData.GetEvolveLV() ## 获取物品最高星数 # @param itemType: 物品类型 # @return 最大星级,0为不可强化 def GetItemMaxStar(curItem): itemColor = curItem.GetItemColor() maxStarDict = IpyGameDataPY.GetFuncEvalCfg('EquipPartStar', 1) if str(itemColor) not in maxStarDict: return 0 classLV = GetItemClassLV(curItem) return maxStarDict[str(itemColor)].get(str(classLV), 0) ## 获取物品阶级或品级 def GetItemClassLV(curItem): return curItem.GetLV() def GetWingLV(curItem): ## 获取翅膀代数等级 wingLVDict = IpyGameDataPY.GetFuncEvalCfg("WingLV", 1) return wingLVDict.get(str(curItem.GetLV()), 0) ## 装备评分 def GetEquipGearScore(curItem): ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -55,7 +55,6 @@ import PlayerDienstgrad import PlayerFreeGoods import PlayerRecover import PlayerEquipDecompose import PlayerCrossRealmPK import PlayerCrossChampionship import GameFuncComm @@ -652,8 +651,6 @@ # 通知设置的被动功法 #PassiveBuffEffMng.OnLoginGFPassive(curPlayer) PlayerOnlinePrize.OnPlayerLogin(curPlayer) #装备分解 #PlayerEquipDecompose.PlayerLogin(curPlayer) # 极品白拿 PlayerFreeGoods.OnLogin(curPlayer) # BOSS复活活动 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
@@ -24,21 +24,10 @@ import ChPyNetSendPack import GameWorld import NetPackCommon #import PlayerGodWeapon #import PlayerHorse #import PlayerPet import ShareDefine import IpyGameDataPY import PlayerControl import PlayerPrestigeSys import PlayerBillboard import PlayerTreasure import PlayerSignDay #import PlayerGoldGift #import PlayerEquipDecompose #import PlayerCrossChampionship #import PlayerFreeGoods #import FunctionNPCCommon import PlayerActBuyCountGift import PlayerActLoginNew import PlayerActTask @@ -46,42 +35,18 @@ import ItemCommon import ItemControler import PlayerArena #import PlayerLianTi #import PlayerFaQi import PlayerTask # 功能开启需执行的函数{功能ID:执行函数, ...} 函数需返回是否激活成功, 功能开启有需要处理功能逻辑的这里增加函数调用配置即可 FuncOpenLogicDict = { ShareDefine.GameFuncID_Official:lambda curObj:PlayerPrestigeSys.DoOfficialOpen(curObj), ShareDefine.GameFuncID_Billboard:lambda curObj:PlayerBillboard.DoBillboardOpen(curObj), ShareDefine.GameFuncID_SignDay:lambda curObj:PlayerSignDay.DoSignDayOpen(curObj), ShareDefine.GameFuncID_Treasure:lambda curObj:PlayerTreasure.DoTreasureOpen(curObj), ShareDefine.GameFuncID_Arena:lambda curObj:PlayerArena.DoArenaOpen(curObj), #ShareDefine.GameFuncID_Horse:lambda curObj:PlayerHorse.DoHorseOpen(curObj), #ShareDefine.GameFuncID_GodWeapon:lambda curObj:PlayerGodWeapon.DoGodWeaponOpen(curObj), #ShareDefine.GameFuncID_Pet:lambda curObj:PlayerPet.DoPetOpen(curObj), #ShareDefine.GameFuncID_FirstGoldTip:lambda curObj:PlayerGoldGift.DoFirstGoldOpen(curObj), #ShareDefine.GameFuncID_EquipDecompose:lambda curObj:PlayerEquipDecompose.DoEquipDecomposeOpen(curObj), #ShareDefine.GameFuncID_FreeGoods:lambda curObj:PlayerFreeGoods.DoFreeGoodsOpen(curObj), #ShareDefine.GameFuncID_OSSail:lambda curObj:FunctionNPCCommon.OSSaleOpenMail(curObj), #ShareDefine.GameFuncID_AddPoint:lambda curObj:PlayerControl.DoAddPointOpen(curObj), #ShareDefine.GameFuncID_FaQi:lambda curObj:PlayerFaQi.DoFaQiOpen(curObj), #ShareDefine.GameFuncID_LianTi:lambda curObj:PlayerLianTi.DoLianTiOpen(curObj), #ShareDefine.GameFuncID_Championship:lambda curObj:PlayerCrossChampionship.DoChampionshipOpen(curObj), } ## 注意:功能开启需执行的函数 及 功能开启后升级逻辑 只会执行其中一个 ## 注意:功能开启需执行的函数 及 功能开启后升级逻辑 只会执行其中一个 ## 注意:功能开启需执行的函数 及 功能开启后升级逻辑 只会执行其中一个 # 功能开启后升级逻辑 需要处理的函数 {功能ID:执行函数, ...} #FuncLVUpLogicDict = { # ShareDefine.GameFuncID_Pet:lambda curObj:PlayerPet.DoLVUPLogic_Pet(curObj), # } def GetFuncOpenLVIpyData(funcID): return IpyGameDataPY.GetIpyGameData("FuncOpenLV", funcID) def DoFuncOpenLogic(curPlayer, finishMissionIDList=[]): def DoFuncOpenLogic(curPlayer): '''执行触发功能开启逻辑 @param finishMissionIDList: 完成的任务ID列表 ''' @@ -95,11 +60,11 @@ ipyData = ipyGameData.GetFuncOpenLVByIndex(i) funcID = ipyData.GetFuncId() limitMissionID = ipyData.GetLimitMissionID() if limitMissionID and limitMissionID in finishMissionIDList: if not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_MissionFinish % limitMissionID): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_MissionFinish % limitMissionID, 1) GameWorld.DebugLog(" 设置功能开启所需任务完成: funcID=%s,limitMissionID=%s" % (funcID, limitMissionID), curPlayer.GetPlayerID()) if limitMissionID and not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_MissionFinish % limitMissionID) \ and PlayerTask.IsTaskFinish(curPlayer, limitMissionID): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_MissionFinish % limitMissionID, 1) GameWorld.DebugLog(" 设置功能开启所需任务完成: funcID=%s,limitMissionID=%s" % (funcID, limitMissionID), curPlayer.GetPlayerID()) isOpen = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncFirstTouch, funcID, True) if isOpen: #GameWorld.DebugLog(" 功能已经开启过, 不需要重复触发开启! funcID=%s" % (funcID), curPlayer.GetPlayerID()) @@ -142,6 +107,7 @@ ## 功能是否可用 def GetFuncCanUse(curPlayer, funcID): if funcID < 0: return False return GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncFirstTouch, funcID, True) ## 获取功能限制等级(等级条件为全局) ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActivity.py
@@ -480,9 +480,6 @@ ipyData = IpyGameDataPY.GetIpyGameData('DailyAction', dailyID) if not ipyData: return # if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_DailyQuest): # #GameWorld.DebugLog("日常任务功能未开启!dailyID=%s" % dailyID) # return # 由GameServer决定 # 目前跨服PK暂不需要判断,因为跨服PK次数结算在本服,玩家可能上次未结算离线,等非匹配期间上线,也需要加上,所以暂不判断 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
@@ -43,12 +43,6 @@ return def DoBillboardOpen(curPlayer): ## 排行榜开启时需要处理的 #UpdatePlayerBillboardOnLeaveServer(curPlayer, True) # 主动同步一次榜单 #OpenServerCampaign.DoBillboardOpen(curPlayer) # 同步开服活动榜单 return def BillboardOnLogin(curPlayer): # 上线默认同步排行榜 UpdatePlayerBillboardOnLeaveServer(curPlayer) #排行榜已实时更新,故上线不再同步 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3325,41 +3325,6 @@ return IpyGameDataPY.GetFuncCfg("PKConfig", 2) #--------------------------------------------------------------------- ##获得玩家升级, 获得的属性点 # @param curPlayer 玩家实例 # @return 返回值, 获得的属性点 # @remarks 获得玩家升级, 获得的属性点 def GetLvUp_AddPoint(curPlayer): curPlayerID = curPlayer.GetID() curLV = curPlayer.GetLV() # 当前等级 addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {}) addPoint = GameWorld.GetDictValueByRangeKey(addPointDict, curLV, 0) if addPoint == None: raise Exception('玩家获得升级属性点异常, curLV = %s PlayerID = %s' % (curLV, curPlayerID)) return return int(addPoint+ GetFabaoAddPoint(curPlayer) + GetTitleAddExtraPoint(curPlayer)) def GetAllPointByLV(curPlayer): ##获取当前等级可得到属性点数 openLV = GameFuncComm.GetFuncLimitLV(ShareDefine.GameFuncID_AddPoint) curLV = curPlayer.GetLV() if curLV < openLV: return 0 # 初始点+(升级点+法宝效果)*称号效果倍数+境界点 setFreePoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 2) fabaoAddPoint = GetFabaoAddPoint(curPlayer) titleAddPoint = GetTitleAddExtraPoint(curPlayer) addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {}) for rangLVs, point in addPointDict.items(): if curLV < rangLVs[0]: continue setFreePoint += (point + fabaoAddPoint + titleAddPoint) * (min(curLV, rangLVs[1]) - rangLVs[0] + 1) #境界提升点数 setFreePoint += curPlayer.GetOfficialRank() * IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 3) return setFreePoint def GetTitleAddExtraPoint(curPlayer): # 称号额外增加玩家每级获得的灵根点 @@ -3367,23 +3332,6 @@ if titleID and curPlayer.GetDienstgradManager().GetDienstgrad(titleID): return IpyGameDataPY.GetFuncCfg("TitleAddPoint", 2) return 0 def GetFabaoAddPoint(curPlayer): #法宝额外增加玩家每级获得的灵根点 return 0 def DoAddPointOpen(curPlayer): '''加点功能开启''' beforeFreePoint = curPlayer.GetFreePoint() setFreePoint = GetAllPointByLV(curPlayer) curLV = curPlayer.GetLV() addDataDict = {'beforeFreePoint':beforeFreePoint} curPlayer.SetFreePoint(setFreePoint) DataRecordPack.DR_Freepoint(curPlayer, "AddPointOpen", setFreePoint, addDataDict) GameWorld.DebugLog(' 加点功能开启处理 beforeFreePoint=%s,curLV=%s, setFreePoint=%s'%(beforeFreePoint, curLV, setFreePoint), curPlayer.GetID()) return #--------------------------------------------------------------------- ############################################################### @@ -4757,6 +4705,13 @@ return 0 return lvIpyData.GetExp() def GetOpenMaxLV(): ## 获取游戏开放的最大等级 maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV", 1) ipyDataMgr = IpyGameDataPY.IPY_Data() realmIpyData = ipyDataMgr.GetRealmByIndex(ipyDataMgr.GetRealmCount() - 1) return min(maxLV, realmIpyData.GetLVMax()) def GetPlayerMaxLV(curPlayer): ## 获取玩家实际可升的最大等级 maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV", 1) ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEquipDecompose.py
File was deleted ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWeekParty.py
@@ -25,7 +25,6 @@ import PlayerControl import ItemControler import ChPyNetSendPack import Operate_EquipStone import DataRecordPack import PlayerGodWeapon import NetPackCommon @@ -227,7 +226,6 @@ AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Rune, itemColor, False, isSync=isSync) AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False, isSync) AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, Operate_EquipStone.GetTotalStoneLV(curPlayer), False, True, isSync) AddFeastWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodWeapon, PlayerGodWeapon.GetGodWeaponTotalLV(curPlayer), False, True, isSync) return ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -44,14 +44,6 @@ # 需要记录任务值的任务类型列表 NeedTaskValueTypeList = [RealmTaskType_UseXiantao] def DoOfficialOpen(curPlayer): #功能开启 # curRealmLV = curPlayer.GetOfficialRank() # if not curRealmLV: # DoRealmLVUpLogic(curPlayer) return True def OnLogin(curPlayer): SyncRealmInfo(curPlayer, isAll=True) if ChConfig.Def_InitOfficialRank > 0 and not curPlayer.GetOfficialRank(): ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -35,12 +35,7 @@ import datetime import time import math import ChEquip import PlayerRune import Operate_EquipStone import Operate_EquipWash import PlayerFeastRedPacket import PlayerDogz import DataRecordPack ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTask.py
@@ -311,7 +311,7 @@ if not __giveNewTask(curPlayer, taskGroup): SyncTaskInfo(curPlayer, [taskGroup]) GameFuncComm.DoFuncOpenLogic(curPlayer, [taskID]) GameFuncComm.DoFuncOpenLogic(curPlayer) return def SyncTaskInfo(curPlayer, taskGroupList=None): ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -47,11 +47,6 @@ TreasureType_HeroHigh = 12 # 英雄招募 - 高级 TreasureType_HeroScore = 13 # 英雄招募 - 积分 def DoTreasureOpen(curPlayer): ## 寻宝开启 Sync_TreasureInfo(curPlayer) return def OnTreasureLogin(curPlayer): Sync_TreasureInfo(curPlayer) return ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWeekParty.py
@@ -25,7 +25,6 @@ import PlayerControl import ItemControler import ChPyNetSendPack import Operate_EquipStone import PlayerFeastWeekParty import DataRecordPack import PlayerGodWeapon @@ -238,7 +237,6 @@ AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Rune, itemColor, False, isSync=isSync) AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False, isSync) AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, Operate_EquipStone.GetTotalStoneLV(curPlayer), False, True, isSync) AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodWeapon, PlayerGodWeapon.GetGodWeaponTotalLV(curPlayer), False, True, isSync) return ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -844,45 +844,17 @@ # 游戏功能ID定义,需确保唯一,与PyGameFuncControl.txt中FuncId一致 GameFuncID_Official = 12 # 官爵,境界 GameFuncID_Family = 15 # 战盟,仙盟 GameFuncID_Billboard = 72 # 排行榜 GameFuncID_SignDay = 81 # 签到 GameFuncID_Treasure = 99 # 寻宝 GameFuncID_Arena = 195 # 竞技场 GameFuncID_Wing = 3 # 翅膀 GameFuncID_Pet = 6 # 宠物,灵宠 GameFuncID_MagicWeapon = 7 # 法宝 GameFuncID_Horse = 8 # 坐骑 GameFuncID_GodWeapon = 20 # 神器 GameFuncID_Talent = 149 # 天赋 GameFuncID_RefineExp = 60 # 经验炼制,祈愿 GameFuncID_RefineMoney = 61 # 金币炼制,祈愿 GameFuncID_WorldLV = 71 # 世界等级 GameFuncID_Friend = 73 # 好友 GameFuncID_RefineStove = 87 # 炼丹炉 GameFuncID_EquipWash = 91 # 洗练 GameFuncID_FirstGoldTip = 128 # 首充优势提示 GameFuncID_EquipDecompose = 123 # 装备分解 GameFuncID_DailyQuest = 78 # 日常 GameFuncID_FreeGoods = 130 # 极品白拿 GameFuncID_OSSail = 132 # 开服特惠 GameFuncID_HorsePetRobBoss = 139# 骑宠争夺 GameFuncID_AddPoint = 145 # 加点功能/灵根功能 GameFuncID_LittleHelper = 146 # 小助手 GameFuncID_TJG = 147 # 脱机挂 GameFuncID_SuperGift = 150 # 超值礼包 GameFuncID_CrossRealmPK = 157 # 跨服天梯 GameFuncID_PenglaiBoss = 162 # 蓬莱仙境 GameFuncID_ZhuXianBoss = 163 # 诛仙BOSS GameFuncID_FaQi = 199 # 法器 GameFuncID_LianTi = 207 # 炼体 GameFuncID_CrossBattlefield = 208 # 跨服古神战场 GameFuncID_Championship = 210 # 排位 GameFuncID_Guaji = 228 # 挂机 # 以下为暂时无用的 GameFuncID_RunDaily = 34 # 日常跑环 GameFuncID_RunFamily = 53 # 战盟跑环 GameFuncID_ArrestTask = 7100 # 悬赏任务 GameFuncID_Wing = -1 # 翅膀 3 GameFuncID_Pet = -1 # 宠物,灵宠 6 GameFuncID_Horse = -1 # 坐骑 8 GameFuncID_GodWeapon = -1 # 神器 20 GameFuncID_OSSail = -1 # 开服特惠 132 GameFuncID_AddPoint = -1 # 加点功能/灵根功能 145 GameFuncID_LittleHelper = -1 # 小助手 146 #家族悬赏任务完成状态记录位标识 Def_ArrestOverState_BitDic = {