You are not logged in.
Pages: 1
всем привет, гта скриптингом занялся только на днях, ни как не могу понять
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-вопрос, почему, если раскоментировать строки с новым актером - игра зависает при вызове, может как то по другому надо создавать?
Заранее благодарен
Offline
вообщем, игра перестала выкидывать, но все равно немножко не то:
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
машины две создаются опять, а актер не попадает в машину
Last edited by iKtulhu (07-05-2008 19:26)
Offline
@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
Fess, спасибо большое, тока одна проблема :
Car.SetDriverBehaviour(3@, DriveToPlayer)
Как я из этого понял, оно должно ехать ко мне? Но уезжает в хренпойминск
Ну, и немного по наглею, как можно проверить сел ли игрок именно в этом машину? Которую вызвал тильдой
Offline
@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
Так все работает, но машина опять добавляется по несколько раз. Попробовал как и в первый раз, сохранить координаты дважды, и машина все равно уезжает в хренпойминск.
upd,
а вот так машина едет в назначенные координаты:
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
A в том , что она добавляется несколько раз нет ничего удивительного , ведь цикл весь прокручивается несколько раз за время зажатости клавиши (~) , поставь перед переходом на начало (end of while true) задержку на пару секунд
Offline
да, с wait'ом получилось. А что насчет пути? Почему оно улетает в небо?
Offline
да, с 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
Всем большое спасибо
Offline
Pages: 1