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 return
2Seemann за 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