示例#1
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="时间"))
示例#2
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)
示例#3
0
class Global(Model):
    bomb_count = ByteField(0x0074, label="炸弹数量")
    bomb_power = ByteField(0x0073, label="炸弹威力")
    level = ByteField(0x0058, label="选关")
    invincible = ByteField(0x007A, label="无敌时间")
    through_bomb = ToggleField(0x0078, size=1, enable=1, disable=0, label="穿炸弹")
    timebomb = ToggleField(0x0077, size=1, enable=1, disable=0, label="定时炸弹")
    through_wall = ToggleField(0x0076, size=1, enable=1, disable=0, label="穿墙")
示例#4
0
class Global(Model):
    hp = ByteField(0x0597)
    star = ByteField(0x0598)  # 音波等形态次数
    lives = ByteField(0x0599)
    credits = ByteField(0x07BB)  # 无限Credits, 02
    invincible = ToggleField(0x05F9, size=1, enable=0xFF, disable=0)
    invincible2 = ToggleField(0x05FB, size=1, enable=0x44, disable=0)
    form = ByteField(0x05E0)
    ability = ByteField(0x05E3)
示例#5
0
class Global(Model):
    continues = ByteField(0x03001A84, label="续关")
    lives = ByteField(0x03002C60, label="生命")
    invincible = ToggleField(0x03002CA0,
                             size=1,
                             enable=0xFF,
                             disable=0,
                             label="无敌")
    score = Field(0x03002C64, label="分数")
    weapon = ByteField(0x3002CA8, label="武器种类")
    hit_anywhere = ToggleField(0x080179AC,
                               size=2,
                               enable=0xE014,
                               disable=0x72DC,
                               label="Hit Anywhere")
示例#6
0
class Global(BaseGlobal):
    money = Field(0x0202AA50)
    turns = WordField(0x0202AA58)
    chapter = ByteField(0x0202AA56)
    person_addr = Field(0x02003114)
    curx = WordField(0x0202AA1C)
    cury = WordField(0x0202AA1E)
    persons = ArrayField(0x202AB78, 0xff, ModelField(0, Person))
    train_items = ArrayField(0x02039430, 100, ModelField(0, ItemSlot))  # 运输队
    # Hack code
    inf_move = ToggleFields(
        ToggleField(0x08017B80, size=2, enable=0x2000, disable=0x2002),
        ToggleField(0x08017EEA, size=2, enable=0x2100, disable=0x2102),
        ToggleField(0x0801B976, size=2, enable=0x2000, disable=0x2040),
        ToggleField(0x0802A0C8, size=2, enable=0x2000, disable=0x2040))  # 无限行动
    item_count_keep = ToggleField(0x08016940,
                                  size=2,
                                  enable=0x46C0,
                                  disable=0x1812)  # 武器耐久度不减
    proficiency_max = ToggleField(0x080256CC,
                                  size=2,
                                  enable=0x22FB,
                                  disable=0x1C02)  # 武器熟练度最大
    ability_up_1 = ToggleField(0x080250CC,
                               size=2,
                               enable=0x2001,
                               disable=0x1C20)  # 全能力成长1点
    ability_up_2 = ToggleField(0x080250CC,
                               size=2,
                               enable=0x2002,
                               disable=0x1C20)  # 全能力成长2点
    got_100exp = ToggleField(0x080258D0, size=2, enable=0x2464,
                             disable=0x1824)  # 战后升级
    # got_100exp = ToggleFields(
    #     ToggleField(0x080258BA, size=2, enable=0x2064, disable=0x2001),
    #     ToggleField(0x080258D0, size=2, enable=0x2464, disable=0x1824),
    #     ToggleField(0x08025994, size=2, enable=0x46C0, disable=0xDD00),
    #     ToggleField(0x080259C6, size=2, enable=0x2064, disable=0x200A)
    #     ToggleField(0x080259CC, size=2, enable=0x3064, disable=0x300A)
    # )
    support_quickly = ToggleField(0x08022B72,
                                  size=2,
                                  enable=0x7039,
                                  disable=0x7038)  # 好感度快速提升
示例#7
0
class IngameItem(Model):
    """游戏中个人物品"""
    SIZE = 0x1C
    enabled = ToggleField(4, size=1, enable=1, disable=0, label="激活")
    slot = ByteField(5, label="槽位")
    type = WordField(6, label="种类")
    quantity = WordField(0x0A, label="数量/武器弹药")
    double_quantity = WordField(0x0C, label="双枪弹药")
    max_quantity = WordField(0x10, label="最大数量/武器弹药")
    model = Field(0x18, label="模型")
示例#8
0
class Character(Model):
    health = WordField(0x1364, label="HP")
    health_max = WordField(0x1366, label="最大HP")
    coord = CoordField(0x30, label="坐标")
    # idle = Field(0x10E0)
    # target = Field(0x2DA4, label="目标")
    # ai = Field(0x2DA8, label="AI")
    # attack_reaction = Field(0x1358)
    # merce_kill_counter = Field(0x25BC)
    invincible = ToggleField(0x135C, label="无敌", enable=0, disable=1)
    items = ArrayField(0x21A8, 24, ModelField(0, IngameItem))
示例#9
0
class Global(Model):
    lives = ByteField(0x018D, label="战机数量")
    money = ByteField(0x018E, label="金钱")
    bomb_count = ByteField(0x018F, label="炸弹数量")
    bomb_type = ByteField(0x0190, label="炸弹种类")
    armor = ToggleField(0x0032, size=1, enable=0xC0, disable=0, label="护甲")
    power = ByteField(0x0033, label="子弹威力")
    bullet_type = ByteField(0x0034, label="子弹种类")
    bomb_power = ByteField(0x003B, label="炸弹威力")
    invincible = ByteField(0x06A0, label="无敌时间")
    bomb_time = ByteField(0x06A1, label="炸弹持续时间")
    level = ByteField(0x0180, label="关卡序号")
示例#10
0
class Global(Model):
    hp = ByteField(0x02002AEA, label="生命")  # A0
    hpmax = ByteField(0x02002AEB, label="生命上限")  # A0
    rupees = WordField(0x02002B00, label="宝石")  # 03E7
    rupeesmax = ByteField(0x02002AE8, label="宝石上限")  # 03
    scrolls_flag = WordField(0x02002B44, label="卷轴")  # FFFF
    skills_flag = WordField(0x0300402C, label="剑技")  # FFFF
    bomb = ByteField(0x02002AEC, label="炸弹数")  # 63
    array = ByteField(0x02002AED, label="弓箭数")  # 63
    conch = WordField(0x02002B02, label="海螺数")  # 03E7
    keys = ArrayField(0x02002E9D, 16, ByteField(0))  # 钥匙数
    help_tool = ArrayField(0x02002EAD, 16, ByteField(0))  # 迷宫辅助道具
    weapon_a = ByteField(0x02002AF4, label="A键武器")
    weapon_b = ByteField(0x02002AF5, label="B键武器")
    items_flag = Field(0x02002B32, size=8, label="物品")
    bodysize = ByteField(0x03003FB0, label="身体大小")

    all_scrolls = ToggleField(scrolls_flag.offset, enable=0xFFFF, label="全卷轴")
    all_skills = ToggleField(skills_flag.offset, enable=0xFFFF, label="全剑技")
    all_map = ToggleField(0x02002A80, enable=0x1FFFF, label="地图全开")
    guide_falg = Field(0x02002B0E, bytes, 20, label="全图鉴")
示例#11
0
class Character(Model):
    """角色"""
    id = Field((0x010C, 0x16), bytes, 6)
    health = WordField(0x0F10, label="生命值")
    health_max = WordField(0x0F12, label="生命值上限")
    invincible = ToggleField(0x0FC4, enable=0, disable=1, label="无敌")
    stamina = Field(0x3B00, float, label="体力")
    stamina_max = Field(0x3B04, float, label="体力上限")
    coord = CoordField(0x50, label="坐标")
    moving_speed = Field(0x54, float, label="移动速度")
    cur_item = ByteField(0x46D8)  # 当前使用的物品序号(只读)
    items = ArrayField(0x46E0, 24, ModelField(
        0, IngameItem))  # 水平武器: 0~6, 药丸: 7, 垂直武器: 8~12 其他物品: 15~23
    rapid_fire = Field(0x4F4C, float, label="快速开火")
    fix_weapon_switch = Field(0x46D0, float)  # 竖行武器切换至横行武器时的修正?
    is_wet = Field(0x2E34, label="是否湿了")
示例#12
0
class Global(Model):
    hp = WordField(0x02039B52, label="HP")
    hpmax = WordField(0x02039C18, label="总HP")
    cpmax = WordField(0x02039C1A, label="总CP")
    exp = WordField(0x02039C20, label="EXP")
    mp = WordField(0x02039C94, label="M点数")
    dark = WordField(0x02039C1C, label="Dark点数")
    atk = WordField(0x02039C1E, label="攻击力")
    battle_hp = WordField(0x0203314C, label="战斗HP")
    battle_hpmax = WordField(0x0203314E, label="战斗总HP")

    # 全特技
    # 02039CBC:FFFFFFFF
    # 02039CD0:FFFFFFFF
    # 02039CD4:FFFFFFFF
    skills = Field(0x02039C2C, bytes, 0x1C)
    map_cards = ArrayField(0x0203A830, 0x104, Field(0))
    battle_cards = ArrayField(0x02039FF0, 0x232, ModelField(0, BattleCard))
    event_book = Field(0x02039C54, bytes, 0x40)

    riku_enable = ToggleField(0x02039B28, enable=0x20, disable=0, label="利库篇开启")
示例#13
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='不减')
示例#14
0
class Global(BaseGlobal):
    persons = ArrayField(0, 15, ModelField(0, Person))
    chariots = ArrayField(0, 12, ModelField(0, Chariot))
    chariot_battle_status = ArrayField(0, 4,
                                       ModelField(0, ChariotBattleStatus))
    money = Field(0x0219F768, label="金钱")
    difficulty = ByteField(0x0219483D, label="难易度")  # TODO
    stamp = WordField(0x0219F7BE, label="印章")
    game_turn = ByteField(0x021AA3E4, label="通关次数")  # TODO
    game_time = Field(0x022AC6FC, label="游戏时间")

    # allfax = ToggleField(0x0219E90B, size=6, enable=0xFFFFFFFFFFFF, label="传真全开")  # TODO
    # allmap = ToggleFields()
    enemy_flash = ToggleFields(ToggleField(0x02087ADE,
                                           enable=0x2109,
                                           size=2,
                                           disable=0x7E81),
                               ToggleField(0x02087DBA,
                                           enable=0x46C0,
                                           size=2,
                                           disable=0xDA40),
                               label="敌人闪光")

    quick_switch = ToggleField(0x0202460C,
                               enable=0x47702001,
                               disable=0x47702000,
                               label="画面切换高速化")
    quick_move = ToggleField(0x020C2A58,
                             size=2,
                             enable=0x2994,
                             disable=0x14CD,
                             label="高速移动")
    must_winning = ToggleField(0x020442F0,
                               enable=0x2007E008,
                               disable=0x2007DD08,
                               label="贩卖机绝对会中奖")
    tool_count_keep = ToggleField(0x0207681E,
                                  enable=0x46C00049,
                                  disable=0x54420049,
                                  label="消费道具用后不减")

    weight_zero = ToggleFields(ToggleField(0x02076A30,
                                           enable=0x84C82000,
                                           disable=0x18248CC8),
                               ToggleField(0x02076A50,
                                           enable=0x80022200,
                                           disable=0x18248800),
                               label="装甲除底盘外重量为0")

    equip_limit_remove = ToggleFields(ToggleField(0x0207B9B2,
                                                  size=2,
                                                  enable=0x46C0,
                                                  disable=0xD00A),
                                      ToggleField(0x02073AD0,
                                                  size=2,
                                                  enable=0x46C0,
                                                  disable=0xD055),
                                      ToggleField(0x02073BA8,
                                                  size=2,
                                                  enable=0x46C0,
                                                  disable=0xD003),
                                      ToggleField(0x02073C7E,
                                                  size=2,
                                                  enable=0x46C0,
                                                  disable=0xD037),
                                      ToggleField(0x02073D16,
                                                  size=2,
                                                  enable=0x46C0,
                                                  disable=0xD015),
                                      ToggleField(0x02073FD0,
                                                  size=2,
                                                  enable=0x46C0,
                                                  disable=0xD005),
                                      ToggleField(0x0204E0EC,
                                                  size=2,
                                                  enable=0x46C0,
                                                  disable=0xD030),
                                      label="装备限制解除")

    without_material = ToggleFields(
        ToggleField(0x02051CD0, enable=0xE0141884, disable=0x88681885),
        ToggleField(0x02051EC0, enable=0xE00AFCCF, disable=0x8868F90B),
        label="艺术家制作不需要素材",
    )

    drop_item_three_star = ToggleField(0x020773B0,
                                       enable=0x46C02003,
                                       disable=0xFBB2F00F,
                                       label="敌人掉落的都是3星")
    no_battle = ToggleField(0x020BBE60,
                            size=2,
                            enable=0x46C0,
                            disable=0x1C40,
                            label="不遇敌")
    # 战后获得金钱倍数(2: 00C8, 4: 0190, 8: 0320, 16: 0640, 32: 0C80, 64: 1900, 128: 3200)
    after_money_rate = WordField(0x021A5CA8, label="战后获得金钱倍数")
    ammo_keep = ToggleField(0x0208FA1C,
                            enable=0x46C0D302,
                            disable=0x1E52D302,
                            label="车辆弹药不减")

    through_wall = ToggleField(0x020BE4C4,
                               size=2,
                               enable=0x2000,
                               disable=0x1C28,
                               label="穿墙")

    # 回复道具
    potions = ArrayField(0x0219F918, 27, ModelField(0, ItemInfo))
    # 战斗道具
    battle_items = ArrayField(0x0219F960, 46, ModelField(0, ItemInfo))
    # 道具
    humen_items = ArrayField(0x0219FC78, 222, ModelField(0, ItemInfo2))
    # 装备
    equips = ArrayField(0x0219FF6C, 373, ModelField(0, ItemInfo2))

    # 敌人分布
    enemy_case = ArrayField(0x021A5E58, 4, ModelField(0, EnemyCase))
    # 敌人情况
    enemys = ArrayField(0, 10, ModelField(0, Enemy))

    reward = Field(0x21AB4FE, size=3, label="获得赏金")
    fame = WordField(0x021AB501, label="有名度")

    use_humen_weapon_1 = ToggleField(0x0208425C,
                                     enable=0xE0012801,
                                     disable=0xD12C2801,
                                     label="战车中能用人武器v1")
    use_humen_weapon_2 = ToggleField(0x02085374,
                                     enable=0xD00AE004,
                                     disable=0xD00AD004,
                                     label="战车中能用人武器v2")
    buy_chariot_item_three_star = ToggleField(0x02077378,
                                              enable=0x72602003,
                                              disable=0x7260D101,
                                              label="店内购入车用品必3星")
    can_buy_not_for_sale = ToggleField(0x0204E618,
                                       enable=0x48B8E001,
                                       disable=0x48B8D101,
                                       label="可以购入非卖车用品")

    can_change_even_overweight = ToggleField(0x02043064,
                                             enable=0x1EE4E000,
                                             disable=0x1EE4D100,
                                             label="车身超过重量也可以改造")
    can_always_special_bullet = ToggleFields(ToggleField(0x0208EFEC,
                                                         size=2,
                                                         enable=0x46C0,
                                                         disable=0xD111),
                                             ToggleField(0x0208EFFE,
                                                         size=2,
                                                         enable=0xE007,
                                                         disable=0xD007),
                                             label="都能用特殊砲弾")

    skill_count_keep = ToggleFields(ToggleField(0x0208F070,
                                                size=2,
                                                enable=0x46C0,
                                                disable=0x1E40),
                                    ToggleField(0x0207C2B2,
                                                size=2,
                                                enable=0x46C0,
                                                disable=0x1E40),
                                    label="特技使用次数不减")

    can_go_hear = ToggleFields(ToggleField(0x020686F0,
                                           size=8,
                                           enable=0x00C9314521F0E046,
                                           disable=0xF009A9008B30E046),
                               ToggleField(0x020686F8,
                                           size=8,
                                           enable=0xA902688868081861,
                                           disable=0xA90298019800FEAD),
                               label="传送系统可以移動到现在地")

    # 仓库第一件战车物品星级 0x21A0419
    # 好感度
    favorability = ArrayField(0x021AB52E, 12, ByteField(0))

    # 通缉名单状态01=逃走, 03=击破
    wanted_status = ArrayField(0x021AB503, 30, ByteField(0))

    # 连射
    # 2212919C 00000000

    move_speed = WordField(0x020C2A58, label="移动速度")
示例#15
0
class Global(BaseGlobal):
    money = Field(0x0202BCF4)
    chapter = ByteField(0x0202BCFA)
    turns = WordField(0x0202BCFC)
    extra_flag = WordField(0x02024F72)  # 附加项
    person_addr = Field(0x02003c08)
    curx = WordField(0x0202bcc0)
    cury = WordField(0x0202bcc2)
    persons = ArrayField(0x202be48, 0xff, ModelField(0, Person))
    train_items = ArrayField(0x0203A818, 100, ModelField(0, ItemSlot))  # 运输队

    # # Hack code EN
    # inf_move = ToggleFields(
    #     ToggleField(0x080183A8, size=2, enable=0x2000, disable=0x2002),
    #     ToggleField(0x08018750, size=2, enable=0x2100, disable=0x2102),
    #     ToggleField(0x0801D2BC, size=2, enable=0x2100, disable=0x2140),
    #     ToggleField(0x080320DE, size=2, enable=0x2100, disable=0x2140)
    # )  # 无限行动
    # item_count_keep = ToggleField(0x08016B0A, size=2, enable=0x46C0, disable=0x1812)  # 武器耐久度不减
    # proficiency_max = ToggleField(0x0802C280, size=2, enable=0x22FB, disable=0x1C02)  # 武器熟练度最大
    # ability_up_1 = ToggleField(0x0802B9BC, size=2, enable=0x2001, disable=0x1C20)  # 全能力成长1点
    # ability_up_2 = ToggleField(0x0802B9BC, size=2, enable=0x2002, disable=0x1C20)  # 全能力成长2点
    # got_100exp = ToggleField(0x0802C58C, size=2, enable=0x2164, disable=0x1809)  # 战后升级
    # got_100exp = ToggleFields(
    #     ToggleField(0x0802C574, size=2, enable=0x2064, disable=0x2001),
    #     ToggleField(0x0802C58C, size=2, enable=0x2164, disable=0x1809),
    #     ToggleField(0x0802C694, size=2, enable=0x46C0, disable=0xDD00),
    #     ToggleField(0x0802C6CC, size=2, enable=0x2064, disable=0x200A)
    #     ToggleField(0x0802C6D2, size=2, enable=0x3064, disable=0x300A)
    # )
    # support_quickly = ToggleField(0x080282C2, size=2, enable=0x7039, disable=0x7038)  # 好感度快速提升

    # Hack code ZH
    inf_move = ToggleFields(
        ToggleField(0x080183A8, size=2, enable=0x2000, disable=0x2002),
        ToggleField(0x08018464, size=2, enable=0x2100, disable=0x2102),
        ToggleField(0x0801CF20, size=2, enable=0x2100, disable=0x2140),
        ToggleField(0x0803202A, size=2, enable=0x2100, disable=0x2140))  # 无限行动
    item_count_keep = ToggleField(0x080168B2,
                                  size=2,
                                  enable=0x46C0,
                                  disable=0x1812)  # 武器耐久度不减
    proficiency_max = ToggleField(0x0802C1C8,
                                  size=2,
                                  enable=0x22FB,
                                  disable=0x1C02)  # 武器熟练度最大
    ability_up_1 = ToggleField(0x0802B904,
                               size=2,
                               enable=0x2001,
                               disable=0x1C20)  # 全能力成长1点
    ability_up_2 = ToggleField(0x0802B904,
                               size=2,
                               enable=0x2002,
                               disable=0x1C20)  # 全能力成长2点
    got_100exp = ToggleField(0x0802C4C4, size=2, enable=0x2164,
                             disable=0x1809)  # 战后升级
    # got_100exp = ToggleFields(
    #     ToggleField(0x802C4AC, size=2, enable=0x2064, disable=0x2001),
    #     ToggleField(0x802C4C4, size=2, enable=0x2164, disable=0x1809),
    #     ToggleField(0x802C5CC, size=2, enable=0x46C0, disable=0xDD00),
    #     ToggleField(0x802C604, size=2, enable=0x2064, disable=0x200A)
    #     ToggleField(0x802C60A, size=2, enable=0x3064, disable=0x300A)
    # )
    support_quickly = ToggleField(0x08028256,
                                  size=2,
                                  enable=0x7039,
                                  disable=0x7038)  # 好感度快速提升
示例#16
0
class Global(BaseGlobal):
    persons = ArrayField(0, 15, ModelField(0, Person))
    chariots = ArrayField(0, 12, ModelField(0, Chariot))
    chariot_battle_status = ArrayField(0, 4,
                                       ModelField(0, ChariotBattleStatus))
    money = Field(0x021947D8, label="金钱")
    difficulty = ByteField(0x0219483D, label="难易度")
    stamp = WordField(0x02194844, label="印章")
    game_turn = ByteField(0x021AA3E4, label="通关次数")
    game_time = Field(0x021295DC, label="游戏时间")

    allfax = ToggleField(0x0219E90B,
                         size=6,
                         enable=0xFFFFFFFFFFFF,
                         label="传真全开")
    allmap = ToggleFields(ToggleField(0x020ACE8A,
                                      enable=0x20FF,
                                      size=2,
                                      disable=0x7828),
                          ToggleField(0x020AC3F0,
                                      enable=0x4770,
                                      size=2,
                                      disable=0xD000),
                          label="地图全开")
    enemy_flash = ToggleFields(ToggleField(0x020D3E94,
                                           enable=0x2209,
                                           size=2,
                                           disable=0x7F0A),
                               ToggleField(0x020D41AA,
                                           enable=0x46C0,
                                           size=2,
                                           disable=0xDA03),
                               label="敌人闪光")
    can_use_other_skill = ToggleFields(ToggleField(0x020753A4,
                                                   enable=0xE005,
                                                   size=2,
                                                   disable=0xD105),
                                       ToggleField(0x02075628,
                                                   enable=0x4280,
                                                   size=2,
                                                   disable=0x42A0),
                                       ToggleField(0x020E1F60,
                                                   enable=0x4280,
                                                   size=2,
                                                   disable=0x4285),
                                       ToggleField(0x020DDB58,
                                                   enable=0x4280,
                                                   size=2,
                                                   disable=0x2A02),
                                       label="可以使用其他副职业的特技")
    must_critical_hit = ToggleFields(ToggleField(0x02000180,
                                                 enable=0x9800DB032807B500,
                                                 size=8,
                                                 disable=0xBDAF1785CC47D6C6),
                                     ToggleField(0x02000188,
                                                 enable=0xF0D6BD009000380C,
                                                 size=8,
                                                 disable=0x3AA28F402E0005E8),
                                     ToggleField(0x02000190,
                                                 enable=0xBD00F9BB,
                                                 disable=0x4B358143),
                                     ToggleField(0x020D6614,
                                                 enable=0xFDB4F729,
                                                 disable=0xFF78F7FF),
                                     label="必定会心一击")

    quick_switch = ToggleField(0x02027164,
                               enable=0x47702001,
                               disable=0x47702000,
                               label="画面切换高速化")
    quick_move = ToggleField(0x021911FC,
                             enable=0x00001000,
                             disable=0x199,
                             label="高速移动")
    must_winning = ToggleField(0x02042B54,
                               enable=0x46C04287,
                               disable=0xDD014287,
                               label="贩卖机绝对会中奖")
    tool_count_keep = ToggleField(0x0206DD4C,
                                  enable=0x2600B5F8,
                                  disable=0x1C16B5F8,
                                  label="消费道具用后不减")
    level_up_max = ToggleFields(ToggleField(0x0206FC64,
                                            enable=0x1E482100,
                                            disable=0x21001C18),
                                ToggleField(0x020DF908,
                                            enable=0xE0002000,
                                            disable=0xF7F32064),
                                label="等级上升时随机数值最大")

    weight_zero = ToggleFields(ToggleField(0x0206F37C,
                                           enable=0x85482000,
                                           disable=0x18248D48),
                               ToggleField(0x0206F39C,
                                           enable=0x80022200,
                                           disable=0x18248800),
                               label="装甲除底盘外重量为0")

    equip_limit_remove = ToggleFields(ToggleField(0x02000120,
                                                  enable=0xF882F031,
                                                  disable=0xE5FCE69F),
                                      ToggleField(0x02000124,
                                                  enable=0x1E5B2300,
                                                  disable=0xBB92C9B8),
                                      ToggleField(0x02000128,
                                                  enable=0xBDF8802B,
                                                  disable=0xE28EAD90),
                                      ToggleField(0x0206E112,
                                                  enable=0xF805F792,
                                                  disable=0xF889F7C3),
                                      ToggleField(0x0206E16C,
                                                  enable=0xFFD8F791,
                                                  disable=0xF85CF7C3),
                                      label="装备限制解除")

    without_material = ToggleFields(
        ToggleField(0x0204E9F0, enable=0xE0141884, disable=0x88601884),
        ToggleField(0x0204EC04, enable=0xE00AFCCF, disable=0x8878FCCF),
        label="艺术家制作不需要素材",
    )

    twin_engines = ToggleField(0x02074648,
                               enable=0x77622201,
                               disable=0x1892D841,
                               label="全车种双引擎")
    drop_item_three_star = ToggleField(0x0206FEB4,
                                       enable=0x20030600,
                                       disable=0x0E000600,
                                       label="敌人掉落的都是3星")
    no_battle = ToggleField(0x020AB298,
                            enable=0x0000E071,
                            disable=0xF7CDD371,
                            label="不遇敌")
    must_drop_item = ToggleField(0x020E0604,
                                 enable=0x46C04281,
                                 disable=0xDA304281,
                                 label="必定掉落道具")
    after_money = Field(0x021AAEA4, label="战后获得金钱")
    after_exp = Field(0x021AAE90, label="战后获得经验值")
    # 战后获得金钱倍数(2: 00C8, 4: 0190, 8: 0320, 16: 0640, 32: 0C80, 64: 1900, 128: 3200)
    after_money_rate = WordField(0x21AAE4A, label="战后获得金钱倍数")
    # 战后获得经验值倍数(2: 00C8, 4: 0190, 8: 0320, 16: 0640, 32: 0C80, 64: 1900, 128: 3200)
    after_exp_rate = WordField(0x021AAE4E, label="战后获得经验值倍数")
    ammo_keep = ToggleField(0x020DDCDC,
                            enable=0x545346C0,
                            disable=0x54531E5B,
                            label="车辆弹药不减")

    through_wall = ToggleFields(ToggleField(0x02034920,
                                            enable=0xE1A00000,
                                            disable=0xA3A00000),
                                ToggleField(0x02034474,
                                            enable=0xE1550001,
                                            disable=0xB1550001),
                                ToggleField(0x02034478,
                                            enable=0xE1A05001,
                                            disable=0xB1A05001),
                                ToggleField(0x0203447C,
                                            enable=0xE1A06000,
                                            disable=0xB1A06000),
                                ToggleField(0x020B24EE,
                                            size=2,
                                            enable=0xE000,
                                            disable=0xD100),
                                label="穿墙")

    # 战斗必定先制
    must_first = ToggleField(0x02085A3E,
                             size=6,
                             enable=0x46C070012102,
                             disable=0xD12A28027800,
                             label="战斗必定先制")

    # 回复道具
    potions = ArrayField(0x0219491C, 27, ModelField(0, ItemInfo))
    # 战斗道具
    battle_items = ArrayField(0x02194A3C, 46, ModelField(0, ItemInfo))
    # 道具
    humen_items = ArrayField(0x02194C78, 222, ModelField(0, ItemInfo2))
    # 装备
    equips = ArrayField(0x02194FF0, 373, ModelField(0, ItemInfo2))

    # 敌人分布
    enemy_case = ArrayField(0x021AAF40, 4, ModelField(0, EnemyCase))
    # 敌人情况
    enemys = ArrayField(0, 10, ModelField(0, Enemy))

    posx = WordField(0x0219120E, label="X坐标")
    posy = WordField(0x02191212, label="Y坐标")
示例#17
0
class Global(BaseGlobal):
    # chapter = ByteField(0x0202BCFA)
    # turns = WordField(0x0202BCFC)
    person_addr = Field(0x021986F4)
    curx = ByteField(0x02273BD4)  # 0x02272EA4  # TODO
    cury = ByteField(0x02273BD5)  # 0x02272EA5  # TODO
    # persons = ArrayField(0x202be48, 0xff, ModelField(0, Person))
    train_items = ArrayField(0x021986D0, 100, ModelField(0, ItemSlot))  # 运输队
    ourturn = ToggleField(0x021A9674, enable=0xE2812000, disable=0xE2812001)
    control_enemy = ToggleField(0x021B1830, enable=0xE1500000, disable=0xE1510000)
    upgrade_max = ToggleField(0x0203C474, enable=0xE1A09005, disable=0xB2899001)
    upgrade_all = ToggleField(0x0203C44C, enable=0xE1A00000, disable=0xAA000009)
    lv1_can_transfer = ToggleField(0x02049EE0, enable=0x00000001, disable=0xE350000A)
    can_train = ToggleField(0x021C6F7C, enable=0xE3A00002, disable=0xEBF9D152)
    can_visit = ToggleField(0x021ECB14, enable=0xE3A00002, disable=0xEBF98B4C)  # TODO
    can_holddown = ToggleField(0x021C6E0C, enable=0xEBF9A61E, disable=0xEBF9D1AE)
    use_enemy_prof = ToggleField(0x021D4CEC, enable=0xEA000022, disable=0x1A000022)
    infinite_refine = ToggleField(0x02052618, size=2, enable=0, disable=0x0A01)
    item_consume = ToggleField(0x0203CDD0, size=2, enable=0x0000, disable=0x0001)
    enemy_item_drop = ToggleField(0x021D3114, size=8, enable=0xE3500000E1D006B0, disable=0xE3500020E5D10003)
    exp_rate = Field(0x021CFACC)
    pro_rate = Field(0x021CFC78)
    config = ModelPtrField(0x02198120, Config, 4)
    _iteminfos = ArrayField(0x022494E0, 0xff, ModelField(0, ItemInfo))

    difficulty = ByteField(0x0227E6E5)  # 0201FF8C E3A00000
    always_level_up = ToggleField(0x021CFAC4, enable=0xE3A02064, disable=0xE5D1206B)

    @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
示例#18
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