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]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | { $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@ + 0x 10 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@ += 0x 40 // 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 0x 90909090 virtual_protect 1 0A8C: write_memory 0x0061907E size 1 value 0x 90 virtual_protect 1 wait 1 0AA5: call 0x 619060 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 C 705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1 B 8 9B9A 4600 // MOV EAX,00469A9B FFE 0 // JMP EAX end |
Autosave_before_mission.cs[v6](могут быть глюки из за использования):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | { $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@ + 0x 10 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@ += 0x 40 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 0x 90909090 virtual_protect 1 0A8C: write_memory 0x0061907E size 1 value 0x 90 virtual_protect 1 wait 0 0AA5: call 0x 619060 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 C 705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1 B 8 7B 804600 // MOV EAX, 46807B FFE 0 // JMP EAX end |
Autosave-restart.cs[v2]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | { $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@ + 0x 10 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@ += 0x 40 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 0x 90909090 virtual_protect 1 0A8C: write_memory 0x0061907E size 1 value 0x 90 virtual_protect 1 wait 0 0AA5: call 0x 619060 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 C 705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1 B 8 7B 804600 // MOV EAX, 46807B FFE 0 // JMP EAX end |
Quicksave (VC) [v1]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | {$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 0x61D8B 0 num_params 1 pop 0 2 wait 500 end end |
Autosave (VC) [v1]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | { $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 0x61D8B 0 num_params 1 pop 0 6 11@ = 0 end end :lbl hex C 705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1 B 8 C56B 4500 // MOV EAX,00456BC5 FFE 0 // 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). Правилен ли он?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | {$CLEO .cs} 0A8C: write_memory 0x4841BB size 1 value 0xE 9 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" 0x 0391 // then, we need to reload txd dictionaries end end 003D: end :label hex C 705 00000000 01000000 // mow dword ptr ds:[00000000], 1 B 8 405A 4600 // mov eax, 465A40h FFD 0 // call eax B 8 C 0414800 // mov eax, 4841C0h FFE 0 // 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 | { $CLEO } var 20@ : Integer 21@ : Integer end 0000: wait 500 // 0652: 20@ = integer_stat 147 31@ = 1 0A8D: 25@ = read_memory 0x618FA 0 size 4 virtual_protect 1 0A8D: 26@ = read_memory 0x618FA 4 size 1 virtual_protect 1 1@ = 0 0A9F: 0@ = current_thread_pointer 0A8E: 10@ = 0@ + 0x 10 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@ += 0x 40 // 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 0xBAACC 0 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 0x 9090 virtual_protect 1 0A8C: write_memory 0x53BF 96 size 4 value 0x 90909090 virtual_protect 1 0A8C: write_memory 0x53BF9A size 2 value 0x 9090 virtual_protect 1 0A8C: write_memory 0x58FCC 2 size 4 value 0x 90909090 virtual_protect 1 0A8C: write_memory 0x58D4BE size 4 value 0x 90909090 virtual_protect 1 0A8C: write_memory 0x58D4C 2 size 4 value 0x 90909090 virtual_protect 1 0A8C: write_memory 0xB7CB 49 size 1 value 1 virtual_protect 0 while true wait 0 if 00E1: player 0 pressed_key 10 //N then 0A8C: write_memory 0xB7CB 49 size 1 value 0 virtual_protect 0 // Unfreeze 0A8C: write_memory 0x53BF8A size 2 value 0xC 084 virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x53BF 96 size 4 value 0x0298850F virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x53BF9A size 2 value 0x 0 virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x58FCC 2 size 4 value 0x4D75C 084 virtual_protect 1 // Disable frozen game text draw 0A8C: write_memory 0x58D4BE size 4 value 0x850FC 084 virtual_protect 1 // Disable frozen game texture draw 0A8C: write_memory 0x58D4C 2 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 0x 00 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 0xB7CB 49 size 1 value 0 virtual_protect 0 // Unfreeze 0A8C: write_memory 0x53BF8A size 2 value 0xC 084 virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x53BF 96 size 4 value 0x0298850F virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x53BF9A size 2 value 0x 0 virtual_protect 1 // Disable frozen game stuff 0A8C: write_memory 0x58FCC 2 size 4 value 0x4D75C 084 virtual_protect 1 // Disable frozen game text draw 0A8C: write_memory 0x58D4BE size 4 value 0x850FC 084 virtual_protect 1 // Disable frozen game texture draw 0A8C: write_memory 0x58D4C 2 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 0x 00 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 0x618FA 0 size 4 value 0x 90909090 virtual_protect 1 0A8C: write_memory 0x618FA 4 size 1 value 0x 90 virtual_protect 1 wait 1 0AA5: call 0x 619060 num_params 1 pop 0 7 wait 2 0A8C: write_memory 0x618FA 0 size 4 value 25@ virtual_protect 1 0A8C: write_memory 0x618FA 4 size 1 value 26@ virtual_protect 1 :here 31@ = 1 // 0ACE: show_formatted_text_box "SAVE OK" 1@ = 0 end end :lbl hex C 705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1 B 8 9B9A 4600 // MOV EAX,00469A9B FFE 0 // 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@ += 0x 10 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@ += 0x5A 0 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@ += 0x 4 0A8D: 4@ = read_memory 14@ size 4 virtual_protect 1 //ammo 14@ += -0x 4 if 3@ <> 0 then 0AA7: call_function 0x454AC 0 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@ += 0x 8 end 0AB2: ret 0 :__getmoneyarmourhealth //offsets 0@ - money 1@ - armour 2@ - health 0A8D: 9@ = read_memory 0xB7CE 50 size 4 virtual_protect 0 0A8C: write_memory 0@ size 4 value 9@ virtual_protect 0 0A8D: 10@ = read_memory 0xB6F5F 0 size 4 virtual_protect 0 10@ += 0x 548 0A8D: 11@ = read_memory 10@ size 4 virtual_protect 0 0A8C: write_memory 1@ size 4 value 11@ virtual_protect 0 10@ += -0x 8 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 0xB7CE 50 size 4 value 0@ virtual_protect 0 0A8D: 10@ = read_memory 0xB6F5F 0 size 4 virtual_protect 0 10@ += 0x 548 0A8C: write_memory 10@ size 4 value 1@ virtual_protect 1 10@ += -0x 8 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@ += 0x 4 0A8C: write_memory 0@ size 4 value 2@ virtual_protect 0 0@ += 0x 4 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@ += 0x 4 0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0 0@ += 0x 4 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