# -*- coding: utf-8 -*- class ReqHead(object): def __init__(self): self.fields = [ ['account_id', '', '账号id'], ['session_id', '', '会话id'], ] class RspHead(object): def __init__(self, **kwargs): self.fields = [ ['errcode', 0, '错误码'], ['errmsg', '', '错误描述'], ] for (key, value) in kwargs.items(): for i in range(0, len(self.fields)): if self.fields[i][0] == key: self.fields[i][0] = key self.fields[i][1] = value break class Union(object): def __init__(self, fields): self.doc = 'Union 联合体的访问方式:.联合体内含结构的字段名' self.fields = [['', f[0], f[1]] for f in fields] class Attr(object): def __init__(self): self.fields = [ ['attr_id', 0, '属性id'], ['type', 0, '1: 绝对值 2:百分比'], ['val', 0, '属性值'], ] class AttrDesc(object): def __init__(self): self.fields = [ ['name', '', '属性名'], ['attr_id', 0, '属性id'], ['type', 0, '1: 绝对值 2:百分比'], ['val', 0, '属性值'], ] class SystemCurrency(object): def __init__(self): self.fields = [ ['name', '', '货币名称'], ['original_price', 0, '原价'], ['discount_price', 0, '折后价'], ['discount_rate', 0, '折扣百分比(0-100)'], ['decimals', 0, '小数位数'], ['contract_address', 0, '合约地址'], ] class Page(object): def __init__(self): self.fields = [ ['total', 0, '总记录数'], ['count', 0, '当前记录数'], ['per_page', 0, '每页多少条记录'], ['current_page', 0, '当前页'], ['total_pages', 0, '总页数'], ] class Gun(object): def __init__(self): self.fields = [ ['gun_uniid', 0, '枪唯一id'], ['gun_id', 0, '枪id'], ['state', 0, '0:已购买 1:体验中'], ['gun_lv', 0, '枪等级'], ['quality', 0, '品阶'], ['durability', 0, '耐久'], ['!attr', [Attr()], '属性'], ['try_count', 0, '剩余体验次数 当state=1时才有意义'], ['lock_type', 0, '0:无锁 1:升级 2:升阶'], ['lock_time', 0, '使用锁定时间(升级或者升阶触发),单位秒,锁定期间不可战斗和做其他操作'], ['trade_locktime', 0, '出售锁定时间(升级或者升阶完成后触发),单位秒,只锁交易,其他的操作仍可进行'], ] class GunSkin(object): def __init__(self): self.fields = [ ['gun_id', 0, '枪支id'], ['skin_id', 0, '皮肤id'], ['try_expire_at', 0, '试用到期时间(utc时间)'], ] class GunTalent(object): def __init__(self): self.fields = [ ['talent_id', 0, '天赋'], ['talent_lv', 0, '天赋等级'], ] class UserInfo(object): def __init__(self): self.fields = [ ['activated', 0, '是否已激活'], ['rename_count', 0, '改名次数'], ['account_id', '', '账号id'], ['name', '', '用户名字'], ['head_id', 0, '头像id'], ['head_frame', 0, '头像框id'], ['level', 0, '等级'], ['exp', 0, '经验'], ['max_exp', 0, '经验(上限)'], ['rank', 0, '当前段位'], ['history_best_rank', 0, '历史最高段位'], ['gold', 0, '金币'], ['diamond', 0, '钻石'], ['hero_uniid', 0, '当前使用的英雄唯一ID'], ['hero_id', 0, '当前使用的英雄ID'], ['first_fight', 0, '是否是第一次战斗'], ['already_guide', 0, '是否已经引导'], ['!head_list', [0], '拥有的头像列表'], ['!head_frame_list', [0], '拥有的头像框列表'], ] class BcUserInfo(object): def __init__(self): self.fields = [ ['account', '', '账号'], ['gold', 0, '金币'], ['diamond', 0, '钻石'], ] class UserDetailInfo(object): def __init__(self): self.fields = [ ['activated', 0, '是否已激活'], ['account_id', '', '账号id'], ['name', '', '用户名字'], ['head_id', 0, '头像id'], ['head_frame', 0, '头像框id'], ['level', 0, '等级'], ['exp', 0, '经验'], ['max_exp', 0, '经验(上限)'], ['gold', 0, '金币'], ['diamond', 0, '钻石'], ['hero_uniid', 0, '当前使用的英雄唯一ID'], ['hero_id', 0, '当前使用的英雄ID'], ['current_rank', 0, '当前段位'], ['history_best_rank', 0, '历史最高段位'], ['!history_seasons', [UserHisSeason()], '历史打过的赛季列表'], ] class UserHisSeason(object): def __init__(self): self.fields = [ ['season_id', 0, '赛季'], ['total_kills', 0, '击杀总数(个人信息)'], ['game_times', 0, '游戏场次(个人信息)'], ['win_times', 0, '胜利场次(个人信息)'], ['win_rate', 0, '胜率(个人信息,百分比数值整数部分)'], ['max_kills', 0, '最高击杀(游戏信息)'], ['avg_kills', 0, '平均击杀(游戏信息)'], ['max_damage_out', 0, '最高伤害输出(游戏信息)'], ['avg_damage_out', 0, '平均伤害输出(游戏信息)'], ['star_kills', 0, '击败(5纬图-击败, 百分比数值整数部分)'], ['star_damage', 0, '伤害(5纬图-伤害, 百分比数值整数部分)'], ['star_alive', 0, '生存(5纬图-生存, 百分比数值整数部分)'], ['star_recover', 0, '治疗(5纬图-治疗, 百分比数值整数部分)'], ['star_win', 0, '胜利(5纬图-胜利, 百分比数值整数部分)'], ] class Hero(object): def __init__(self): self.fields = [ ['hero_uniid', 0, '英雄唯一id'], ['hero_id', 0, '英雄id'], ['hero_lv', 0, '英雄等级'], ['hero_tili', 0, '英雄体力'], ['state', 0, '0:已购买 1:体验中'], ['skin_id', 0, '英雄皮肤id'], ['quality', 0, '品阶'], ['skill_lv1', 0, '必杀技等级'], ['skill_lv2', 0, '躲避技能等级'], ['!attr', [Attr()], '属性'], ['try_count', 0, '剩余体验次数 当state=1时才有意义'], ['lock_type', 0, '0:无锁 1:升级 2:升阶'], ['unlock_time', 0, '使用解锁utc时间(升级或者升阶触发),锁定期间不可战斗和做其他操作,配合lock_type使用'], ['unlock_trade_time', 0, '出售解锁utc时间(升级或者升阶完成后触发),只锁交易,其他的操作仍可进行,和lock_type无关是独立的锁!!!'], ] class HeroSkin(object): def __init__(self): self.fields = [ ['skin_id', 0, '英雄皮肤id'], ['skin_state', 0, '英雄皮肤状态 0=已经购,1 = 试用状态'], ['try_expire_at', 0, '试用到期时间(utc时间)'], ] class Item(object): def __init__(self): self.fields = [ ['item_uniid', 0, '道具唯一id'], ['item_id', 0, '道具id'], ['item_num', 0, '道具数量'], ['!attr', [Attr()], '属性'], ] class AwardItem(object): def __init__(self): self.fields = [ ['item_id', 0, '道具id'], ['item_num', 0, '道具数量'], ] class Award(object): def __init__(self): self.fields = [ ['!items', [AwardItem()], '奖励物品列表'] ] class PropertyChg(object): def __init__(self): self.fields = [ ['user_info', UserInfo(), '用户信息变更(用来更新本地客户端字段(有则更新无则不变))'], ['!container_chg', [''], '容器类数据变更(bag、hero、heroSkin、gunSkin, gun)'] ] class CostInfoItem(object): def __init__(self): self.fields = [ ['item_id', 0, '购买需要消耗的道具id'], ['item_num', 0, '购买需要消耗的道具数量'], ['discount', 0, '折扣百分比(0-100)'], ] class CostInfo(object): def __init__(self): self.fields = [ ['!cost_group', [CostInfoItem()], '一组扣费项目,(金币、钻石视为道具,可能有多种价格)'], ] class PriceInfo(object): def __init__(self): self.fields = [ ['!cost_list', [CostInfo()], '扣费方式列表'], ['discount_begin_time', 0, '折扣开始时间(utc时间)'], ['discount_end_time', 0, '折扣结束时间(utc时间)'], ] class DiscountInfo(object): def __init__(self): self.fields = [ ['item_id', 0, '道具id'], ['gold_discount', 0, '金币折扣百分比(0-100)'], ['diamond_discount', 0, '钻石折扣百分比(0-100)'], ] class ItemPriceInfo(object): def __init__(self): self.fields = [ ['item_id', 0, '道具id'], ['price_info', PriceInfo(), '价格信息'], ] class Goods(object): def __init__(self): self.fields = [ ['goods_id', 0, '商品id 用于购买的时候回传'], ['item_id', 0, '配置表id'], ['price_info', PriceInfo(), '价格信息'], ['flag_icon', '', '商品标记(商品左上角的显示图标,超值、9折等)'], ['limit_type', 0, '0:不限购(这时忽略bought_times、total_buy_times) 1:每日限购 2:周限购 3:累计限购'], ['bought_times', 0, '已购买次数'], ['total_buy_times', 0, '总的可购买次数'], ] class Shop(object): def __init__(self): self.fields = [ ['shop_id', 0, '商店id'], ['!goods_list1', [Goods()], '商品列表1'], ['!goods_list2', [Goods()], '商品列表2'], ] class Mission(object): def __init__(self): self.fields = [ ['mission_id', 0, '任务id'], ['current', 0, '任务进度-当前'], ['target', 0, '任务进度-目标'], ['state', 0, '任务状态 0:可领取 1:已领取 2:未完成(不可领取)'], ['show_progress', 0, '是否显示任务进度'], ['objects!', [ ['type', '', '类型 0:武器 1:英雄'], ['id', '', 'id'], ], '悬赏任务对象列表'], ['lefttime', 0, '剩余时间(悬赏任务)'], ] class SeasonCardGiftPackage(object): def __init__(self): self.fields = [ ['package_id', 0, '礼包id'], ['item_id', 0, '礼包道具表id(目前客户端没用到先不用管)'], ['state', 0, '0:未购买 1:已购买'], ['price_info', PriceInfo(), '价格信息'], ] class SeasonCard(object): def __init__(self): self.fields = [ ['season_id', 0, '赛季id(客户端显示为Sxxx)'], ['season_begin_time', 0, '赛季开始时间(utc时间)'], ['season_end_time', 0, '赛季结束时间(utc时间)'], ['card_lv', 0, '手册等级'], ['card_exp', 0, '手册经验'], ['card_max_exp', 0, '手册经验上限'], ['buy_level_price', 0, '等级价格(钻石)'], ['!gift_packages', [SeasonCardGiftPackage()], '礼包列表'], ['!received_level_rewards1', [0], '等级解锁的奖励已领取等级列表(普通手册)'], ['!received_level_rewards2', [0], '等级解锁的奖励已领取等级列表(精英)'], ] class SeasonMission(object): def __init__(self): self.fields = [ ['state', 0, '任务状态 0:可领取 1:已领取 2:未完成(不可领取)'], ['current', 0, '当前匹配场次'], ['target', 0, '目标匹配场次'], ['target_rank', 0, '目标段位'], ] class Season(object): def __init__(self): self.fields = [ ['season_id', 0, '赛季id(客户端显示为Sxxx)'], ['rank', 0, '段位'], ['score', 0, '积分'], ['max_score', 0, '积分上限'], ['noshow_score_bar', 0, '不要显示积分条界面(xx/xx)'], ['mission', SeasonMission(), '赛季任务'], ] class RankingItem(object): def __init__(self): self.fields = [ ['ranked', 0, '排名'], ['account_id', '', '账号id'], ['address', '', '钱包地址'], ['name', '', '用户名字'], ['head_id', 0, '头像id'], ['head_frame', 0, '头像框id'], ['level', 0, '等级'], ['exp', 0, '经验'], ['gold', 0, '金币'], ['diamond', 0, '钻石'], ['hero_id', 0, '当前使用的英雄ID'], ['rank', 0, '段位'], ['score', 0, '积分'], ] class RankingList(object): def __init__(self): self.fields = [ ['type', 0, '排行榜类型 1:积分榜'], ['!ranking_list', [RankingItem()], '排行榜'], ['my_ranked', RankingItem(), '我的排名(如果ranked<1则表示自己未上榜)'], ] class RedDot(object): def __init__(self): self.fields = [ ['type', 0, '红点类型'], ['state', 0, '红点状态 0:无 1:有'], ] class TeamMember(object): def __init__(self): self.fields = [ ['account_id', '', '账号id'], ['name', '', '用户名字'], ['sex', 0, '性别'], ['head_id', 0, '头像id'], ['head_frame', 0, '头像框id'], ['level', 0, '等级'], ['exp', 0, '经验'], ['rank', 0, '段位'], ['game_times', 0, '游戏次数'], ['win_times', 0, '胜利次数'], ['kills', 0, '击杀数'], ['createtime', 0, '账号创建时间'], ] class TeamInfo(object): def __init__(self): self.fields = [ ['team_uuid', '', '队伍唯一id'], ['state', 0, '0:未开始 1:准备就绪(这时客户端进入长链接走组队逻辑)'], ['!member_list', [TeamMember()], '队伍成员列表(包含自己)'], ] class BuyableBox(object): def __init__(self): self.fields = [ ['box_id', '', '箱子id'], ] class PreSaleInfo(object): def __init__(self): self.fields = [ ['batch_id', 0, '批次id(目前客户端没用到先不用管)'], ['countdown', 0, '预售倒计时'], ['sold_num', 0, '已售数'], ['total_num', 0, '总数'], ['state', 0, '0:预售未开始(tilte文字) 1:预售准备开始(有倒计时) 2:预售开始(title文字) 3:预售结束(title)'], ['title', '', '预售文字标题描述 '], ['hint', '', '预售文字描述'], ['buyable_list!', [BuyableBox()], '可购买商品列表'], ] class PreSaleBox(object): def __init__(self): self.fields = [ ['box_id', '', '箱子id'], ['item_id', 0, '道具id(根据这个读取箱子的图片)'], ['name', '', '名字'], ['job', '', '职业'], ['avatar_url', '', '头像完整url'], ['!currency_list', [SystemCurrency()], '货币列表,(目前有且只有一个)'], ] class NftHeroDetail(object): def __init__(self): self.fields = [ ['name', '', '英雄名'], ['job', '', '职业'], ['level', 0, '等级'], ['quality', 0, '星级'], ['hp', 0, '血量'], ['speed', 0, '速度'], ['atk', 0, '攻击'], ['def', 0, '防御'], ['advanced_count', 0, '升级次数'], ['lukcy', 0, '幸运'], ['success_rate', 0, '成功率'], ['!attr', [AttrDesc()], '属性'], ] class NftGunDetail(object): def __init__(self): self.fields = [ ['name', '', '枪支名'], ['level', 0, '等级'], ['quality', 0, '星级'], ['lukcy', 0, '幸运'], ['clip_volume', 0, '弹夹数'], ['reload_time', 0, '装弹时间'], ['fire_rate', 0, '射击速度'], ['atk', 0, '攻击'], ['bullet_speed', 0, '子弹速度'], ['range', 0, '射程'], ['!attr', [AttrDesc()], '属性'], ] class NftChipDetail(object): def __init__(self): self.fields = [ ['name', '', '芯片名'], ['!attr', [AttrDesc()], '属性'], ] class TransactionRecrod(object): def __init__(self): self.fields = [ ['from', '', '来源钱包'], ['date', 0, '交易日期(utc时间)'], ] class NftDetail(object): def __init__(self): self.fields = [ ['token_id', '', 'token id'], ['owner_address', '', '所有者地址'], ['owner_name', '', '所有名字'], ['item_id', 0, '道具id'], ['type', '', 'nft类型 1:英雄 2:枪支 3:芯片 4:盲盒'], ['image', '', 'nft图片地址'], ['state', 0, '0:正常状态 1:出售中 2:出租中'], ['lock_time', 0, '锁定时间(单位秒)'], ['hide_attr', 0, '是否隐藏属性'], ['is_genesis', 0, '是否创世nft'], ['info', Union([ [NftHeroDetail(), '英雄'], [NftGunDetail(), '枪支'], [NftChipDetail(), '芯片'], ]), 'nft详细信息'], ['!transaction_recrod', [TransactionRecrod()], '交易记录'], ['!currency_list', [SystemCurrency()], '货币列表,(目前有且只有一个)'], ['mint_time', 0, '铸造时间'], ] class NftView(object): def __init__(self): self.fields = [ ['name', '', 'nft名字'], ['description', '', 'nft描述'], ['image', '', 'nft图片'], ]