Информация о файле
1. Введение.
Сейчас играю в самую любимую свою игру Fallout2, а точнее в мод для неё Restoration Project v.2.3.3.
Ранее я выкладывал Редактор сейвов к игре в этом посте. Он прекрасно работает.
Решил к нему немного добавить возможностей.
2. Видио-инструкция.
Торможения на видео по-видимому связаны с конфликтом м/у Бандикамом и графичским модом игры -> наверное используют в определённые моменты одно и тоже. Без Бандикама - торомозов в игре нет.
PS: подтвердилось. Вторую видео-инструкцию записывал с помощью Action!, там глюков не было.
3. Скрипты.
[ENABLE]aobscanmodule(WEIGHT_NPC,FALLOUT2.EXE,8B 44 98 04 83 C4 08)alloc(newmem,$64)label(return)registersymbol(WEIGHT_NPC)newmem: cmp ebx,c jne @f mov [eax+ebx*4+00000090],#900@@: mov eax,[eax+ebx*4+04] add esp,08 jmp returnWEIGHT_NPC: jmp newmem db 90 90return:[DISABLE]WEIGHT_NPC: db 8B 44 98 04 83 C4 08unregistersymbol(WEIGHT_NPC)dealloc(newmem)[ENABLE]aobscanmodule(Money,FALLOUT2.EXE,8B 50 04 8B 00 E8 5A)alloc(newmem,$64)label(return)registersymbol(Money)newmem: push ebx mov ebx,[eax] cmp [ebx+20],3 pop ebx jne @f add [eax+04],#20000@@: mov edx,[eax+04] mov eax,[eax] jmp returnMoney: jmp newmemreturn:[DISABLE]Money: db 8B 50 04 8B 00unregistersymbol(Money)dealloc(newmem)[ENABLE]aobscanmodule(Item,FALLOUT2.EXE,8B 49 04 8B 6C 24 10)alloc(newmem,$64)label(_item)label(return)registersymbol(_Item)registersymbol(Item)newmem: cmp [_item],0 je @f push [_item] pop [ecx+04]@@: mov ecx,[ecx+04] mov ebp,[esp+10] jmp return_item:dd 0Item: jmp newmem db 90 90return:[DISABLE]Item: db 8B 49 04 8B 6C 24 10unregistersymbol(_Item)unregistersymbol(Item)dealloc(newmem)[ENABLE]aobscanmodule(Moving,FALLOUT2.EXE,83 78 40 00 7F 09)alloc(newmem,$64)label(return)registersymbol(Moving)newmem: mov dword ptr [eax+40],a cmp dword ptr [eax+40],00 jg FALLOUT2.EXE+22879 jmp returnMoving: jmp newmem nopreturn:[DISABLE]Moving: db 83 78 40 00 7F 09unregistersymbol(Moving)dealloc(newmem)[ENABLE]aobscanmodule(GodMod,FALLOUT2.EXE,8B 40 58 5A C3)alloc(newmem,$64)label(code)label(return)label(GG)label(Vic)label(Sulik)label(Casidy)label(GodMod1)label(GodMod2)label(GodMod3)label(GodMod0)registersymbol(GodMod0)registersymbol(GodMod)newmem: cmp [GodMod0],0 je GodMod2 cmp [GodMod0],1 je GodMod3 cmp [eax],00004650 jne @f push [GG] pop [eax+58] @@: cmp [eax],000046A9 jne @f push [Casidy] pop [eax+58] @@: cmp [eax],0000468E jne @f push [Vic] pop [eax+58] @@: cmp [eax],000046B1 jne @f push [Sulik] pop [eax+58] @@: jmp codeGodMod2: cmp [eax+24],60002404 je @f cmp [eax+24],60002424 jne code @@: cmp [eax],00004650 jne @f push [eax+58] pop [GG] jmp code @@: cmp [eax],000046A9 jne @f push [eax+58] pop [Casidy] jmp code @@: cmp [eax],0000468E jne @f push [eax+58] pop [Vic] jmp code @@: cmp [eax],000046B1 jne @f push [eax+58] pop [Sulik] jmp codeGodMod3: cmp [eax+24],60002404 je GodMod1 cmp [eax+24],60002424 jne codeGodMod1: mov [eax+58],#999code: mov eax,[eax+58] pop edx ret jmp returnGG: dd 0Vic: dd 0Sulik: dd 0Casidy: dd 0GodMod0: db 0GodMod: jmp newmemreturn:[DISABLE]GodMod: db 8B 40 58 5A C3unregistersymbol(GodMod0)unregistersymbol(GodMod)dealloc(newmem)4. Самое главное - что не сделал.
Я хотел взломать воровство, т.е., чтобы 100 % красть любое количество шмоток.
Но так и не разобрался (хотя игру очень хорошо знаю), от чего зависит это. Если увеличить само умение воровства до максимума 300 и взять все перки на воровство, всё равно воровать 100 % не удаётся. Мне даже показалось, что при начальном (не развитом) воровстве мне удаётся лучше воровать чем при развитом.
Если кто сможет понять, как сделать воровство 100 %, просьба - отпишитесь и в эту тему тоже. Заранее БЛАГОДАРЮ.
5. В версии 1.01 таблицы добавлены скрипты;
[ENABLE]{$LUA}PlaySound(findTableFile([[Activate]])){$ASM}aobscanmodule(Characteristics,FALLOUT2.EXE,A3 74 6C 59 00)aobscanmodule(Characteristics1,FALLOUT2.EXE,8B 44 98 04 83 C4 08)alloc(newmem,$1000)label(newmem1)label(return)label(return1)label(name1)label(name2)label(name3)label(p_name)registersymbol(p_name)label(p_Character0)registersymbol(p_Character0)label(p_Character)registersymbol(p_Character)label(p_Character1)registersymbol(p_Character1)label(p_Character2)label(p_Character3)label(p_Character4)label(p_Character5)registersymbol(Characteristics)registersymbol(Characteristics1)newmem: mov [FALLOUT2.EXE+196C74],eax cmp [eax],00004650 jne @f mov [p_Character0],006681ac mov [p_name],0056d75c mov [p_Character],eax push [p_Character2] pop [p_Character1]@@: cmp [eax],000046A9 jne @f push name1 pop [p_name] mov [p_Character],eax push [p_Character3] pop [p_Character1]@@: cmp [eax],0000468E jne @f push name2 pop [p_name] mov [p_Character],eax push [p_Character4] pop [p_Character1]@@: cmp [eax],000046B1 jne @f push name3 pop [p_name] mov [p_Character],eax push [p_Character5] pop [p_Character1]@@: jmp returnnewmem1: cmp [eax-20],01000000 jne @f mov [p_Character2],eax@@: cmp [eax-20],01000059 jne @f mov [p_Character3],eax@@: cmp [eax-20],0100003E jne @f mov [p_Character4],eax@@: cmp [eax-20],01000061 jne @f mov [p_Character5],eax@@: mov eax,[eax+ebx*4+04] add esp,08 jmp return1p_Character0:dd 0p_Character:dd 0p_Character1:dd 0p_Character2:dd 0p_Character3:dd 0p_Character4:dd 0p_Character5:dd 0p_name:dd 0name1:db CA FD F1 F1 E8 E4 E8 00name2:db C2 E8 EA E0 00 00 00 00name3:db D1 F3 EB E8 EA E0 00 00Characteristics: jmp newmemreturn:Characteristics1: jmp newmem1 db 90 90return1:[DISABLE]{$LUA}PlaySound(findTableFile([[Deactivate]])){$ASM}Characteristics: // 0044BAD1 db A3 74 6C 59 00Characteristics1: // 004AF46A db 8B 44 98 04 83 C4 08unregistersymbol(p_name)unregistersymbol(p_Character0)unregistersymbol(p_Character)unregistersymbol(p_Character1)unregistersymbol(Characteristics)unregistersymbol(Characteristics1)dealloc(newmem)[ENABLE]{$LUA}PlaySound(findTableFile([[Activate]])){$ASM}aobscanmodule(EXP,FALLOUT2.EXE,8B 04 85 AC 81 66 00)alloc(newmem,$64)label(return)registersymbol(EXP)newmem: cmp eax,2 jne @f add [eax*4+006681AC],64@@: mov eax,[eax*4+006681AC] jmp returnEXP: jmp newmem nop nopreturn:[DISABLE]{$LUA}PlaySound(findTableFile([[Deactivate]])){$ASM}EXP: // "FALLOUT2.EXE"+AF908 db 8B 04 85 AC 81 66 00unregistersymbol(EXP)dealloc(newmem)[ENABLE]{$LUA}PlaySound(findTableFile([[Activate]])){$ASM}aobscanmodule(Perki,FALLOUT2.EXE,8B 04 90 C3 8D 40 00)alloc(newmem,$64)label(return)registersymbol(Perki)newmem: mov [eax+edx*4],1 mov eax,[eax+edx*4] ret lea eax,[eax+00] jmp returnPerki: jmp newmem nop nopreturn:[DISABLE]{$LUA}PlaySound(findTableFile([[Deactivate]])){$ASM}Perki: // "FALLOUT2.EXE"+96B89 db 8B 04 90 C3 8D 40 00unregistersymbol(Perki)dealloc(newmem)Скрипт Perki не для чита, а просто для ознакомления какие перки есть в игре, их там очень много (есть положительные, есть отрицательные), поэтому не стал писать на конкретное добавление. Написать скрипт на добавление нужного Вам перка не сложно, по сути все перки это флаги (0 - нет перка, 1 - есть).
[ENABLE]{$LUA}PlaySound(findTableFile([[Activate]])){$ASM}aobscanmodule(Reputation_of_the_city,FALLOUT2.EXE,8B 04 90 83 F8 1E 7C 0F)alloc(newmem,$4000)label(return)label(OK)label(Read)label(Save)Label(Foolproof)registersymbol(Save)label(Arroyo)registersymbol(Arroyo)label(Klamath)registersymbol(Klamath)label(Den)registersymbol(Den)label(Vault_City)registersymbol(Vault_City)label(Modoc)registersymbol(Modoc)label(Gecko)registersymbol(Gecko)label(Military_Base_Sierra)registersymbol(Military_Base_Sierra)label(Broken_Hills)registersymbol(Broken_Hills)label(New_Reno)registersymbol(New_Reno)label(Redding)registersymbol(Redding)label(NCR)registersymbol(NCR)label(Vault_13)registersymbol(Vault_13)label(San_Francisco)registersymbol(San_Francisco)label(Abbey)registersymbol(Abbey)label(EPA)registersymbol(EPA)label(Tribe_Umbra)registersymbol(Tribe_Umbra)label(Raiders)registersymbol(Raiders)label(Vault_15)registersymbol(Vault_15)label(Farm_of_Horrors)registersymbol(Farm_of_Horrors)registersymbol(Reputation_of_the_city)newmem: cmp [Save],1 jne Read cmp [Foolproof],0 je OK cmp edx,2f jne @f push [Arroyo] pop [eax+edx*4] jmp OK@@: cmp edx,30 jne @f push [Klamath] pop [eax+edx*4] jmp OK@@: cmp edx,31 jne @f push [Den] pop [eax+edx*4] jmp OK@@: cmp edx,32 jne @f push [Vault_City] pop [eax+edx*4] jmp OK@@: cmp edx,33 jne @f push [Modoc] pop [eax+edx*4] jmp OK@@: cmp edx,34 jne @f push [Gecko] pop [eax+edx*4] jmp OK@@: cmp edx,35 jne @f push [Military_Base_Sierra] pop [eax+edx*4] jmp OK@@: cmp edx,36 jne @f push [Broken_Hills] pop [eax+edx*4] jmp OK@@: cmp edx,37 jne @f push [New_Reno] pop [eax+edx*4] jmp OK@@: cmp edx,38 jne @f push [Redding] pop [eax+edx*4] jmp OK@@: cmp edx,39 jne @f push [NCR] pop [eax+edx*4] jmp OK@@: cmp edx,3b jne @f push [Vault_13] pop [eax+edx*4] jmp OK@@: cmp edx,3d jne @f push [San_Francisco] pop [eax+edx*4] jmp OK@@: cmp edx,3f jne @f push [Abbey] pop [eax+edx*4] jmp OK@@: cmp edx,40 jne @f push [EPA] pop [eax+edx*4] jmp OK@@: cmp edx,41 jne @f push [Tribe_Umbra] pop [eax+edx*4] jmp OK@@: cmp edx,42 jne @f push [Raiders] pop [eax+edx*4] jmp OK@@: cmp edx,126 jne @f push [Vault_15] pop [eax+edx*4] jmp OK@@: cmp edx,134 jne @f push [Farm_of_Horrors] pop [eax+edx*4] jmp OKOK: mov eax,[eax+edx*4] cmp eax,1E jmp returnRead: mov eax,[eax+edx*4] cmp edx,2f jne @f mov [Arroyo],eax@@: cmp edx,30 jne @f mov [Klamath],eax@@: cmp edx,31 jne @f mov [Den],eax@@: cmp edx,32 jne @f mov [Vault_City],eax@@: cmp edx,33 jne @f mov [Modoc],eax@@: cmp edx,34 jne @f mov [Gecko],eax@@: cmp edx,35 jne @f mov [Military_Base_Sierra],eax@@: cmp edx,36 jne @f mov [Broken_Hills],eax@@: cmp edx,37 jne @f mov [New_Reno],eax@@: cmp edx,38 jne @f mov [Redding],eax@@: cmp edx,39 jne @f mov [NCR],eax@@: cmp edx,3b jne @f mov [Vault_13],eax@@: cmp edx,3d jne @f mov [San_Francisco],eax@@: cmp edx,3f jne @f mov [Abbey],eax@@: cmp edx,40 jne @f mov [EPA],eax@@: cmp edx,41 jne @f mov [Tribe_Umbra],eax@@: cmp edx,42 jne @f mov [Raiders],eax@@: cmp edx,126 jne @f mov [Vault_15],eax@@: cmp edx,134 jne @f mov [Farm_of_Horrors],eax@@: mov [Foolproof],1 cmp eax,1E jmp returnSave:dd 0Foolproof:dd 0Arroyo:dd ffffffffKlamath:dd ffffffffDen:dd ffffffffVault_City:dd ffffffffModoc:dd ffffffffGecko:dd ffffffffMilitary_Base_Sierra:dd ffffffffBroken_Hills:dd ffffffffNew_Reno:dd ffffffffRedding:dd ffffffffNCR:dd ffffffffVault_13:dd ffffffffSan_Francisco:dd ffffffffAbbey:dd ffffffffEPA:dd ffffffffTribe_Umbra:dd ffffffffRaiders:dd ffffffffVault_15:dd ffffffffFarm_of_Horrors:dd ffffffffReputation_of_the_city: jmp newmem nopreturn:[DISABLE]{$LUA}PlaySound(findTableFile([[Deactivate]])){$ASM}Reputation_of_the_city: // 0043BF50 db 8B 04 90 83 F8 1Eunregistersymbol(Save)unregistersymbol(Arroyo)unregistersymbol(Klamath)unregistersymbol(Den)unregistersymbol(Vault_City)unregistersymbol(Modoc)unregistersymbol(Gecko)unregistersymbol(Military_Base_Sierra)unregistersymbol(Broken_Hills)unregistersymbol(Reputation_of_the_city)unregistersymbol(New_Reno)unregistersymbol(Redding)unregistersymbol(NCR)unregistersymbol(Vault_13)unregistersymbol(San_Francisco)unregistersymbol(Abbey)unregistersymbol(EPA)unregistersymbol(Tribe_Umbra)unregistersymbol(Raiders)unregistersymbol(Vault_15)unregistersymbol(Farm_of_Horrors)dealloc(newmem)В скрипт "Репутация" добавлена защита от невнимательных, т.е. прежде чем изменять значения, нужно считать игровые значения. Просто так изменить значения - скрипт не даст.
Города в игре в таблицу Репутации попадают постепенно, если Вы ещё не взаимодействовали с городом (т.е. не получили информацию об нём и местоположение на карте), то в СЕ таблице, после считывания информации, напротив таких городов будет стоять "-1".
6. Видео-инструкция к добавленным скриптам:
7. Но самое главное, что хотел взломать (Шанс своровать -100
, пока так и не сделал. Пересмотрел с 10 структур, перелопатил кучу игрового кода, пытался выйти на нужную инструкцию и через сворованный предмет и через сам навык воровства и через перки связанные с воровством, а также через характеристики НПС, у кого ворую- например его Восприятие.
Также хочу изменить скрипт GodMod, так как не люблю не игровые значения, а в нём я был вынужден временно увеличивать текущее здоровье ГГ и НПС.
Так что ещё поработаю над этой игрой.
Что нового в версии 1.01
Размещено
- В таблицу:
- 1. Добавлены стандартные звуки СЕ активации/деактивации скриптов.
- 2. Добавлены несколько скриптов, позволяющих менять большое количество характеристик ГГ (главного героя) и 3-х напарников (Сулика, Кэссиди и Вика).
- Почему именно этих напарников, потому что предпочитаю в игре ходить именно в 4-ом и именно с этими напарниками.
- Если кому-то нужны будут характеристики другого напарника, то не сложно чуть-чуть добавить в основной скрипт, если не сумеете - пишите в эту тему - помогу.
- Характеристики НПС собраны для удобства, подобно как в игре по окнам.
- 3. Добавлены ссылки на видео-инструкции и эту тему.