class Combatant(ClassObject): key = String(desc='唯一key') base = String(desc='base key') name = String(desc='名字') res_id = String(desc='res_id,资源id') rarity = Integer(desc='rarity,品阶') str = Integer(desc='str,力量', default=0) dex = Integer(desc='dex,敏捷', default=0) int = Integer(desc='int,智力', default=0) con = Integer(desc='con,体质', default=0) move_speed = Number(desc='移动速度', default=0) atk_speed = Number(desc='攻击速度', default=0) p_atk = Integer(desc='物理攻击', default=0) m_atk = Integer(desc='魔法攻击', default=0) hp = Integer(desc='血量', default=0) p_def = Integer(desc='物理防御', default=0) res = Integer(desc='魔法抵抗', default=0) pen = Integer(desc='物理穿透', default=0) cond_dec = Integer(desc='被控制衰减', default=0) cri = Integer(desc='暴击', default=0) eva = Integer(desc='闪避', default=0) attr_res = Dict(Integer(), desc='属性抗性') cond_res = Dict(Integer(), desc='控制抗性') field_effect_immune = List(String(), desc='场景效果免疫') cri_damage = Float(desc='暴击伤害', default=0.0) base_gauge = Integer(desc='技能槽', default=0) level = Integer(desc='等级', default=0) aggro = Integer(desc='仇恨值', default=0) cri_rate = Float(desc='暴击率', default=0.0) p_immune = Float(desc='物攻伤害减免', default=0.0) m_immune = Float(desc='法攻伤害减免', default=0.0) cond_res_all = Float(desc='全部控制抗性', default=0.0)
class Equipment(ClassObject): key = String(desc='인스턴스 키') class_key = String(desc='아이템의 클래스. Item 의 key') primary_stat = Dict(Integer(), desc='주스탯') primary_option = List(Dict(Integer()), desc='주옵션 { str: 100}, {hp: 200}') sub_option = List(Dict(Integer()), desc='보조 옵션. 주 스탯이 아닌 보조 옵션들') skill_option = String(desc='아이템의 붙는 스킬 옵션 키') strengthen = Integer(desc='현재 장비의 강화도') remodeling_chance = Integer(desc='아이템 개조 횟수') remodeling_type = String(desc='리모델링 타입 primay / sub') remodeling_slot = Integer(desc='옵션 수정 위치 { 주/보조 옵션 : 슬롯 위치') curse = Boolean(default=False, desc='아이템 저부 여부 True 일 경우 저주 상태') bless = Boolean(default=False, desc='아이템의 축복 여부 True 일 경우 축복 상태') lock = Boolean(desc='아이템 잠금 여부') equipped = String(desc='이 아이템을 장착한 히어로의 key. 비 장착 중이면 None') equipped_preset_key = List(String(), desc='장착된 프리셋의 키. [2, 1, ...]') time_add = Integer(default=0, desc='획득 시각. utc.') aofei_bind = Boolean( default=False, desc='绑定' ) #add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-04-06 for 增加道具流通属性 time_tradable = Integer( default=0, desc='可交易的保护时间' ) #add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-03-17 for 增加道具流通属性
class MasterHeroTrainingRow(ClassObject): key = String(desc='연성 고유키') base = String(desc='CombatantsBase의 키') level = Integer(desc='영웅 레벨') # modify by Yoray, JoyGames, ALPHA GROUP CO.,LTD, at 2017-05-10 # detail: 修改战斗力计算公式 # >>>>>>>>>>>>> atk_speed = Number(desc='공격속도') # <<<<<<<<<<<<< p_atk = Integer(desc='물리공격력') m_atk = Integer(desc='마법공격력') hp = Integer(desc='체력') p_def = Integer(desc='물리방어') res = Integer(desc='마법저항') pen = Integer(desc='물리관통') cond_dec = Integer(desc='상태이상 지속 시간 감소') attr_res = Dict(Integer(), desc='속성 저항. 지수화풍흑무.(e_res, w_res, f_res, a_res, d_res, n_res)') cond_res = Dict(Integer(), desc='상태이상 저항(sstun_res 스턴 저항,sleep_res 수면 저항,petrify_res 석화 저항,...)') cri = Integer(desc='치명타') eva = Integer(desc='물리 회피') def get_index_meta(self): return { 'get_training_info': (self.base, self.level) }
class MasterTransformStrengthenRow(ClassObject): key = String(desc='master TransformStrengthen key') base = String(desc='변신의 대상이 되는 소환수의 키 CombatantsBase 의 키') level = Integer(desc='변신의 강화 단계') scroll = String(desc='해당 변신 의 주문서') scroll_count = Integer(desc='주문서 필요 개수') ring = String(desc='해당 변신 의 주문 반지') ring_count = Integer(desc='반지 필요 개수') atk_speed = Integer(desc='攻速') p_atk = Integer(desc='物攻') m_atk = Integer(desc='法攻') hp = Integer(desc='血量') p_def = Integer(desc='物防') res = Integer(desc='法抗') pen = Integer(desc='物穿') cond_dec = Integer(desc='被控制衰减') attr_res = Dict(Integer(), desc='属性抗性') cond_res = Dict(Integer(), desc='控制抗性') cri = Integer(desc='暴击') eva = Integer(desc='闪避') def get_index_meta(self): """ 인덱싱에 사용할 메타 정보 반환 :return: dict: {인덱스 이름: 인덱스 컬럼 리스트, ...} """ return {'base': (self.base, self.level)}
class BattleFieldRegisterInfo(ClassObject): season_key = Integer(desc='赛季') field_id = String(desc='区域id') register_clan_dict = Dict(Integer(), desc='报名的公会字典, clan_id => register time') is_pass_result = Boolean(desc='是否出结果', default=False) pass_clan_dict = Dict(Class(BattleFieldRegisterClan), desc='通过的公会字典, clan_id => clan info')
class Heroes(ClassObject): user_id = String(desc='히어로를 소유한 유저의 id') active = String(desc='현재 선택된 디폴트 히어로. 히어로의 class_key.') heroes = List(String(), desc='히어로 목록. [영웅 class_key, ...]') skins = Dict( Dict(Integer()), desc="英雄皮肤" ) #add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-07-19 for 英雄装备服装,不存在英雄时临时保存
class BattleFieldBlockDefenseInfo(ClassObject): user_heroes = Dict(String(), desc='玩家防守英雄列表, server_user_id => hero class key') user_pets = Dict(List(String(), desc='pet base key list'), desc='玩家召唤兽列表, server_user_id => pet base key list') defense_list = List(Class(BattleFieldDefenseUnitBase), desc='防守列表') npc_party_key = Integer(desc='中立怪组id', default=-1) neutral_reward = Dict(Integer(), desc='中立怪奖励信息') defense_log_list = List(Class(BFBlockDefenseLog), desc='防守变更日志列表')
class MasterCombatantsRow(ClassObject): key = String(desc='唯一key') base = String(desc='base key') name = String(desc='名字') res_id = String(desc='res_id,资源id') rarity = Integer(desc='rarity,品阶', default=0) str = Integer(desc='str,力量', default=0) dex = Integer(desc='dex,敏捷', default=0) int = Integer(desc='int,智力', default=0) con = Integer(desc='con,体质', default=0) move_speed = Number(desc='移动速度', default=0) atk_speed = Number(desc='攻击速度', default=0) p_atk = Integer(desc='物理攻击', default=0) m_atk = Integer(desc='魔法攻击', default=0) hp = Integer(desc='血量', default=0) p_def = Integer(desc='物理防御', default=0) res = Integer(desc='魔法抵抗', default=0) pen = Integer(desc='物理穿透', default=0) cond_dec = Integer(desc='被控制衰减', default=0) cri = Integer(desc='暴击', default=0) eva = Integer(desc='闪避', default=0) attr_res = Dict(Integer(), desc='属性抗性') cond_res = Dict(Integer(), desc='控制抗性') field_effect_immune = List(String(), desc='场景效果免疫') def clone_to_combatant(self): clone = Combatant() clone.key = self.key clone.base = self.base clone.name = self.name clone.res_id = self.res_id clone.rarity = self.rarity clone.str = self.str if self.str else 0 clone.dex = self.dex if self.dex else 0 clone.int = self.int if self.int else 0 clone.con = self.con if self.con else 0 clone.move_speed = self.move_speed if self.move_speed else 0 clone.atk_speed = self.atk_speed if self.atk_speed else 0 clone.p_atk = self.p_atk if self.p_atk else 0 clone.m_atk = self.m_atk if self.m_atk else 0 clone.hp = self.hp if self.hp else 0 clone.p_def = self.p_def if self.p_def else 0 clone.res = self.res if self.res else 0 clone.pen = self.pen if self.pen else 0 clone.cond_dec = self.cond_dec if self.cond_dec else 0 clone.cri = self.cri if self.cri else 0 clone.eva = self.eva if self.eva else 0 if self.attr_res: for k, v in self.attr_res.iteritems(): clone.attr_res[k] = v if self.cond_res: for k, v in self.cond_res.iteritems(): clone.cond_res[k] = v if self.field_effect_immune: clone.field_effect_immune += self.field_effect_immune return clone
class BattleFieldClanMissionList(ClassObject): clan_id = String(desc='clan_id') season_key = Integer(desc='season_key') mission = Dict( Dict(Class(BattleFieldClanMission)), desc='公会指示, {field_id:{block_id str:BattleFieldClanMission, ...}, ...}' ) update_dt = Integer(desc='更新时间')
class MasterTeamBossTraining(ClassObject): key = String(desc='part key') atk_speed = Integer(desc='atk speed') p_atk = Integer(desc='physical atk') m_atk = Integer(desc='magical atk') hp = Integer(desc='hp') p_def = Integer(desc='physical def') res = Integer(desc='magical def') pen = Integer(desc='pen') cond_dec = Integer(desc='cond dec') attr_res = Dict(Integer(), desc='attr res') cond_res = Dict(Integer(), desc='cond res') cri = Integer(desc='critical') eva = Integer(desc='evade')
class MasterItem(ClassObject): key = String(desc='아이템의 키(id)') name = String(desc='이름') type = String(desc='아이템 종류. 무기/방어구/장신구/기술서/재화/재료/영혼석/물약') equip_pos = String( desc='아이템 장착 위치. weapon/helm/armor/cloak/gloves/boots/ear/ring') rarity = Integer(desc='희구도. 별개수.') quality = String(desc='아이템 등급. 고급/일반=high/general') option = String(desc='장비품의 옵션 정보') set_option = String(desc='장비품의 세트 옵션 정보') owner_class = String(desc='사용 가능한 직업군. Combatant 의 key.') resource_id = String(desc='리소스 id') int_attr = Dict(Integer(), desc='정수로 표시되는 아이템 속성 값. {p_atk: 100, level: 2, ...}') str_attr = Dict(String(), desc='문자로 표시되는 아이템 속성 값. {key: 커츠, target: 천재, ...}') stage = List(String(), desc='출현 스테이지. [1-1, 2-3, ...]') strengthen_rate = String(desc='아이템 강화도 확률 아이디') strengthen_stat = String(desc='아이템 강화도 스텟 아이디') desc = String(desc='아이템 설명') price = Integer(desc='판매 가격') imprint_exp = Integer(desc='각인 경험치') # add by Yoray, JoyGames, ALPHA GROUP CO.,LTD, at 2017-03-29 # detail: 装备初始属性随机相关 aofei_int_type = String(desc='装备随机属性类型') aofei_int_min = Integer(desc='装备随机属性下限') aofei_int_max = Integer(desc='装备随机属性上限') # >>add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-04-06 for 增加道具流通属性 aofei_tradable = Boolean(desc='可交易') aofei_start_price = Integer(desc='初始均价') aofei_time_tradable = Integer(desc='交易间隔') aofei_look_time_trade = Integer(desc='公示期') aofei_order_type = String(desc='交易行分类') aofei_review_time = Integer(desc="审核时间(秒)") # <<add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-04-06 for 增加道具流通属性 def can_equip_by_hero(self, hero_class_key): return self.owner_class in ['Common', hero_class_key] def get_index_meta(self): """ 인덱싱에 사용할 메타 정보 반환 :return: dict: {인덱스 이름: 인덱스 컬럼 리스트, ...} """ return { 'type': (self.type, ) # 스킬 보유 캐릭터 기준 인덱싱 }
class BattleFieldFieldSnapshot(ClassObject): season_key = Integer(desc='赛季') field_id = String(desc='区域id') block_dict = Dict(Class(BattleFieldBlockSnapshot), desc='区块快照信息字典, block_id str => snap info') refresh_season_step = String(desc='刷新的阶段') refresh_time = Integer(desc='刷新时间', default=0)
class BTSynInitTeamBoss(ProtocolBase): rand_seed = Integer(desc='随机种子') random_seed = Integer(desc='随机种子') ctrl_server_user_id = String(desc='当前控制的玩家server user id') func_type = String(desc='玩法类型') team_boss = Class(TeamBossBattleUnitBoss, desc='boss信息') hero_dict = Dict(Class(TeamBossBattleUnitHero), desc='成员参战英雄信息')
class FortBeforeBattleDefense(ClassObject): point_used_hero_slot = Dict(List(Integer(), desc='slot no list'), desc='point_id => slot no list') point_used_pet_slot = Dict(List(Integer(), desc='slot no list'), desc='point_id => slot no list') point_hero_defense = Dict(Dict(Class(FortDefenseHeroSlotInfo), desc='str_slot_no => hero info'), desc='point_id => info dict') point_pet_defense = Dict(Dict(Class(FortDefensePetSlotInfo), desc='str_slot_no => pet info'), desc='point_id => info dict') user_hero_defense = Dict(Dict(Class(FortPointSlotPair), desc='hero class key => point slot pair'), desc='server user id => hero dict') user_pet_defense = Dict(Dict(Class(FortPointSlotPair), desc='pet base key => point slot pair'), desc='server user id => pet dict')
class TeamBossSecondDetail(ClassObject): is_finish = String(desc='是否已结束', default=True) battle_unique_id = String(desc='战斗唯一id', default=None) attack_part = String(desc='当前攻击的部位key', default=None) battle_start_time = Integer(desc='战斗开始时间', default=0) battle_real_start_time = Integer(desc='战斗实际开始时间', default=0) battle_end_time = Integer(desc='战斗结束时间', default=0) part_dict = Dict(Class(TeamBossPartDetail), desc='boss副本详细信息')
class AlphaFortWarBBDefense(ClassObject): last_reset_time = Integer(desc='重置时间') point_used_hero_slot = Dict(List(Integer(), desc='slot no list'), desc='point_id => slot no list') point_used_pet_slot = Dict(List(Integer(), desc='slot no list'), desc='point_id => slot no list') point_hero_defense = Dict(Dict(Class(AlphaFortDefenseHeroSlotInfo), desc='str_slot_no => hero info'), desc='point_id => info dict') point_pet_defense = Dict(Dict(Class(AlphaFortDefensePetSlotInfo), desc='str_slot_no => pet info'), desc='point_id => info dict') user_hero_defense = Dict(Dict(Class(AlphaFortWarPointSlotPair), desc='hero class key => point slot pair'), desc='server user id => hero dict') user_pet_defense = Dict(Dict(Class(AlphaFortWarPointSlotPair), desc='pet base key => point slot pair'), desc='server user id => pet dict')
class BattleFieldFortDefenseInfo(ClassObject): rest_defense_count = Integer(desc='剩余防守者数量', default=0) is_battle_data_init = Boolean(desc='战斗数据是否初始化', default=False) battle_data_init_time = Integer(desc='战斗数据初始化时间', default=0) point_detail_dict = Dict(Class(FortPointDetail), desc='据点信息, point_id => info') before_battle_defense = Class(FortBeforeBattleDefense, desc='战前防守阵容信息') facility_info_list = List(Class(FortFacility), desc='公会建筑信息') defense_log_list = List(Class(BFBlockDefenseLog), desc='防守变更日志列表')
class ItemBase(ClassObject): type = String(desc='아이템의 타입 default=None, view 용으로 조회시 해당 아이템이 랜덤 지급인지 구분', default=None) item_class_key = String(desc='아이템의 클래스 키') count = Integer(desc='아이템 수량') extra = Integer(desc='아이템 추가 정보, view 용으로 조회시 아이템을 얻을 수 있는 갯수로 표시 ') options_trade = Dict( String(), desc="装备属性值" ) #add by ZHM, JoyGames, ALPHA GROUP CO.,LTD, at 2017-04-06 for 交易行邮件装备固定属性
class Asset(ClassObject): """ 유저의 현재 자산 정보 """ common = Dict(Integer(), desc='소유한 자산 목록. 아데나/다이아.... {아이템 class key: 개수, ...}') ap = Integer(default=0, desc='ap. 이 값에 ap_timestamp 시각 부터 재생된 값을 더해야 현재 ap 가 나온다') ap_timestamp = Integer(default=0, desc='마지막 갱신 시각. utc. 이 시각 이후로 값을 재생시킨다')
class BattleFieldClanInfo(ClassObject): clan_id = String(desc='公会id') season_key = Integer(desc='赛季') register_field_id = String(desc='报名的区域id') register_time = Integer(desc='报名时间') own_blocks = List(Integer(), desc='拥有的地块编号列表') is_give_reward = Boolean(desc='是否已给奖励', default=False) reward_items = Dict(Integer(), desc='奖励内容') reward_time = Integer(desc='给奖励时间', default=0) log_list = List(Class(BattleFieldClanLog), desc='公会相关日志列表')
class BattleFieldUserInfo(ClassObject): user_id = String(desc='user_id') server_user_id = String(desc='server_user_id') season_key = Integer(desc='season_key') defense_info_dict = Dict( Class(BattleFieldUsedPetInfo), desc='使用的英雄|召唤兽对应的区块信息 {class_key | base_key:BattleUsedPetInfo') last_attack_time = Integer(desc='上一次攻击时间', default=0) last_attack_block_id = Integer(desc='上一次攻击区块id', default=-1) last_attack_point_id = String(desc='上一次进攻要塞据点id')
class Inventory(ClassObject): user_id = String(desc='소유 유저의 id') server_user_id = String(desc='server_user_id') equipment = Dict(Class(Equipment), desc='소유한 장비 목록. {장비 인스턴스 id: 장비 인스턴스 정보, ...}') stackable = Dict( Class(Stackable), desc='소유한 누적성 아이템 목록. 999개 제한 {아이템 class_key : 아이템 정보, ...}') auto_exchange_version = Integer(default=0, desc='자동 아이템 변환 처리 버전. (연성 재료 강제 교환)') def get_equipment(self, instance_key, raise_exception=True): """ 인스턴스 키로 조건에 맞는 1개의 장비 아이템의 정보를 리턴한다 :param instance_key: 가져올 장비의 인스턴스 키 :param raise_exception: 찾지 못할 경우 예외를 발생시킬 것인지 여부. False 이며 장비가 존재하지 않으면 return None """ result = self.equipment.get(instance_key) if not result and raise_exception: raise excp.ExceptionItemNotExist(instance_key) return result def get_equipment_by_class_key(self, class_key): """ 클래스 키를 이용하여 장비를 조회한다. @param class_key: RK_Master.Items.key @return: list(Equipment) """ result = [] for equipment in self.equipment.itervalues(): if equipment.class_key == class_key: result.append(equipment) return result
class AlphaFortWarClan(ClassObject): season_no = Integer(desc='赛季', default=0) group_no = Integer(desc='组别', default=0) streak_win_count = Integer(desc='连胜次数', default=0) result = Integer(desc='要塞战结果', default=ALPHA_FORT_WAR_RESULT_NONE) result_time = Integer(desc='要塞战结果时间', default=0) last_reset_time = Integer(desc='上一次重置时间', default=0) battle_data_init_time = Integer(desc='第二阶段防守阵容数据是否初始化', default=0) rest_defense_count = Integer(desc='剩余防守者数量', default=0) point_dict = Dict(Class(AlphaFortWarPointDetail), desc='据点信息, point_id => info') facility_info_list = List(Class(AlphaFortFacility), desc='公会建筑信息') attend_user_list = List(String(), desc='参与玩家server_user_id列表')
class CombatantStatus(ClassObject): # main stat str = Float(desc='力量', default=0.0) dex = Float(desc='敏捷', default=0.0) int = Float(desc='智力', default=0.0) # sub stat phy_atk = Float(desc='物攻', default=0.0) mag_atk = Float(desc='法攻', default=0.0) cri = Float(desc='暴击', default=0.0) cri_inc = Float(desc='暴击加成', default=0.0) phy_pen = Float(desc='物理穿透', default=0.0) phy_def = Float(desc='物防', default=0.0) mag_res = Float(desc='法抗', default=0.0) eva = Float(desc='闪避', default=0.0) cur_hp = Float(desc='当前血量', default=0.0) max_hp = Float(desc='最大血量', default=0.0) cond_dec = Float(desc='异常状态时间减少', default=0.0) move_speed = Float(desc='移速', default=0.0) atk_speed = Float(desc='攻速', default=0.0) aggro = Float(desc='仇恨值', default=0.0) high_power = Float(desc='', default=0.0) attr_res = Dict(Float(), desc='属性抗性') mesmerize_res = Dict(Float(), desc='控制抗性') field_immune = List(String(), desc='场景效果免疫') # develop stat class_immune = Dict(Float(), desc='类型攻击免疫') attr_immune = Dict(Float(), desc='属性攻击免疫') eva_rate = Float(desc='闪避率', default=0.0) mes_eva_rate = Float(desc='控制闪避率', default=0.0) taunt = Float(desc='嘲讽值', default=0.0) # caster mesmerize = List(String(), desc='异常状态列表') cri_rate = Float(desc='暴击率', default=0.0) # active skill charge rate charge_turn_rate = Float(desc='主动技能恢复比例', default=0.0)
class TeamBossBattleDetail(ClassObject): battle_unique_id = String(desc='战斗唯一id') team_boss_unique_id = String(desc='team boss唯一id') battle_status = Integer(desc='战斗状态(0-准备期,1-进行中,2-已结束)', default=0) start_time = Integer(desc='开始时间', default=0) real_start_time = Integer(desc='实际开始时间', default=0) end_time = Integer(desc='结束时间', default=0) ctrl_server_user_id = String(desc='当前控制的玩家id', default=None) member_data_dict = Dict(Class(TeamBossBattleMember), desc='战斗成员信息') boss_data = Class(TeamBossBattleUnitBoss, desc='boss信息') server_group_id = String(desc='服务器server group id') team_id = Integer(desc='队伍id') server_leader_id = String(desc='队长server user id') op_list = List(String(), desc='操作列表')
class BattleFieldBlockInfoToC(ClassObject): is_fort = Boolean(desc='是否是要塞', default=False) status = Integer(desc='据点状态') clan_id = String(desc='公会id') clan_mission = Class(BattleFieldClanMission, desc='公会指示') protect_end_time = Integer(desc='保护结束时间', default=0) battle_server_user_id = String(desc='战斗中的玩家server_user_id') battle_timeout = Integer(desc='战斗超时时间戳', default=0) fort_war_clan_id = String(desc='攻击该要塞的公会id') fort_war_start_time = Integer(desc='要塞战开始时间戳(针对要塞据点)', default=0) fort_war_end_time = Integer(desc='要塞战结束时间戳(针对要塞据点)', default=0) product_items = Dict(Integer(), desc='据点产出的物品字典') last_product_time = Integer(desc='据点上一次产出时间', default=0) defense_unit_count = Integer(desc='当前防守单位数量', default=0) defense_info = List(Class(BattleFieldDefenseUnit), desc='防守信息')
class MasterHeroEquipmentBoxStatRow(ClassObject): key = String(desc='고유키') group_id = String(desc='그룹 id') type = String(desc='수집/강화 여부') step = Integer(desc='강화 단계') step_value = Integer(desc='세부 구성 단계') stat = Dict(Integer(), desc='강화 스탯') costume = String(desc='보상 받는 costume') def get_index_meta(self): return { 'get_stat': (self.group_id, self.step_value), 'get_type': (self.group_id, self.type), } def can_get_costume(self): return self.costume is not None
class MasterMasteryStatRow(ClassObject): key = String(desc='고유키') group = String(desc='상위 분류.마스터리 그룹명') property = String(desc='하위 분류') star_group = String(desc='별 그룹') level = Integer(desc='레벨') req_point = Integer(desc='필요 포인트') factor = Dict(Float(), desc='증가 스탯') factor_local = String(desc='증가 스탯 로컬용') def get_index_meta(self): """ 인덱싱에 사용할 메타 정보 반환 :return: dict: {인덱스 이름: 인덱스 컬럼 리스트, ...} """ return { 'get_stat': (self.group, self.star_group, self.level), 'get_star_group': (self.group, self.star_group), 'get_group': (self.group, ) }
class UserSession(ClassObject): session_id = String(desc='세션의 인스턴스 id') user_id = String(desc='유저 id') platform = String(desc='접속 장비의 플랫폼. ex. aos, ios') server_selected = String(desc='입장 선택한 서버') server_group = String(desc='입장서버에 따라 그룹으로 묶인 서버') created = Boolean(default=False, desc='기사단 생성 여부') block_status = Integer(default=0, desc='유저 블록 상태. 0 : 블록 아님, 1: 정해진 기간, 2: 영구 블록') block_expiry_time = Integer(default=0, desc='블록 만료 시간. utc') time_last_request = Integer(default=0, desc='마지막 요청을 보낸 시간. utc') time_last_login = Integer(default=0, desc='마지막으로 로그인 성공한 시간. utc') country = String(desc='유저의 국가 코드. KR/JP/... 클라에서 보낸 값') np_id = String(desc='플랫폼 np id. 플랫폼에서는 GUID 라고도 부름') server_user_id_migration = Dict(Integer(), desc='서버통합 데이터로 마이그레이션 된 시각 UTC') aofei_account_id = String(desc='account id') aofei_account_name = String(desc='account name') last_operation = String(desc='last operation')
class SceneTeamInfo(ClassObject): leader_server_user_id = String(desc='队长server_user_id') member_dict = Dict(Class(SceneMemberInfo), desc='成员字典')