hxp
2020-09-03 39821284a5372dce91658b8b9dfffc217a0f96f8
8415 【BT开发】]初始赠送 / 【后端】新号上线赠送物品
5个文件已修改
166 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -20985,6 +20985,58 @@
#------------------------------------------------------
# A7 20 创角奖励领奖状态 #tagMCCreateRoleAwardState
class  tagMCCreateRoleAwardState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GetState", c_ubyte),    # 是否已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA7
        self.SubCmd = 0x20
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA7
        self.SubCmd = 0x20
        self.GetState = 0
        return
    def GetLength(self):
        return sizeof(tagMCCreateRoleAwardState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A7 20 创角奖励领奖状态 //tagMCCreateRoleAwardState:
                                Cmd:%s,
                                SubCmd:%s,
                                GetState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.GetState
                                )
        return DumpString
m_NAtagMCCreateRoleAwardState=tagMCCreateRoleAwardState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCreateRoleAwardState.Cmd,m_NAtagMCCreateRoleAwardState.SubCmd))] = m_NAtagMCCreateRoleAwardState
#------------------------------------------------------
# A7 13 动态障碍物状态 #tagMCDynamicBarrierState
class  tagMCDynamicBarrier(Structure):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3488,6 +3488,7 @@
Def_PDict_OnlinePrizeNote = "OnlinePrizeNote%s"  # 当日在线奖励领取信息,记录信息 参数天数
Def_PDict_CreateRoleAwardState = "CreateRoleAwardState"  # 创角奖励领取记录
Def_PDict_EquipViewCacheState = "EquipViewCacheState"  # 本次上线是否同步过装备缓存
Def_PDict_DayOnlineTime = "OnlineTime"  # 当日在线时长
Def_PDict_OnlineStartTick = "OnlineStartTime"        # 在线计算时间
@@ -5312,7 +5313,8 @@
Def_RewardType_DayFreeGoldGift, #每日免费直购礼包29
Def_RewardType_ActivityPlace, #活跃放置奖励30
Def_RewardType_SkyTowerServerChallengeReward, #天星塔全服挑战层领奖31
)= range(32)
Def_RewardType_CreateRole, #创角奖励32
)= range(33)
#boss复活相关活动定义
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -20985,6 +20985,58 @@
#------------------------------------------------------
# A7 20 创角奖励领奖状态 #tagMCCreateRoleAwardState
class  tagMCCreateRoleAwardState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GetState", c_ubyte),    # 是否已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA7
        self.SubCmd = 0x20
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA7
        self.SubCmd = 0x20
        self.GetState = 0
        return
    def GetLength(self):
        return sizeof(tagMCCreateRoleAwardState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A7 20 创角奖励领奖状态 //tagMCCreateRoleAwardState:
                                Cmd:%s,
                                SubCmd:%s,
                                GetState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.GetState
                                )
        return DumpString
m_NAtagMCCreateRoleAwardState=tagMCCreateRoleAwardState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCreateRoleAwardState.Cmd,m_NAtagMCCreateRoleAwardState.SubCmd))] = m_NAtagMCCreateRoleAwardState
#------------------------------------------------------
# A7 13 动态障碍物状态 #tagMCDynamicBarrierState
class  tagMCDynamicBarrier(Structure):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -1594,6 +1594,35 @@
    return True
#---------------------------------------------------------------------
## 给奖励物品
# @param awardItemInfo 奖励物品信息,支持字典按职业给,或者直接list
# @return 布尔值
def GiveAwardItem(curPlayer, awardItemInfo):
    job = curPlayer.GetJob()
    if isinstance(awardItemInfo, dict):
        if str(job) not in awardItemInfo:
            return
        itemList = awardItemInfo[str(job)]
    else:
        itemList = awardItemInfo
    if not itemList:
        return
    # 检查背包
    needSpace = len(itemList)
    packSpace = GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
    if needSpace > packSpace:
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
        return
    # 给物品
    for itemInfo in itemList:
        itemID, itemCount = itemInfo[:2]
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
    return True
##对外接口, 交换物品
# @param curPlayer 玩家实例
#  @param curItem 当前物品
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -720,6 +720,8 @@
    SkillShell.NotifyElementSkillInfo(curPlayer)
    #Boss首杀
    GY_Query_BossFirstKill.OnPlayerLogin(curPlayer)
    #创角奖励
    Sync_CreateRoleAwardInfo(curPlayer)
    
    curPlayer.SetState(0)   # 脱机挂恢复为正常上线
    curPlayer.SetFacePic(0) # 通知数据库是否保存还是下线,做一次恢复,1为保存 0为正常下线
@@ -5383,9 +5385,30 @@
    #历史累计充值领取
    elif rewardType == ChConfig.Def_RewardType_HistoryChargeAward:
        PlayerGoldGift.OnGetHistoryRechargeAward(curPlayer, dataEx)
    #天星塔全服挑战层领奖
    elif rewardType == ChConfig.Def_RewardType_SkyTowerServerChallengeReward:
        GameLogic_SkyTower.OnGetSkyTowerServerChallengeReward(curPlayer, dataEx)
    #创角奖励
    elif rewardType == ChConfig.Def_RewardType_CreateRole:
        OnGetCreateRoleAward(curPlayer)
    return
## 领取创角奖励
def OnGetCreateRoleAward(curPlayer):
    if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CreateRoleAwardState):
        GameWorld.DebugLog("已领取创角奖励!")
        return
    if not ItemCommon.GiveAwardItem(curPlayer, IpyGameDataPY.GetFuncEvalCfg("CreateRoleAward")):
        return
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CreateRoleAwardState, 1)
    Sync_CreateRoleAwardInfo(curPlayer)
    return
## 通知创角领奖记录
def Sync_CreateRoleAwardInfo(curPlayer):
    sendPack = ChPyNetSendPack.tagMCCreateRoleAwardState()
    sendPack.Clear()
    sendPack.GetState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CreateRoleAwardState)
    NetPackCommon.SendFakePack(curPlayer, sendPack)
    return