#1 07-09-2011 18:55

ChCyrill
Registered: 28-08-2011
Posts: 11

DriveTo. Автомобиль не едет к точке.

Автобус (или другая модель авто) очень медленно едет к указаной точке. Используется Car.DriveTo(...)
Поведение странное, иногда начинет быстро ехать назад ("задом") - останавливается - продолжает очень медленно ехать.
Менял ограничение скорости, точку старта и конечную, модель авто.

{$CLEO .cs}

model.Load(#BUS)
038B: load_requested_models
while true
    wait 10
    if
        not model.Available(#BUS)
    jf break       
end
#BUS.Destroy

1@ = Car.Create(#BUS, 2074.7876, 1071.7933, 11.8075)
00AE: set_car 1@ traffic_behaviour_to 4
Car.SetMaxSpeed(1@, 30.0)


while true
  wait 0
  while true
    wait 0
     if 0AB0: key_pressed 0x50 //если нажата 'p' - садится в автобус на пассажирское место
     then
        if  0203: actor $PLAYER_ACTOR near_car 1@ radius 7.0 7.0 flag 0 on_foot
            then
                05CA: AS_actor $PLAYER_ACTOR enter_car 1@ passenger_seat 1 5000 ms
                wait 5000
                break
            end   
     end 
  end
 
  0ACA: show_text_box "road start"
  Car.DriveTo(1@, 2063.5369, 1171.3279, 11.8098)
end

Last edited by ChCyrill (07-09-2011 18:56)

Offline

#2 07-09-2011 20:10

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

Re: DriveTo. Автомобиль не едет к точке.

С какой целью применён опкод 00AE: set_car 1@ traffic_behaviour_to 4 ?
Может следует использовать вместо него Car.SetDriverBehaviour($Car,1) (устанавливает тип езды для машины, 0 или Nowhere - никуда не ехать,1 или FollowRoad - следовать дороге, 2 - ездить за игроком, 4 - ездить за игроком,8 - ехать напрямик,не обращая внимания на дорогу.) ?
Замечания не по теме:
1.Модель надо выгружать после создания объекта. Если использован опкод неотложной загрузки моделей (038B:), то проверку на загруженность можно не использовать.
2.В бесконечном цикле достаточно использовать один wait. Добавочные wait-ы бесполезны - они только увеличивают время однократной работы цикла.

Last edited by Den_spb (07-09-2011 20:10)

Offline

#3 08-09-2011 11:08

ChCyrill
Registered: 28-08-2011
Posts: 11

Re: DriveTo. Автомобиль не едет к точке.

1) 00AE: set_car 1@ traffic_behaviour_to 4 - устанавливает "стиль" езды. от 1 до 5. 5 - ехать аккуратно, не нарушать правила. чем меньше, тем больше нарушает правила.
2) почему полсе? я раньше так делал, потом заметил, что и до получается.
3) не понял. где я использую больше?

Offline

#4 09-09-2011 00:35

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

Re: DriveTo. Автомобиль не едет к точке.

2) почему полсе? я раньше так делал, потом заметил, что и до получается.

В оригинальных скриптах игры модели всегда выгружаются после создания объектов. А работоспособность скрипта не всегда свидетельствует о правильности его написания.

3) не понял. где я использую больше?

Прошу прощения, невнимательно посмотрел код.

Last edited by Den_spb (09-09-2011 00:44)

Offline

#5 14-10-2011 10:00

~AquaZ~
Registered: 01-03-2010
Posts: 726

Re: DriveTo. Автомобиль не едет к точке.

2Jesspreorgows: Чочо китайозэ? Попятчся попятчся!

Den_spb wrote:

2) почему полсе? я раньше так делал, потом заметил, что и до получается.

В оригинальных скриптах игры модели всегда выгружаются после создания объектов. А работоспособность скрипта не всегда свидетельствует о правильности его написания.

Выгружаь модель до создания объекта - всё равно, что не загружать её. Иногда это прокатывает (если по счастливой случайность модель есть в памяти), иногда - нет.
И абсолютно согласен про работоспособность и правильность, может просто повезло, а в следующий раз скрипт не заработает.
Ещё мне не понравилась конструкция jf break. Разве так можно?

Offline

Board footer

Powered by FluxBB