You are not logged in.
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
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
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
Здравствуйте, тема еще актуальна. Я повторял свою просьбу не только здесь, получал ответ. Но видимо оффсеты не те. Я использую ехе-шник версии 1.0
https://media.discordapp.net/attachment … height=536
Код исходный вот такой как на картинке. Главная проблема в том что не отключаются бонусы от фбр (броня), и от полицейской машины (дробовик). От полицейской машины пробовали оффсеты несколько раз - пока пришлось закомментировать.
Зато 100% работает отключение бонуса от скорой помощи.
Код обновился, теперь работает отключение точно бонуса хп от скорой, и бонуса дробашом от коповозки.
Вот пожалуйста текущий исходный код. Возможно что оффсетом ошиблись, уж не знаю.
{$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
Но от фбр бонус пока не отключается, как давали броню за посадку в фбр, так и дают.
Тема закрыта, так как решение удалось недавно найти.
Я же тебе уже говорил: проверить настройки SB. Форматирование текста должно быть установлено на "Как есть" или "нижний", чтобы "%d" компилировался в правильном формате.
Но я ведь пробовал. Пока не помогло...
Здравствуйте, я столкнулся с проблемой. По коду, значение читается и записывается в переменную. В моём случае это целое число. Я хочу выводить из переменной полученное значение.
Это вид в декомпилированном виде.
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 - целое число
Я использовал разные опкоды для вывода текста, но результат был всегда один - буква.
Я просто не понимаю почему вместо числа всё равно выводится буква ?
Проблема решена) Для тех кому интересно решение оно простое - текст в gxt должен быть прописан правильно: в алфавитном порядке, без лишних пробелов, особенно без лишних пробелов между секциями. Работоспособность текста можно проверить простым клео-скриптом выводящий текст на экран, в моём случае опкодом 00ba.
И всё же эта тема останется открытой ненадолго, т.к. возможно и у Вас были случаи когда пикап невозможно было подобрать. Можете описывать свои наблюдения и решения, т.к. другим людям это может помочь.
Здравствуйте, помогите мне пожалуйста, я столкнулся с проблемой что пикап не подбирается или же не делает то что должен.
Скриптую на вайс сити. В моём случае весь прилагаемый скрипт вшит в main.scm из-за особенностей пикапов и гаражей.
Прежде опишу суть скрипта: суть скрипта в покупке актива с гаражом, в котором можно сохранять тачки. Поэтому используется опкод 0518. Этот код ниже находится до метки :intro, ну эдакий стартер.
: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
Прилагаю скриншот для наглядности.
Затем прописан запуск миссии после завершения нужной мне миссии
И теперь миссия покупки:
//-------------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, тогда миссия точно запускается. Но по замыслу миссия должна запускаться после подбора пикапа.
Привет, уточняю сразу что вопрос касается игры гта вайс сити. Меня интересуют оффсеты, которые:
1) игроку даётся несколько единиц хп если он сел в машину скорой помощи
2) игроку выдается несколько патронов с дробовиком если он сел в полицейскую машину
и как эти фишки от машин возможно отключить ? Нужно какой-то оффсет прочитать/записать через клео ?
Здравствуйте. Скажите пожалуйста как найти id анимации ?
Имя нужной мне анимации (Когда Клод показывает фак: 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
Я пытаюсь действовать так как мне подсказывают:
Хелп!
Прикрепляю лог, может он поможет.
Скрипт переписан, в части цикла, но осталась проблема: после сброса розыска надпись выводится в независимости от того где машина. А как мне активировать гараж именно тогда когда машина в гараже покраски и сброшен розыск ?
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
Я пишу скрипт цель которого закрывать гараж перекраски если игрок имеет розыск и имеет на хвосте копов. Это значит что гараж должен будет оставаться открытым если игрок имеет звезды розыска, но рядом нет копов. Пока что я видимо не понимаю какой-то принцип у гаражей и поэтому выходят стандартные надписи после сброса розыска. Текущий код в 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
Пока что главная проблема в том что выходят стандартные надписи после перекраски машин.
Если игрок отплывет слишком далеко от лодки, игра виснет (с учетом того что телепорт находиться в цикле while true). Сразу в маине скрипт.
Из цикла:
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 раз
Те стало вот так после госаба:
Эта часть пока что не сидит в цикле (пробую)
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единиц сзади).
04A8: player $PLAYER_CHAR driving_boat это нестандартный для GTA3 опкод, он добавляется через CLEO 2.0
https://github.com/cleolibrary/III.VC.C … .cpp#L1022возможно, что он неправильно реализован, поэтому и выбивает ошибку
Спасибо это исправлено. Мне сейчас нужна помощь по адресам памяти и функциям.
Я пытаюсь заставить полицейскую лодку гоняющуюся стрелять пулями (просто плывет за игроком и должна стрелять пулями постепенно нанося урон). В начале кода была выделена память и смещение, также чуть в других местах и метке randcar прописано обновление координат. Функция стрельбы используется для гта 3 версии 1.1
Помогите мне пожалуйста чтобы лодка могла стрелять, а то она этого не делает совсем. Код прикреплен ниже, если будут вопросы пишите (да хоть в лс).
Помогите пожалуйста. Я пытаюсь создавать случайную лодку, но пока гта 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
03C6: current_island == 1
Пока я тестировал скрипт, вышла интересная проблема: если игрок собрал спрятанный пакет на одном острове и переместился на другой остров, неважно как (додо, noclip и т.д.), то актер будет телепортироваться. Но находится он будет в земле, а не на путях педов и машин. Код тот же самый. (пока не измененный)
но тогда он себя подрывает кучу раз стоя на одном месте
а кто ему говорит, что нужно бежать? По условию взрыв происходит если подрывник находится рядом с игроком. Если игрок стоит на месте, что должно произойти? Подрывник ведь тоже будет стоять? Наверно, есть смысл переместить взрыв (опкод 020C) после проверки 02A0: actor $BOMBER stopped.
Т.е. логика должна быть примерно такая
создали подрывника
запускаем бесконечный цикл (while true)проверяем, если игрок или подрывник умер - делаем break
проверяем остановился ли подрывник рядом с игроком
если да, то создаем explosion
если нет, заставляем его бежать
делаем паузу на 2 секунды (тогда серия взрывов будет реже)конец цикла
очистка
Как проверить что игрок на каком-то острове ? Я пытаюсь телепортировать актёра на тот же остров на котором находится игрок опкодом 03fc ? Но он не условный, а других способов я не знаю. Гта 3, если что.
Код обновлён. Вроде как всё верно. Если что-то неверно - слушаю.
Измененный код подрывника. Я не останавливаю игрока, так как это мешает ему кидать гранаты, вместо этого я его заставляю посмотреть в сторону игрока.
Спасибо за типы, возьму на заметку)
Я убирал break, но при первом же подрывании себя подрывник сдох, а затем я закомментировал строку где снимается иммунитет подрывника от взрыва, но тогда он себя подрывает кучу раз стоя на одном месте. А подрывник должен подрываться если игрок близко с подрывником, но если подрывник ещё жив, то он опять должен побежать к игроку чтобы подорваться до тех пор пока он сам не умрет.
Если цикл не прерывать то за подрывником будет хвост взрывов пока он бежит, а он не побежит если к нему не подойти. Но если цикл прерывать то он себя подорвет лишь 1 раз.
Спасибо за пояснения, подрывник себя должен подрывать пока он жив и игрок жив, но если хоть кто-то из них умрёт, то подрывник больше не будет нужен.
Осталась лишь самая странная проблема: подрывник себя подрывает только 1 раз, а потом у него стирается память, а когда именно стирать его память (имеется ввиду все сведения об актёре) я не знаю. Когда это лучше делать ?
Оказывается подрывник дёргался из-за того что я его заставлял бежать к игроку, в случае если игрок далеко стоит, и тогда подрывник тупит.
Закомментировав эту часть кода подрывник стал кидать нормально гранаты:
if 02A0: actor $BOMBER stopped then 0054: store_player 0 position_to 0@ 1@ 2@ 0239: actor $BOMBER run_to 0@ 1@
Я забыл где надо смотреть типы актёров.
Спасибо, но это всё сразу в main.scm-е пишется. У меня 2 основные проблемы: подрывник после своего первого подрыва становится бычным трусливым педом и если его ударить, то он будет убегать от игрока, а если он где-то затупит то может не найти игрока, поэтому раньше я давал ему проверку на видимость игрока.
Я пробовал вот так, когда подрывник тупит, чтобы подрывник сразу смотрел в сторону игрока.
if 8123: actor $bomber spotted_player $player_char then 020f: actor $bomber look_at_player $player_char end
Необходимо чтобы подрывник подрывался пока игрок жив.
Но самое странное что подрывник не может кинуть гранату, он ее только хочет кинуть, а потом дергается, в итоге гранату он кинуть не может и она не взрывается.
Здравствуйте. Я пишу скрипт подрывника. Суть: в игре есть 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
Спасибо, я не знал этого. Как сюда + или положительную оценку ставить я не знаю, поэтому
Здравствуйте, у меня вопрос по звукам и аудио. Какие для этого используются опкоды ? Я хочу воспроизвести звук выстрела снайперской винтовки и звук её перезарядки. Какие используются наверное id, audio events, sfx ?
Как находят эту информацию по звукам ?
Я заметил что используются 3 опкода по звукам чтобы их воспроизвести:
018D: $INT = $Sounds at $X $Y $Z Размещение звука sfx на карте 018C: Проиграть SFX звук 78 at $X $Y $Z и 0394: play_music 1