#1 15-09-2010 17:17

MB116
From: Almaty
Registered: 15-09-2010
Posts: 104
Website

0657: car $Car1 open_component 0

Доброго времении суток Уважаемые Знатоки! Я чайник в скриптинге и пришел к вам с небольшим вопросом, надеюсь вы мне поможете!

{$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

#2 15-09-2010 17:43

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: 0657: car $Car1 open_component 0

Частая ошибка у новичков. В переменную $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

#3 15-09-2010 18:10

MB116
From: Almaty
Registered: 15-09-2010
Posts: 104
Website

Re: 0657: car $Car1 open_component 0

Den_spb, спасибо большое, работает! Но я хотел бы узнать по подробнее, если честно я ничего не понял) Буду очень признателен если обьясните!

Offline

#4 15-09-2010 18:20

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: 0657: car $Car1 open_component 0

Задавайте конкретные вопросы.

Offline

#5 15-09-2010 18:36

MB116
From: Almaty
Registered: 15-09-2010
Posts: 104
Website

Re: 0657: car $Car1 open_component 0

[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

#6 15-09-2010 19:14

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: 0657: car $Car1 open_component 0

while true ... end - бесконечный цикл. Команды, перечисленные внутри этого цикла будут повторяться всё время. В начале идёт проверка на существование игрока. Её в данном скрипте можно было и не писать, так как над игроком не производится никаких действий. Далее проверяем, существует ли машина - если она не существует, то начинаем её искать и повторяем поиск до тех пор, пока он не завершится успехом. После того, как машина найдена, открываем компонент (пытаться производить действия над несуществующим актёром/транспортом/объектом нельзя - вылетит игра).

Last edited by Den_spb (15-09-2010 19:20)

Offline

#7 16-09-2010 10:42

MB116
From: Almaty
Registered: 15-09-2010
Posts: 104
Website

Re: 0657: car $Car1 open_component 0

Спасибо большое за обьяснние! По этой части все понял, но можно сдесь задать другой вопрос?

Offline

#8 16-09-2010 11:13

MB116
From: Almaty
Registered: 15-09-2010
Posts: 104
Website

Re: 0657: car $Car1 open_component 0

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

#9 16-09-2010 11:29

Sanchez
Registered: 18-08-2006
Posts: 280

Re: 0657: car $Car1 open_component 0

@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

#10 16-09-2010 11:36

MB116
From: Almaty
Registered: 15-09-2010
Posts: 104
Website

Re: 0657: car $Car1 open_component 0

Sanchez спасибо работает! А как сделать чтоб когда он сдох не выкидывало, а он заного появлялся?

Offline

#11 16-09-2010 11:55

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: 0657: car $Car1 open_component 0

{$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

#12 16-09-2010 12:06

MB116
From: Almaty
Registered: 15-09-2010
Posts: 104
Website

Re: 0657: car $Car1 open_component 0

Sw[ee]t, я был бы очень признателен! И если бы обьединить со скриптом машины!

Last edited by MB116 (16-09-2010 12:11)

Offline

#13 16-09-2010 12:47

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: 0657: car $Car1 open_component 0

Полный код:

{$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

#14 02-11-2010 11:37

MB116
From: Almaty
Registered: 15-09-2010
Posts: 104
Website

Re: 0657: car $Car1 open_component 0

Спасибо большое!

Offline

Board footer

Powered by FluxBB