You are not logged in.
Pages: 1
У меня возник один вопросик:
$6666 = Car.Create(#TAXI, -893.3, -653.1, -100.0) 0129: $6679 = create_actor 4 #WMOCA in_car $6666 driverseat $6672 = Marker.CreateAboveCar($6666) Car.SetMaxSpeed($6666, 17.0) 00AE: unknown_set_car $6666 to_ignore_traffic_lights 2 Car.ImmuneToNonPlayer($6666) = True
В VC этот код заставит машину ездить по дорогам (Сar.DriveTo() - не используется) без соблюдения ПДД, в SA просто появиться машина и будет стоять на месте. Почему? Сначала я думал, что все это из-за этого:
0243: set_actor $6679 ped_stats_to 16
Но и без этого опкода в VC все нормально работает, в SA его вообще нет. Есть ли такой опкод в SA? Я только нашел вот эти:
0480: unknown_actor 131@(52@,6i) pedgroup 25 077A: set_actor 1@ aggressive_to_pedgroup 4 type 0
Но они тоже желаемого результата не приносят.
P.S. Это мелочь конечно, но все же, в Readme OST.txt на позиции 85:4 - eng (105:3 - rus) должна стоять цифра 3 
Offline
Не совсем понял, что нужно, но может опкод Car.SetDriverBehaviour() поможет? Он устанавливает поведение водителя на дороге.
P.S. Это мелочь конечно, но все же, в Readme OST.txt на позиции 85:4 - eng (105:3 - rus) должна стоять цифра 3
сейчас это уже исправлено, но все равно спасибо.
Offline
Не совсем понял, что нужно, но может опкод Car.SetDriverBehaviour() поможет? Он устанавливает поведение водителя на дороге.
Просто в gta3 и gtavc в оригинальных миссиях где надо было заставить машину ездить по городу использовался примерно этот код, в gtasa я толком не понял. Ну ладно буду пробовать с Car.SetDriverBehaviour().
0243: set_actor $6679 ped_stats_to 16
что означает цифра 16, и если замена этого опкода в SA
Offline
Не стал создовать новый топик, думаю и здесь ответят:):):)
После компиляции этого кода, при старте миссии игра выдает ошибку, в чем проблема вроде wait везде стоит.
DEFINE OBJECTS 0
DEFINE MISSIONS 1
DEFINE MISSION 0 at @MyMission
DEFINE EXTERNAL_SCRIPTS -1 // Use -1 to not write AAA script
DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 0
// --------------------
// THE STRIPPED MAIN THREAD
// contains initial info
// --------------------
thread 'Main'
var
$PLAYER_CHAR: Player
end // var
01F0: set_max_wanted_level_to 6
set_wb_check_to 0
00C0: set_current_time 8 0
04E4: unknown_refresh_game_renderer_at 2488.5601 -1666.84
Camera.SetAtPos(2488.5601, -1666.84, 13.38)
$PLAYER_CHAR = Player.Create(#NULL, 2488.5601, -1666.84, 13.38)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
Camera.SetBehindPlayer
set_weather 0
wait 0 ms
$PLAYER_CHAR.SetClothes("PLAYER_FACE", "HEAD", Head)
$PLAYER_CHAR.SetClothes("JEANSDENIM", "JEANS", Legs)
$PLAYER_CHAR.SetClothes("SNEAKERBINCBLK", "SNEAKER", Shoes)
$PLAYER_CHAR.SetClothes("VEST", "VEST", Torso)
$PLAYER_CHAR.Build
$PLAYER_CHAR.CanMove = True
fade 1 (out) 0 ms
select_interior 0
0629: change_stat 181 (islands unlocked) to 4
016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0
016D: restart_if_busted at 1550.68 -1675.49 14.51 angle 90.0 unknown 0
// put your create_thread commands here
0180: set_on_mission_flag_to $ONMISSION
create_thread @MyTrigger
end_thread
// put your mission mods here
:MyTrigger
thread "MyTrigger"
$TrigMarker = Marker.CreateIconAndSphere(15, 2489.0591, -1682.2808, 13.3358)
while $MyMission_Passed == 0
wait 250
if Player.Defined($PLAYER_CHAR)
then
if $ONMISSION == 0 // integer values
then
if 00FF: actor $PLAYER_ACTOR 0 2489.0591 -1682.2808 13.3358 radius 1.0 1.0 2.0
then
if Player.Controllable($PLAYER_CHAR)
then
$ONMISSION = 1 // integer values
00BA: text_styled 'INTRO_1' 1000 ms 2 // Big Smoke
Marker.Disable($TrigMarker)
start_mission MyMission
end // if1
end // if2
end // if3
end // if4
end // while
end_thread
:MyMission
thread "MyMission"
gosub @MissionStart
if
wasted_or_busted
then
gosub @MissionFailed
end
gosub @MissionCleanup
end_thread
:MissionStart
var
$car: array 3 of Car
$actor: array 3 of Actor
$box: array 3 of Pickup
$marker_car: array 3 of Marker
$marker_box: array 3 of Marker
$check: Integer = 0
$count: Integer = 3
end
#SECURICA.Load
while not #SECURICA.Available
wait 0
end
#WMOPJ.Load
while not #WMOPJ.Available
wait 0
end
for $index = 1 to $count
wait 250
if
$index = 1
then
0@ = 1821.6421
1@ = -1720.1123
2@ = 12.982
end
if
$index = 2
then
0@ = 490.3722
1@ = -1307.807
2@ = 15.1438
end
if
$index = 3
then
0@ = 2300.0854
1@ = -1151.4205
2@ = 26.2798
end
$car[$index].Create(#SECURICA, 0@, 1@, 2@)
0129: $actor[$index] = create_actor 4 #WMOPJ in_car $car[$index] driverseat
$marker_car[$index].CreateAboveCar($car[$index])
018B: show_on_radar $marker_car[$index] 3
Car.SetMaxSpeed($car[$index], 20.0)
00AE: unknown_set_car $car[$index] to_ignore_traffic_lights 2
Car.ImmuneToNonPlayer($car[$index]) = True
Car.SetDriverBehaviour($car[$index], FollowRoad)
end
while $check_car = 6
wait 0
for $index = 1 to $count
wait 250
if
$car[$index].Wrecked
then
$marker_car[$index].Disable
$check += 1
0407: create_coordinate 3@ 4@ 5@ from_car $car[$index] offset 0.0 0.0 0.0
$box[$index].Create(#BRIEFCASE, 3, 3@, 4@, 5@)
03DC: $marker_box[$index] = create_marker_above_pickup $box[$index]
018B: show_on_radar $marker_box[$index] 2
end
if
$box[$index].Picked_up
then
$marker_box[$index].Disable
$check += 1
end
end
end
gosub @MissionPassed
return
:MissionPassed
01E3: text_1number_styled 'M_PASSD' 0 5000 ms 1 // MISSION PASSED!
$MyMission_Passed = 1
return
:MissionFailed
00BA: text_styled 'M_FAIL' 5000 ms 1 // ~r~MISSION FAILED!
return
:MissionCleanup
$ONMISSION = 0 // integer values
mission_cleanup
return2Seemann за Car.SetDriverBehaviour() спасибо, все работает.
Offline
2Sanchez
Я имел в виду, что опечатка исправлена в текущей разрабатываемой версии (у меня на винте), не в той что доступна для скачивания
Пост удалил, ибо оффтоп.
EDIT:
что означает цифра 16, и если замена этого опкода в SA
Не могу сказать точно. Видимо меняет тип актера на другой. Возможно влияет на его поведение.
После компиляции этого кода, при старте миссии игра выдает ошибку, в чем проблема вроде wait везде стоит.
1. В первом цикле FOR в проверках вместо $index = 1 должно стоять $index == 1.
= это знак операции, а не проверки, нельзя путать с ==. Тоже для остальных.
2. Вместо while $check_car = 6 должно стоять while $check <> 6. Если я правильно понял, цикл должен работать пока не будут уничтожены все машины и не подобраны чемоданы.
3. После уничтожения одной из машин чемоданы создаются бесконечно, потому что срабатывает проверка Car.Wrecked. Надо вводить доп. контрольку, чтобы после первой обработки условия больше к нему не возвращаться.
4. Зачем нужны переменные 0@-2@ если можно сразу создавать в блоке THEN машину, а после устанавлвать остальные параметры (водитель и пр.)?
5. Лучше проверять не общее число уничтоженных маши + чемоданов (6), а только чемоданов (3).
6. Проверка Object.Picked_up срабатывает, если объект не был создан. В твоем скрипте проверка осуществляется еще до создания чемоданов. Поэтому контрока увеличивается не тогда, когда должна была бы. введи доп. контрольку на создание пикапа и проверяй ее
if and
$pickup_exists[$index] == 1
$box[$index].Picked_up
then
Last edited by Seemann (22-08-2006 17:41)
Offline
Ну, а ту то что неправильно? Все перепробовал. Сначало все норамльно работает, а после того как взорвешь тачку - маркер на тачке не проподает сразу, когда проподает все виснет. Пробовал и wait везде запихивать но тот же результат.
var
$car: Array 2 of Car
$actor: Array 2 of Actor
$marker: Array 2 of Marker
$flag_dest_car: Array 2 of Integer
$flag_pl_car: Array 2 of Integer
$count: Integer = 2
$check: Integer = 0
end // var
#ADMIRAL.Load
while not #ADMIRAL.Available
wait 0
end
#MAFFA.Load
while not #MAFFA.Available
wait 0
end
for $i = 0 to $count // step 1
wait 250
if
$i == 0
then
0@ = 1821.6421
1@ = -1720.1123
2@ = 12.982
end
if
$i == 1
then
0@ = 490.3722
1@ = -1307.807
2@ = 15.1438
end
if
$i == 2
then
0@ = 2300.0854
1@ = -1151.4205
2@ = 26.2798
end
0395: clear_area 1 at 0@ 1@ 2@ range 5.0
$car[$i].Create(#ADMIRAL, 0@, 1@, 2@)
0229: set_car $car[$i] color_to 0 0
0129: $actor[$i] = create_actor 20 #MAFFA in_car $car[$i] driverseat
$marker[$i].CreateAboveCar($car[$i])
$car[$i].SetMaxSpeed(17.0)
00AE: unknown_set_car $car[$i] to_ignore_traffic_lights 0
$car[$i].ImmuneToNonPlayer(True)
$car[$i].SetDriverBehaviour(FollowRoad)
$flag_dest_car[$i] = 0
$flag_pl_car[$i] = 0
end // for
while $check <> 3
wait 0
for $i = 0 to $count // step 1
if and
$car[$i].Wrecked
$flag_dest_car[$i] == 0
then
$marker[$i].Disable
$flag_dest_car[$i] = 1
$check += 1
end // if
if and
not $car[$i].Wrecked
8185: not car $car[$i] health >= 999
not $actor[$i].Dead
$actor[$i].InCar($car[$i])
then
$car[$i].SetMaxSpeed(25.0)
00AE: unknown_set_car $car[$i] to_ignore_traffic_lights 2
$car[$i].ImmuneToNonPlayer(False)
end // if
if and
not $car[$i].Wrecked
Actor.InCar($PLAYER_ACTOR, $car[$i])
$flag_pl_car[$i] == 0
then
$car[$i].ImmuneToNonPlayer(False)
$flag_pl_car[$i] = 1
end // if
end // for
end // while
Offline
Pages: 1