You are not logged in.
Доброго Времени суток, появился такой вопрос, точнее несколько.
1) Мы создали актёра. Как заставить его идти и атаковать врагов? И как заставить его определять, кто друг, а кого надо убить?
2) Как показать полоску здоровья персонажа?
3) Подскажите опкод для проверки игрока в радиусе.
игра какая?
1) 077A: set_actor $PlyrSupport acquaintance 4 to_actors_pedtype 4 // see ped.dat
первый флаг - отношение (4 - ненависть, 1 - дружба, остальные не помню)
второй флаг - тип педа (указываешь тот, какой ты указал на созданном актере которого нужно атаковать)
2)
0226: $health = actor $PlyrSupport health
03C4: set_status_text $health type 1 GXT 'SW5_A3'
переменная - хп перса, в кавычках - текст из text/american.gxt
3) alt+ctrl+2, вводишь actor radius, выбираешь что хочешь
а вообще лучше для начала справку ВБ прочитать )
Offline
чувак, вот для таких как ты как раз )
Offline
Kim wrote:Доброго Времени суток, появился такой вопрос, точнее несколько.
1) Мы создали актёра. Как заставить его идти и атаковать врагов? И как заставить его определять, кто друг, а кого надо убить?
2) Как показать полоску здоровья персонажа?
3) Подскажите опкод для проверки игрока в радиусе.игра какая?
1) 077A: set_actor $PlyrSupport acquaintance 4 to_actors_pedtype 4 // see ped.dat
первый флаг - отношение (4 - ненависть, 1 - дружба, остальные не помню)
второй флаг - тип педа (указываешь тот, какой ты указал на созданном актере которого нужно атаковать)2)
0226: $health = actor $PlyrSupport health
03C4: set_status_text $health type 1 GXT 'SW5_A3'
переменная - хп перса, в кавычках - текст из text/american.gxt3) alt+ctrl+2, вводишь actor radius, выбираешь что хочешь
а вообще лучше для начала справку ВБ прочитать )
Спасибо, я нашёл все отношения, но я не могу убрать полоску здоровья после смерти, как это сделать? И игра ГТА СА
Offline
Спасибо, я нашёл все отношения, но я не могу убрать полоску здоровья после смерти, как это сделать? И игра ГТА СА
Нужно добавить условие отключения статус-текста:
if Actor.Dead($YOU_ACTOR) then 0151: remove_status_text $YOU_STATUS_TEXT end
Вот есть пример миссии, где это делается, если интересны детали.
Offline
Kim wrote:Спасибо, я нашёл все отношения, но я не могу убрать полоску здоровья после смерти, как это сделать? И игра ГТА СА
Нужно добавить условие отключения статус-текста:
if Actor.Dead($YOU_ACTOR) then 0151: remove_status_text $YOU_STATUS_TEXT endВот есть пример миссии, где это делается, если интересны детали.
Спасибо, есть ещё один вопрос, даже при использовании опкодов 016C и 016D при смерти игрока игра вылетает, что делать?
Offline
Спасибо, есть ещё один вопрос, даже при использовании опкодов 016C и 016D при смерти игрока игра вылетает, что делать?
А как вы их используете? Эти опкоды в оригинальном мейне стоят в стартовом потоке 'MAIN' и являются обязательными, чтобы небыло проблем как при аресте/смерти, так и после процесса сохранения. В Cleo их, как правило, не увидишь.
Offline
Kim wrote:Спасибо, есть ещё один вопрос, даже при использовании опкодов 016C и 016D при смерти игрока игра вылетает, что делать?
А как вы их используете? Эти опкоды в оригинальном мейне стоят в стартовом потоке 'MAIN' и являются обязательными, чтобы небыло проблем как при аресте/смерти, так и после процесса сохранения. В Cleo их, как правило, не увидишь.
Без них игра вылетата при смерти, почитал в SB справочнике, поставил, тоже вылетает, вот начало кода
{$CLEO ,cm}
wait 0
016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 town_number 0
016D: restart_if_busted_at 1550.68 -1675.49 14.51 angle 90.0 town_number 0
0180: set_on_mission_flag_to $ONMISSION
create_thread @Main
end_thread
:Main
Thread 'Main'
И потом остальной код, с ним проблем нет
Offline
Без них игра вылетата при смерти, почитал в SB справочнике, поставил, тоже вылетает, вот начало кода
{$CLEO ,cm}
wait 0
016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 town_number 0
016D: restart_if_busted_at 1550.68 -1675.49 14.51 angle 90.0 town_number 0
0180: set_on_mission_flag_to $ONMISSION
create_thread @Main
end_thread:Main
Thread 'Main'
И потом остальной код, с ним проблем нет
В Cleo нельзя использовать команду "create_thread", а также не рекомендуется в одном скрипте использовать несколько потоков.
Offline
Kim wrote:Без них игра вылетата при смерти, почитал в SB справочнике, поставил, тоже вылетает, вот начало кода
{$CLEO ,cm}
wait 0
016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 town_number 0
016D: restart_if_busted_at 1550.68 -1675.49 14.51 angle 90.0 town_number 0
0180: set_on_mission_flag_to $ONMISSION
create_thread @Main
end_thread:Main
Thread 'Main'
И потом остальной код, с ним проблем нетВ Cleo нельзя использовать команду "create_thread", а также не рекомендуется в одном скрипте использовать несколько потоков.
Просто так в справочнике Sanny Builder написано, не буду использовать. Ну так почему крашит игра после смерти? Вроде всё есть
Offline
Я решил проблему с крашем при смерти, оказывается не было mission_cleanup в потоке провала миссии, но теперь в миссии экран тупо красный и ничего не видно, даже карты.
Offline
Хочу кое-что уточнить. Работаю с Decision Maker, устанавливаю одним педам храброе поведение, а другим - трусливое. Но результат получается обратный. Во всех справках написано, что DM 3 - храброе поведение, а DM 4 - трусливое, но на практике получается, что наоборот. Например, устанавливаю педу DM 4, и если его ударить, он начинает драться. Если же установить DM 3 - после удара он убегает.
Кто-нибудь ещё с этим сталкивался?
Offline
Я решил проблему с крашем при смерти, оказывается не было mission_cleanup в потоке провала миссии, но теперь в миссии экран тупо красный и ничего не видно, даже карты.
Используйте шаблоны миссий, которые предложены в справке, чтобы избежать подобных проблем. Вот мой вариант миссий:
{$CLEO .cm} //------------- Mission --------------- :MISSION thread 'MISSION' gosub @MISSION_START if wasted_or_busted jf @MISSION_END gosub @MISSION_FAILED :MISSION_END $ONMISSION = 0 mission_cleanup end_thread :MISSION_START increment_mission_attempts $ONMISSION = 1 // { код миссии } // :MISSION_PASSED // Если миссия успешно пройдена gosub @MISSION_CLEAR return :MISSION_FAILED // Если миссия провалена, игрок умер или арестован gosub @MISSION_CLEAR return :MISSION_CLEAR // Здесь очищаем все использованные ресурсы в миссии. return
Пример Cleo-миссий а также их запуск подробно описано здесь.
Last edited by wmysterio (14-06-2017 13:46)
Offline
Kim wrote:Я решил проблему с крашем при смерти, оказывается не было mission_cleanup в потоке провала миссии, но теперь в миссии экран тупо красный и ничего не видно, даже карты.
Используйте шаблоны миссий, которые предложены в справке, чтобы избежать подобных проблем. Вот мой вариант миссий:
{$CLEO .cm} //------------- Mission --------------- :MISSION thread 'MISSION' gosub @MISSION_START if wasted_or_busted jf @MISSION_END gosub @MISSION_FAILED :MISSION_END $ONMISSION = 0 mission_cleanup end_thread :MISSION_START increment_mission_attempts $ONMISSION = 1 // { код миссии } // :MISSION_PASSED // Если миссия успешно пройдена gosub @MISSION_CLEAR return :MISSION_FAILED // Если миссия провалена, игрок умер или арестован gosub @MISSION_CLEAR return :MISSION_CLEAR // Здесь очищаем все использованные ресурсы в миссии. returnПример Cleo-миссий а также их запуск подробно описано здесь.
Я и использую эти шаблоны в справке...Но экран всё равно красный
Offline
Я и использую эти шаблоны в справке...Но экран всё равно красный
Покажите ещё код стартера. Может дело в нём. Или лучше киньте сюда оба файла, посмотрим. Не исключаю возможность того, что ошибка может быть в других скриптах.
Offline
trashmas, убери этот опкод - 0350.
Благодарю, попробую
Offline
Kim wrote:Я и использую эти шаблоны в справке...Но экран всё равно красный
Покажите ещё код стартера. Может дело в нём. Или лучше киньте сюда оба файла, посмотрим. Не исключаю возможность того, что ошибка может быть в других скриптах.
Вот это код миссии
{$CLEO .cm}
//-------------Mission 0--------------- // Originally: Initial 1 016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0 016D: restart_if_busted at 1550.68 -1675.49 14.51 angle 90.0 unknown 0 0180: set_on_mission_flag_to $ONMISSION :MISSION wait 0 thread 'Army' gosub @MissionStart if wasted_or_busted jf @MissionCleanup gosub @MissionFailed :MissionCleanup wait 0 $ONMISSION = 0 mission_cleanup end_thread :MissionStart wait 0 Model.Load(#M4) Model.Load(#ARMY) Model.Load(#SNIPER) 038B: load_requested_models wait 0 :Load_Models wait 0 if and Model.Available(#M4) Model.Available(#ARMY) Model.Available(#SNIPER) jf @Load_Models wait 10 :Create_Army wait 0 // 1@ - Стоит перед CJ Actor.Create(1@,7,#ARMY,2724.22, -2385.8152, 17.3403) 01B2: give_actor 1@ weapon 31 ammo 99999 // Load the weapon model before using this Marker.CreateAboveActor(10@,1@) // 10@ - Значит маркер над 1 актёром, 20 - значит маркер над 2 актёром 0816: set_actor 1@ dont_chase_victim 1 077A: set_actor 1@ acquaintance 4 to_actors_pedtype 0 Marker.SetIconSize(10@,1@) 00BC: text_highpriority 'Sw_2' 5000 ms 1 :Actor_Dead_1 wait 0 if Actor.Dead(1@) then Marker.Disable(10@) else jump @Actor_Dead_1 end :Pick_Up wait 0 //Создаём винтовку на один раз 032B: 1@ = create_weapon_pickup #SNIPER 3 100 at 2753.6436 -2381.7251 17.3403 00BC: text_highpriority 'Sw_3' 5000 ms 1 :Pick_Up_Has_PICuped if 00EC: actor $PLAYER_ACTOR 0 near_point 2753.7183 -2381.7253 17.3403 radius 0.1 0.1 then 0816: set_actor $PLAYER_ACTOR dont_chase_victim 1 jump @SW_4 else jump @Pick_Up_Has_PICuped end :SW_4 wait 0 Actor.Create(2@,7,#ARMY,2778.853, -2414.1428, 13.6358) 01B2: give_actor 2@ weapon 31 ammo 99999 // Load the weapon model before using this Marker.CreateAboveActor(20@,2@) // 10@ - Значит маркер над 1 актёром, 20 - значит маркер над 2 актёром 077A: set_actor 2@ acquaintance 4 to_actors_pedtype 0 05D3: AS_actor 2@ goto_point 2748.5444 -2453.3445 13.8623 mode 4 time -1 ms 00BC: text_highpriority 'Sw_4' 5000 ms 1 :SW_4_end if and not Actor.Dead(2@) 00EC: actor 2@ 0 near_point 2748.5444 -2453.3445 13.8623 radius 0.1 0.1 then 00BC: text_highpriority 'Sw_5' 5000 ms 1 jump @MissionFailed else if Actor.Dead(2@) then Marker.Disable(20@) jump @MissionPassed end end :MissionPassed wait 0 01E3: show_text_1number_styled GXT 'M_PASSS' number 2000 time 5000 style 1 // MISSION PASSED!~n~~w~$~1~~n~~w~RESPECT + 0998: add_respect 3 Player.Money($PLAYER_CHAR) += 100000 0394: play_music 1 mission_cleanup return :MissionFailed wait 0 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // ~r~MISSION FAILED! 014F: stop_timer $TIME 06D6: disable_racing_checkpoint $racing_checkpoint mission_cleanup create_thread @MISSION return
Вот код стартера
{$CLEO .cs} //----------------STARTER----------------- wait 0 :Starter_Army wait 0 thread 'StartArmy' //СОЗДАНИЕ МАРКЕРА Marker.CreateIconAndSphere(1@,15,2495.2039, -1681.3651, 13.3388) :Starter_Army_45 wait 0 if 0102: actor $PLAYER_ACTOR in_sphere 2495.2039 -1681.3651 13.3388 radius 2.0 2.0 1.0 sphere 1 stopped_on_foot jf @Starter_Army_45 Marker.Disable(1@) fade 0 1500 Player.CanMove($PLAYER_CHAR) = False 00BA: show_text_styled GXT 'SW_1' time 2000 style 2 wait 1500 0A94: start_custom_mission "Army" wait 1000 fade 1 1500 wait 500 Player.CanMove($PLAYER_CHAR) = True $ONMISSION = 1 0A93: end_custom_thread
Offline
Вот это код миссии
Посмотрел я ваш код. Некоторые команды используются совсем нет там, где нужно. Я исправил и прокомментировал некоторые вещи, но пока не проверял. Вот код стартера:
{$CLEO .cs} :ARMYST thread 'ARMYST' // !!! StartArmy - слишком много символов. Максимум - 7 1@ = Marker.CreateIconAndSphere(15, 2495.2039, -1681.3651, 13.3388) :ARMYST_LOOP wait 0 if and 075C: marker 1@ enabled $ONMISSION == 0 // !!! другие миссии не должны быть запущенными. Всегда проверяйте этот флаг 0102: actor $PLAYER_ACTOR in_sphere 2495.2039 -1681.3651 13.3388 radius 2.0 2.0 1.0 sphere 0 stopped_on_foot // sphere 1 необязательно, так как сферу генерирует команда CreateIconAndSphere jf @ARMYST_LOOP Marker.Disable(1@) Actor.SetImmunities($PLAYER_ACTOR, 1, 1, 1, 1, 1) // на всякий случай поставить иммунитеты Player.CanMove($PLAYER_CHAR) = False 00BA: show_text_styled GXT 'SW_1' time 2000 style 2 fade 0 1500 wait 1500 0A94: start_custom_mission "Army" 0A93: end_custom_thread
Вот код миссии:
{$CLEO .cm} //------------- Mission --------------- :ARMY thread 'ARMY' gosub @ARMY_START if wasted_or_busted jf @ARMY_END gosub @ARMY_FAILED :ARMY_END $ONMISSION = 0 mission_cleanup end_thread :ARMY_START increment_mission_attempts $ONMISSION = 1 wait 1500 // на всякий случай { !!! Код миссии ДОЛЖЕН НАЧИНАТЬСЯ ТОЛЬКО ЗДЕСЬ} 016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0 // только если этих координаты не прописаны в main.scm. иначе будет дублирование 016D: restart_if_busted at 1550.68 -1675.49 14.51 angle 90.0 unknown 0 // только если этих координаты не прописаны в main.scm. иначе будет дублирование //0180: set_on_mission_flag_to $ONMISSION !!! НЕ РЕКОМЕНДУЕТСЯ ПЕРЕОПРЕДЕЛТЬ ПЕРЕМЕННУЮ $ONMISSION В НЕ MAIN.SCM Model.Load(#M4) Model.Load(#ARMY) Model.Load(#SNIPER) 038B: load_requested_models :ARMY_LOAD_MODELS wait 0 if and Model.Available(#M4) Model.Available(#ARMY) Model.Available(#SNIPER) jf @ARMY_LOAD_MODELS 1@ = Actor.Create(7, #ARMY, 2724.22, -2385.8152, 17.3403) 01B2: give_actor 1@ weapon 31 ammo 99999 10@ = Marker.CreateAboveActor(1@) 0816: set_actor 1@ dont_chase_victim 1 077A: set_actor 1@ acquaintance 4 to_actors_pedtype 0 Marker.SetIconSize(10@, 2) // здесь не уместно использовать 1@, так как это ссылка на актёра, а нужно простые числа - 1, 2, 4... Actor.SetImmunities($PLAYER_ACTOR, 0, 0, 0, 0, 0) // отключаем иммунитеты Player.CanMove($PLAYER_CHAR) = True // даём игроку контроль fade 1 1000 wait 1000 00BC: text_highpriority 'Sw_2' 5000 ms //:Actor_Dead_1 //wait 0 //if // Actor.Dead(1@) //then // Marker.Disable(10@) //else // jump @Actor_Dead_1 //end // проще будет сделать так: :ARMY_ACTOR_DEAD_1 wait 0 if Actor.Dead(1@) jf @ARMY_ACTOR_DEAD_1 Marker.Disable(10@) //Создаём винтовку на один раз 032B: 3@ = create_weapon_pickup #SNIPER 3 100 at 2753.6436 -2381.7251 17.3403 // !!! в метке ARMY_CLEAR мыбудет удалять актёра 1@, лучше переменную не перезаписывать 00BC: text_highpriority 'Sw_3' 5000 ms 1 // :Pick_Up_Has_PICuped //if //00EC: actor $PLAYER_ACTOR 0 near_point 2753.7183 -2381.7253 17.3403 radius 0.1 0.1 // then //0816: set_actor $PLAYER_ACTOR dont_chase_victim 1 //jump @SW_4 // else // jump @Pick_Up_Has_PICuped //end // проще будет сделать так: :ARMY_PICKED_UP wait 0 if Pickup.Picked_up(3@) // проверка: пикап 3@ был взят? jf @ARMY_PICKED_UP 0816: set_actor $PLAYER_ACTOR dont_chase_victim 1 2@ = Actor.Create(7, #ARMY,2778.853, -2414.1428, 13.6358) 01B2: give_actor 2@ weapon 31 ammo 99999 20@ = Marker.CreateAboveActor(2@) 077A: set_actor 2@ acquaintance 4 to_actors_pedtype 0 05D3: AS_actor 2@ goto_point 2748.5444 -2453.3445 13.8623 mode 4 time -1 ms 00BC: text_highpriority 'Sw_4' 5000 ms 1 :ARMY_CHECK_ACTOR wait 0 if Actor.Dead(2@) then Marker.Disable(20@) jump @ARMY_PASSED end if and not Actor.Dead(2@) 00EC: actor 2@ 0 near_point 2748.5444 -2453.3445 radius 0.4 0.4 // 0.1 - слишком маленький радиус, 13.8623 - не нужно, так как будет передан в радиус X then jump @ARMY_FAILED_AND_TEXT end jump @ARMY_CHECK_ACTOR :ARMY_PASSED gosub @ARMY_CLEAR 01E3: show_text_1number_styled GXT 'M_PASSS' number 100000 time 5000 style 1 // MISSION PASSED!~n~~w~$~1~~n~~w~RESPECT + 0998: add_respect 3 Player.Money($PLAYER_CHAR) += 100000 0394: play_music 1 //mission_cleanup // !!! НЕ НАДО ЧИСТИТЬ ВСЁ ЗДЕСЬ return :ARMY_FAILED_AND_TEXT 00BC: text_highpriority 'Sw_5' 5000 ms 1 :ARMY_FAILED gosub @ARMY_CLEAR 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // ~r~MISSION FAILED! //014F: stop_timer $TIME // ? //06D6: disable_racing_checkpoint $racing_checkpoint // ? //mission_cleanup // !!! НЕ НАДО ЧИСТИТЬ ВСЁ ЗДЕСЬ //create_thread @MISSION // !!! НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ В CLEO-МИССИЯХ 0A92: create_custom_thread "MISSION.cs" // лучше так return // все ресурсы удаляем здесь, если они были созданы :ARMY_CLEAR Model.Destroy(#M4) // !!! Не забываем выгружать модели после того, как они стали не нужны Model.Destroy(#ARMY) // !!! Не забываем выгружать модели после того, как они стали не нужны Model.Destroy(#SNIPER) // !!! Не забываем выгружать модели после того, как они стали не нужны if 056D: actor 0@ defined then Actor.RemoveReferences(0@) Actor.DestroyInstantly(0@) end if 056D: actor 2@ defined then Actor.RemoveReferences(2@) Actor.DestroyInstantly(2@) end if 09D1: pickup 3@ created then Pickup.Destroy(3@) end if 075C: marker 10@ enabled then Marker.Disable(10@) end if 075C: marker 20@ enabled then Marker.Disable(20@) end return
Тестируйте. Спрашивайте
Last edited by wmysterio (15-06-2017 14:30)
Offline
Вылетает игра просто
Offline
Kim wrote:Вот это код миссии
Посмотрел я ваш код. Некоторые команды используются совсем нет там, где нужно. Я исправил и прокомментировал некоторые вещи, но пока не проверял. Вот код стартера:
{$CLEO .cs} :ARMYST thread 'ARMYST' // !!! StartArmy - слишком много символов. Максимум - 7 1@ = Marker.CreateIconAndSphere(15, 2495.2039, -1681.3651, 13.3388) :ARMYST_LOOP wait 0 if and 075C: marker 1@ enabled $ONMISSION == 0 // !!! другие миссии не должны быть запущенными. Всегда проверяйте этот флаг 0102: actor $PLAYER_ACTOR in_sphere 2495.2039 -1681.3651 13.3388 radius 2.0 2.0 1.0 sphere 0 stopped_on_foot // sphere 1 необязательно, так как сферу генерирует команда CreateIconAndSphere jf @ARMYST_LOOP Marker.Disable(1@) Actor.SetImmunities($PLAYER_ACTOR, 1, 1, 1, 1, 1) // на всякий случай поставить иммунитеты Player.CanMove($PLAYER_CHAR) = False 00BA: show_text_styled GXT 'SW_1' time 2000 style 2 fade 0 1500 wait 1500 0A94: start_custom_mission "Army" 0A93: end_custom_threadВот код миссии:
{$CLEO .cm} //------------- Mission --------------- :ARMY thread 'ARMY' gosub @ARMY_START if wasted_or_busted jf @ARMY_END gosub @ARMY_FAILED :ARMY_END $ONMISSION = 0 mission_cleanup end_thread :ARMY_START increment_mission_attempts $ONMISSION = 1 wait 1500 // на всякий случай { !!! Код миссии ДОЛЖЕН НАЧИНАТЬСЯ ТОЛЬКО ЗДЕСЬ} 016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0 // только если этих координаты не прописаны в main.scm. иначе будет дублирование 016D: restart_if_busted at 1550.68 -1675.49 14.51 angle 90.0 unknown 0 // только если этих координаты не прописаны в main.scm. иначе будет дублирование //0180: set_on_mission_flag_to $ONMISSION !!! НЕ РЕКОМЕНДУЕТСЯ ПЕРЕОПРЕДЕЛТЬ ПЕРЕМЕННУЮ $ONMISSION В НЕ MAIN.SCM Model.Load(#M4) Model.Load(#ARMY) Model.Load(#SNIPER) 038B: load_requested_models :ARMY_LOAD_MODELS wait 0 if and Model.Available(#M4) Model.Available(#ARMY) Model.Available(#SNIPER) jf @ARMY_LOAD_MODELS 1@ = Actor.Create(7, #ARMY, 2724.22, -2385.8152, 17.3403) 01B2: give_actor 1@ weapon 31 ammo 99999 10@ = Marker.CreateAboveActor(1@) 0816: set_actor 1@ dont_chase_victim 1 077A: set_actor 1@ acquaintance 4 to_actors_pedtype 0 Marker.SetIconSize(10@, 2) // здесь не уместно использовать 1@, так как это ссылка на актёра, а нужно простые числа - 1, 2, 4... Actor.SetImmunities($PLAYER_ACTOR, 0, 0, 0, 0, 0) // отключаем иммунитеты Player.CanMove($PLAYER_CHAR) = True // даём игроку контроль fade 1 1000 wait 1000 00BC: text_highpriority 'Sw_2' 5000 ms //:Actor_Dead_1 //wait 0 //if // Actor.Dead(1@) //then // Marker.Disable(10@) //else // jump @Actor_Dead_1 //end // проще будет сделать так: :ARMY_ACTOR_DEAD_1 wait 0 if Actor.Dead(1@) jf @ARMY_ACTOR_DEAD_1 Marker.Disable(10@) //Создаём винтовку на один раз 032B: 3@ = create_weapon_pickup #SNIPER 3 100 at 2753.6436 -2381.7251 17.3403 // !!! в метке ARMY_CLEAR мыбудет удалять актёра 1@, лучше переменную не перезаписывать 00BC: text_highpriority 'Sw_3' 5000 ms 1 // :Pick_Up_Has_PICuped //if //00EC: actor $PLAYER_ACTOR 0 near_point 2753.7183 -2381.7253 17.3403 radius 0.1 0.1 // then //0816: set_actor $PLAYER_ACTOR dont_chase_victim 1 //jump @SW_4 // else // jump @Pick_Up_Has_PICuped //end // проще будет сделать так: :ARMY_PICKED_UP wait 0 if Pickup.Picked_up(3@) // проверка: пикап 3@ был взят? jf @ARMY_PICKED_UP 0816: set_actor $PLAYER_ACTOR dont_chase_victim 1 2@ = Actor.Create(7, #ARMY,2778.853, -2414.1428, 13.6358) 01B2: give_actor 2@ weapon 31 ammo 99999 20@ = Marker.CreateAboveActor(2@) 077A: set_actor 2@ acquaintance 4 to_actors_pedtype 0 05D3: AS_actor 2@ goto_point 2748.5444 -2453.3445 13.8623 mode 4 time -1 ms 00BC: text_highpriority 'Sw_4' 5000 ms 1 :ARMY_CHECK_ACTOR wait 0 if Actor.Dead(2@) then Marker.Disable(20@) jump @ARMY_PASSED end if and not Actor.Dead(2@) 00EC: actor 2@ 0 near_point 2748.5444 -2453.3445 radius 0.4 0.4 // 0.1 - слишком маленький радиус, 13.8623 - не нужно, так как будет передан в радиус X then jump @ARMY_FAILED_AND_TEXT end jump @ARMY_CHECK_ACTOR :ARMY_PASSED gosub @ARMY_CLEAR 01E3: show_text_1number_styled GXT 'M_PASSS' number 100000 time 5000 style 1 // MISSION PASSED!~n~~w~$~1~~n~~w~RESPECT + 0998: add_respect 3 Player.Money($PLAYER_CHAR) += 100000 0394: play_music 1 //mission_cleanup // !!! НЕ НАДО ЧИСТИТЬ ВСЁ ЗДЕСЬ return :ARMY_FAILED_AND_TEXT 00BC: text_highpriority 'Sw_5' 5000 ms 1 :ARMY_FAILED gosub @ARMY_CLEAR 00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // ~r~MISSION FAILED! //014F: stop_timer $TIME // ? //06D6: disable_racing_checkpoint $racing_checkpoint // ? //mission_cleanup // !!! НЕ НАДО ЧИСТИТЬ ВСЁ ЗДЕСЬ //create_thread @MISSION // !!! НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ В CLEO-МИССИЯХ 0A92: create_custom_thread "MISSION.cs" // лучше так return // все ресурсы удаляем здесь, если они были созданы :ARMY_CLEAR Model.Destroy(#M4) // !!! Не забываем выгружать модели после того, как они стали не нужны Model.Destroy(#ARMY) // !!! Не забываем выгружать модели после того, как они стали не нужны Model.Destroy(#SNIPER) // !!! Не забываем выгружать модели после того, как они стали не нужны if 056D: actor 0@ defined then Actor.RemoveReferences(0@) Actor.DestroyInstantly(0@) end if 056D: actor 2@ defined then Actor.RemoveReferences(2@) Actor.DestroyInstantly(2@) end if 09D1: pickup 3@ created then Pickup.Destroy(3@) end if 075C: marker 10@ enabled then Marker.Disable(10@) end if 075C: marker 20@ enabled then Marker.Disable(20@) end returnТестируйте. Спрашивайте
Даже загрузка не успевает пройти, вылет
Offline
Опкоды 0291 и 0350 с включеными флагами 1 дают такой эффект. У тебя они на вертолете поэтому опкод 0350 лишний и заодно не будут отпрыгивать. По умолчанию эти флаги - 0.
ну откуда ж мне это знать
убрал эти опкоды - перестали ложиться вздремнуть по среди боя, спасибо
Last edited by trashmas (15-06-2017 21:03)
Offline
Kim wrote:Даже загрузка не успевает пройти, вылет
Проверил у себя - работает. Возможно это у вас какие-то конфликты со скриптами. Вот я скину скомпиллированный код. Проверьте.
Всё работает, спасибо за помощь!
Offline
Kim wrote:Даже загрузка не успевает пройти, вылет
Проверил у себя - работает. Возможно это у вас какие-то конфликты со скриптами. Вот я скину скомпиллированный код. Проверьте.
Такой вопрос ещё, надеюсь не затрудняю.
Я назначил актёра идти в определённую точку( Пусть она будет пунктом A) опкодом 05D3, дойдя до точки по середине пути( Пусть будет пункт B), затем актёр просто телепортируется из точки B в точку A, вместо того, чтобы идти до конца
Offline