Пример #1
0
class RubySapphireEn(BaseGlobal):
    active_pokemon_count = Field(0x03004350)
    active_pokemon = ModelField(0x03004360, PokemonStructActives)
    stored_pokemon = Field(0x020300A4)
    _player_name = Field(0x02024EA4, bytes, 10)
    _player_id = Field(0x02024EAE)
    xor_mask = 0
    money = MaskedField(Field(0x02025BC4))
    coin = MaskedField(WordField(0x02025BC8))
    dust = WordField(0x02026B04)
    menu = Field(0x02026A54)
    decorate = Field(0x02027DD4)
    badge = Field(0x02026A55)
    clock_adjustment = Field(0x02024F3C)
    per_day_random = Field(0x02026B0A)
    spray_time = WordField(0x02026AB6)
    safari_balls = ByteField(0x02038808)
    safari_time = WordField(0x0203880A)
    daycare_center_step_1 = ByteField(0x020287E0)
    daycare_center_step_2 = ByteField(0x020287E4)
    step_counter = ByteField(0x020287EA)
    exp_gain = SignedField(0x02024BEC, size=2)

    _iemfield = PokemonItemField(0)
    item_normal = ArrayField(0x02025C94, 0x14, _iemfield)
    item_keyitem = ArrayField(0x02025CE4, 0x14, _iemfield)
    item_pokeball = ArrayField(0x02025D34, 0x10, _iemfield)
    item_machine = ArrayField(0x02025D74, 0x40, _iemfield)
    item_berry = ArrayField(0x02025E74, 0x2E, _iemfield)
    item_pokeblock = ArrayField(0x02025F2C, 0x28, _iemfield)
Пример #2
0
class RubySapphireJp(BaseGlobal):
    active_pokemon_count = Field(0x03004280)
    active_pokemon = ModelField(0x03004290, PokemonStructActives)
    stored_pokemon = Field(0x0202FDC0)
    _player_name = Field(0x02024C04, bytes, 10)
    _player_id = Field(0x02024C0E)
    xor_mask = 0
    money = MaskedField(Field(0x02025924))
    coin = MaskedField(WordField(0x02025928))
    dust = WordField(0x02026864)
    menu = Field(0x020267B4)
    decorate = Field(0x02027B34)
    badge = Field(0x020267B5)
    clock_adjustment = Field(0x02024C9C)
    per_day_random = Field(0x0202681C)
    spray_time = WordField(0x02026816)
    safari_balls = ByteField(0x02038504)
    safari_time = WordField(0x02038506)
    daycare_center_step_1 = ByteField(0x02028540)
    daycare_center_step_2 = ByteField(0x02028544)
    step_counter = ByteField(0x0202854A)
    exp_gain = SignedField(0x0202494C, size=2)

    _iemfield = PokemonItemField(0)
    item_normal = ArrayField(0x020259F4, 0x14, _iemfield)
    item_keyitem = ArrayField(0x02025A44, 0x14, _iemfield)
    item_pokeball = ArrayField(0x02025A94, 0x10, _iemfield)
    item_machine = ArrayField(0x02025AD4, 0x40, _iemfield)
    item_berry = ArrayField(0x02025BD4, 0x2E, _iemfield)
    item_pokeblock = ArrayField(0x02025C8C, 0x28, _iemfield)
Пример #3
0
class Person(Model):
    SIZE = 0x48
    prof = Field(4)
    level = ByteField(8)
    exp = ByteField(9)
    no = ByteField(11)
    moved = ByteField(12)
    posx = ByteField(16)
    posy = ByteField(17)
    hpmax = ByteField(18)
    hp = ByteField(19)
    power = ByteField(20)
    skill = ByteField(21)
    speed = ByteField(22)
    defense = ByteField(23)
    magicdef = ByteField(24)
    lucky = ByteField(25)
    physical_add = ByteField(26)
    together = ByteField(27)  # 同行人物序号
    move_add = ByteField(29)
    items = ArrayField(30, 5, ModelField(0, ItemSlot))
    proficiency = ArrayField(40, 8, ByteField(
        0))  # 武器熟练度(剑、枪、斧、弓、杖、理、光、暗 E级:01 D级:1F C级:47 B级:79 A级:B5 S级:FB)
    status = ByteField(48)  # 状态种类
    status_turn = ByteField(49)  # 状态持续回合数
    support = ArrayField(50, 10, ByteField(0))  # 支援等级
    unkonw_ptr = Field(60)
Пример #4
0
class ItemInfo(Model):
    SIZE = 0x3C
    name_ptr = Field(0x04)  # 名称指针
    desc_ptr = Field(0x08)  # 介绍文本指针
    icon = ByteField(0x0C)  # 图标序号
    type = ByteField(0x10)  # 类型 0: 剑, 枪, 斧, 弓, 魔, 杖, 龙石, 弩车
    level = ByteField(0x12)  # 要求熟练度 00: -, 01: E, 1F: D, 4C: C, 88: B
    power = ByteField(0x15)  # 威力
    hit = ByteField(0x16)  # 命中
    kill = ByteField(0x17)  # 必杀
    weight = ByteField(0x18)  # 重量
    range_min = ByteField(0x19)  # 最小射程
    range_max = ByteField(0x1A)  # 最大射程
    move_add = ByteField(0x1B)  # 属性增加效果
    hp_add = ByteField(0x1C)
    power_add = ByteField(0x1D)
    magic_add = ByteField(0x1E)
    skill_add = ByteField(0x1F)
    speed_add = ByteField(0x20)
    lucky_add = ByteField(0x21)
    defense_add = ByteField(0x22)
    magicdef_add = ByteField(0x23)
    attr1 = ByteField(0x24)
    attr2 = ByteField(0x25)
    attr3 = ByteField(0x26)
    attr4 = ByteField(0x27)
    attr5 = ByteField(0x28)
    attr6 = ByteField(0x29)
    attr7 = ByteField(0x2A)
    attr8 = ByteField(0x2B)
    attr9 = ByteField(0x2C)
    attr10 = ByteField(0x2D)
    attr11 = ByteField(0x2E)
    attr12 = ByteField(0x2F)
Пример #5
0
class Vehicle(Entity, GTA3Vehicle):
    SIZE = 0xa18

    hp = Field(0x4c0, float)
    num_passengers = Field(0x484, int, 1)
    max_passengers = Field(0x488, int, 1)
    dirt = Field(0x4b0, float)  # 0.0~15.0
    _tranler = Field(0x4c8, int)
    door_status = Field(0x4f8, int)

    body_color = Field(0x434, int, 1)
    stripe_color = Field(0x435, int, 1)
    body2_color = Field(0x436, int, 1)
    stripe2_color = Field(0x437, int, 1)

    @property
    def name(self):
        model_id = self.model_id
        try:
            item = next(filter(lambda x: x[1] == model_id, VEHICLE_LIST))
            return item[0]
        except Exception:
            return None

    @property
    def grad(self):
        return self.pos.grad

    @grad.setter
    def grad(self, val):
        self.pos.grad = val

    @property
    def passengers(self):
        offset = 0x460
        for i in range(9):
            yield Player(self.handler.read32(self.addr + offset), self.context)
            offset += 4

    @property
    def driver(self):
        addr = self.handler.read32(self.addr + 0x460)
        if addr:
            return Player(addr, self.context)

    @property
    def trailer(self):
        ptr = self._tranler
        return Vehicle(ptr, self.context) if ptr else None

    def lock_door(self):
        self.door_status = 2

    def unlock_door(self):
        self.door_status = 1

    def flip(self):
        grad = self.grad
        grad[0] = -grad[0]
        grad[1] = -grad[1]
Пример #6
0
class Global(BaseGlobal):
    # chapter = ByteField(0x0202BCFA)
    # turns = WordField(0x0202BCFC)
    person_addr = Field(0x021BED30)
    curx = ByteField(0x02273BD4)  # 0x02272EA4
    cury = ByteField(0x02273BD5)  # 0x02272EA5
    # persons = ArrayField(0x202be48, 0xff, ModelField(0, Person))
    train_items = ArrayField(0x022C7420, 100, ModelField(0, ItemSlot))  # 运输队
    ourturn = ToggleField(0x021CC278, enable=0xE3A01001, disable=0xE5D01000)
    control_enemy = ToggleField(0x021D5674, enable=0xE1500000, disable=0xE1510000)
    upgrade_max = ToggleField(0x02050AC0, enable=0xB1A06004, disable=0xB2866001)
    upgrade_all = ToggleField(0x02050A98, enable=0xE1A00000, disable=0xAA000009)
    lv1_can_transfer = ToggleField(0x02049EE0, enable=0x00000001, disable=0xE350000A)
    can_train = ToggleField(0x021EBE08, enable=0xE3A00002, disable=0xEBF98E8F)
    can_visit = ToggleField(0x021ECB14, enable=0xE3A00002, disable=0xEBF98B4C)
    can_holddown = ToggleField(0x021EBBD8, enable=0xE3A00002, disable=0xEBF98F1B)
    use_enemy_prof = ToggleField(0x021D4CEC, enable=0xEA000022, disable=0x1A000022)
    infinite_refine = ToggleField(0x02069683, size=1, enable=0, disable=0xE3)
    item_consume = ToggleField(0x02051650, size=2, enable=0x0000, disable=0x0001)
    enemy_item_drop = ToggleField(0x021F8CE0, size=8, enable=0xE3500000E1D006B0, disable=0xE3100020E5D00063)
    exp_rate = Field(0x021F4DA8)
    pro_rate = Field(0x021F4F5C)
    config = ModelPtrField(0x021BD44C, Config, 4)
    # iteminfo_base = Field(0x0227A748)
    _iteminfos = ArrayField(0x022AA97C, 0xff, ModelField(0, ItemInfo))

    @property
    def _offset(self):
        return self.handler.read32(0x021BD44C) - 0x022BEAA0

    @property
    def iteminfos(self):
        self.field('_iteminfos').offset = self.handler.read32(0x0227A748 + self._offset)
        return self._iteminfos
Пример #7
0
class PlayerManager(Model):
    player_config = ModelPtrField(0xA4, PlayerConfig)
    physics_config = ModelPtrField(0xDC, PhysicsConfig)
    bank_size = Field((0x230, 0x40), label='仓库空间')
    weapon_deck_size = Field(0x1DC, label='武器装备空间')
    backpack_size = Field(0x1D8, label='背包大小')
    backpack_used_space = Field(0x1F8, label='背包已用空间')
Пример #8
0
class Global(Model):
    hp = WordField(0x0201326E, label="HP")
    hpmax = WordField(0x02013272, label="最大HP")
    mp = WordField(0x02013270, label="MP")
    mpmax = WordField(0x02013274, label="最大MP")
    str = WordField(0x02013276, label="STR")
    con = WordField(0x02013278, label="CON")
    int = WordField(0x0201327A, label="INT")
    lck = WordField(0x0201327C, label="LCK")
    level = ByteField(0x201326D, label="等级")
    invincible1 = ToggleField(0x08020910,
                              enable=0,
                              disable=0x04008008,
                              label="不会扣血")
    enemy_static = ToggleField(0x020004BE,
                               size=2,
                               enable=0xFFFF,
                               disable=0,
                               label="敌人静止")
    invincible2 = ToggleField(0x02000502,
                              size=1,
                              enable=0xFF,
                              disable=0,
                              label="暂时无敌")
    monster_flag = ArrayField(0x02013394, 7, Field(0))
    skill_flag = ArrayField(0x02013386, 3, WordField(0))
    soul_flag = ArrayField(0x02013310, 31, Field(0))
    equip_counts = ArrayField(0x020132A8, 104, ByteField(0))
    tool_counts = ArrayField(0x02013288, 32, ByteField(0))
    enemy_flag = ArrayField(0x02013394, 12, Field(0))
    map_flag = ArrayField(0x020000AC, 0x145, WordField(0))
    extra_flag = Fields(ByteField(0x02000060), ByteField(0x02000F4D))
    boss_rush_flag = ByteField(0x020000A1)
Пример #9
0
class RubyJp(RubySapphireJp):
    NAME = "红宝石(日文版)"
    # rom
    breed_list = ArrayField(0x081D09CC, 412, ModelField(0, BreedListEntry))
    deoxys_breed_abilities = Field(0x00000000)
    # ^
    exp_list = ArrayField(0x081CFD2C, 8, ArrayField(0, 0x65, Field(0)))
    item_list = Field(0x0039A648)
    skill_list = Field(0x001CCEE0)
Пример #10
0
class Global(Model):
    money = Field(0x02029750, label="金钱")
    turn = Field(0x02029760, label="回合")
    after_money = Field(0x020361D0, label="战后金钱")
    after_exp = Field(0x020361D4, label="战后经验")
    chapter = ByteField(0x02029776, label="关卡")
    intensified_parts = ArrayField(0x020297B0, 67, ByteField(0))  # 强化部件
    mini_games = ArrayField(0x020297F4, 51, ByteField(0))  # 小游戏
    skill_chip = ArrayField(0x02029786, 42, ByteField(0))  # 技能芯片
Пример #11
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="建造进度")
Пример #12
0
class SapphireJp(RubySapphireJp):
    NAME = "蓝宝石(日文版)"
    # rom
    breed_list = ArrayField(0x081D095C, 412, ModelField(0, BreedListEntry))
    deoxys_breed_abilities = Field(0x00000000)
    # ^
    exp_list = ArrayField(0x081CFCBC, 8, ArrayField(0, 0x65, Field(0)))
    item_list = Field(0x0039A62C)
    skill_list = Field(0x001CCE70)
Пример #13
0
class SapphireEn(RubySapphireEn):
    NAME = "蓝宝石(英文版)"
    # rom
    breed_list = ArrayField(0x081FEBA8, 412, ModelField(0, BreedListEntry))
    deoxys_breed_abilities = Field(0x00000000)
    # ^
    exp_list = ArrayField(0x081FDF08, 8, ArrayField(0, 0x65, Field(0)))
    item_list = Field(0x003C55BC)
    skill_list = Field(0x001FB0BC)
Пример #14
0
class FireEn(FireLeafEn):
    NAME = "火红(英文版)"
    # rom
    breed_list = ArrayField(0x08254784, 412, ModelField(0, BreedListEntry))
    deoxys_breed_abilities = Field(0x0025E026)
    # ^
    exp_list = ArrayField(0x08253AE4, 8, ArrayField(0, 0x65, Field(0)))
    item_list = Field(0x003DB028)
    skill_list = Field(0x00250C04)
Пример #15
0
class LeafEn(FireLeafEn):
    NAME = "叶绿(英文版)"
    # rom
    breed_list = ArrayField(0x08254760, 412, ModelField(0, BreedListEntry))
    deoxys_breed_abilities = Field(0x0025E006)
    # ^
    exp_list = ArrayField(0x08253AC0, 8, ArrayField(0, 0x65, Field(0)))
    item_list = Field(0x003DAE64)
    skill_list = Field(0x00250BE0)
Пример #16
0
class LeafJp(FireLeafJp):
    NAME = "叶绿(日文版)"
    # rom
    breed_list = ArrayField(0x08211168, 412, ModelField(0, BreedListEntry))
    deoxys_breed_abilities = Field(0x0021AA0E)
    # ^
    exp_list = ArrayField(0x082104C8, 8, ArrayField(0, 0x65, Field(0)))
    item_list = Field(0x003A0568)
    skill_list = Field(0x0020D5E8)
Пример #17
0
class FireJp(FireLeafJp):
    NAME = "火红(日文版)"
    # rom
    breed_list = ArrayField(0x0821118C, 412, ModelField(0, BreedListEntry))
    deoxys_breed_abilities = Field(0x0021AA2E)
    # ^
    exp_list = ArrayField(0x082104EC, 8, ArrayField(0, 0x65, Field(0)))
    item_list = Field(0x003A06F8)
    skill_list = Field(0x0020D60C)
Пример #18
0
class RubyEn(RubySapphireEn):
    NAME = "红宝石(英文版)"
    # rom
    breed_list = ArrayField(0x081FEC18, 412, ModelField(0, BreedListEntry))
    deoxys_breed_abilities = Field(0x00000000)
    # ^
    exp_list = ArrayField(0x081FDF78, 8, ArrayField(0, 0x65, Field(0)))
    item_list = Field(0x003C5564)
    skill_list = Field(0x001FB12C)
Пример #19
0
    class Inner(Model):
        _player_name = Field(0, bytes, 10)
        _player_id = Field(0x0A)
        xor_mask = Field(0x000000AC)
        money = MaskedField(Field(0x0000143C))
        coin = MaskedField(WordField(0x00001440))
        dust = WordField(0x000023D8)
        menu = Field(0x00002328)
        decorate = Field(0x000036E0)
        badge = Field(0x00002329)
        clock_adjustment = Field(0x00000098)
        per_day_random = Field(0x00002390)
        spray_time = WordField(0x0000238A)
        daycare_center_step_1 = ByteField(0x00004064)
        daycare_center_step_2 = ByteField(0x000040F0)
        step_counter = ByteField(0x000040F8)
        battle_points_current = WordField(0x00000EB8)
        battle_points_trainer_card = WordField(0x00000EBA)

        _iemfield = PokemonItemField(0)
        item_normal = ArrayField(0x0000150C, 0x1E, _iemfield)
        item_keyitem = ArrayField(0x00001584, 0x1E, _iemfield)
        item_pokeball = ArrayField(0x000015FC, 0x10, _iemfield)
        item_machine = ArrayField(0x0000163C, 0x40, _iemfield)
        item_berry = ArrayField(0x0000173C, 0x46, _iemfield)
        item_pokeblock = ArrayField(0x000017F4, 0x28, _iemfield)
Пример #20
0
class Marker(BaseBlip):
    SIZE = 56

    color = Field(0)
    blipType = Field(4)
    entity_handle = Field(8)
    coord = CoordField(24)
    index = WordField(36)
    bright = ByteField(38)
    active = ByteField(39)
    sprite = ByteField(52)
Пример #21
0
class Marker(BaseBlip):
    SIZE = 48

    color = Field(0)
    blipType = Field(4)
    entity_handle = Field(8)
    coord = CoordField(20)
    index = WordField(3)
    bright = ByteField(34)
    active = ByteField(35)
    sprite = ByteField(44)
Пример #22
0
class PokemonStructHeader(Model):
    SIZE = 32
    bSex = ByteField(0x00)                              # @00, dwChar低8位表示性别
    dwChar = DWordField(0x00)                           # @00, 性格値
    dwID = DWordField(0x04)                             # @04, トレーナのID
    bNickName = Field(0x08, bytes, 10)                  # @08, ニックネーム
    bNickNameLanguage = ByteField(0x12)                 # @12, '01' = 6 bytes (jp), '02' = 10 bytes (en)
    bBadEgg = ByteField(0x13)                           # @12, '02' for daycare-center-enabled, '07' for ダメタマゴ
    bCatcherName = Field(0x14, bytes, 7)                # @14, トレーナの名前
    bMarkings = ByteField(0x1B)                         # @1B, only the lowest 4 bits are used
    wChecksum = WordField(0x1C)                         # @1C, Checksum
Пример #23
0
class WeaponItem(Model):
    id = Field(0)  # 武器id
    state = Field(0x4, int)
    ammo_clip = Field(0x8, int)  # 弹夹数
    ammo = Field(0xC, int)  # 弹药数

    def set(self, other):
        if isinstance(other, WeaponItem):
            self.id = other.id
            self.ammo = other.ammo
        elif isinstance(other, (tuple, list)):
            self.id, self.ammo = other
Пример #24
0
class Global(BaseGlobal):
    time = Field(0x02041C9C)
    money = Field(0x02000250)
    get_money = Field(0x0203059C)
    get_exp = Field(0x020305A0)
    battlein = WordField(0x02000498)

    # 城镇中坐标
    town_x = WordField(0x02030EC6)
    town_y = WordField(0x02030ECE)
    # 世界地图中坐标
    map_x = WordField(0x02030DB6)
    map_y = WordField(0x02030DAE)
Пример #25
0
class SavedItem(Model):
    """整理界面个人物品"""
    SIZE = 0x2C
    type = WordField(0x0, label="种类")
    quantity = Field(0x4, label="数量/武器弹药")
    max_quantity = Field(0x8, label="最大数量/武器弹药")
    fire_power = WordField(0x1C, label="火力升级")
    reload_speed = ByteField(0x1E, label="装弹速度升级")
    capacity = ByteField(0x1F, label="容量升级")
    critical = ByteField(0x21, label="爆头率升级")
    attack_range = ByteField(0x21, label="攻击范围升级")
    piercing = ByteField(0x22, label="贯穿伤害升级")
    scope = ByteField(0x24, label="瞄准镜升级")
    model = Field(0x28, label="模型")
Пример #26
0
class Global(Model):
    bomb_count = ByteField(0x0082, label="炸弹数量")
    bomb_power = ByteField(0x0085, label="炸弹威力")
    lives = ByteField(0x04E5, label="生命")
    speed = ByteField(0x00A5, label="速度")
    invincible = ToggleField(0x04E6, size=1, enable=1, disable=0, label="无敌开启")
    invincible_time = ByteField(0x04E8, label="无敌时间")
    through_wall = ToggleField(0x009F, size=1, enable=1, disable=0, label="穿墙")
    through_bomb = ToggleField(0x00A0,
                               size=1,
                               enable=1,
                               disable=0,
                               label="穿炸弹")
    timebomb = ToggleField(0x00A1, size=1, enable=1, disable=0, label="定时炸弹")

    def time_getter(self, value, field):
        return ((value >> 16) & 0xFF) * 100 + (
            (value >> 8) & 0xFF) * 10 + (value & 0xFF)

    def time_setter(self, value, field):
        value = int(value)
        return ((value // 100 % 10) << 16) | (
            (value // 10 % 10) << 8) | (value % 10)

    time = FieldPrep(time_getter, time_setter, Field(0x0559, label="时间"))
Пример #27
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='冰冻伤害')
Пример #28
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='紫渣伤害')
Пример #29
0
class Global(Model):
    turn = ByteField(0x058C, label='前/后半场')
    minutes = ByteField(0x06C2, label='剩余分钟')
    seconds_1 = ByteField(0x06C3, label='秒十位数')
    seconds_0 = ByteField(0x06C4, label='秒个位数')

    our_points = ByteField(0x0166, label='我方进球')
    enemy_points = ByteField(0x0167, label='敌方进球')

    basketry = Field(0x057E, size=6, label='球筐耐久')
    basketry_left_bottom = ByteField(0x057E, label='左下球框耐久')  # 08 左下球框不掉
    basketry_right_bottom = ByteField(0x057F, label='右下球框耐久')  # 08 右下球框不掉
    basketry_left_middle = ByteField(0x0580, label='左中球框耐久')  # 06 左中球框不掉
    basketry_right_middle = ByteField(0x0581, label='右中球框耐久')  # 06 右中球框不掉
    basketry_left_top = ByteField(0x0582, label='左上球框耐久')  # 05 左上球框不掉
    basketry_right_top = ByteField(0x0583, label='右上球框耐久')  # 05 右上球框不掉

    ball_owner = ByteField(0x053F, label='球所在')  # 球在人手里(0~3),地上或空中(6)
    ball_form = ByteField(0x0518, label='球形态')

    # 原数据-->修改后
    # 横坐标清除必杀释放限制静态地址:
    # 0x18cfc-10-->00
    # 0x18d00-60-->80
    # 0x18d91-10-->00
    # 0x18d95-60-->80

    # 纵坐标清除必杀释放限制静态地址:
    # 0x18d06-05-->06
    # 0x18d9b-05-->06
    skill_anywhere = ToggleFields()
Пример #30
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='物品价格')