При использовании одиночных задач и списка задач для игровых персонажей, после применения к ним .NoLongerNeeded, выявилась очень существенная разница в исполнении сценария:
При одиночной задаче:
Dim Veh1 = World.GetClosestVehicle(Player.Character.Position, 5.0F)
If Exists(Veh1) Then
Dim passenger1 As Ped
passenger1.NoLongerNeeded
passenger1.AttachBlip 'Вешаем визуальный маркер на персонажа
Native.Function.Call("TASK_HANDS_UP", passenger1, 5000) 'Поднять руки на 5 сек
End If
- игровой персонаж сидя на сиденье транспортного средства поднимает руки, затем через 5с опускает, продолжая сидеть. При значительном отдалении от него, он пропадает (для определения этого момента и вешался маркер на пэда), т.е. .NoLongerNeeded отработал.
А вот при использовании списка задач (даже с одной задачей):
Dim Veh1 = World.GetClosestVehicle(Player.Character.Position, 5.0F)
If Exists(Veh1) Then
Dim passenger1 As Ped
passenger1.NoLongerNeeded
passenger1.AttachBlip 'Вешаем визуальный маркер на персонажа
Native.Function.Call("OPEN_SEQUENCE_TASK") 'Открыть последовательность задач
Native.Function.Call("TASK_HANDS_UP", passenger1, 5000) 'Поднять руки на 5 сек
Native.Function.Call("CLOSE_SEQUENCE_TASK") 'Закрыть последовательность задач
Native.Function.Call("TASK_PERFORM_SEQUENCE") 'Выполнить последовательность задач
Native.Function.Call("CLEAR_SEQUENCE_TASK") 'Очистить последовательность задач
End If
- игровой персонаж сначала выходит из т/с (сработал встроенный в игру сценарий выполнения .NoLongerNeeded) и только потом он поднимает руки на 5 сек...
Как можно с этим бороться?
Можно конечно схитрить и перед списком дописать одиночную задачу типа
Native.Function.Call("TASK_STAND_STILL", passenger1, 0)
но, если дальше идёт выполнение списка задач, выскакивает ошибка, работа скрипта при этом не завершается.
Кроме того, интересно решение без хитрых ходов ;-)
Сообщение отредактировал vorotkov: 01 July 2015 - 22:27