4282 【主干】【1.1.0】【后端】新增物品效果:获得X法宝X经验
4280 【主干】【1.1.0】【后端】开服触发成就类型
9个文件已修改
1个文件已添加
209 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipSuitCompose.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_AddMagicWeaponUpExp.py 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1640,6 +1640,7 @@
NeedResetSuccessTypeList = [
                            SuccType_InlayStone1,SuccType_InlayStone2,SuccType_EquipSuit,SuccType_InlayRune,
                            SuccType_EquipColorItem,SuccType_EquipArmor,SuccType_EquipWeapon,SuccType_DogzEquipPlus,
                            SuccType_HorseAllLV, SuccType_EquipPlusLV,SuccType_PetClassLV,
                            ]
# 聊天类型, 从100开始, 前100个给c++用
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -419,7 +419,7 @@
Def_Effect_AddFBCnt = 233   # 增加副本可进入次数
Def_Effect_AddKillBossCnt = 234   # 增加BOSS可击杀次数
Def_Effect_DogzEquipPlusExp = 235   # 神兽强化材料经验效果,A值基础经验,B值双倍强化消耗仙玉
Def_Effect_AddMagicWeaponUpExp = 236   # 增加法宝升星经验 A值法宝ID B值X经验
#----以下未使用或代码依然存在的---
Def_Effect_ItemGiveGongXun = 1920        #使用道具给予功勋
Def_Effect_ItemGiveHonorPoint = 1922       #使用道具给予荣誉积分
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStone.py
@@ -163,10 +163,10 @@
    #同步客户端
    Sycn_StoneHoleInfo(curPlayer, [equipIndex])
    #成就
    __DoStoneSuccess(curPlayer)
    DoStoneSuccess(curPlayer)
    return
def __DoStoneSuccess(curPlayer):
def DoStoneSuccess(curPlayer):
    PlayerSuccess.ResetSuccessByType(curPlayer, ShareDefine.SuccType_InlayStone1)
    PlayerSuccess.ResetSuccessByType(curPlayer, ShareDefine.SuccType_InlayStone2)
    totalStoneLV = 0
@@ -358,7 +358,7 @@
    #同步客户端
    Sycn_StoneHoleInfo(curPlayer, [equipIndex])
    
    __DoStoneSuccess(curPlayer)
    DoStoneSuccess(curPlayer)
    return
def __CheckStoneHoleCanUse(curPlayer, equipClassLV, holeIndex):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipSuitCompose.py
@@ -99,7 +99,7 @@
    ChEquip.RefreshPlayerEquipAttribute(curPlayer)
    PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
    
    __DoSuiteSuccess(curPlayer)
    DoSuiteSuccess(curPlayer)
    GameWorld.DebugLog('    套装升级成功 equipPlace=%s,suiteType=%s, tagSuitLV=%s, useItemList=%s'%(equipPlace, suiteType, tagSuitLV, useItemList))
    
    # 合成结果通知
@@ -209,7 +209,7 @@
    ChEquip.RefreshPlayerEquipAttribute(curPlayer)
    PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
    
    __DoSuiteSuccess(curPlayer)
    DoSuiteSuccess(curPlayer)
    return
def CheckEquipSuitReduce(curPlayer, equipIndex):
@@ -235,7 +235,7 @@
def __DoSuiteSuccess(curPlayer):
def DoSuiteSuccess(curPlayer):
    PlayerSuccess.ResetSuccessByType(curPlayer, ShareDefine.SuccType_EquipSuit)
    equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
    groupCnt = 0 #2阶强化防具套装件数
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -709,6 +709,7 @@
                            ChConfig.Def_Effect_ResetBossKillCnt:"Item_ResetBossKillCnt", # 重置boss击杀疲劳
                            ChConfig.Def_Effect_AddFBCnt:"Item_AddFBCnt", # 增加副本可进入次数
                            ChConfig.Def_Effect_AddKillBossCnt:"Item_AddKillBossCnt", # 增加BOSS可击杀次数
                            ChConfig.Def_Effect_AddMagicWeaponUpExp:"Item_AddMagicWeaponUpExp", # 增加法宝升星经验
                            #ChConfig.Def_PhoneVip_EffID:"Item_AddPhoneVip", # 手机VIP物品卡
                            #ChConfig.Def_Effect_AddZhenQiByTimes:"Item_AddZhenQiByTimes", # 增加真气按一天使用次数减少
                            #ChConfig.Def_Effect_AddPrestige:"Item_AddPrestige",  # 给人物威望
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_AddMagicWeaponUpExp.py
New file
@@ -0,0 +1,36 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package UseItem.Item_AddMagicWeaponUpExp
#
# @todo:增加法宝升星经验
# @author xdh
# @date 2018-10-22
# @version 1.0
#
# 详细描述: 增加法宝升星经验
#
#-------------------------------------------------------------------------------
#"""Version = 2018-10-22 12:00"""
#-------------------------------------------------------------------------------
import PlayerControl
import PlayerMagicWeapon
def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
    ##批量使用物品
    itemTypeID = curRoleItem.GetItemTypeID()
    curEff = curRoleItem.GetEffectByIndex(0)
    mwID = curEff.GetEffectValue(0)
    addExp = curEff.GetEffectValue(1) * useCnt
    isActive = PlayerMagicWeapon.GetIsActiveMagicWeapon(curPlayer, mwID)
    if not isActive:
        PlayerControl.NotifyCode(curPlayer, 'UseItem_2', [mwID, itemTypeID])
        return False
    PlayerMagicWeapon.AddMagicWeaponUpExp(curPlayer, mwID, addExp)
    PlayerControl.NotifyCode(curPlayer, 'AddActivityCount_1', [itemTypeID, mwID, addExp])
    return True, useCnt
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerDogz.py
@@ -586,6 +586,27 @@
        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_DogzEquipPlus, totalPlusLv)
    return
def GetFightDogzTotalPlusLv(curPlayer):
    #出战的神兽装备总强化等级
    totalPlusLv = 0
    dogzEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
    equipPackCount = dogzEquipPack.GetCount()
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for dogzIndex in xrange(ipyDataMgr.GetDogzCount()):
        if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, dogzIndex):
            continue
        ipyData = ipyDataMgr.GetDogzByIndex(dogzIndex)
        dogzID = ipyData.GetDogzID()
        startIndex = (dogzID - 1) * DogzEquipCount
        for equipIndex in range(startIndex, startIndex + DogzEquipCount):
            if equipIndex < 0 or equipIndex >= equipPackCount:
                break
            curEquip = dogzEquipPack.GetAt(equipIndex)
            if curEquip.IsEmpty():
                continue
            curPlusLV = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetDogzEquipPlus, 0)
            totalPlusLv += curPlusLV
    return totalPlusLv
# 助战神兽技能属性,必须在 SetDogzIsHelpFight后调用
def CalcDogzBattleSkillAttr(curPlayer):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
@@ -799,7 +799,7 @@
        succCnt = ipyDataMgr.GetXBXZCount()
        if not succCnt:
            return
        maxSuccid = ipyDataMgr.GetSuccessByIndex(succCnt-1).GetID()
        maxSuccid = ipyDataMgr.GetXBXZByIndex(succCnt-1).GetID()
        recordIndexList = range(maxSuccid / 31+1)
            
    succFARPack = ChPyNetSendPack.tagMCXBXZAwardRecordList()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -37,6 +37,13 @@
import datetime
import time
import math
import ChEquip
import PlayerRune
import Operate_EquipStone
import Operate_EquipWash
import Operate_EquipSuitCompose
import PlayerDogz
import QuestCommon
## 获取成就字典信息值
@@ -234,22 +241,50 @@
        正式上线后,成就的修改或者增加,一般是增加新成就,则需要对老玩家成就版本进行校正,检查成就完成情况
        成就版本号递增
    '''
    Versions = 1 #版本号,往上增加
    Versions = 2 #版本号,往上增加
    
    # 上线需要检查老玩家成就完成情况类型{成就类型:维护版本号, ...}
    NeedCheckSuccTypeDict = {
                            ShareDefine.SuccType_GetMagicWeapon:1,
                            ShareDefine.SuccType_PassRuneTower:1,
                            ShareDefine.SuccType_GetMagicWeapon:2,
                            ShareDefine.SuccType_PassRuneTower:2,
                            ShareDefine.SuccType_GodWeapon:2,
                            ShareDefine.SuccType_HorseAllLV:2,
                            ShareDefine.SuccType_EquipPlusLV:2,
                            ShareDefine.SuccType_EquipColorItem:2,
                            ShareDefine.SuccType_EquipArmor:2,
                            ShareDefine.SuccType_EquipWeapon:2,
                            ShareDefine.SuccType_InlayRune:2,
                            ShareDefine.SuccType_RuneLvUp:2,
                            ShareDefine.SuccType_RealmlvUp:2,
                            ShareDefine.SuccType_PetClassLV:2,
                            ShareDefine.SuccType_InlayStone1:2,
                            ShareDefine.SuccType_InlayStone2:2,
                            ShareDefine.SuccType_XJMJGetExp:2,
                            ShareDefine.SuccType_EquipWashLV1:2,
                            ShareDefine.SuccType_EquipWashLV2:2,
                            ShareDefine.SuccType_EquipWashLV3:2,
                            ShareDefine.SuccType_EquipWing:2,
                            ShareDefine.SuccType_MWSkillUp:2,
                            ShareDefine.SuccType_EquipSuit:2,
                            ShareDefine.SuccType_FamilyTechLV:2,
                            ShareDefine.SuccType_AlchemyLV:2,
                            ShareDefine.SuccType_VIPLV:2,
                            ShareDefine.SuccType_StoneTotalLV:2,
                            ShareDefine.SuccType_XBXZ:2,
                            ShareDefine.SuccType_DogzBattle:2,
                            ShareDefine.SuccType_DogzEquipPlus:2,
                            ShareDefine.SuccType_MainTaskNode:2,
                             }
    
    curCheckVersion = GetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion)
    GameWorld.DebugLog("更新老玩家上线检查成就curCheckVersion=%s" % (curCheckVersion))
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for succType, version in NeedCheckSuccTypeDict.items():
        
        if curCheckVersion >= version:
            continue
        if succType == ShareDefine.SuccType_GetMagicWeapon:
            ipyDataMgr = IpyGameDataPY.IPY_Data()
            for i in xrange(ipyDataMgr.GetTreasureCount()):
                treasureIpyData = ipyDataMgr.GetTreasureByIndex(i)
                magicWeaponID = treasureIpyData.GetID()
@@ -262,7 +297,97 @@
        elif succType == ShareDefine.SuccType_PassRuneTower:
            passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
            DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PassRuneTower, 1, [passlv])
        elif succType == ShareDefine.SuccType_GodWeapon:
            maxType = ipyDataMgr.GetGodWeaponByIndex(ipyDataMgr.GetGodWeaponCount()-1).GetType()
            for i in xrange(1, maxType + 1):
                weaponLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodWeaponLV % i)
                UptateSuccessProgress(curPlayer, succType, weaponLV, [i])
        elif succType == ShareDefine.SuccType_HorseAllLV:
            ResetSuccessByType(curPlayer, succType)
            for i in xrange(ipyDataMgr.GetHorseCount()):
                ipyData = ipyDataMgr.GetHorseByIndex(i)
                index = ipyData.GetHorseID()
                lv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Horser_LV % index, 0, ChConfig.Def_PDictType_Horse)
                if not lv:
                    continue
                for rlv in xrange(1, lv+1):
                    DoAddSuccessProgress(curPlayer, succType, 1, [index, rlv])
        elif succType == ShareDefine.SuccType_EquipPlusLV:
            ResetSuccessByType(curPlayer, succType)
            for pType, indexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
                for i in indexList:
                    equipPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, pType, i)
                    for pluslv in xrange(1, equipPartStarLV+1):
                        DoAddSuccessProgress(curPlayer, succType, 1, [pluslv])
        elif succType in [ShareDefine.SuccType_EquipColorItem, ShareDefine.SuccType_EquipArmor, ShareDefine.SuccType_EquipWeapon, ShareDefine.SuccType_EquipWing]:
            DoEquipSuccessLogic(curPlayer)
        elif succType in [ShareDefine.SuccType_InlayRune, ShareDefine.SuccType_RuneLvUp]:
            PlayerRune.DoRuneSuccessLogic(curPlayer)
        elif succType == ShareDefine.SuccType_RealmlvUp:
            UptateSuccessProgress(curPlayer, succType, curPlayer.GetOfficialRank())
        elif succType == ShareDefine.SuccType_PetClassLV:
            ResetSuccessByType(curPlayer, succType)
            petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
            for petDataIndex in range(petDataPack.GetCount()):
                petItem = petDataPack.GetAt(petDataIndex)
                if petItem.IsEmpty():
                    continue
                petNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
                classLV = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
                for lv in xrange(classLV+1):
                    DoAddSuccessProgress(curPlayer, succType, 1, [petNPCID, lv+1])
        elif succType in [ShareDefine.SuccType_InlayStone1, ShareDefine.SuccType_InlayStone2, ShareDefine.SuccType_StoneTotalLV]:
            Operate_EquipStone.DoStoneSuccess(curPlayer)
        elif succType == ShareDefine.SuccType_XJMJGetExp:
            expPointRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_TotalFightExpPoint)
            DoAddSuccessProgress(curPlayer, succType, 1, [expPointRecord])
        elif succType in [ShareDefine.SuccType_EquipWashLV1,ShareDefine.SuccType_EquipWashLV2,ShareDefine.SuccType_EquipWashLV3]:
            Operate_EquipWash.EquipWashSuccess(curPlayer)
        elif succType == ShareDefine.SuccType_MWSkillUp:
            skillManager = curPlayer.GetSkillManager()
            for i in range(0, skillManager.GetSkillCount()):
                curSkill = skillManager.GetSkillByIndex(i)
                if curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill,ChConfig.Def_SkillFuncType_FbSPSkill]:
                    curSkillLV = curSkill.GetSkillLV()
                    UptateSuccessProgress(curPlayer, succType, curSkillLV, [curSkill.GetSkillTypeID()])
        elif succType == ShareDefine.SuccType_EquipSuit:
            Operate_EquipSuitCompose.DoSuiteSuccess(curPlayer)
        elif succType == ShareDefine.SuccType_FamilyTechLV:
            techNeedLVDict = IpyGameDataPY.GetFuncEvalCfg('FamilyTechNeedLV', 1, {})
            techIDList = techNeedLVDict.keys()
            for techID in techIDList:
                techLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTechLV % techID)
                UptateSuccessProgress(curPlayer, succType, techLV, [techID])
        elif succType == ShareDefine.SuccType_AlchemyLV:
            alchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV)
            UptateSuccessProgress(curPlayer, succType, alchemyLV)
        elif succType == ShareDefine.SuccType_VIPLV:
            DoAddSuccessProgress(curPlayer, succType, 1, [curPlayer.GetVIPLv()])
        elif succType == ShareDefine.SuccType_XBXZ:
            ResetSuccessByType(curPlayer, succType)
            for i in xrange(ipyDataMgr.GetXBXZCount()):
                ipyData = ipyDataMgr.GetXBXZByIndex(i)
                if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_XBXZAwardRecord, ipyData.GetID()):
                    DoAddSuccessProgress(curPlayer, succType, 1, [ipyData.GetMWID()])
        elif succType == ShareDefine.SuccType_DogzBattle:
            for i in xrange(ipyDataMgr.GetDogzCount()):
                ipyData = ipyDataMgr.GetDogzByIndex(i)
                if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
                    DoAddSuccessProgress(curPlayer, succType, 1, [ipyData.GetDogzID()])
        elif succType == ShareDefine.SuccType_DogzEquipPlus:
            ResetSuccessByType(curPlayer, succType)
            DoAddSuccessProgress(curPlayer, succType, PlayerDogz.GetFightDogzTotalPlusLv(curPlayer))
        elif succType == ShareDefine.SuccType_MainTaskNode: #只能处理主线任务
            succInfoList = GetSuccDataMng().GetSuccDataByType(succType)
            for succData in succInfoList:
                missionID = succData.condition[0]
                if QuestCommon.GetHadFinishMainMission(curPlayer, missionID):
                    DoAddSuccessProgress(curPlayer, succType, 1, [missionID])
        
    SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion, Versions)
    GameWorld.DebugLog("更新老玩家上线检查成就updCheckVersions=%s" % (Versions))
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1640,6 +1640,7 @@
NeedResetSuccessTypeList = [
                            SuccType_InlayStone1,SuccType_InlayStone2,SuccType_EquipSuit,SuccType_InlayRune,
                            SuccType_EquipColorItem,SuccType_EquipArmor,SuccType_EquipWeapon,SuccType_DogzEquipPlus,
                            SuccType_HorseAllLV, SuccType_EquipPlusLV,SuccType_PetClassLV,
                            ]
# 聊天类型, 从100开始, 前100个给c++用