#1 07-05-2008 18:46

iKtulhu
Registered: 07-05-2008
Posts: 6

Добавление машины

всем привет, гта скриптингом занялся только на днях, ни как не могу понять

create_thread @taxi 
:taxi
    0@ = 304550
    wait 0
    &0(0@,1i) == 0xFF
    jf @taxi         
    Actor.StorePos($PLAYER_ACTOR, $x, $y, $z)
    Actor.StorePos($PLAYER_ACTOR, $x1, $y1, $z1)
    Model.Load(#TAXI)
    dec($y, 10.0)   
    dec($x, 10.0)
    car.Create($Car,#TAXI, $x, $y , $z)
    car.DriveTo($Car, $x1, $y1, $z1)
//    $NEW_ACTOR  =  actor.Create(Special, #HMOST, $x1, $y1, $z1)
//    actor.InCar( $NEW_ACTOR, $Car )     
    Model.Destroy(#TAXI)
    jump @taxi

Почему машина создается несколько раз? ( ~ 2 - 5 )
( ну и sub-вопрос, почему,  если раскоментировать строки с новым актером - игра зависает при вызове, может как то по другому надо создавать?

Заранее благодарен smile

Offline

#2 07-05-2008 19:02

iKtulhu
Registered: 07-05-2008
Posts: 6

Re: Добавление машины

вообщем, игра перестала выкидывать, но все равно немножко не то:

create_thread @taxi  
var
    $num: Integer = 0
    $actors: array 10 of Actor
    $cars: array 10 of Car
end
:taxi
    Model.Load(#TAXI)
    Model.Load(#WFYBU)
    0@ = 304550
    wait 0
    &0(0@,1i) == 0xFF
    jf @taxi       
    wait 0  
    Actor.StorePos($PLAYER_ACTOR, $x, $y, $z)
    Actor.StorePos($PLAYER_ACTOR, $x1, $y1, $z1)
    
    for $CurrentIndex = 0 to $num  // step 1
        inc($x, 20.0)    
        inc($y)
        $cars[$CurrentIndex].Create(#TAXI, $x, $y, $z)
        $actors[$CurrentIndex].Create(CivMale, #WFYBU, $x, $y, $z)
        $actors[$CurrentIndex].InCar($Cars[$CurrentIndex])
        $cars[$CurrentIndex].DriveTo( $x1, $y1, $z1 )

    end // for
    

    Model.Destroy(#TAXI) 
    Model.Destroy(#WFYBU)
    jump @taxi

машины две создаются опять, а актер не попадает в машину sad

Last edited by iKtulhu (07-05-2008 19:26)

Offline

#3 07-05-2008 19:48

Fess
Registered: 29-04-2008
Posts: 62

Re: Добавление машины

@iKtulhu

ну и sub-вопрос, почему,  если раскоментировать строки с новым актером - игра зависает при вызове, может как то по другому надо создавать?

Сперва ты должен загрузить модель, которую собираешься использовать:

#HMOST.Load

while not #HMOST.Available
 wait 0
end
actor.InCar

Это проверка находиться ли данный актер в машине. Если ты хочешь создать актера в машине используй опкод:

0129: 41@ = create_actor_pedtype 23 model #SPECIAL02 in_car 35@ driverseat

---

create_thread @taxi

// ...

:taxi
while true
    wait 0
    if
        Player.Defined($PLAYER_CHAR)
    then
        if
            0AB0:  key_pressed 0xC0
        then
            #TAXI.Load
            while not #TAXI.Available
                wait 0
            end
            #WFYBU.Load
            while not #WFYBU.Available
                wait 0
            end
            Actor.StorePos($PLAYER_ACTOR, 0@, 1@, 2@)
            0@ += 20.0
            1@ += 1.0
            3@ = Car.Create(#TAXI, 0@, 1@, 2@)
            0129: 4@ = create_actor_pedtype 4 model #WFYBU in_car 3@ driverseat
            Car.SetDriverBehaviour(3@, DriveToPlayer)
            #TAXI.Destroy
            #WFYBU.Destroy
            Car.RemoveReferences(3@)
            Actor.RemoveReferences(4@) 
        end
    end
end

Last edited by Fess (07-05-2008 20:01)

Offline

#4 07-05-2008 22:03

iKtulhu
Registered: 07-05-2008
Posts: 6

Re: Добавление машины

Fess, спасибо большое, тока одна проблема :

Car.SetDriverBehaviour(3@, DriveToPlayer)

Как я из этого понял, оно должно ехать ко мне? Но уезжает в хренпойминск smile

Ну, и немного по наглею, как можно проверить сел ли игрок именно в этом машину? Которую вызвал тильдой smile

Offline

#5 08-05-2008 05:33

Fess
Registered: 29-04-2008
Posts: 62

Re: Добавление машины

@iKtulhu

Как я из этого понял, оно должно ехать ко мне? Но уезжает в хренпойминск

Попробуй убрать:

Car.RemoveReferences(3@)
Actor.RemoveReferences(4@)

видимо из-за этого, сейчас игры нет точно не могу сказать. Проверь находиться ли машина около игрока иди нет, если да то делай ремув.

Ну, и немного по наглею, как можно проверить сел ли игрок именно в этом машину? Которую вызвал тильдой

if
    Actor.InCar($PLAYER_ACTOR, 3@)
then
    // ...
end

Last edited by Fess (08-05-2008 05:34)

Offline

#6 08-05-2008 08:25

iKtulhu
Registered: 07-05-2008
Posts: 6

Re: Добавление машины

Так все работает, но машина опять добавляется по несколько раз. Попробовал как и в первый раз, сохранить координаты дважды, и машина все равно уезжает в хренпойминск.


upd,
а вот так машина едет в назначенные координаты:
mfly.pngfzvipagargbnytr.png


 if
            Actor.InCar($PLAYER_ACTOR, 3@)
        then
            04BA: set_car 3@ speed_instantly 15.0
            Car.ImmuneToNonPlayer(3@, true)            
            01F0: set_max_wanted_level_to 0
            Car.DriveTo(3@, 1245.465, -2055.352, 59.82913)
        end

Last edited by iKtulhu (08-05-2008 08:57)

Offline

#7 08-05-2008 08:58

Alexander
Registered: 19-08-2006
Posts: 184
Website

Re: Добавление машины

A в том , что она добавляется несколько раз нет ничего удивительного , ведь цикл весь прокручивается несколько раз за время зажатости клавиши (~) , поставь перед переходом на начало (end of while true) задержку на пару секунд smile

Offline

#8 08-05-2008 11:07

iKtulhu
Registered: 07-05-2008
Posts: 6

Re: Добавление машины

да, с wait'ом получилось. А что насчет пути? Почему оно улетает в небо? smile

Offline

#9 08-05-2008 11:32

Fess
Registered: 29-04-2008
Posts: 62

Re: Добавление машины

да, с wait'ом получилось. А что насчет пути? Почему оно улетает в небо?

Попробуй так:

if
    Actor.InCar($PLAYER_ACTOR, 3@)
then
    Player.CanMove($PLAYER_CHAR) = false
    04BA: set_car 3@ speed_to 20.0
    Car.DriveTo(3@, 1245.465, -2055.352, 59.82913)
    Car.SetMaxSpeed(3@, 30.0)
    00AE: set_car 3@ traffic_behaviour_to 2
    
    while true
        wait 0
        if
            01AF:   car 3@ sphere 0 in_sphere 1245.465 -2055.352 59.82913 radius 3.0 3.0 4.0
        then
            0633: AS_actor $PLAYER_ACTOR exit_car
            Break 
        end 
    end
    
    Player.CanMove($PLAYER_CHAR) = true
end

Offline

#10 08-05-2008 12:19

iKtulhu
Registered: 07-05-2008
Posts: 6

Re: Добавление машины

Всем большое спасибо smile

Offline

Board footer

Powered by FluxBB