#1 Re: Вопросы по скриптингу » Один вопрос » 07-07-2018 00:16

DK22Pac wrote:
rect_x1 = center_x - width/2
rect_x2 = center_x + width/2
rect_y1 = center_y - height/2
rect_y2 = center_y + height/2

Спасибо! Но я сообразить не могу, как рисовать текстуру в центре экрана?

#2 Re: Вопросы по скриптингу » Один вопрос » 04-07-2018 23:34

Люди! У меня появился вопрос. Я использую опкод 0D7E от DK22Pac, для рисования индикатора. И в этом опкоде есть параметры at_cornerA и at_cornerB. Я в at_cornerB вписал значения 512.0 и 256.0. Насколько я понял, cornerB отвечает за ширину и высоту рисования текстуры. При изменении at_cornerA текстура изменяется по размерам и прочему, насколько я понял. Вопрос: Как текстуру рисовать в центре используя опкод рисования от DK22Pac?

#3 Беседка » Пропадает звук » 29-06-2018 19:29

Nikita592
Replies: 2

Здравствуйте! Не знаю в какой раздел поместить эту тему, поместил сюда. Вобщеем, у меня такая проблема. В GTA SA стал пропадать звук. Часто появляется, и пропадает. Пропадает весь звук, кроме звуков меню. Как решить эту проблему?

#4 Re: Вопросы по скриптингу » Один вопрос » 12-06-2018 23:57

Kim wrote:

Очень серьезный вопрос от меня: меняю опкодом 09C7 скин CJ, но после сохранения и дальнейшней загрузки скин снова меняется на стандартный CJ-я, как это исправить?

Проверить опкодом 03D9 завершено ли сохранение, после изменить скин.

#5 Re: Вопросы по скриптингу » Один вопрос » 12-06-2018 17:30

Kim wrote:
Nikita592 wrote:

Он будет работать сначала.

В начале main стоит создание игрока, помещение его в определенные координаты и начало 0 миссии, это тоже все будет выполняться после загрузки сохранения?

Нет не будет, я ошибся, игра будет работать с того скрипта, который завершился при сохранении. Вроде так он работает.

#6 Re: Вопросы по скриптингу » Один вопрос » 12-06-2018 14:25

Kim wrote:
wmysterio wrote:
Kim wrote:

Можно подробнее как так сделать?

Можете почитать статью RRR-файлы в GTA SA на моём сайте. Там я более-менее рассказал как делать RRR-файлы. Маршрут будет гарантировать, что транспорт будет ехать строго по указанному маршруту.

Я надеюсь, вам не надоели мои вопросы. Такое назрело спросить: как работает main.scm? При запуске новой игры он идет сначала, а если загрузить игру через сохранение, то откуда будет начинаться скрипт?

Он будет работать сначала.

#7 Re: Вопросы по скриптингу » Один вопрос » 09-06-2018 15:10

Kim wrote:

Такой вопрос появился: в миссиях машины едут прямо очень аккуратно, как заставить их ехать так же? Я слышал, что так можно заставить ехать даже лодку.

Вроде с помощью путей автомобилей такой параметр задаётся. Иначе говоря, с помощью RRR файлов.

#8 Вопросы по скриптингу » Прикрепить текст к текстуре. » 08-04-2018 21:10

Nikita592
Replies: 0

Здравствуйте! У меня появился такой вопрос. Можно ли как-то прикрепить какой-либо текст к текстуре? Т.е в текстуре допустим есть кружок и в этом кружке нужно например нарисовать значение HP какой-либо машины.

#10 Re: Вопросы по скриптингу » Один вопрос » 06-04-2018 18:19

Всем привет! У меня возник такой вопрос. Есть опкод записывающий время огня? Если допустим горит игрок, то записывается время огня. Как только игрок перестаёт гореть, таймер огня останавливается.

#11 Re: Вопросы по скриптингу » Как узнать, что водитель автомобиля мертв? » 31-03-2018 19:05

Можно сделать по другому. Можно проверить что актёр/ы водят транспорт и вместе с этой проверкой добавить проверку на то, что актёр мёртв.

#12 Sanny Builder и CLEO » Изменение цвета букв » 22-03-2018 15:44

Nikita592
Replies: 0

Здравствуйте! Подскажите, как изменить цвет букв в Sanny Builder 3? Я поменял фон и отступ на чёрный, так как белый глаза мозолит. Буквы в том смысле что например опкод 0AF0: get_int_from_ini_file и мне сам get_int_from_ini_file нужно изменить на цвет серый.

#13 Re: Вопросы по скриптингу » При смене скина у главного героя менялась и походка » 07-03-2018 13:20

Такой возможности нет. Но, можно сделать проверку на то, что если у игрока скин женщины (это можно сделать с помощью опкода 02F2), и с помощью опкода 0245 можно поставить походку, какую хочешь. Походки можно посмотреть в animgrp.dat в папке data.

#14 Re: Вопросы по скриптингу » Один вопрос » 21-02-2018 22:44

Shag wrote:
Nikita592 wrote:
Shag wrote:
Nikita592 wrote:

Люди, хочу спросить а как можно трансформировать позицию игрока и позицию атакующего актёра (который атаковал игрока), в экранные координаты?

В VC это функция
5778B0                         ; char __cdecl CSprite::CalcScreenCoors(RwV3d *a1, RwV2d *a2, float *a3, float *a4, char a5)

В SA вроде
70CE30                             ; CSprite::CalcScreenCoors(RwV3d const&, RwV3d*, float *, float *, bool, bool)

Shag, спасибо, но как этим пользоваться? Использовать опкод 0A8D? Если да, то как? Просто я в памяти игры плохо разбираюсь, и как пользоваться  этим адресом памяти я не знаю.

А для какой игры? Если для VC - могу накатать код на досуге(я не профи, так что для меня это работка на несколько часов, т.к. я всегда допускаю какие-нибудь ошибки и приходится тестировать по-нескольку раз), но вообще я работаю над новыми опкодами для Вайса, и этот опкод тоже в планах на добавление.

Если для SA - то навряд ли смогу помочь, т.к. с ней не работаю(даже в функции для неё не уверен).

UPD:
А, нашел всё же инфу по СА:
https://sannybuilder.com/forums/viewtop … 8988#p8988

Shag, спасибо. Для SA хочу это всё сделать.

#15 Re: Вопросы по скриптингу » Один вопрос » 21-02-2018 08:35

Shag wrote:
Nikita592 wrote:

Люди, хочу спросить а как можно трансформировать позицию игрока и позицию атакующего актёра (который атаковал игрока), в экранные координаты?

В VC это функция
5778B0                         ; char __cdecl CSprite::CalcScreenCoors(RwV3d *a1, RwV2d *a2, float *a3, float *a4, char a5)

В SA вроде
70CE30                             ; CSprite::CalcScreenCoors(RwV3d const&, RwV3d*, float *, float *, bool, bool)

Shag, спасибо, но как этим пользоваться? Использовать опкод 0A8D? Если да, то как? Просто я в памяти игры плохо разбираюсь, и как пользоваться  этим адресом памяти я не знаю.

#16 Re: Вопросы по скриптингу » Один вопрос » 19-02-2018 13:00

Люди, хочу спросить а как можно трансформировать позицию игрока и позицию атакующего актёра (который атаковал игрока), в экранные координаты?

#17 Re: Вопросы по скриптингу » Один вопрос » 18-02-2018 08:07

Можно покопаться в памяти SA, там должен быть какой-либо адрес памяти который вызывает меню загрузки.

#18 Re: Вопросы по скриптингу » Индикатор обстрела » 24-01-2018 13:52

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

#21 Re: Вопросы по скриптингу » Индикатор обстрела » 20-11-2017 19:26

Да! Я сделал индикатор обстрела! Только я не трансформировал позицию игрока и атакующего в экранные координаты. Я просто записал в переменные позицию игрока и атакующего, и сложил в переменную (Опкод 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

#23 Re: Вопросы по скриптингу » Индикатор обстрела » 10-11-2017 14:07

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

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

#24 Вопросы по скриптингу » Индикатор обстрела » 09-11-2017 21:36

Nikita592
Replies: 5

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

#25 Re: Вопросы по скриптингу » Время компьютера в игре » 14-08-2017 14:17

Goldfish, вот полный код получения времени:

:FPS_COUNTER
thread 'FPS_COUNTER' 
2@ = 30 
$DEBUG_TEXT_SIZE_X = 0.4 
$DEBUG_TEXT_SIZE_Y = 1.15 
$DEBUG_ALPHA = 0 
$DEBUG_ALPHA_IN_FLAG = 0 

:FPS_COUNTER_60
1@ = 0 
32@ = 0 

:FPS_COUNTER_74
wait 0 
if 
  $DEBUG_ALPHA_IN_FLAG == 0 
jf @FPS_COUNTER_129 
$DEBUG_ALPHA += 15 
if 
  $DEBUG_ALPHA == 255 
jf @FPS_COUNTER_129 
$DEBUG_ALPHA_IN_FLAG = 1 

:FPS_COUNTER_129
if 
  $FPS_ENABLED == 1 
jf @FPS_COUNTER_74  
1@ += 1 
03F0: enable_text_draw 1 
0342: set_text_draw_centered 1 
03E0: draw_text_behind_textures 1 
0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 
081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 
033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y 
if 
  2@ > 27 
jf @FPS_COUNTER_269 
045A: draw_text_1number 600.0 3.0 GXT 'DBG18' number 2@ 

:FPS_COUNTER_269
if and
   not 2@ >= 27 
  2@ > 22 
jf @FPS_COUNTER_318 
045A: draw_text_1number 600.0 3.0 GXT 'DBG24' number 2@ 

:FPS_COUNTER_318
if 
   not 2@ >= 22 
jf @FPS_COUNTER_360 
045A: draw_text_1number 600.0 3.0 GXT 'DBG25' number 2@ 

:FPS_COUNTER_360
0342: set_text_draw_centered 1 
03E0: draw_text_behind_textures 1 
0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 
081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 
033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y 
if and
  $LOCAL_HOUR > 9 
  $LOCAL_MINUTE > 9 
jf @FPS_COUNTER_455 
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG23' numbers $LOCAL_HOUR $LOCAL_MINUTE 

:FPS_COUNTER_455
if and
   not $LOCAL_HOUR > 9 
  $LOCAL_MINUTE > 9 
jf @FPS_COUNTER_507 
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG20' numbers $LOCAL_HOUR $LOCAL_MINUTE 

:FPS_COUNTER_507
if and
   not $LOCAL_HOUR > 9 
   not $LOCAL_MINUTE > 9 
jf @FPS_COUNTER_559 
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG21' numbers $LOCAL_HOUR $LOCAL_MINUTE 

:FPS_COUNTER_559
if and
  $LOCAL_HOUR > 9 
   not $LOCAL_MINUTE > 9 
jf @FPS_COUNTER_611 
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG22' numbers $LOCAL_HOUR $LOCAL_MINUTE
00C0: set_current_time_hours_to $LOCAL_HOUR minutes_to $LOCAL_MINUTE 

:FPS_COUNTER_611
0A8D: 10@ = read_memory 12045156 size 4 virtual_protect 0 
11@ = 999.0 
006B: 11@ *= 10@ // (float) 
0092: 11@ = float 11@ to_integer 
0342: set_text_draw_centered 1 
03E0: draw_text_behind_textures 1 
0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 
081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 
033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y 
045B: draw_text_2numbers 45.0 3.0 GXT 'DBG19' numbers $BUILD_VERSION1 $BUILD_VERSION2 
if 
001D:   32@ > 11@ // (int) 
jf @FPS_COUNTER_74 
03F0: enable_text_draw 1 
0342: set_text_draw_centered 1 
03E0: draw_text_behind_textures 1 
0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 
081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 
033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y 
if 
  2@ > 27 
jf @FPS_COUNTER_829 
045A: draw_text_1number 600.0 3.0 GXT 'DBG18' number 2@ 

:FPS_COUNTER_829
if and
   not 2@ >= 27 
  2@ > 22 
jf @FPS_COUNTER_878 
045A: draw_text_1number 600.0 3.0 GXT 'DBG24' number 2@ 

:FPS_COUNTER_878
if 
   not 2@ >= 22 
jf @FPS_COUNTER_920 
045A: draw_text_1number 600.0 3.0 GXT 'DBG25' number 2@ 

:FPS_COUNTER_920
0342: set_text_draw_centered 1 
03E0: draw_text_behind_textures 1 
0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 
081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 
033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y 
if and
  $LOCAL_HOUR > 9 
  $LOCAL_MINUTE > 9 
jf @FPS_COUNTER_1015 
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG23' numbers $LOCAL_HOUR $LOCAL_MINUTE

:FPS_COUNTER_1015
if and
   not $LOCAL_HOUR >= 9 
  $LOCAL_MINUTE > 9 
jf @FPS_COUNTER_1067 
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG20' numbers $LOCAL_HOUR $LOCAL_MINUTE 

:FPS_COUNTER_1067
if and
   not $LOCAL_HOUR >= 9 
   not $LOCAL_MINUTE >= 9 
jf @FPS_COUNTER_1119 
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG21' numbers $LOCAL_HOUR $LOCAL_MINUTE 

:FPS_COUNTER_1119
if and
  $LOCAL_HOUR > 9 
   not $LOCAL_MINUTE >= 9 
jf @FPS_COUNTER_1171 
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG22' numbers $LOCAL_HOUR $LOCAL_MINUTE
00C0: set_current_time_hours_to $LOCAL_HOUR minutes_to $LOCAL_MINUTE 

:FPS_COUNTER_1171
0342: set_text_draw_centered 1 
03E0: draw_text_behind_textures 1 
0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 
081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 
033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y 
045B: draw_text_2numbers 45.0 3.0 GXT 'DBG19' numbers $BUILD_VERSION1 $BUILD_VERSION2 
0085: 2@ = 1@ // (int) 
jump @FPS_COUNTER_60

Вот текст из DBG23:
~1~:~1~

Текст из DBG20:
0~1~:~1~

Текст из DBG21:
0~1~:0~1~

Текст из DBG22:
~1~:0~1~

Board footer

Powered by FluxBB