You are not logged in.
Демонстрация - http://www.youtube.com/watch?v=a-fib0ajkao
Автосейв после миссии - сохранение в последний слот.
Автосейв перед миссией - сохранение в предпоследний слот.
Autosave-restart.cs - после провала миссии, по нажатию клавиши F9, будет сохранение(в предпоследний слот) и перезапуск миссии посредством телепорта на маркер миссии.
vcautosave.cs - автосейв в предпоследний слот после миссии для VC.
vcquicksave.cs - По нажатию клавиши "2" - сохранение в третий слот.
Исходники -
Autosave.cs[v7]:
{$CLEO} var 20@ : Integer 21@ : Integer end 0000: // 0652: 20@ = integer_stat 147 31@ = 1 0A8D: 25@ = read_memory 0x0061907A size 4 virtual_protect 1 0A8D: 26@ = read_memory 0x0061907E size 1 virtual_protect 1 1@ = 0 0A9F: 0@ = current_thread_pointer 0A8E: 10@ = 0@ + 0x10 0A8D: 10@ = read_memory 10@ size 4 virtual_protect 0 0A8F: 11@ = 10@ - @lbl 0A8C: write_memory 0x00469E2C size 4 value 11@ virtual_protect 1 0@ += 0x40 // 0@ = 1@'s global address; fixed 02/10/10 11@ += 2 0A8C: write_memory 11@ size 4 value 0@ virtual_protect 0 while true wait 0 if $ONMISSION == 1 31@ == 1 then wait 0 0652: 20@ = integer_stat 147 31@ = 0 end if 1@ == 1 then while true wait 0 0652: 21@ = integer_stat 147 if and $ONMISSION == 0 not Actor.Driving($PLAYER_ACTOR) 21@ > 20@ then Break end end 0A8C: write_memory 0x0061907A size 4 value 0x90909090 virtual_protect 1 0A8C: write_memory 0x0061907E size 1 value 0x90 virtual_protect 1 wait 1 0AA5: call 0x619060 num_params 1 pop 0 7 wait 2 0A8C: write_memory 0x0061907A size 4 value 25@ virtual_protect 1 0A8C: write_memory 0x0061907E size 1 value 26@ virtual_protect 1 31@ = 1 // 0ACE: show_formatted_text_box "SAVE OK" 1@ = 0 end end :lbl hex C705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1 B8 9B9A4600 // MOV EAX,00469A9B FFE0 // JMP EAX end
Autosave_before_mission.cs[v6](могут быть глюки из за использования):
{$CLEO} var 20@ : Integer 21@ : Integer end 0652: 20@ = integer_stat 146 0A8D: 25@ = read_memory 0x0061907A size 4 virtual_protect 1 0A8D: 26@ = read_memory 0x0061907E size 1 virtual_protect 1 1@ = 0 0A9F: 0@ = current_thread_pointer 0A8E: 10@ = 0@ + 0x10 0A8D: 10@ = read_memory 10@ size 4 virtual_protect 0 0A8F: 11@ = 10@ - @lbl 0A8C: write_memory 0x004684BC size 4 value 11@ virtual_protect 1 0@ += 0x40 11@ += 2 0A8C: write_memory 11@ size 4 value 0@ virtual_protect 0 while true wait 0 if 1@ == 1 then while true wait 0 0652: 21@ = integer_stat 146 if and // $ONMISSION == 0 not Actor.Driving($PLAYER_ACTOR) 21@ == 20@ then Break end end 0A8C: write_memory 0x0061907A size 4 value 0x90909090 virtual_protect 1 0A8C: write_memory 0x0061907E size 1 value 0x90 virtual_protect 1 wait 0 0AA5: call 0x619060 num_params 1 pop 0 6 wait 0 0A8C: write_memory 0x0061907A size 4 value 25@ virtual_protect 1 0A8C: write_memory 0x0061907E size 1 value 26@ virtual_protect 1 1@ = 0 end end :lbl hex C705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1 B8 7B804600 // MOV EAX, 46807B FFE0 // JMP EAX end
Autosave-restart.cs[v2]:
{$CLEO} var 20@ : Integer 21@ : Integer end 30@ = 1 0A8D: 28@ = read_memory 0x0061907A size 4 virtual_protect 1 0A8D: 29@ = read_memory 0x0061907E size 1 virtual_protect 1 0652: 20@ = integer_stat 146 1@ = 0 0A9F: 0@ = current_thread_pointer 0A8E: 10@ = 0@ + 0x10 0A8D: 10@ = read_memory 10@ size 4 virtual_protect 0 0A8F: 11@ = 10@ - @lbl 0A8C: write_memory 0x004684BC size 4 value 11@ virtual_protect 1 0@ += 0x40 11@ += 2 0A8C: write_memory 11@ size 4 value 0@ virtual_protect 0 while true wait 0 if 1@ == 1 then while true wait 0 0652: 21@ = integer_stat 146 if and // $ONMISSION == 0 not Actor.Driving($PLAYER_ACTOR) 21@ == 20@ then Break else if and $ONMISSION == 0 not Actor.Driving($PLAYER_ACTOR) 0AB0: key_pressed 120 then 00A1: put_actor $PLAYER_ACTOR at 25@ 26@ 27@ 0A8C: write_memory 0x0061907A size 4 value 0x90909090 virtual_protect 1 0A8C: write_memory 0x0061907E size 1 value 0x90 virtual_protect 1 wait 0 0AA5: call 0x619060 num_params 1 pop 0 6 wait 0 0A8C: write_memory 0x0061907A size 4 value 28@ virtual_protect 1 0A8C: write_memory 0x0061907E size 1 value 29@ virtual_protect 1 end end end 00A0: store_actor $PLAYER_ACTOR position_to 25@ 26@ 27@ 1@ = 0 end end :lbl hex C705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1 B8 7B804600 // MOV EAX, 46807B FFE0 // JMP EAX end
Quicksave (VC) [v1]
{$CLEO .cs} 0000: NOP while true wait 0 if and $ONMISSION == 0 not Actor.Driving($PLAYER_ACTOR) 05EE: key_pressed 50 //115 then wait 0 05E1: call 0x61D8B0 num_params 1 pop 0 2 wait 500 end end
Autosave (VC) [v1]
{$CLEO} 11@ = 0 05F7: 0@ = label @lbl offset 05DF: write_memory 0x00689A5C size 4 value 0@ virtual_protect 1 //689A5C 05F8: 1@ = var 11@ offset 0@ += 2 05DF: write_memory 0@ size 4 value 1@ virtual_protect 0 while true wait 0 if 11@ == 1 then while true wait 0 if and $ONMISSION == 0 not Actor.Driving($PLAYER_ACTOR) then Break end end 05E1: call 0x61D8B0 num_params 1 pop 0 6 11@ = 0 end end :lbl hex C705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1 B8 C56B4500 // MOV EAX,00456BC5 FFE0 // JMP EAX end
Зеркало на GTAGarage.
Last edited by Sergey81 (21-12-2010 15:38)
Offline
Хех, а я только тему новую создал))
http://sannybuilder.com/forums/viewtopi … 532#p12532
while true
wait 0
if
$ONMISSION == 1
then
0A92: create_custom_thread "AutoSaves.s"
end
end
так, а теперь давай прикинем, сколько тысяч скриптов будет создано после запуска первой же миссии? С виду то может все и работает, но это некрасивый способ - бесконечно создавать новый скрипт и сразу же его прекращать. Утечки памяти и все-такое.
Мне кажется ты чуть-чуть поторопился с релизом). Почитай мое последнее сообщение в той теме.
Last edited by Seemann (29-09-2010 00:36)
Offline
Хех, а я только тему новую создал))
http://sannybuilder.com/forums/viewtopi … 532#p12532while true
wait 0
if
$ONMISSION == 1
then
0A92: create_custom_thread "AutoSaves.s"
end
endтак, а теперь давай прикинем, сколько тысяч скриптов будет создано после запуска первой же миссии? С виду то может все и работает, но это некрасивый способ - бесконечно создавать новый скрипт и сразу же его прекращать. Утечки памяти и все-такое.
Мне кажется ты чуть-чуть поторопился с релизом). Почитай мое последнее сообщение в той теме.
Да я знаю, это так, демо версия. С hex..end раньше не работал, так что будут вопросы.
Offline
@Sergey81 - я заметил что у тебя выработалась тенденция следующего характера - нашёл адрес - сделал скрипт. Изучи ВСЕ полезные/бесполезные адреса и ф-ции, и сделай мультимод (как в своё время, это сделал капюшон).
Offline
@Sergey81 - я заметил что у тебя выработалась тенденция следующего характера - нашёл адрес - сделал скрипт. Изучи ВСЕ полезные/бесполезные адреса и ф-ции, и сделай мультимод (как в своё время, это сделал капюшон).
Не совсем так, сначала появилась идея, потом я поискал адрес, потом уже скрипт. Мультимодом я заниматься абсолютно точно не буду, но было бы неплохо если б кто-нибудь использовал найденные адреса в своих модификациях.
Offline
@Sergey81 - я заметил что у тебя выработалась тенденция следующего характера - нашёл адрес - сделал скрипт. Изучи ВСЕ полезные/бесполезные адреса и ф-ции, и сделай мультимод (как в своё время, это сделал капюшон).
Причём тут Капюшон, в его модах я не нашёл не одного примера работы с памятью, всё через опкоды, единственное проверки на нажатие клавишь
Offline
@Kostyan - а при чём тут память? В далёкие времена, на сколько я помню, он в своём мультимоде объединил все наработки в области скриптинга (жалко я к sb подключился только в 2008-м )
Offline
Вобще мультимод это не всегда хорошо, когда все скрипты по отдельности - скачал нужный, поставил. А если всё собрать в один, скачал, поставил, какие то фичи могут не понравиться, надо удалить, а это придётся влезть в код, а что если нет исходника? Или SB или лень разбираться в коде? Так же если и глючить что-то начнёт, можно убрать предполагаемый скрипт и проверить, не компилируя разный код по нескольку раз.
Last edited by Sergey81 (02-10-2010 16:36)
Offline
Вобще мультимод это не всегда хорошо, когда все скрипты по отдельности - скачал нужный, поставил. А если всё собрать в один, скачал, поставил, какие то фичи могут не понравиться, надо удалить, а это придётся влезть в код, а что если нет исходника? Или SB или лень разбираться в коде? Так же если и глючить что-то начнёт, можно убрать предполагаемый скрипт и проверить, не компилируя разный код по нескольку раз.
Согласен, после создания библиотеки клео, мультимоды отошли на задний план
Offline
Обновил первый пост, добавил сейв перед миссией(тестим на свой страх и риск, возможно будет сохранять ещё где-то, незнаю). Как сделать быструю загрузку так и не разобрался, судя по всему там функция не такая простая как сохранение.
ЗЫ. При провале миссии игра не сохраняется.
Last edited by Sergey81 (08-10-2010 15:49)
Offline
Версия №6, исправления Autosave_before_mission.cs, а именно $ONMISSION == 0, там вобще стояло присваивание, из за чего возникал серьёзный баг, с проверкой не работает, а вобще без неё вроде всё нормально, проверил на нескольких миссиях. Сейвы кстати могут портиться при использовании предыдущих версий, так что лучше обновиться. Поэтому для тестирования я скачал новый отсюда - http://www.gtasavegames.com/savegames/San_Andreas
Last edited by Sergey81 (09-10-2010 21:23)
Offline
с проверкой не работает
потому что после 0417 в оригинальном main.scm сразу стоит $ONMISSION = 1. Вообще есть вероятность, что сохранение происходит при активной миссии, значит возможны глюки.
Offline
с проверкой не работает
потому что после 0417 в оригинальном main.scm сразу стоит $ONMISSION = 1. Вообще есть вероятность, что сохранение происходит при активной миссии, значит возможны глюки.
Хм, так разве сохранение во время миссии не приводит к невозможности загрузить этот сейв? Почему тогда в данном случае сейв загружается?
UPD.Не заметил что речь про 0417. Щас то я 00BA использую.
Для себя кстати заметил что сейв перед миссией более полезная штука чем после.
Last edited by Sergey81 (10-10-2010 12:04)
Offline
Обновил Autosave.cs, теперь сохраняет строго после успешного выполнения миссии, судя по тому, что я натестил=) Версия 7, наверно, уже финальная будет.
Offline
Выложил в первом посте квиксейв для Vice City. Сейвится по кнопке 2, на f5 почему то не получается поставить, код не срабатывает. Также, полученный сейв не грузится, пока не перезайти в игру. Т.е. если засейвились, потом загрузили этот сейв - вылет. Незнаю почему.
Offline
Возможно .b файл не закрывается и при обращении к нему - вылет
Offline
Возможно .b файл не закрывается и при обращении к нему - вылет
Я проверил ещё раз, там после вызова этой функции не грузятся даже другие сейвы.
Offline
Следом за квиксейвом, автосейв для Vice City(см. 1 пост).
В отличие от SA-версии, используется опкод 0318: set_latest_mission_passed 'BANK_1'
Пока не особо оттестировано.
Демонстрация - http://www.youtube.com/watch?v=VxMa-W9mLE8
ЗЫ. Здесь, опять же, после сохранения сейвы загружаются только после перезапуска.
ЗЫ2. Обновил аттач, теперь в нём скрипты квиксейва и автосейва для SA и VC.
ЗЫ3. Темку, если возможно, переименуйте в [SA/VC|REL] Автосейв
Last edited by Sergey81 (13-12-2010 03:28)
Offline
Не совсем понял механику скрипта по видео. В начале в меню LOAD ты выбираешь в какой слот будет автосохранение? Это нужно делать перед каждой миссией?
Offline
Не совсем понял механику скрипта по видео. В начале в меню LOAD ты выбираешь в какой слот будет автосохранение? Это нужно делать перед каждой миссией?
Не, это я просто показал что перед миссией в этом слоте сохранения не было.
По функционалу скрипт такой же, что и в SA.
Offline
Квиксейв для gta3, управление такое же как и в VC, нажимаем кнопку 2, игра сохраняется в первый слот.
Offline
Я немного переписал код для определения, был ли использован опкод (в этом случае - опкод 0391). Правилен ли он?
{$CLEO .cs} 0A8C: write_memory 0x4841BB size 1 value 0xE9 virtual_protect true // jmp 0AC6: 0@ = label @label offset dec(0@, 0x4841C0) // offset 0A8C: write_memory 0x4841BC size 4 value 0@ virtual_protect true // offset 0AC6: 0@ = label @label offset 0AC6: 1@ = label @value offset inc(0@, 2) 0A8C: write_memory 0@ size 4 value 1@ virtual_protect false // offset while true 0A8D: 0@ = read_memory 1@ size 4 virtual_protect false if 0@ == 1 then if 88FE: not text_box_displayed then 0ACE: show_formatted_text_box "%.4X was used" 0x0391 // then, we need to reload txd dictionaries end end 003D: end :label hex C705 00000000 01000000 // mow dword ptr ds:[00000000], 1 B8 405A4600 // mov eax, 465A40h FFD0 // call eax B8 C0414800 // mov eax, 4841C0h FFE0 // jmp eax end :value hex 00000000 end
Игра не вылетает, да и, кажется, выгрузка текстур происходит нормально.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
А зачем убирать лишнее можно ведь просто не пользоваться. У меня например почти все активируется из меню длится не долго потом отключается. Кстати у меня при старте игры записываются в память стандартные значения некоторых адресов памяти проблема в том что активируя какую нибудь возможность из памяти и не дождавшись пока значение запишется на стандартное начать новую игру, то значение не вернется на стандартное.
Offline
http://youtu.be/Vh26B1d85WM
Собственно, поиграв в GTA 3 на ios, решил доделать фичу рестарта миссии. Код внедрен в скрипт автосейва, так что тут два в одном.
Обновлено 10,09,2012:
{$CLEO} var 20@ : Integer 21@ : Integer end 0000: wait 500 // 0652: 20@ = integer_stat 147 31@ = 1 0A8D: 25@ = read_memory 0x618FA0 size 4 virtual_protect 1 0A8D: 26@ = read_memory 0x618FA4 size 1 virtual_protect 1 1@ = 0 0A9F: 0@ = current_thread_pointer 0A8E: 10@ = 0@ + 0x10 0A8D: 10@ = read_memory 10@ size 4 virtual_protect 0 0A8F: 11@ = 10@ - @lbl 0A8C: write_memory 0x00469E2C size 4 value 11@ virtual_protect 1 0@ += 0x40 // 0@ = 1@'s global address; fixed 02/10/10 11@ += 2 0A8C: write_memory 11@ size 4 value 0@ virtual_protect 0 while true wait 0 if and $ONMISSION == 1 016B: fading 06B9: cutscene_data_loaded 31@ == 1 then 0AB1: call_scm_func @__LabelToOffset 1 label @label store_to 15@ 0AB1: call_scm_func @__LabelToOffset 1 label @money store_to 16@ 0AB1: call_scm_func @__LabelToOffset 1 label @armour store_to 17@ 0AB1: call_scm_func @__LabelToOffset 1 label @health store_to 18@ 0AB1: call_scm_func @__LabelToOffset 1 label @playerpos store_to 19@ 0AB1: call_scm_func @__getwpns 1 15@ 0AB1: call_scm_func @__getmoneyarmourhealth 3 16@ 17@ 18@ 0AB1: call_scm_func @__getplayerpos 1 19@ 0652: 20@ = integer_stat 147 31@ = 0 end if 1@ == 1 then while true wait 0 0652: 21@ = integer_stat 147 if and $ONMISSION == 0 not Actor.Driving($PLAYER_ACTOR) 21@ > 20@ then Break else 0A8D: 29@ = read_memory 0xBAACC0 size 2 virtual_protect 0 if and //076F: text_priority_displayed 29@ == 0x727E $ONMISSION == 0 21@ == 20@ then wait 500 0A0E: disable_text_with_style 1 03F0: enable_text_draw 1 00BC: show_text_highpriority GXT '_RESTAR' time 1000 flag 1 0A8C: write_memory 0x53BF8A size 2 value 0x9090 virtual_protect 1 0A8C: write_memory 0x53BF96 size 4 value 0x90909090 virtual_protect 1 0A8C: write_memory 0x53BF9A size 2 value 0x9090 virtual_protect 1 0A8C: write_memory 0x58FCC2 size 4 value 0x90909090 virtual_protect 1 0A8C: write_memory 0x58D4BE size 4 value 0x90909090 virtual_protect 1 0A8C: write_memory 0x58D4C2 size 4 value 0x90909090 virtual_protect 1 0A8C: write_memory 0xB7CB49 size 1 value 1 virtual_protect 0 while true wait 0 if 00E1: player 0 pressed_key 10 //N then 0A8C: write_memory 0xB7CB49 size 1 value 0 virtual_protect 0 // Unfreeze 0A8C: write_memory 0x53BF8A size 2 value 0xC084 virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x53BF96 size 4 value 0x0298850F virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x53BF9A size 2 value 0x0 virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x58FCC2 size 4 value 0x4D75C084 virtual_protect 1 // Disable frozen game text draw 0A8C: write_memory 0x58D4BE size 4 value 0x850FC084 virtual_protect 1 // Disable frozen game texture draw 0A8C: write_memory 0x58D4C2 size 4 value 0x000000AF virtual_protect 1 // Disable frozen game texture draw for 22@ = 1 to 35 step 1 0A8C: write_memory 15@ size 4 value 0x00 virtual_protect 1 15@ += 4 end break end if 00E1: player 0 pressed_key 11 //Y then 048F: actor $PLAYER_ACTOR remove_weapons 0A8C: write_memory 0xB7CB49 size 1 value 0 virtual_protect 0 // Unfreeze 0A8C: write_memory 0x53BF8A size 2 value 0xC084 virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x53BF96 size 4 value 0x0298850F virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x53BF9A size 2 value 0x0 virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x58FCC2 size 4 value 0x4D75C084 virtual_protect 1 // Disable frozen game text draw 0A8C: write_memory 0x58D4BE size 4 value 0x850FC084 virtual_protect 1 // Disable frozen game texture draw 0A8C: write_memory 0x58D4C2 size 4 value 0x000000AF virtual_protect 1 // Disable frozen game texture draw while true wait 0 if and 03EE: player $PLAYER_CHAR controllable 816B: not fading then Break end end 0AB1: call_scm_func @__LabelToOffset 1 label @label store_to 15@ 0AB1: call_scm_func @__LabelToOffset 1 label @money store_to 16@ 0AB1: call_scm_func @__LabelToOffset 1 label @armour store_to 17@ 0AB1: call_scm_func @__LabelToOffset 1 label @health store_to 18@ 0AB1: call_scm_func @__LabelToOffset 1 label @playerpos store_to 19@ 0AB1: call_scm_func @__givewpns 1 15@ 0AB1: call_scm_func @__givemoneyarmourhealth 3 16@ 17@ 18@ for 22@ = 1 to 35 step 1 0A8C: write_memory 15@ size 4 value 0x00 virtual_protect 1 15@ += 4 end 0AB1: call_scm_func @__putplayeratpos 1 19@ break end end end //end else jump @here end end 0A8C: write_memory 0x618FA0 size 4 value 0x90909090 virtual_protect 1 0A8C: write_memory 0x618FA4 size 1 value 0x90 virtual_protect 1 wait 1 0AA5: call 0x619060 num_params 1 pop 0 7 wait 2 0A8C: write_memory 0x618FA0 size 4 value 25@ virtual_protect 1 0A8C: write_memory 0x618FA4 size 1 value 26@ virtual_protect 1 :here 31@ = 1 // 0ACE: show_formatted_text_box "SAVE OK" 1@ = 0 end end :lbl hex C705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1 B8 9B9A4600 // MOV EAX,00469A9B FFE0 // JMP EAX end :label hex 00 00 00 00 //slot 00 00 00 00 //ammo for that weapon 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 end :money hex 00 00 00 00 end :health hex 00 00 00 00 end :armour hex 00 00 00 00 end :playerpos hex 00 00 00 00 00 00 00 00 00 00 00 00 end :__LabelToOffset //0AB1: call_scm_func @__LabelToOffset 1 label @qqq4 store_to 15@ if 0@ == 0 then 0AB2: ret 1 0 end 0A9F: 1@ = current_thread_pointer 1@ += 0x10 0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 // baseIP 0062: 1@ -= 0@ // label address 0AB2: ret 1 1@ :__getwpns 0085: 14@ = 0@ 0A96: 15@ = actor $PLAYER_ACTOR struct 15@ += 0x5A0 for 13@ = 1 to 13 step 1 0A8D: 21@ = read_memory 15@ size 4 virtual_protect 1 //slot x 15@ += 0xC 0A8D: 1@ = read_memory 15@ size 4 virtual_protect 1 //ammo for that weapon 15@ += -0xC 0A8C: write_memory 14@ size 4 value 21@ virtual_protect 1 //write slot x 14@ += 4 0A8C: write_memory 14@ size 4 value 1@ virtual_protect 1 //write ammo 14@ += 4 15@ += 0x1C end 0AB2: ret 0 :__givewpns 0085: 14@ = 0@ for 12@ = 1 to 13 step 1 0A8D: 3@ = read_memory 14@ size 4 virtual_protect 1 // weapon id 14@ += 0x4 0A8D: 4@ = read_memory 14@ size 4 virtual_protect 1 //ammo 14@ += -0x4 if 3@ <> 0 then 0AA7: call_function 0x454AC0 num_params 1 pop 1 3@ 5@ //weapon id to model id 0247: request_model 5@ 038B: load_requested_models while 8248: not model 5@ available wait 0 end 01B2: give_player $PLAYER_ACTOR weapon 3@ ammo 4@ // Load the weapon model before using this 0249: release_model 5@ 6@ = 1 end 14@ += 0x8 end 0AB2: ret 0 :__getmoneyarmourhealth //offsets 0@ - money 1@ - armour 2@ - health 0A8D: 9@ = read_memory 0xB7CE50 size 4 virtual_protect 0 0A8C: write_memory 0@ size 4 value 9@ virtual_protect 0 0A8D: 10@ = read_memory 0xB6F5F0 size 4 virtual_protect 0 10@ += 0x548 0A8D: 11@ = read_memory 10@ size 4 virtual_protect 0 0A8C: write_memory 1@ size 4 value 11@ virtual_protect 0 10@ += -0x8 0A8D: 12@ = read_memory 10@ size 4 virtual_protect 0 0A8C: write_memory 2@ size 4 value 12@ virtual_protect 0 0AB2: ret 0 :__givemoneyarmourhealth //0@ - money 1@ - armour 2@ - health 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0 0A8C: write_memory 0xB7CE50 size 4 value 0@ virtual_protect 0 0A8D: 10@ = read_memory 0xB6F5F0 size 4 virtual_protect 0 10@ += 0x548 0A8C: write_memory 10@ size 4 value 1@ virtual_protect 1 10@ += -0x8 0A8C: write_memory 10@ size 4 value 2@ virtual_protect 0 0AB2: ret 0 :__getplayerpos 00A0: store_actor $PLAYER_ACTOR position_to 1@ 2@ 3@ 0A8C: write_memory 0@ size 4 value 1@ virtual_protect 0 0@ += 0x4 0A8C: write_memory 0@ size 4 value 2@ virtual_protect 0 0@ += 0x4 0A8C: write_memory 0@ size 4 value 3@ virtual_protect 0 0AB2: ret 0 :__putplayeratpos 0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0 0@ += 0x4 0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0 0@ += 0x4 0A8D: 3@ = read_memory 0@ size 4 virtual_protect 0 if 80DF: not actor $PLAYER_ACTOR driving then select_interior 0 04FA: reset_interior 0 colors 057E: set_radar_grey 0 0860: link_actor $PLAYER_ACTOR to_interior 0 Actor.PutAt($PLAYER_ACTOR, 1@, 2@, 3@) else 0362: remove_actor $PLAYER_ACTOR from_car_and_place_at 1@ 2@ 3@ end 0AB2: ret 0
http://www.gtagarage.com/mods/show.php?id=14143
Last edited by Sergey81 (10-09-2012 11:34)
Offline
Такой метод получения адреса метки не работает в GTA3. (Выходит, что ты записываешь данные куда-то, и читаешь оттуда же, так что кажется, что всё работает правильно).
Не заметил, что это СА.
Last edited by DK22Pac (02-08-2012 12:36)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline