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_132)Код для 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_131)Код для 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