#1 09-11-2017 21:36

Nikita592
Registered: 14-06-2017
Posts: 36

Индикатор обстрела

Здравствуйте, форумчане! У меня появилась идея, но я понятия не имею как её реализовать. Вообщем, суть моей идеи. В GTA V есть такая фича, когда в тебя стреляют, появляется стрелка обстрела (т.е если игрок получил урон то появится стрелка с той стороны с какой игрока атакуют.), и я такую фичу хочу сделать в SA, но не знаю как. Возможно ли реализовать такое в SA? Если да, то как?

Last edited by Nikita592 (09-11-2017 21:41)

Offline

#2 10-11-2017 02:41

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Индикатор обстрела

Можно трансофрмировать позицию игрока (точка1) и позицию стрелявшего (точка2) в экранные координаты. Получишь вектор в 2d-плоскости. На пересечении этого вектора с границами экрана рисуешь спрайт, ну и ещё его можно повернуть, в зависимости от направления вектора.


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#3 10-11-2017 14:07

Nikita592
Registered: 14-06-2017
Posts: 36

Re: Индикатор обстрела

Трансформировать в экранные координаты? Как это сделать?

P.S. Индикатор обстрела я хочу сделать в CLEO.

Last edited by Nikita592 (11-11-2017 17:31)

Offline

#4 15-11-2017 16:00

Nikita592
Registered: 14-06-2017
Posts: 36

Re: Индикатор обстрела

Форум спит? sad

Offline

#5 20-11-2017 19:26

Nikita592
Registered: 14-06-2017
Posts: 36

Re: Индикатор обстрела

Да! Я сделал индикатор обстрела! Только я не трансформировал позицию игрока и атакующего в экранные координаты. Я просто записал в переменные позицию игрока и атакующего, и сложил в переменную (Опкод 0509). Дальше я в переменные записал в переменные позицию камеры. Потом, вычитал от позиции камеры общую позицию игрока и атакующего. И на фоне всего этого используя опкоды от DK22Pac нарисовал спрайт с углом поворота.
Вот код:

{$CLEO}
0000:

:ATTACK_PLAYER
thread "ATTACK_PLAYER"
wait 0
if
031D:   actor $PLAYER_ACTOR hit_by_weapon 57
jf @ATTACK_PLAYER_Reload
if
0AB1: call_scm_func @GetAttackActor 1 $PLAYER_ACTOR 1@
jf @ATTACK_PLAYER
Actor.StorePos(1@,10@,11@,12@)
wait 0
Actor.StorePos($PLAYER_ACTOR,13@,14@,15@)
0509: 16@ = distance_between_XY 10@ 11@ and_XY 13@ 14@
068D: get_camera_position_to 18@ 19@ 20@
0063: 19@ -= 16@ // (float)
32@ = 0
while 32@ < 1000
wait 0
03E3: set_texture_to_be_drawn_antialiased 1
0@ = Texture.LoadFromPNG("cleo\IMG_PIC\down1.png")
0D7E: draw_sprite_with_texture 0@ at_cornerA 100.0 100.0 cornerB 300.0 35.0 color 220 220 220 255 angle 19@
end
wait 300
03F0: enable_text_draw 0
Texture.Unload(0@)

:Release_TExture
wait 0
if
0AB0: key_pressed 85 // U
then
Texture.Unload(0@)
end
jump @ATTACK_PLAYER

:GetAttackActor
0A96: 1@ = actor 0@ struct
1@ += 0x764
 
:TestPed
0A8D: 0@ = read_memory 1@ size 4 virtual_protect 0
if
    0@ > 0
then
    0A8D: 8@ = read_memory 0x00B74490 size 4 virtual_protect 0
    0AA8: call_function_method 0x4442D0 struct 8@ num_params 1 pop 0 0@ 1@
    if
        056D:   actor 1@ defined
    then
        0AB2: ret 1 1@
    end
end
0AB2: ret 1 -1

:ATTACK_PLAYER_Reload
wait 0
if
0ADC:   test_cheat "RED"
jf @ATTACK_PLAYER
0A92: create_custom_thread "Attack.cs"
0ACE: show_formatted_text_box "Reloading"
0A93: end_custom_thread

Offline

#6 24-01-2018 13:52

Nikita592
Registered: 14-06-2017
Posts: 36

Re: Индикатор обстрела

И вот у меня появился вопрос. Как сделать так, чтобы индикатор обстрела показывал ТОЧНОЕ местоположение актёра который атаковал игрока. Как это сделать?

Offline

Board footer

Powered by FluxBB