#1 GTA Modding » Black and white filter on the screen like in GTA 4 for gta Vice city. » 01-05-2024 13:33

Remca12
Replies: 0

Hello. I'm trying to do desaturation by layering a filter on top of the environment and learning about screen painting along the way. So far there has been a “haze” (in the screenshot). This is a cleo script for Vice City. And at the same time I season it with rain. I took the text displayed on the screen from the MAIN section and want it to remain invisible (you can use any text from the MAIN section, but it should still remain invisible).

Please help me realize my plans, I still don’t know how to do bleaching any other way.

{$CLEO .cs}

0000:

03A4: name_thread 'BACKFC'

0001: wait 2000 ms 

0006: TIMERA = 0 // @ = int

0004: $hz = 0 // $ = int

while true
wait 0
03F0: enable_text_draw 1

    if 
    001B:   5000 > TIMERA // int > @ 
    then
    01B6: set_weather 2
    0050: gosub @BACKFC_15844
    0340: set_text_draw_color 0 0 0 0
    045A: text_draw_1number 0.0 0.0 'BIKE' $hz
    end
   
    01B7: release_weather
//    break
end
03F0: enable_text_draw 0 

:BACKFC_15844 
//0341: set_text_draw_align_justify 1
//03E4: set_text_draw_align_right 0
0343: set_text_linewidth 3500.0
//0348: set_text_draw_proportional 1
//0342: set_text_draw_centered 0
0345: set_text_draw_in_box 1
033F: set_text_draw_letter_width_height 1.6 55.6
0051: return

//0A93: terminate_this_custom_script

#2 GTA Modding » Black and white filter on the screen like in GTA 4 for gta Vice city. » 01-05-2024 13:32

Remca12
Replies: 0

Hello. I'm trying to do desaturation by layering a filter on top of the environment and learning about screen painting along the way. So far there has been a “haze” (in the screenshot). This is a cleo script for Vice City. And at the same time I season it with rain. I took the text displayed on the screen from the MAIN section and want it to remain invisible (you can use any text from the MAIN section, but it should still remain invisible).

Please help me realize my plans, I still don’t know how to do bleaching any other way.

{$CLEO .cs}

0000:

03A4: name_thread 'BACKFC'

0001: wait 2000 ms 

0006: TIMERA = 0 // @ = int

0004: $hz = 0 // $ = int

while true
wait 0
03F0: enable_text_draw 1

    if //разукрашиваем в нужный цвет на протяжении 5сек
    001B:   5000 > TIMERA // int > @ //5sekund
    then //5секунд это временное условие, позже заменится на смерть нужного педа
    01B6: set_weather 2
    0050: gosub @BACKFC_15844
    0340: set_text_draw_color 0 0 0 0
    045A: text_draw_1number 0.0 0.0 'BIKE' $hz
    end
   
    01B7: release_weather
//    break
end
03F0: enable_text_draw 0 //когда прошло 5секунд выключаем рисование на экране и погода будет сброшена.

:BACKFC_15844 //вытягиваем эффект на весь экран.
//0341: set_text_draw_align_justify 1
//03E4: set_text_draw_align_right 0
0343: set_text_linewidth 3500.0
//0348: set_text_draw_proportional 1
//0342: set_text_draw_centered 0
0345: set_text_draw_in_box 1
033F: set_text_draw_letter_width_height 1.6 55.6
0051: return

//0A93: terminate_this_custom_script

#3 GTA Modding » Black and white filter on the screen like in GTA 4 for gta Vice city. » 01-05-2024 13:32

Remca12
Replies: 0

Hello. I'm trying to do desaturation by layering a filter on top of the environment and learning about screen painting along the way. So far there has been a “haze” (in the screenshot). This is a cleo script for Vice City. And at the same time I season it with rain. I took the text displayed on the screen from the MAIN section and want it to remain invisible (you can use any text from the MAIN section, but it should still remain invisible).

Please help me realize my plans, I still don’t know how to do bleaching any other way.

{$CLEO .cs}

0000:

03A4: name_thread 'BACKFC'

0001: wait 2000 ms 

0006: TIMERA = 0 // @ = int

0004: $hz = 0 // $ = int

while true
wait 0
03F0: enable_text_draw 1

    if //разукрашиваем в нужный цвет на протяжении 5сек
    001B:   5000 > TIMERA // int > @ //5sekund
    then //5секунд это временное условие, позже заменится на смерть нужного педа
    01B6: set_weather 2
    0050: gosub @BACKFC_15844
    0340: set_text_draw_color 0 0 0 0
    045A: text_draw_1number 0.0 0.0 'BIKE' $hz
    end
   
    01B7: release_weather
//    break
end
03F0: enable_text_draw 0 //когда прошло 5секунд выключаем рисование на экране и погода будет сброшена.

:BACKFC_15844 //вытягиваем эффект на весь экран.
//0341: set_text_draw_align_justify 1
//03E4: set_text_draw_align_right 0
0343: set_text_linewidth 3500.0
//0348: set_text_draw_proportional 1
//0342: set_text_draw_centered 0
0345: set_text_draw_in_box 1
033F: set_text_draw_letter_width_height 1.6 55.6
0051: return

//0A93: terminate_this_custom_script

#4 Re: Вопросы по скриптингу » Вопрос про фишки которые выдаются при посадки в машину. » 07-12-2021 05:41

wall
Здравствуйте, тема еще актуальна. Я повторял свою просьбу не только здесь, получал ответ. Но видимо оффсеты не те. Я использую ехе-шник версии 1.01.png?width=457&height=535

https://media.discordapp.net/attachment … height=536

Код исходный вот такой как на картинке. Главная проблема в том что не отключаются бонусы от фбр (броня), и от полицейской машины (дробовик). От полицейской машины пробовали оффсеты несколько раз - пока пришлось закомментировать.
Зато 100% работает отключение бонуса от скорой помощи. good

unknown.png?width=714&height=536

Код обновился, теперь работает отключение точно бонуса хп от скорой, и бонуса дробашом от коповозки.

Вот пожалуйста текущий исходный код. Возможно что оффсетом ошиблись, уж не знаю.

{$CLEO .cs}
0000:
03A4: script_name 'Mvlght'

:name1
wait 0
05E5: 0@ = game_version 
if 
  0@ == 0 // integer values 
else_jump @name2 

0A8C: write_memory 0x69C69C size 4 value 0.0 virtual_protect 1
0A8C: write_memory 0x094AE6C size 2 value 0 virtual_protect 1
0A8C: write_memory 0x5B8974 size 11 value 0x90 virtual_protect 1
0A8C: write_memory 0x5B8987 size 9 value 0x90 virtual_protect 1
0A8C: write_memory 0x5B89C8 size 11 value 0x90 virtual_protect 1
//0A8C: write_memory 0x05B8C1B size 1 value 0x85 virtual_protect 1

:name2
0A93: terminate_this_custom_script

Но от фбр бонус пока не отключается, как давали броню за посадку в фбр, так и дают.

Тема закрыта, так как решение удалось недавно найти.

#5 Re: Вопросы по скриптингу » Вывод текста из локальной переменной. » 03-11-2021 15:44

wmysterio wrote:

Я же тебе уже говорил: проверить настройки SB. Форматирование текста должно быть установлено на "Как есть" или "нижний", чтобы "%d" компилировался в правильном формате.

Но я ведь пробовал. Пока не помогло... rolleyes

#6 Вопросы по скриптингу » Вывод текста из локальной переменной. » 31-10-2021 06:39

Remca12
Replies: 3

Здравствуйте, я столкнулся с проблемой. По коду, значение читается и записывается в переменную. В моём случае это целое число. Я хочу выводить из переменной полученное значение.
Это вид в декомпилированном виде.

read_memory 0@ 6848578 2 0 
print_formatted_now "%D" 20000 0@ 

А это исходный вид:

0A8D: 0@ = read_memory 6848578 size 2 virtual_protect 1
0AD1: show_formatted_text_highpriority "%d" time 20000 0@

%d - целое число

Я использовал разные опкоды для вывода текста, но результат был всегда один - буква.
Я просто не  понимаю почему вместо числа всё равно выводится буква ?unknown.png?width=714&height=536

#7 Re: Вопросы по скриптингу » Не подбираемый пикап. » 13-08-2021 21:33

Проблема решена) Для тех кому интересно решение оно простое - текст в gxt должен быть прописан правильно: в алфавитном порядке, без лишних пробелов, особенно без лишних пробелов между секциями. Работоспособность текста можно проверить простым клео-скриптом выводящий текст на экран, в моём случае опкодом 00ba.

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

#8 Вопросы по скриптингу » Не подбираемый пикап. » 13-08-2021 06:41

Remca12
Replies: 1

Здравствуйте, помогите мне пожалуйста, я столкнулся с проблемой что пикап не подбирается или же не делает то что должен.
Скриптую на вайс сити. В моём случае весь прилагаемый скрипт вшит в main.scm из-за особенностей пикапов и гаражей.
Прежде опишу суть скрипта: суть скрипта в покупке актива с гаражом, в котором можно сохранять тачки. Поэтому используется опкод 0518. Этот код ниже находится до метки :intro, ну эдакий стартер. smile

:STHBY_50
script_name 'STHBY'
wait 0
0518: $PICK = create_available_asset_pickup 'INT_B' at -45.2802 -432.4575 32.0248 price 25000 

:STHBY_50_31
wait $DEFAULT_WAIT_TIME 
if 
   Player.Defined($PLAYER_CHAR)
jf @STHBY_50_128 
if 
  $ONMISSION == 0 // $ == int 
jf @STHBY_50_128 
if 
   Player.Controllable($PLAYER_CHAR)
jf @STHBY_50_128 
if 
   Pickup.Picked_up($PICK)
jf @STHBY_50_128 

00BA: text_styled 'LNKV_L' 15000 ms 2  // Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to purchase Staunton Island Safehouse for $~1~
start_mission 83  // Distribution
terminate_this_script 

:STHBY_50_128
jump @STHBY_50_31 

Прилагаю скриншот для наглядности.
Weh5K4lS-EE.jpg?size=1280x960&quality=96&sign=ad543181ec7865a85a38b5aa2198c92e&type=album

Затем прописан запуск миссии после завершения нужной мне миссии
PAEV_d_iNy4.jpg?size=1280x960&quality=96&sign=3eeef36d5cd0ee1203b7bbda4b5c4b0b&type=album

И теперь миссия покупки:

//-------------Mission 83---------------
// Originally: Distribution

:STHBYY
script_name 'STHBYY' 
$ONMISSION = 1 // $ = int 
wait 0 
030C: progress_made += 1 
0169: set_fade_color 0 0 1 
fade 0 500 
Player.CanMove($PLAYER_CHAR, False)
03BF: set_player $PLAYER_CHAR ignored_by_everyone_to 1 
03F4: set_all_vehicles_apply_damage_rules 0 

:STHBYY_58
if 
fading 
jf @STHBYY_129 
wait 0 
if 
   not Player.Defined($PLAYER_CHAR)
jf @STHBYY_122 
0570: 5@ = create_asset_radar_marker_with_icon 5 at -45.2802 -432.4575 32.0248 
018B: set_marker 5@ display 2 
terminate_this_script 

:STHBYY_122
jump @STHBYY_58 

:STHBYY_129
0570: 5@ = create_asset_radar_marker_with_icon 5 at -45.2802 -432.4575 32.0248 
018B: set_marker 5@ display 2 
0395: clear_area 1 at -37.7255 -454.517 31.747 range 1.0 
0055: put_player $PLAYER_CHAR at -37.7255 -454.517 31.747 
0171: set_player $PLAYER_CHAR z_angle_to 276.3156 
02A3: enable_widescreen 1 
0169: set_fade_color 0 0 1 
fade 1 500 
Camera.SetPosition(-40.2151, -462.2522, 31.247, 0.0, 0.0, 0.0)
Camera.PointAt(-37.9329, -444.0719, 32.0248, 2)

:STHBYY_282
if 
fading 
jf @STHBYY_324 
wait 0 
if 
   not Player.Defined($PLAYER_CHAR)
jf @STHBYY_317 
terminate_this_script 

:STHBYY_317
jump @STHBYY_282 

:STHBYY_324
$1799 = 1 // $ = int 
$1304 = 1 // $ = int 
01E3: text_1number_styled 'STHBYY' number 25000 time 5000 style 6 
0529: add 25000 to_money_spent_on_property_stats 
0542: add_property 9 to_property_own_stats 
0394: play_music 1 
043C: set_game_sounds_disable_on_fade 0 
wait 2000 
00BC: text_highpriority 'BUYSAVE' 3000 ms 1 
wait 3000 
00BC: text_highpriority 'BUYGARG' 3000 ms 1 
02FA: garage $STNTN_HS change_to_type 26 
wait 3000 
0169: set_fade_color 0 0 1 
fade 0 500 

:STHBYY_440
if 
fading 
jf @STHBYY_486 
wait 0 
if 
   not Player.Defined($PLAYER_CHAR)
jf @STHBYY_479 
043C: set_game_sounds_disable_on_fade 1 
terminate_this_script 

:STHBYY_479
jump @STHBYY_440 

:STHBYY_486
Camera.SetBehindPlayer
Camera.Restore_WithJumpCut
Player.CanMove($PLAYER_CHAR, True)
03BF: set_player $PLAYER_CHAR ignored_by_everyone_to 0 
03F4: set_all_vehicles_apply_damage_rules 1 
02A3: enable_widescreen 0 
0169: set_fade_color 0 0 1 
fade 1 500 
043C: set_game_sounds_disable_on_fade 1 
$ONMISSION = 0 // $ = int 
mission_cleanup 
terminate_this_script 
return 

Также я пробовал закомментировать и ставить опкод 8214, тогда миссия точно запускается. Но по замыслу миссия должна запускаться после подбора пикапа.

#9 Вопросы по скриптингу » Вопрос про фишки которые выдаются при посадки в машину. » 14-07-2021 16:47

Remca12
Replies: 2

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

#10 Вопросы по скриптингу » Анимации в гта 3. Их id и пример с clump » 26-01-2021 14:00

Remca12
Replies: 0

Здравствуйте. Скажите пожалуйста как найти id анимации ?unknown.png?width=690&height=552
Имя нужной мне анимации (Когда Клод показывает фак: FUCKU). Fire_head, за что ему спасибо объяснил что мне понадобится id анимации и clump, который как-то находится в CEntity. К сожалению больше он мне не объяснил, да и никогда я не искал то что прошу потому что еще не знаю как это делать надо.
Скажу коротко: Я хочу детектить анимацию когда Клод показывает средний палец, чтобы за это игроку было какое-то последствие. Например, если игрок покажет фак копу, то ему дадут звезду.

id анимаций мне подсказали где смотреть: в eAnimations.h В моём случае id анимации фака - 169. Осталось с clump разобраться и правильным вызовом RpAnimBlendClumpGetAssociation

Я верно понял, что таким вот кодом ниже, я смогу проверить показал ли игрок фак ?

:FACK 
03A4: script_name 'FACK'
00D6: if and
0256:   player $PLAYER_CHAR defined 
0038:   $FLAG_PLAYER_ON_MISSION == 0 // $ == int 
004D: jump_if_false @FACK 
0A96: 11@ = actor $PLAYER_ACTOR struct
000A: 11@ += 0x4C
0A8D: 11@ = read_memory 11@ size 4 virtual_protect 1

while true
wait 0 
    0AA7: call_function_return 0x4055C0 num_params 2 pop 2 169 11@ 0@
    if
    0@ <> 0
    then
    0109: player $PLAYER_CHAR money += 100
    end
    
end
004E: terminate_this_script

Я пытаюсь действовать так как мне подсказывают:
unknown.png?width=690&height=552

Хелп! clap

Прикрепляю лог, может он поможет.
unknown.png?width=690&height=552

#11 Re: Вопросы по скриптингу » Всё что связано с гаражом и поиском » 15-01-2021 14:39

Скрипт переписан, в части цикла, но осталась проблема: после сброса розыска надпись выводится в независимости от того где машина. А как мне активировать гараж именно тогда когда машина в гараже покраски и сброшен розыск ?

while true
wait 0
    if
    0256:   player 0 defined
    then
        if
        010F:   player 0 wanted_level > 0
        then
        02FA: garage $SPRAYSHOP1 change_to_type 1
        02FA: garage $72 change_to_type 1
        02FA: garage $93 change_to_type 1
            repeat
            wait 0
            until 810F:   not player 0 wanted_level > 0
        02FA: garage $SPRAYSHOP1 change_to_type 5
        02FA: garage $72 change_to_type 5
        02FA: garage $93 change_to_type 5            
        end
    end
end

#12 Вопросы по скриптингу » Всё что связано с гаражом и поиском » 09-01-2021 13:49

Remca12
Replies: 2

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

:ROGA
thread 'ROGA'
wait 0 
00D6: if
0256: player 0 defined 
jf @ROGA

while true
wait 0
    if
    010F:   player $PLAYER_CHAR wanted_level > 0
    then
    0361: close_garage $SPRAYSHOP1
    0361: close_garage $72
    0361: close_garage $93 
    else
    0360: open_garage $SPRAYSHOP1 //Эти переменные стандартные, т.е. эта переменная у гаража покраски Портленда
    0360: open_garage $72 //Стаунтона
    0360: open_garage $93 //и Шорсайд-велла
    end
end

:ROGA2
0054: store_player $PLAYER_CHAR position_to 0@ 5@ 6@
repeat
wait 0
if
0AE1: 7@ = random_actor_near_point 0@ 5@ 6@ in_radius 35.0 find_next 0 pass_deads 1
jf @ROGA

until 8AE1: 7@ = random_actor_near_point 0@ 5@ 6@ in_radius 35.0 find_next 1 pass_deads 1 

end_thread

Пока что главная проблема в том что выходят стандартные надписи после перекраски машин.

#13 Вопросы по скриптингу » Проблемы с телепортом лодки. » 23-12-2020 04:26

Remca12
Replies: 1

Если игрок отплывет слишком далеко от лодки, игра виснет (с учетом того что телепорт находиться в цикле while true). Сразу в маине скрипт.

Из цикла: smile

while true
           if or
       03CE:   car $BOMBER_CAR stuck
          82CA:   car $BOMBER_CAR bounding_sphere_visible
          81FC:   player $PLAYER_CHAR near_car $BOMBER_CAR radius 90.0 90.0 0
           then
           04C3: create_coordinate 14@ 15@ 0.0 from_car $BO10 offset 0.0 -65.0 0.0
            00AB: put_car $BOMBER_CAR at 14@ 15@ 0.0
            end
             
        end

Я пробовал выносить телепорт в новую метку используя госаб, но тогда срабатывает лишь 1 раз
Те стало вот так после госаба:
Эта часть пока что не сидит в цикле (пробую) wall

if or
           03CE:   car $BOMBER_CAR stuck
           82CA:   car $BOMBER_CAR bounding_sphere_visible
            81FC:   player $PLAYER_CHAR near_car $BOMBER_CAR radius 90.0 90.0 0
         then
gosub @RANDCAR2
end
:RANDCAR2
         04C3: create_coordinate 14@ 15@ 0.0 from_car $BO10 offset 0.0 -65.0 0.0
     00AB: put_car $BOMBER_CAR at 14@ 15@ 0.0

Но при таком раскладе телепорт работает лишь 1 раз
Помогите пожалуйста, это ситуация безвыходная. Что делать ? Как правильно должно быть ?
По задумке, если лодка застряла где-то то её телепортирует к игроку (на 65единиц сзади). clap

#14 Re: Вопросы по скриптингу » Проблемы со скриптом » 18-12-2020 07:51

Seemann wrote:

04A8: player $PLAYER_CHAR driving_boat это нестандартный для GTA3 опкод, он добавляется через CLEO 2.0
https://github.com/cleolibrary/III.VC.C … .cpp#L1022

возможно, что он неправильно реализован, поэтому и выбивает ошибку

Спасибо это исправлено. Мне сейчас нужна помощь по адресам памяти и функциям.

Я пытаюсь заставить полицейскую лодку гоняющуюся стрелять пулями (просто плывет за игроком и должна стрелять пулями постепенно нанося урон). В начале кода была выделена память и смещение, также чуть в других местах и метке randcar прописано обновление координат. Функция стрельбы используется для гта 3 версии 1.1
Помогите мне пожалуйста чтобы лодка могла стрелять, а то она этого не делает совсем. Код прикреплен ниже, если будут вопросы пишите (да хоть в лс).

#15 Re: Вопросы по скриптингу » Проблемы со скриптом » 13-12-2020 09:46

Помогите пожалуйста. Я пытаюсь создавать случайную лодку, но пока гта 3 выдаёт ошибку на опкод проверяющий что игрок в любой лодке. Я кучу комментариев оставил.

:HIDBOMB
thread 'HIDBOMB'
wait 0

0AC8: 4@ = allocate_memory_size 12
0AC8: 5@ = allocate_memory_size 12

0085: 6@ = 4@
0085: 7@ = 5@

0A8C: write_memory 6@ size 4 value -1337.0 virtual_protect 1
0A8C: write_memory 6@ size 4 value -1488.0 virtual_protect 1
0A8C: write_memory 6@ size 4 value 34.0 virtual_protect 1

0A8C: write_memory 7@ size 4 value 1337.0 virtual_protect 1
0A8C: write_memory 7@ size 4 value 1488.0 virtual_protect 1
0A8C: write_memory 7@ size 4 value 69.0 virtual_protect 1

0AA5: call_function 0x563C30 num_params 3 pop 0 34 5@ 4@

if and
0256:   player 0 defined
$flag_player_on_mission == 0
jf @HIDBOMB
03E1: $PACK_1 = packages_found

    if
    $PACK_1 == 200
    then
    end_thread
    else
        repeat
        wait 0
        03E1: $PACK_2 = packages_found
        until 803A:   not  $PACK_2 == $PACK_1 // $ == $ int
        
        if and
        001C:   $PACK_2 > $PACK_1 // $ > $ int
        $flag_player_on_mission == 0 
        then
        023C: load_special_actor 1 'BOMBER'
        0247: request_model #GRENADE
        0247: request_model #PREDATOR
        0247: request_model #GHOST
        
            repeat
            wait 0
            until 023D:   special_actor 1 loaded
            
            repeat
            wait 0
            until 0248:   model #GRENADE available
            
            repeat
            wait 0
            until 0248:   model #PREDATOR available
            
            repeat
            wait 0
            until 0248:   model #GHOST available
            
        gosub @RANDPLACE // returns 0@ 1@ 2@ (X Y Z)
        
        //00A0: store_actor $BOMBER position_to 0@ 1@ 2@ //float 
        //0AD1: show_formatted_text_highpriority "%.2f %.2f %.2f" time 20000 0@ 1@ 2@
            
        009A: $BOMBER = create_actor 21 #SPECIAL01 at 0@ 1@ 2@
        03FC: actor $BOMBER bind_to_current_island 0
        0223: set_actor $BOMBER health_to 200
        01B2: give_actor $BOMBER weapon 11 ammo 9999
        0249: release_model #GRENADE
        02AB: set_actor $BOMBER immunities 0 0 1 0 0
        0187: $MARKER_BOMBER = create_marker_above_actor $BOMBER 
        01CC: actor $BOMBER kill_player 0 
                
            while true
            wait 0
            
                if or
                0117:   player $PLAYER_CHAR wasted
                0130:   player $PLAYER_CHAR busted
                80A2:   actor $BOMBER alive
                then
                02AB: set_actor $BOMBER immunities 0 0 0 0 0
                break
                end
                
                if or 
                00E9:   player 0 0 $BOMBER radius 5.0 5.0
                8184:   not actor $BOMBER health >= 5
                $flag_player_on_mission <> 0
                then
                00A0: store_actor $BOMBER position_to 0@ 1@ 2@
                020C: create_explosion 0 at 0@ 1@ 2@
                else 
                
                if and
                80E9:   not player 0 0 $BOMBER radius 20.0 20.0
                8123: actor $BOMBER spotted_player $player_char
                then 
                020F: actor $BOMBER look_at_player $player_char
                00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@ 
                0239: actor $BOMBER run_to 0@ 1@
                01CC: actor $BOMBER kill_player 0 
                end
                
                    if and
                    80E9:   not player 0 0 $BOMBER radius 40.0 40.0
                    82CB:   not actor $BOMBER bounding_sphere_visible
                    then
                    gosub @RANDPLACE
                        if
                        00A2:   actor $BOMBER alive
                        then                
                        00A1: put_actor $BOMBER at 0@ 1@ 2@
                        01CC: actor $BOMBER kill_player 0
                        end
                    end
                end 
            end //конец цикла
            wait 2000
        end
    end     
        if  //условия для езды лодками за актёром
        04A8: player $PLAYER_CHAR driving_boat //если Клод в любой лодке
        //пока что игра ругается на опкод 04A8.
        //0056:   player $PLAYER_CHAR 0 -230.0 255.0 -210.0 275.0 //и в зоне (хз какой,
        // наверное что-то другое понадобится)
        then //то
        gosub @RANDCAR
        end
            
        0164: disable_marker $MARKER_BOMBER 
        0164: disable_marker $MARKER_BOMBER1
        01C2: mark_actor_as_no_longer_needed $BOMBER
        0296: unload_special_actor 1 
jump @HIDBOMB

:RANDPLACE
    repeat
    wait 0
    0208: 0@ = random_float -20.0 20.0
    0208: 1@ = random_float -20.0 20.0
    04C4: create_coordinate 0@ 1@ 2@ from_actor $PLAYER_ACTOR offset 0@ 1@ 0.0
    0209: 3@ = random_int 0 2
        if
        3@ == 0
        then
        02C0: set 0@ 1@ 2@ to_ped_path_coords_closest_to 0@ 1@ 2@ 
        else
        02C1: set 0@ 1@ 2@ to_car_path_coords_closest_to 0@ 1@ 2@
        end
    until 80C2:   not sphere_onscreen 0@ 1@ 2@ 4.0
return

:RANDCAR //случайная злая лодка.
03C1: $BOMBER_CAR = player $PLAYER_CHAR car_no_save

    repeat
    wait 0
    00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
    04C4: create_coordinate 0@ 1@ 2@ from_actor $PLAYER_ACTOR offset 0@ 1@ 0.0
    0209: 9@ = random_int 0 2
        if
        9@ == 0
        then //по задумке случайная лодка поплывёт за игроком
        00A5: $BOMBER_CAR = create_car #GHOST at 0@ 1@ 2@
        0187: $MARKER_BOMBER1 = create_marker_above_actor $BOMBER_CAR
        else //а за рулём лодки будет подрывник (актёр)
        00A5: $BOMBER_CAR1 = create_car #PREDATOR at 0@ 1@ 2@
        end
    until 80C2:   not sphere_onscreen 0@ 1@ 2@ 4.0 //забыл для чего этот конец.
//после спавна гоняем лодки за актёром: полицейка стреляет, а лодка-призрак 
//только плывёт сподрывником
//так как хватит близости чтобы подрывник подорвал и лодку свою и лодку игрока.

0AC9: free_allocated_memory 4@
0AC9: free_allocated_memory 5@

end_thread

#16 Re: Вопросы по скриптингу » Проблемы со скриптом » 11-12-2020 05:36

Seemann wrote:

03C6:   current_island == 1

Пока я тестировал скрипт, вышла интересная проблема: если игрок собрал спрятанный пакет на одном острове и переместился на другой остров, неважно как (додо, noclip и т.д.), то актер будет телепортироваться. Но находится он будет в земле, а не на путях педов и машин. Код тот же самый. (пока не измененный)

#17 Re: Вопросы по скриптингу » Проблемы со скриптом » 07-12-2020 16:59

Seemann wrote:

но тогда он себя подрывает кучу раз стоя на одном месте

а кто ему говорит, что нужно бежать? По условию взрыв происходит если подрывник находится рядом с игроком. Если игрок стоит на месте, что должно произойти? Подрывник ведь тоже будет стоять? Наверно, есть смысл переместить взрыв (опкод 020C) после проверки 02A0:   actor $BOMBER stopped.

Т.е. логика должна быть примерно такая

создали подрывника
запускаем бесконечный цикл (while true)

проверяем, если игрок или подрывник умер - делаем break
проверяем остановился ли подрывник рядом с игроком
если да, то создаем explosion
если нет, заставляем его бежать
делаем паузу на 2 секунды (тогда серия взрывов будет реже)

конец цикла

очистка

Как проверить что игрок на каком-то острове ? Я пытаюсь телепортировать актёра на тот же остров на котором находится игрок опкодом 03fc ? Но он не условный, а других способов я не знаю. Гта 3, если что.

#18 Re: Вопросы по скриптингу » Проблемы со скриптом » 05-12-2020 09:27

Код обновлён. Вроде как всё верно. Если что-то неверно - слушаю.

#19 Re: Вопросы по скриптингу » Проблемы со скриптом » 05-12-2020 08:14

Измененный код подрывника. Я не останавливаю игрока, так как это мешает ему кидать гранаты, вместо этого я его заставляю посмотреть в сторону игрока.

#20 Re: Вопросы по скриптингу » Проблемы со скриптом » 04-12-2020 15:50

Спасибо за  типы, возьму на заметку)
Я убирал break, но при первом же подрывании себя подрывник сдох, а затем я закомментировал строку где снимается иммунитет подрывника от взрыва, но тогда он себя подрывает кучу раз стоя на одном месте. А подрывник должен подрываться  если игрок близко с подрывником, но если подрывник ещё жив, то он опять должен побежать к игроку чтобы подорваться до тех пор пока он сам не умрет.
Если цикл не прерывать то за подрывником будет хвост взрывов пока он бежит, а он не побежит если к нему не подойти. Но если цикл прерывать то он себя подорвет лишь 1 раз.

#21 Re: Вопросы по скриптингу » Проблемы со скриптом » 04-12-2020 09:10

Спасибо за пояснения,  подрывник себя должен подрывать пока он жив и игрок жив, но если хоть кто-то из них умрёт, то подрывник больше не будет нужен.
Осталась лишь самая странная проблема: подрывник себя подрывает только 1 раз, а потом у него стирается память, а когда именно стирать его память (имеется ввиду все сведения об актёре) я не знаю. Когда это лучше делать ?
Оказывается подрывник дёргался из-за того что я его заставлял бежать к игроку, в случае если игрок далеко стоит, и тогда подрывник тупит.

Закомментировав эту часть кода подрывник стал кидать нормально гранаты:

if
  02A0:   actor $BOMBER stopped
  then
          0054: store_player 0 position_to 0@ 1@ 2@
          0239: actor $BOMBER run_to 0@ 1@

Я забыл где надо смотреть типы актёров.

#22 Re: Вопросы по скриптингу » Проблемы со скриптом » 03-12-2020 16:53

Спасибо, но это всё сразу в main.scm-е пишется. У меня 2 основные проблемы: подрывник после своего первого подрыва становится бычным трусливым педом и если его ударить, то он будет убегать от игрока, а если он где-то затупит то может не найти игрока, поэтому раньше я давал ему проверку на видимость игрока.
Я пробовал вот так, когда подрывник тупит, чтобы подрывник сразу смотрел в сторону игрока.

if
8123: actor $bomber spotted_player $player_char
then
020f: actor $bomber look_at_player $player_char
end

Необходимо чтобы подрывник подрывался пока игрок жив.

Но самое странное что подрывник не может кинуть гранату, он ее только хочет кинуть, а потом дергается, в итоге гранату он кинуть не может и она не взрывается.

#23 Вопросы по скриптингу » Проблемы со скриптом » 03-12-2020 09:41

Remca12
Replies: 15

Здравствуйте. Я пишу скрипт подрывника. Суть: в игре есть 200 спрятанных пакетов, но их охраняет актёр. При сборе каждого пакета этот актёр появляется и агрится на игрока, пока игрок не умрёт. Актёру даны гранаты для нападения и иммунитет от взрывов (чтобы сам не подорвался). Когда игрок соберёт все пакеты то скрипт отключится. Но пока я делал скрипт я нашёл много проблем, которые я не знаю как решить. Все проблемы описаны в архиве с помощью картинок.
https://cloud.mail.ru/public/naWb/2ygzNiVEH

Подскажите пожалуйста все возможные способы и пути решения, чтобы подрывник стал стабильнее.
Это текущий скрипт подрывника:

{$CLEO}
0000:

:HIDBOMB
thread 'HIDBOMB'
wait 0
if and
0256:   player 0 defined
$flag_player_on_mission == 0
jf @HIDBOMB
03E1: $PACK_1 = packages_found

    if
    $PACK_1 == 200
    then
    end_thread
    else
        repeat
        wait 0
        03E1: $PACK_2 = packages_found
        until 803A:   not  $PACK_2 == $PACK_1 // $ == $ int
        
        if and
        001C:   $PACK_2 > $PACK_1 // $ > $ int
        $flag_player_on_mission == 0 
        then
        023C: load_special_actor 1 'BOMBER'
        0247: request_model #GRENADE
        
            repeat
            wait 0
            until 023D:   special_actor 1 loaded
            
            repeat
            wait 0
            until 0248:   model #GRENADE available
            
        gosub @RANDPLACE // returns 0@ 1@ 2@ (X Y Z)
            
        009A: $BOMBER = create_actor 18 #SPECIAL01 at 0@ 1@ 2@
        0223: set_actor $BOMBER health_to 200
        01B2: give_actor $BOMBER weapon 11 ammo 9999
        0249: release_model #GRENADE
        02AB: set_actor $BOMBER immunities 0 0 1 0 0
        0187: $MARKER_BOMBER = create_marker_above_actor $BOMBER 
        01CC: actor $BOMBER kill_player 0
        
            while 00A2:   actor $BOMBER alive
                if or
                8256:   not player 0 defined
                00E9:   player 0 0 $BOMBER radius 5.0 5.0
                8184:   not actor $BOMBER health >= 75
                $flag_player_on_mission <> 0
                then
                02AB: set_actor $BOMBER immunities 0 0 0 0 0
                00A0: store_actor $BOMBER position_to 0@ 1@ 2@
                020C: create_explosion 8 at 0@ 1@ 2@
                break
                else
                    if
                    02A0:   actor $BOMBER stopped
                    then
                    0054: store_player 0 position_to 0@ 1@ 2@
                    0239: actor $BOMBER run_to 0@ 1@
                    else
                        if
                        00E9:   player 0 0 $BOMBER radius 25.0 25.0
                        then
                        01CA: actor $BOMBER kill_player 0
                        end
                    end
                    
                    if and
                    80E9:   not player 0 0 $BOMBER radius 40.0 40.0
                    82CB:   not actor $BOMBER bounding_sphere_visible
                    then
                    gosub @RANDPLACE
                        if
                        00A2:   actor $BOMBER alive
                        then
                        00A1: put_actor $BOMBER at 0@ 1@ 2@
                        end
                    end
                end
            wait 0 
            end 
            
        0164: disable_marker $MARKER_BOMBER 
        01C2: mark_actor_as_no_longer_needed $BOMBER
        0296: unload_special_actor 1 
        else
        jump @HIDBOMB
        end 
    end

jump @HIDBOMB

:RANDPLACE
    repeat
    wait 0
    0208: 0@ = random_float -20.0 20.0
    0208: 1@ = random_float -20.0 20.0
    04C4: create_coordinate 0@ 1@ 2@ from_actor $PLAYER_ACTOR offset 0@ 1@ 0.0
    0209: 3@ = random_int 0 2
        if
        3@ == 0
        then
        02C0: set 0@ 1@ 2@ to_ped_path_coords_closest_to 0@ 1@ 2@ 
        else
        02C1: set 0@ 1@ 2@ to_car_path_coords_closest_to 0@ 1@ 2@
        end
    until 80C2:   not sphere_onscreen 0@ 1@ 2@ 4.0
return
end_thread

#24 Re: Вопросы по скриптингу » Всё о звуках и аудио в гта 3 » 15-11-2020 06:23

Спасибо, я не знал этого. Как сюда + или положительную оценку ставить я не знаю, поэтому  good  smile

#25 Вопросы по скриптингу » Всё о звуках и аудио в гта 3 » 14-11-2020 19:06

Remca12
Replies: 2

Здравствуйте, у меня вопрос по звукам и аудио. Какие для этого используются опкоды ? Я хочу воспроизвести звук выстрела снайперской винтовки и звук её перезарядки. Какие используются наверное id, audio events, sfx ?
Как находят эту информацию по звукам ?
Я заметил что используются 3 опкода по звукам чтобы их воспроизвести:

018D: $INT = $Sounds at $X $Y $Z Размещение звука sfx на карте
018C: Проиграть SFX звук 78 at $X $Y $Z
и
0394: play_music 1

Board footer

Powered by FluxBB