You are not logged in.
Доброго времении суток Уважаемые Знатоки! Я чайник в скриптинге и пришел к вам с небольшим вопросом, надеюсь вы мне поможете!
{$VERSION 3.1.0027}
{$CLEO .cs}
014B: $Car1 = init_parked_car_generator #ESPERANT color 0 0 0 alarm 0 door_lock 0 0 5000 at 2443.7705 -1635.8812 12.9661 angle 180.091
014C: set_parked_car_generator $Car1 cars_to_generate_to 101
0657: car $Car1 open_component 0
0A93: end_custom_thread
Вопрос таков почему когда я добавляю строку "0657: car $Car1 open_component 0 " игра выкидывает? Заранее благодарен!
Offline
Частая ошибка у новичков. В переменную $Car1 в данном случае записывается не указатель на машину, а указатель на сам парковочный генератор. В скрипт надо добавить поиск транспорта на месте парковки - если транспорт найден, то производим над ним действие.
{$CLEO} 0A95: 014B: 0@ = init_parked_car_generator #ESPERANT color 0 0 0 alarm 0 door_lock 0 0 5000 at 2443.7705 -1635.8812 12.9661 angle 180.091 014C: set_parked_car_generator 0@ cars_to_generate_to 101 while true wait 0 if not player.Defined($player_char) then continue end if 856E: not car 1@ defined then while 856E: not car 1@ defined wait 0 053E: 1@ = get_random_car_with_model #ESPERANT in_rectangle_cornerA 2444.7705 -1634.8812 cornerB 2442.7705 -1636.8812 end 0657: car 1@ open_component 0 end end
Offline
[c]while true
wait 0
if
not player.Defined($player_char)
then
continue
end
if
856E: not car 1@ defined
then
while 856E: not car 1@ defined
wait 0
053E: 1@ = get_random_car_with_model #ESPERANT in_rectangle_cornerA 2444.7705 -1634.8812 cornerB 2442.7705 -1636.8812
end
0657: car 1@ open_component 0
end
end[/c]
Что означает эта часть скрипта?
Last edited by MB116 (15-09-2010 18:37)
Offline
while true ... end - бесконечный цикл. Команды, перечисленные внутри этого цикла будут повторяться всё время. В начале идёт проверка на существование игрока. Её в данном скрипте можно было и не писать, так как над игроком не производится никаких действий. Далее проверяем, существует ли машина - если она не существует, то начинаем её искать и повторяем поиск до тех пор, пока он не завершится успехом. После того, как машина найдена, открываем компонент (пытаться производить действия над несуществующим актёром/транспортом/объектом нельзя - вылетит игра).
Last edited by Den_spb (15-09-2010 19:20)
Offline
0A95: enable_thread_saving :MAN wait 0 model.load(#FAM1) 038B: load_requested_models else_jump @MAN_2 :MAN_2 wait 0 if model.available(#FAM1) jf @MAN_2 actor.create(0@,4,#FAM1,2494.4622,-1680.92,13.3385) Model.Destroy(#FAM1) jump @MAN
Вопрос таков, пед на против дома CJ'я создался, но, почему их создалось 2-е друг на друге? И при приближении к ним начинает глючить игра? Написал вместо jump @MAN (в конце) end_thread, все заработало нормально разве можно использовать в CLEO end_thread?
Last edited by MB116 (16-09-2010 11:30)
Offline
@MB116 - из-за
jump @MAN
у тебя скрипт выполняется постоянно, ты его зациклил. Используй
0A93: end_custom_thread
, чтобы завершить скрипт:
{$CLEO} #FAM1.Load while not #FAM1.Available wait 0 end 0@ = Actor.Create(CivMale, #FAM1, 2494.4622,-1680.92,13.3385) #FAM1.Destroy 0A93: end_custom_thread
Offline
{$CLEO} #FAM1.Load while not #FAM1.Available wait 0 end 0@ = Actor.Create(CivMale, #FAM1, 2494.4622,-1680.92,13.3385) if actor.dead(0@) then Actor.Create(CivMale, #FAM1, 2494.4622,-1680.92,13.3385) #FAM1.Destroy end
После того как ты его убьёшь, появится ещё один, но когда убьёшь второго - то больше он не появится.
Если нужно, могу написать что бы он появлялся всегда, после того как убьёшь.
Offline
Полный код:
{$CLEO} :LOAD model.load(#FAM1) :LOAD_1 if not model.available(#FAM1) jf @LOAD_2 wait 0 jump @LOAD_1 :LOAD_2 0@ = actor.create(Gang2,#FAM1,2494.4622,-1680.92,13.3385) // Gang2 - что бы пед вёл себя как член банды Groove :LOAD_3 if not actor.dead(0@) jf @LOAD_2 wait 0 jump @LOAD_3
Про скрипт машины, я не совсем понял что с чем объединить.
Offline