You are not logged in.
Здравствуйте, тема еще актуальна. Я повторял свою просьбу не только здесь, получал ответ. Но видимо оффсеты не те. Я использую ехе-шник версии 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
Здравствуйте. у меня вопросы по телефонам (телефонные будки по карте расставлены). Я узнал у нужных мне координаты, но я не понимаю как запускать телефон. И как я понял проще будет выяснять в какой зоне находится игрок. Как проверить что игрок находится в зоне где проходим миссию Туризмо и миссии Дональда Лава ?
{$CLEO .cs} 0000: //да-да скрипт сырой, но только пока что он такой. :PHHE thread 'PHHE' wait 0 if 0256: player 0 defined //жив ли Клод? jf @PHHE 024A: 0@ = get_phone_at 604.506 -229.501 //создаём телефон (или телефонная будка) 024A: 1@ = get_phone_at -278.51 -1591.95//другой телефон // 029B: 0@ = init_object #FAKETARGET at 604.506 -229.501 10.723 //В Портленде рядом с миссиями Эль-Бурро. 029B: 1@ = init_object #FAKETARGET at -278.51 -1591.95 31.8195 //В Стаунтоне рядом с миссиями Дональда Лава. //если игрок находится в нужной нам зон где стоит телефонная будка, то будет проигрываться звук телефона //и появится маркер на который игрок сможет встать. 0226: 3@ = actor $PLAYER_ACTOR health 00D6: if and //сравниваю жизни игрока 3@ >= 80 //если у игрока больше 80 жизней 3@ <= 100 //и при этом меньше 100 then //т.е. от 80 до 100, то тогда заканчиваем скрипт и выводим диалоги (health1-4; Как кстати выводить диалоги? Те что мне нужны находятся в gxt-файле, american.gxt) что игрок полностью здоров и т.д. //Т.е. скорая не приедет и игрока лечить не будет. end_thread else //иначе: к нам приедет скорая и будет нас лечить if 0121: player $PLAYER_CHAR in_zone 'TOWERS' // там нужный мне телефон в Портленде then 0405: enable_phone 0@ end if 0121: player $PLAYER_CHAR in_zone 'SHOPING' // там нужный мне телефон в Стаунтоне then 0405: enable_phone 1@ end //перед телефонами будут маркеры чтобы игрок на них встал (только если у игрока меньше 80 жизней) //Временно взято из примеров: 024F: create_corona 1.0 5 0 with_color 0 200 200 at_point $X_1 $Y_1 $Z_1 //координаты прямо перед телефонной будкой. //телефону 0@ 024F: create_corona 1.0 5 0 with_color 0 200 200 at_point $X_2 $Y_2 $Z_2 //и к телефону 1@ if and 00F6: player $PLAYER_CHAR 0 $X_1 $Y_1 $Z_1 radius 1.0 1.0 2.0 00F9: player $PLAYER_CHAR stopped 0 $X_1 $Y_1 $Z_1 radius 1.0 1.0 2.0 jf @PHHE // end if // 0447: player $PLAYER_CHAR lifting_a_phone //если игрок поднял трубку then //и его жизнь меньше 80. то тогда 018C: play_sound 94 at 0.0 0.0 0.0 //не знаю как проиграть звук выстрела снайперки (и потом перезарядки), но именно он и будет проигрываться. // 0223: set_actor $PLAYER_ACTOR health_to 0 //убиваем игрока 024E: disable_phone 0@ //выключаем телефон 0108: destroy_object 0@ //уничтожаем телефон 024E: disable_phone 1@ //выключаем телефон 0108: destroy_object 1@ //уничтожаем телефон end 0A93: terminate_this_custom_script //P.S. По-задумке, над игроком происходят 2 события: либо его лечат или не лечат в зависимости от того сколько жизней у игрока. либо игрока сразу убивают со снайперки (с заморозкой игрока чтобы он не мог двигаться).
Я переписал код с нуля итак его понимает игра в main.scm
:PICK_CR 03A4: name_thread 'PICK_CR' :PICK_CR_10 0001: wait 0 ms 00BF: $HOURS = current_time_hours, $MINUTES = current_time_minutes 00D6: if and 001A: 19 > $HOURS // int > $ 0018: $HOURS < 7 // $ > int 004D: jump_if_false @PICK_CR_47 :PICK_CR_47 //проверил в игре и убедился тыщу раз что игра при таком коде удаляет пикапы :crazy: //"если нет пикапов, то удалить пикапы" :o 0001: wait 0 ms 00D6: if and 83CA: not object $IND_PICKUP8 exists 83CA: not object $IND_PICKUP9 exists 83CA: not object $COM_PICKUP8 exists 83CA: not object $COM_PICKUP9 exists 83CA: not object $SUB_PICKUP8 exists 83CA: not object $SUB_PICKUP9 exists 004D: jump_if_false @PICK_CR_47 0215: destroy_pickup $IND_PICKUP8 0215: destroy_pickup $IND_PICKUP9 0215: destroy_pickup $COM_PICKUP8 0215: destroy_pickup $COM_PICKUP9 0215: destroy_pickup $SUB_PICKUP8 0215: destroy_pickup $SUB_PICKUP9 0002: jump @PICK_CR_10 //с этой метки идёт попытка создать пикапы. Но пикапы не возвращаются с 7 утра. :PICK_CR_11 00D6: if and 001A: 19 < $HOURS // int > $ 0018: $HOURS > 7 // $ > int 004D: jump_if_false @PICK_CR_48 :PICK_CR_48 0001: wait 0 ms 00D6: if and 03CA: not object $IND_PICKUP8 exists 03CA: not object $IND_PICKUP9 exists 03CA: not object $COM_PICKUP8 exists 03CA: not object $COM_PICKUP9 exists 03CA: not object $SUB_PICKUP8 exists 03CA: not object $SUB_PICKUP9 exists 004D: jump_if_false @PICK_CR_48 0213: $IND_PICKUP8 = create_pickup #HEALTH type 14 at 1147.75 -597.0625 14.875 0213: $IND_PICKUP9 = create_pickup #HEALTH type 14 at 1147.75 -585.25 14.875 0213: $COM_PICKUP8 = create_pickup #HEALTH type 14 at 182.875 -16.25 16.1875 0213: $COM_PICKUP9 = create_pickup #HEALTH type 14 at 222.5625 16.0 16.1875 0213: $SUB_PICKUP8 = create_pickup #HEALTH type 14 at -1247.5 -79.5 58.75 0213: $SUB_PICKUP9 = create_pickup #HEALTH type 14 at -1247.5 -82.5 58.75 0002: jump @PICK_CR_11
Люди добрые помогите, я уже замучился
Примерно так ?
// This file was decompiled using SCM.ini published by GTAMods.com on 2017-07-29 {$CLEO .cs} //-------------MAIN--------------- 0001: wait 100 ms :VRPI while 00BF: $hours = current_time_hours, $minutes = current_time_minutes wait 250 $hours = 19 $minutes = 00 0215: destroy_pickup $IND_PICKUP8 0215: destroy_pickup $IND_PICKUP9 0215: destroy_pickup $COM_PICKUP8 0215: destroy_pickup $COM_PICKUP9 0215: destroy_pickup $SUB_PICKUP8 0215: destroy_pickup $SUB_PICKUP9 if and 00BF: $hours = current_time_hours, $minutes = current_time_minutes $hours = 07 $minutes = 01 then break end end