예제 #1
0
class Value(Model):
    """数值"""
    value = FloatField(0x6C, label='数量')
    scaled_maximum = FloatField(0x58, label='缩放最大值')
    base_maximum = FloatField(0x5C, label='最大值')

    def value_max(self):
        self.set_with('value', 'scaled_maximum')
예제 #2
0
class MovementManager(Model):
    base_move_speed = FloatField(0x2D0, label='基本移动速度')
    current_move_speed = FloatField(0x2CC, label='当前移动速度')
    current_jump_height = FloatField(0x300, label='当前跳跃高度')
    base_jump_height = FloatField(0x304, label='基本跳跃高度')
    rriction = FloatField(0x2FC, label='摩擦力')
    coord = CoordField(0x5C, label='坐标')
    move_vector = CoordField(0x124, label='移动向量')
예제 #3
0
class Unit(Model):
    type = ModelPtrField(8, UnitType)
    player = ModelPtrField(0xC, Player)
    hp = FloatField(0x30, label='HP')
    ptr_unknow1 = Field(0x18, label='不明指针')
    selected = ByteField(0x36, label='选中状态')
    resource = FloatField(0x44, label='资源')
    ptr_unknow2 = Field(0x6C, label='不明指针2')
    construction_progress = FloatField(0x1FC, label="建造进度")
예제 #4
0
class PlayerConfig(Model):
    """玩家属性"""
    player_model_scale = FloatField(0x78, label='角色模型大小')
    player_visibility = ByteField(0xBF, label='角色能见度')
    move_speed_mult = FloatField(0x310, label='移动速度倍数')
    current_weapon = ModelPtrField(0x470, Weapon)
    second_wind = ModelPtrField((0x6A4, 0x68), SecondWind)
    hit_ricochet_chance = FloatField(0x948, label='击飞')
    miss_ricochet_chance = FloatField(0x9AC, label='避开击飞')
    ignore_fatal_damage_chance = FloatField(0x9E8, label='免受致命伤')
    coord = CoordField(0x60, label='坐标')
    move_vector = CoordField(0x104, label='移动向量')
예제 #5
0
class Global(Model):
    energy = FloatField(0xAE4, label="体力 f 3.39")
    vigour = FloatField(0xAB4, label="元气 f 5.23")
    health = Field(0xA98, label="元精 4 2346")
    skill = Field(0xB18, label="战意技 4 1000 截风100")
    atk = Field(0xB88, label="攻击 9999")
    defense = Field(0xBB8, label="防御")
    critical_buff = Field(0xBE8, label="爆击伤害加成 999")
    critical = Field(0xBF0, label="暴击率")
    attr_wood = Field(0xC10, label="木属性")
    attr_fire = Field(0xC30, label="火属性")
    attr_earth = Field(0xC50, label="土属性")
    attr_metal = Field(0xC70, label="金属性")
    attr_water = Field(0xC90, label="水属性")
예제 #6
0
class Weapon(Model):
    level = Field(0x230, label='需求等级')
    real_magazine_size = FloatField(0x3B0, label='计算弹夹容量')
    base_magazine_size = FloatField(0x3B4, label='基本弹夹容量')
    current_ammo = FloatField(0x3CC, label='当前弹药')
    total_ammo = FloatField(0x390, label='总弹药数')
    # all_ammo = ModelPtrField(0x3BC, Value, label='包含弹夹的总弹药数')
    calculated_damage = FloatField(0x2BC, label='计算伤害')
    base_damage = FloatField(0x2C0, label='基本伤害')
    calculated_accuracy = FloatField(0x2A8, label='计算偏移率')
    base_accuracy = FloatField(0x2AC, label='基本偏移率')
    calculated_fire_rate = FloatField(0x294, label='计算射击延迟')
    base_fire_rate = FloatField(0x298, label='基本射击延迟')
    calculated_bullets_used = Field(0x398, label='计算使用子弹')
    base_bullets_used = Field(0x39C, label='基本使用子弹')
    item_price = Field(0x21C, label='物品价格')
예제 #7
0
class PlayerConfig(Model):
    """玩家属性"""
    player_model_scale = FloatField(0x78, label='角色模型大小')
    time_scale_multiplier = FloatField(0x328, label='时间流逝倍数')
    gravity = FloatField(0x3A0, label='重力')  # confirm
    player_visibility = ByteField(0xBF, label='角色能见度')
    player_allegiance = Field(0x518, label='角色忠诚')
    move_speed_mult = FloatField(0x320, label='移动速度倍数')
    current_weapon = ModelPtrField(0x480, Weapon)
    hit_ricochet_chance = FloatField(0xA1C, label='击飞')
    miss_ricochet_chance = FloatField(0xA80, label='避开击飞')
    ignore_fatal_damage_chance = FloatField(0xABC, label='免受致命伤')
    bullet_reflect_chance = FloatField(0xA44, label='子弹反弹几率')
    coord = CoordField(0x60, label='坐标')
    move_vector = CoordField(0x104, label='移动向量')

    ffyl_time_mult = FloatField(0xBDC, label='原地复活时间倍数')
    ffyl_Health_mult = FloatField(0xBDC, label='原地复活生命倍数')
    current_vehicle = ModelPtrField(0x450, VehicleManager)
예제 #8
0
class Weapon(Model):
    display_level = Field(0x1E0, label='显示等级')
    specification_level = Field(0x1E4, label='作用等级')
    actual_level = Field(0xE3C, label='武器实际等级')
    item_actual_level = Field(0x8B4, label='物品实际等级')
    calculated_damage = FloatField(0x8E8, label='计算伤害')
    base_damage = FloatField(0x8EC, label='基本伤害')
    calculated_accuracy = FloatField(0x8D4, label='计算偏移率')
    base_accuracy = FloatField(0x8D8, label='基本偏移率')
    calculated_fire_rate = FloatField(0x8C0, label='计算射击延迟')
    base_fire_rate = FloatField(0x8C4, label='基本射击延迟')
    calculated_projectile_speed = FloatField(0xEB4, label='计算子弹速')
    base_projectile_speed = FloatField(0xEB8, label='基本子弹速')
    calculated_reload_speed = FloatField(0xA30, label='计算换弹速')
    base_reload_speed = FloatField(0xA34, label='基本换弹速')
    calculated_burst_length = Field(0xAFC, label='计算爆发长度')  # 0: Auto
    base_burst_length = Field(0xB00, label='基本爆发长度')
    calculated_projectiles_per_shot = Field(0xDB8, label='计算射击子弹数')
    base_projectiles_per_shot = Field(0xDBC, label='基本射击子弹数')
    calculated_bullets_used = Field(0x9DC, label='计算使用子弹')
    base_bullets_used = Field(0x9E0, label='基本使用子弹')
    calculated_extra_shot_chance = Field(0xD28, label='计算额外射击机会')
    base_extra_shot_chance = Field(0xD2C, label='基本额外射击机会')
    magazine_size = Field(0xA0C, label='弹药库容量')
    current_bullets = Field(0xA28, label='当前子弹')
    ammo = ModelPtrField(0x9D0, WeaponAmmo, label='弹药')
    clip_ammo = Field(0x9D4, label='弹夹子弹')
    item_price = Field(0x1D0, label='物品价格')
    item_quantity = Field(0x1D8, label='物品数量')
    item_state = Field(0x224,
                       label='物品状态')  # Favorited, Crossed, Equipped, ect

    def set_level(self, level):
        """设置等级"""
        self.display_level = self.specification_level = level
        if self.actual_level:
            self.actual_level = level
        elif self.item_actual_level:
            self.item_actual_level = level
예제 #9
0
class TeamConfig(Model):
    """团队属性"""
    moxxi_drink_duration = FloatField(0x10BC, label='莫西饮酒时长')
    skill_mgr = ModelPtrField((0xC98, 0x58), SkillManager, label='技能')
    ability_cooldown = ModelPtrField(0xC58, AbilityCooldown, label='主技能冷却')
    damage_heals_self = FloatField(0xD54)
    team_ammo_regen = FloatField(0xFE0, label='团队弹药回复')
    explosives_heal_allies = FloatField(0x114C)
    bullets_heal_allies = FloatField(0x1110)
    badass_tokens = FloatField(0x182C, label='坏小子徽章')
    badass_bonuses = ArrayField((0x183C, 0), 14, Field(0))  # 坏小子加成效果
    team_kill_skill_timer_mult = FloatField(0x1A7C)
    damage_taken_mult = FloatField(0x590, label='伤害倍数?')

    shock_time = FloatField(0x4A0, label='闪电时间')
    corrosive_time = FloatField(0x4B4, label='腐蚀时间')
    fire_time = FloatField(0x48C, label='火焰时间')
    frost_time = FloatField(0x4DC, label='冰冻时间')
    melee_damage = FloatField(0x374, label='近战伤害')
    physical_damage = FloatField(0x608, label='物理伤害')
    explosive_damage = FloatField(0x5E0, label='爆炸伤害')
    shock_damage = FloatField(0x5CC, label='闪电伤害')
    corrosive_damage = FloatField(0x5F4, label='腐蚀伤害')
    fire_damage = FloatField(0x5B8, label='火焰伤害')
    frost_damage = FloatField(0x630, label='冰冻伤害')
예제 #10
0
class AbilityCooldown(Value):
    mult = FloatField(0x70, label='冷却倍数')
예제 #11
0
class WeaponAmmo(Value):
    """弹药"""
    regen_rate = FloatField(0x84, label='回复速度')
    status = Field(0x108, label='切换')  # Normal: 5, Infinite: 6
    infinite = ToggleField(0x108, enable=6, disable=5, label='不减')
예제 #12
0
class ResourceManager(Model):
    SIZE = 12
    food = FloatField(0, label='食物')
    wood = FloatField(4, label='木材')
    rock = FloatField(8, label='石材')
    gold = FloatField(12, label='黄金')
예제 #13
0
class SkillManager(Model):
    ability_status = Field(0x1C, label='主技能状态')
    ability_duration = FloatField((0, 0x74), label='主技能持续时间')
    skills = ArrayField(0x40, 33, ModelField(0, SkillItem))
예제 #14
0
class UnitType(Model):
    # type = ByteField(0x4, label="类型")  # 类型
    # dll_name = WordField(0xC, label="语言DLL:名称")
    # dll_hint = WordField(0xE, label="语言DLL:创建提示")
    # id1 = WordField(0x10, label="ID 1")
    # id2 = WordField(0x12, label="ID 2")
    # id3 = WordField(0x14, label="ID 3")
    # type2 = WordField(0x16, label="类别")
    # fn_str = ModelPtrField(0x18, StringField(0), 'fn名称指针')
    # name_str = ModelPtrField(0x20, StringField(0), '名称指针')
    # dll_help = Field(0xA8, label="语言DLL:帮助说明")
    # dll_hot_text = Field(0xAC, label="语言DLL:热键文字")
    # dll_hot_text_ = Field(0xB0, label="热键文字")
    hp_max = WordField(0x2A, label="HP上限")
    view = FloatField(0x2C, label="视野")
    shipload = ByteField(0x30, label="Shipload")
    collision = FloatField(0x34, label="碰撞")
    move_speed = FloatField(0xC8, label="移动速度")
    search = FloatField(0x104, label="搜索")
    work_efficiency = FloatField(0x108, label="工作效率")
    def_items = ModelPtrField(0x128, AtkDefItems)  # 防御列表
    atk_items = ModelPtrField(0x130, AtkDefItems)  # 攻击列表
    range_max = FloatField(0x138, label="最大射程")
    damage_radius = FloatField(0x13C, label="攻击范围")
    damage_type = Field(0x140, label="伤害方式")
    atk_interval = FloatField(0x144, label="攻击间隔")  # 越小攻速越快(>0)
    atk_interval2 = FloatField(0x168, label="攻击间隔2")
    range_min = FloatField(0x15C, label="最小射程")
    base_def = WordField(0x160, label="显示的防御")
    base_atk = WordField(0x162, label="显示的攻击")
    range_base = FloatField(0x164, label="显示的射程")
    construction_time = WordField(0x182, label="建造时间")
    thrown_object = WordField(0x148, label="抛掷物单位")
    addition_thrown_object = WordField(0x1AC, label="附加抛掷物单位")
    min_thrown_object_count = WordField(0x19C, label="最小附加弹药数")
    thrown_object_area = CoordField(0x1A0, label="抛掷物产生区域")
예제 #15
0
class SecondWind(Model):
    """原地复活"""
    multiplier = FloatField(0x650, label='生命倍数')
    fight_time_multiplier = FloatField(0x434, label='时间倍数')
예제 #16
0
class ShieldHealth(Value):
    """护甲和生命"""
    regen_rate = FloatField(0x98, label='回复速度')
    status = Field(0x108, label='切换')  # Normal: 5, God: 6
예제 #17
0
class Movement(Model):
    coord = CoordField(0, label='坐标')
    air_time = FloatField(-0x14, label='空中滞留时间')  # 初始30, 减慢为15
    jump_height = FloatField(-0x18, label='跳跃高度')
    move_speed_mult = FloatField(-0x38, label='移动速度倍数')
예제 #18
0
class PhysicsConfig(Model):
    """物理属性"""
    move_speed = FloatField(0x2A8, label='移动速度')
    jump_height = FloatField(0x2EC, label='跳跃高度')
    friction = FloatField(0x2D8, label='摩擦力')
    viewing_height = FloatField(0x360, label='可视高度')
예제 #19
0
class PhysicsManager(Model):
    movement_mgr = ModelPtrField((0, 0x28, 0x5A0), MovementManager)
    view_height = FloatField((0x10, 0x28, 0x360), label='可视高度')
예제 #20
0
class WeaponAmmo(Value):
    """弹药"""
    SIZE = 4
    regen_rate = FloatField(0x80, label='回复速度')
예제 #21
0
class Weapon(Model):
    display_level = Field(0x1DC, label='显示等级')
    specification_level = Field(0x1E0, label='作用等级')
    actual_level = Field(0xE84, label='武器实际等级')
    item_actual_level = Field(0x8AC, label='物品实际等级')
    calculated_damage = FloatField(0x8E0, label='计算伤害')
    base_damage = FloatField(0x8E4, label='基本伤害')
    calculated_accuracy = FloatField(0x8CC, label='计算偏移率')
    base_accuracy = FloatField(0x8D0, label='基本偏移率')
    calculated_fire_rate = FloatField(0x8B8, label='计算射击延迟')
    base_fire_rate = FloatField(0x8BC, label='基本射击延迟')
    calculated_projectile_speed = FloatField(0xD74, label='计算子弹速')
    base_projectile_speed = FloatField(0xD78, label='基本子弹速')
    calculated_swap_speed = FloatField(0x940, label='计算切换速')
    base_swap_speed = FloatField(0x944, label='基本切换速')
    calculated_reload_speed = FloatField(0xA2C, label='计算换弹速')
    base_reload_speed = FloatField(0xA30, label='基本换弹速')
    calculated_burst_length = Field(0xB38, label='计算爆发长度')  # 0: Auto
    base_burst_length = Field(0xB3C, label='基本爆发长度')
    calculated_projectiles_per_shot = Field(0xDF0, label='计算射击子弹数')
    base_projectiles_per_shot = Field(0xDF4, label='基本射击子弹数')
    calculated_bullets_used = Field(0x9D8, label='计算使用子弹')
    base_bullets_used = Field(0x9DC, label='基本使用子弹')
    calculated_extra_shot_chance = Field(0x404, label='计算额外射击机会')
    base_extra_shot_chance = Field(0x408, label='基本额外射击机会')
    magazine_size = Field(0xA04, label='弹药库容量')
    current_bullets = Field(0xA24, label='当前子弹')
    ammo = ModelPtrField(0x9CC, WeaponAmmo, label='弹药')
    clip_ammo = Field(0x9D0, label='弹夹子弹')
    item_price = Field(0x1CC, label='物品价格')
    item_quantity = Field(0x1D4, label='物品数量')
    item_state = Field(0x21C, label='物品状态')  # Favorited, Crossed, Equipped, ect

    # type = Field(0xE78, label='类别')
    # balance = Field(0xE7C, label='平衡')
    # manufacturer = Field(0xE80, label='制造商')
    # body = Field(0xE88, label='枪身')
    # grip = Field(0xE8C, label='握把')
    # barrel = Field(0xE90, label='枪管')
    # sight = Field(0xE94, label='准镜')
    # stock = Field(0xE98, label='枪托')
    # elemental = Field(0xE9C, label='元素')
    # accessory1 = Field(0xEA0, label='配件1')
    # accessory2 = Field(0xEA4, label='配件2')
    # material = Field(0xEA8, label='材料')

    def set_level(self, level):
        """设置等级"""
        self.display_level = self.specification_level = level
        if self.actual_level:
            self.actual_level = level
        elif self.item_actual_level:
            self.item_actual_level = level
예제 #22
0
class TeamConfig(Model):
    """团队属性"""
    skill_mgr = ModelPtrField((0xB74, 0x58), SkillManager, label='技能')
    ability_cooldown = ModelPtrField(0xB64, AbilityCooldown, label='主技能冷却')
    damage_heals_self = FloatField(0xBF4)
    team_ammo_regen = FloatField(0xE58, label='团队弹药回复')
    explosives_heal_allies = FloatField(0xF90)
    bullets_heal_allies = FloatField(0xF54)
    badass_tokens = FloatField(0x1664, label='坏小子徽章')
    badass_bonuses = ArrayField((0x1678, 0), 14, Field(0))  # 坏小子加成效果
    team_kill_skill_timer_mult = FloatField(0x18A4)

    bullets_resistance = FloatField(0x4A0, label='普通抗性')
    physical_resistance = FloatField(0x580, label='物理抗性')
    melee_resistance = FloatField(0x4C8, label='近战抗性')
    explosive_resistance = FloatField(0x5A8, label='爆炸抗性')
    shock_resistance = FloatField(0x5D0, label='闪电抗性')
    corrosive_resistance = FloatField(0x5F8, label='腐蚀抗性')
    fire_resistance = FloatField(0x620, label='火焰抗性')
    slag_resistance = FloatField(0x648, label='紫渣抗性')
    elemental_resistance = FloatField(0x4B4, label='元素抗性')
    grenades_resistance = FloatField(0x4DC, label='手榴弹/枪桶抗性')
    rockets_resistance = FloatField(0x4F0, label='火箭炮抗性')
    chock_time = FloatField(0x464, label='闪电时间')
    corrosive_time = FloatField(0x478, label='腐蚀时间')
    fire_time = FloatField(0x450, label='火焰时间')
    melee_damage = FloatField(0x374, label='近战伤害')
    physical_damage = FloatField(0x57C, label='物理伤害')
    explosive_damage = FloatField(0x554, label='爆炸伤害')
    shock_damage = FloatField(0x540, label='闪电伤害')
    corrosive_damage = FloatField(0x568, label='腐蚀伤害')
    fire_damage = FloatField(0x52C, label='火焰伤害')
    slag_damage = FloatField(0x590, label='紫渣伤害')
예제 #23
0
class VehicleManager(Model):
    boost = ModelPtrField((0x38C, 0x188), Value, label='推进剂')
    health = ModelPtrField(0x394, Value, label='血量')
    scale = FloatField(0x78, label='缩放')
    coord = CoordField(0x60, label='坐标')
예제 #24
0
class SystemConfig(Model):
    """系统属性"""
    time_scale_multiplier = FloatField(0x328, label='时间流逝倍数')
    gravity = FloatField(0x3A0, label='重力')
예제 #25
0
class Experience(Value):
    """经验值"""
    multiplier = FloatField(0x144, label='经验倍数')
예제 #26
0
class PopulationManager(Model):
    current = FloatField(0x2C, label='当前')
    total = FloatField(0x10, label='剩余')
    max = FloatField(0x80, label='上限')