Epic War 4

EpicWar4 (51.74КиБ) Подсел на флеш-игрушку Epic War 4.

Но медленно наращивать мощность очень уж скучно, сделал патч, который увеличивает количество денег до двух миллионов, применив его 2-3 раза, можно купить всё что только есть в игре.

Для того, чтобы применить патч, найдите SOL-файл игры (где такие файлы обычно лежат в разных операционных системах можно посмотреть в «Википедии») — там содержится её сохранённое состояние. И укажите программе при запуске полный путь и имя этого файла.

Программа написана сразу на трёх языках — PowerShell (для Windows) и PHP с Python (для всех), запускайте любым из этих трёх интерпретаторов:
#!/usr/bin/env python
########################################################
# Written by Evgeny Stepanischev (http://bolknote.ru)  #
# Epic War 4 money patch (for PowerShell, Python, PHP)  #
#<?/*
"""*/
echo str_repeat('#', 55), chr(10);

if ($_SERVER['argc'] > 1) {
    
    $fp = @fopen($_SERVER['argv'][1], 'r+b');
    if ($fp) {
        $content = fread($fp, 655350);
        $content = preg_replace('/(?<=stat_money).{5}/s', pack('H*', '0480C584B4'), $content);

        rewind($fp);
        fwrite($fp, $content);
        echo 'Done.';
    } else {
        echo 'Invalid file.';
    } 

    fclose($fp);
} else {
    echo 'Usage: ', $_SERVER['argv'][0], '<filename>';
}

__halt_compiler();

""" + """ " | out-null

If ($args) {
    [char[]] $binary = Get-Content -encoding byte $args[0]

    $binary = [string]::join('', $binary) -replace`
              'stat_money.{5}', `
              "stat_money$([char]0x4)$([char]0x80)$([char]0xC5)$([char]0x84)$([char]0xB4)"

    Set-Content $args[0] ([byte[]][char[]] $binary) -encoding byte

    "Done."

} Else {
    "Usage: " + $MyInvocation.MyCommand.Name +" <filename>"
}

"""
from sys import argv
from os.path import basename

if len(argv) > 1:
    name = 'stat_money'

    f = open(argv[1], 'r+b')
    binary = bytearray(f.read())

    try:
        index = binary.index(name) + 1 + len(name)
        binary[index:index+4] = '\x80\xc5\x84\xb4'

        f.seek(0)
        f.write(binary)
        f.close()
        print('Done.')
    except:
        print('Invalid file.')
else:
    print('Usage: %s <filename>' % basename(argv[0]))

# " | out-null
python patch.ps1 DEF4_SAVE.sol
или
powershell -Command .\patch.ps1 DEF4_SAVE.sol
или
php patch.ps1 DEF4_SAVE.sol

Жаль расцветить три языка в одном файле можно только вручную.
28 августа 2010 15:15

bolk (bolknote.ru)
28 августа 2010, 15:48

Поторопился — в варианте для Python надо иначе исключение обрабатывать. Приеду домой, исправлю.

bolk (bolknote.ru)
28 августа 2010, 20:34

Исправил

CTAPbIu_MABP (ctapbiu.mabp.myopenid.com)
28 августа 2010, 21:33

Там есть уровень "орды гоблинов". Запускаешь его на эпик сложности, только не забудь взять дракона, и идешь на обед, через час 1кк в кармане. И все по честному.
Я смотрю ты большого белого друга еще не убил ;)

bolk (bolknote.ru)
28 августа 2010, 21:55, ответ предназначен CTAPbIu_MABP (ctapbiu.mabp.myopenid.com):

Я ещё недавно играю :)

bolk (bolknote.ru)
28 августа 2010, 22:20, ответ предназначен CTAPbIu_MABP (ctapbiu.mabp.myopenid.com):

А что за белый друг? Кстати, у меня сейчас всё зелёное, но IX, X, XI не открылись. Так должно быть или у меня что-то сглючило?

bolk (bolknote.ru)
28 августа 2010, 22:47, ответ предназначен CTAPbIu_MABP (ctapbiu.mabp.myopenid.com):

Белого друга нашёл :) Только замок раньше пал, чем он помер.

zg (инкогнито)
29 августа 2010, 10:47

читы убивают геймплей.

bolk (bolknote.ru)
29 августа 2010, 11:29, ответ предназначен zg

Я как-то не ценитель такого геймплея. Да и, в общем-то, вообще не ценитель. Не играю я. Просто иногда что-то находит.

CTAPbIu_MABP (ctapbiu.mabp.myopenid.com)
30 августа 2010, 11:22

паздравляю с победой ;)

bolk (bolknote.ru)
30 августа 2010, 17:28, ответ предназначен CTAPbIu_MABP (ctapbiu.mabp.myopenid.com):

Спасибо :)

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)