1
О сайте и форумах / С новым 2020 годом!
« : Январь 01, 2020, 06:23:31 pm »
Желаю всем форумчанам крутых идей, возможности и времени для их реализации! С Новым годом!
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
{$CLEO}
0000:
thread 'DubGun'
wait 0
:start
wait 0
if or
Player.Defined($PLAYER_CHAR)
Player.Wasted($PLAYER_CHAR)
Model.Available(#RUGER)
jf @start
Model.Load(#RUGER)
038B: load_requested_models
:check
wait 0
3@ = 0x0 // отступ от нулевого элемента в массиве указателей на педов
if and
02D7: player $PLAYER_CHAR currentweapon == 27 // 27 - Ruger
05EE: key_pressed 0x1 // 0x1 - левый клик
02E0: actor $PLAYER_ACTOR firing_weapon
then
03CF: load_wav 'bust_07' as 1
04ED: load_animation 'STRIP'
repeat
wait 0
until 04EE: has_animation_loaded 'STRIP'
repeat
wait 0
until 03D0: wav 1 loaded
03D1: play_wav 1
/* * * ЛОГИКА * * */
/*
1. Получаем структуру игрока и кладём в 1@
2. Преобразуем 1@ в массив указателей на 10 педов (0x56С)
3. Прибавляем размер указателей, которые уже обработали
4. Получаем структуру из адреса на педа
5. Применяем ему анимацию
6. Прибавляем к 3@ размер текущего указателя на педа
*/
for 2@ = 0 to 5 // применяем анимацию к пяти педам
05E6: 1@ = actor $PLAYER_ACTOR struct // структура игрока
1@ += 0x56C // адрес нулевого элемента в массиве указателей на ближайших десяти педов
005A: 1@ += 3@
05E0: 1@ = read_memory 1@ size 4 virtual_protect 0 // 1@ - адрес n-го педа
05E9: 1@ = ped_struct 1@ handle // переводим структуру в дискриптор, чтобы применить анимацию
0372: set_actor 1@ anim 32 wait_state_time 3000 ms // применяем анимацию
3@ += 0x4 // 0x4 - размерность указателя на педа
end
2@ = 0 // обнуляем счётчик
01E3: text_1number_styled 'REWARD' number 1@ time 6000 style 6
while 05EE: key_pressed 0x1 // левый клик мыши (стрельба)
wait 0
0419: 0@ = player $PLAYER_CHAR weapon 27 ammo
if
0@ == 0
then
01C2: remove_references_to_actor 1@
040D: unload_wav 1
//04EF: release_animation 'STRIP'
end
end
01C2: remove_references_to_actor 1@
040D: unload_wav 1
3@ = 0x0
end
//04EF: release_animation 'STRIP'
jump @check
end_thread
{$CLEO}
0000:
thread 'func'
wait 0
0@ = 0
while true
wait 2000
05F5: call_scm_func @Marker params_count 0
end
:Marker
wait 0
0@ += 5
01E3: text_1number_styled 'REWARD' number 0@ time 1000 style 6
05F6: ret 0
end_thread
Запустив игру мы увидим, что функция выводит постоянно одно и то же значение. Хотелось бы узнать почему?
while 2@ == 1 // цикл выполняется до того, пока игрок не переключит радиостанцию
wait 0
if Actor.Driving($PLAYER_ACTOR)
jf @draw // перемещает на метку определения номера радиостанции
05E0: 2@ = read_memory 1@ size 1 virtual_protect 0 // 1@ = номер радиостанции (0x7E49C0 + 0x23C)
038D: draw_texture 2 position 3@ 75.0 scale 128.0 128.0 RGBA 255 255 255 255
end
Другими словами, спрайт должен рисоваться только определённое время, после завершения цикла рисования должен ждать смены радиостанции или выхода игрока из автомобиля.