You are not logged in.
Pages: 1
Как то гуглил, не нашёл ничего подходящего. Потом правда нашёл один скрипт, но он позволял перезаряжаться только либо стоя, либо сидя, если например прицелишься, перезарядится нельзя.
Ещё позже посмотрел как этот скрипт работает, а там оказалось куча глобальных переменных(мб из за него у меня и были глюки с миссиями).
Вобщем, мой скрипт позволяет перезаряжаться в любое время, будь то прицелившись, во время ходьбы/бега и т.д.
Видео-демонстрация - http://www.youtube.com/watch?v=FduiJBxyV1o
Благодарности юзерам Gtaforums за адреса.
Update от 22.02.2011:
1)Код для SA:
{$CLEO .cs} 0000: NOP thread 'RELOAD' :RELOAD_13 wait 100 if Player.Defined($PLAYER_CHAR) jf @RELOAD_13 0A96: 0@ = actor $PLAYER_ACTOR struct 0@ += 1816 0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0 0A96: 0@ = actor $PLAYER_ACTOR struct 0@ += 1440 1@ *= 28 005A: 0@ += 1@ // (int) 0@ += 4 if 0AB0: key_pressed 82 jf @RELOAD_13 0A8C: write_memory 0@ size 4 value 2 virtual_protect 1 jump @RELOAD_13
2)Код для VC:
{$CLEO .cs} 0000: NOP thread 'RELOAD' :RELOAD_13 wait 100 if Player.Defined($PLAYER_CHAR) jf @RELOAD_13 05E6: 0@ = actor $PLAYER_ACTOR struct 0@ += 1284 05E0: 1@ = read_memory 0@ size 1 virtual_protect 0 05E6: 0@ = actor $PLAYER_ACTOR struct 0@ += 1032 1@ *= 24 //005A: 0@ += 1@ // (int) 000A: 0@ += 1@ // integer values 0@ += 4 if 05EE: key_pressed 82 //115 jf @RELOAD_13 05DF: write_memory 0@ size 4 value 2 virtual_protect 1 jump @RELOAD_13
1)Код для III:
{$CLEO .cs} 0000: NOP thread 'RELOAD' while true wait 0 for 0@ = 2 to 11 step 1 if and 05EE: key_pressed 82 02D8: actor $PLAYER_ACTOR current_weapon == 0@ then 05E6: 1@ = actor $PLAYER_ACTOR struct 1@ += 0x360 0010: 0@ *= 0x18 // integer values 0058: 1@ += 0@ // integer values 05DF: write_memory 1@ size 4 value 2 virtual_protect 1 end end end
В VC и III анимация перезарядки не работает почему-то. Только если во время стрельбы зажать клавишу R, гг перезарядит оружие с анимацией.
Зеркало на GTAGarage.
Last edited by Sergey81 (22-02-2011 20:56)
Offline
Спасибо! Всё работает прекрасно! Тоже искал такой скрипт - нашёл, но оказалось, что он далековат от того, чего хотелось бы.
Offline
Давно хотел такое, но мне как-то хватало и старой перезарядки...
Отличный скрипт. Работает стабильно, без глюков (хотя по идее, если адреса верны - чему там глючить?)
Also known as HemiG
It's cool to Hate. It's cool to be a bloody guitarist.
Offline
Сто лет не играл в СА. Разве там не было автоматической перезарядки? Что именно меняет скрипт?
Offline
Сто лет не играл в СА. Разве там не было автоматической перезарядки? Что именно меняет скрипт?
Ну как же так...
Скрипт даёт возможность по нажатию R перезарядить оружие (а не ждать, пока закончатся патроны в обойме).
Offline
Есть ещё вариант сделать, чтоб неотстрелянные патроны пропадали, на манер мафии 1.
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007 {$VERSION 3.1.0027} {$CLEO .cs} //-------------MAIN--------------- 0000: NOP thread 'RELOAD' :RELOAD_13 wait 100 if Player.Defined($PLAYER_CHAR) jf @RELOAD_13 0A96: 0@ = actor $PLAYER_ACTOR struct 0@ += 1816 0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0 0A96: 0@ = actor $PLAYER_ACTOR struct 0@ += 1440 1@ *= 28 005A: 0@ += 1@ // (int) 0@ += 8 0A8D: 3@ = read_memory 0@ size 1 virtual_protect 0 //ammo clip 0@ += 4 0A8D: 4@ = read_memory 0@ size 1 virtual_protect 0 //total ammo 0470: 8@ = actor $PLAYER_ACTOR current_weapon 041A: 9@ = actor $PLAYER_ACTOR weapon 8@ ammo if and 001D: 9@ > 3@ // (int) 0AB0: key_pressed 82 jf @RELOAD_13 0@ -= 8 0A8C: write_memory 0@ size 4 value 2 virtual_protect 1 0A8D: 6@ = read_memory 0@ size 1 virtual_protect 0 //ammo clip if 0006: 6@ = 2 0@ += 8 0062: 4@ -= 3@ // (int) 0A8C: write_memory 0@ size 4 value 4@ virtual_protect 1 jump @RELOAD_14 :RELOAD_14 wait 1000 jump @RELOAD_13
Есть какие-нибудь предложения по совершенствованию скрипта?
Last edited by Sergey81 (26-08-2010 18:31)
Offline
Offline
Раз уж так, нельзя ли исправить это? Запоминать патроны в магазине, чтобы этот читерский метод не работал...
Last edited by BullDogHEMI427 (13-09-2010 20:38)
Also known as HemiG
It's cool to Hate. It's cool to be a bloody guitarist.
Offline
Да, с запоминанием патронов это идея. Ведь есть опкод 041A...
Offline
Да, с запоминанием патронов это идея. Ведь есть опкод 041A...
Там же помоему общее ammo, ammo_in_clip только через память.
Да и как это дело запоминать и восстанавливать всё время...
И насчёт
Проще (и быстрее) перезарядить, чем сменять оружие.
не согласен, во время прицеливания/бега так не сделаешь, при езде в машине, в туррет режиме тоже никак. А в машине(driveby.cs) к тому же быстрее перезарядиться через R, чем отстреляв всю обойму.
Кстати, в вышеупомянутом driveby.cs в машине при скроллинге оружия патроны не сбрасываются у оружия(кроме полуавтоматов). Может можно по аналогии сделать так и on_foot, но кода я не видел так что не буду утверждать.
Last edited by Sergey81 (04-10-2010 19:24)
Offline
Апдейт, в первом посте я выложил код для SA, а также для Vice City. + прикрепил аттач с готовыми скриптами.
Offline
Наконец то дошли руки сделать перезарядку для GTA3:
{$CLEO .cs} 0000: NOP thread 'RELOAD' while true wait 0 for 0@ = 2 to 11 step 1 if and 05EE: key_pressed 82 02D8: actor $PLAYER_ACTOR current_weapon == 0@ then 05E6: 1@ = actor $PLAYER_ACTOR struct 1@ += 0x360 0010: 0@ *= 0x18 // integer values 0058: 1@ += 0@ // integer values 05DF: write_memory 1@ size 4 value 2 virtual_protect 1 end end end
Формулу не стал выводить, как в VC и SA, ибо незачем:D
Архив залил на gtagarage.
В игре перезарядка происходит без анимации, как и в VC, если зажать кнопки огонь и R, будет перезарядка с анимацией.
Last edited by Sergey81 (21-02-2011 20:40)
Offline
Не хватает только проверки player.Defined(0).
И ещё, лучше подождать, пока клавишу не отпустили.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
@DK22Pac - всегда было интересно, в каких случаях игра вылетит без неё? Просто никогда не сталкивался, да и не использую.
Offline
Offline
Перезарядка с анимацией для VC, немножко криво, но работает
{$CLEO .cs} 0000: NOP thread 'RELOAD' 10@ = 17 10@ *= 2 10@ += 0x7DBCB0 while true wait 0 if Player.Defined($PLAYER_CHAR) then 05E6: 0@ = actor $PLAYER_ACTOR struct 0@ += 1284 05E0: 1@ = read_memory 0@ size 1 virtual_protect 0 05E6: 0@ = actor $PLAYER_ACTOR struct 0@ += 1032 1@ *= 24 000A: 0@ += 1@ // integer values 0@ += 4 if 05EE: key_pressed 82 then 05DF: write_memory 10@ size 2 value 0xFF virtual_protect 0 3@ = 40 end if 3@ >= 1 then 05DF: write_memory 0@ size 4 value 2 virtual_protect 1 3@ -= 1 end end end
Offline
Не че не криво, все можно сделать...
Offline
Pages: 1