You are not logged in.
Pages: 1
Здравствуйте, форумчане! У меня появилась идея, но я понятия не имею как её реализовать. Вообщем, суть моей идеи. В GTA V есть такая фича, когда в тебя стреляют, появляется стрелка обстрела (т.е если игрок получил урон то появится стрелка с той стороны с какой игрока атакуют.), и я такую фичу хочу сделать в SA, но не знаю как. Возможно ли реализовать такое в SA? Если да, то как?
Last edited by Nikita592 (09-11-2017 21:41)
Offline
Можно трансофрмировать позицию игрока (точка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
Трансформировать в экранные координаты? Как это сделать?
P.S. Индикатор обстрела я хочу сделать в CLEO.
Last edited by Nikita592 (11-11-2017 17:31)
Offline
Форум спит?
Offline
Да! Я сделал индикатор обстрела! Только я не трансформировал позицию игрока и атакующего в экранные координаты. Я просто записал в переменные позицию игрока и атакующего, и сложил в переменную (Опкод 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
И вот у меня появился вопрос. Как сделать так, чтобы индикатор обстрела показывал ТОЧНОЕ местоположение актёра который атаковал игрока. Как это сделать?
Offline
Pages: 1