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