You are not logged in.
так. новый вопрос. точнее два.
1. машина на большой скорости врезается "носом" во что-нибудь - как узнать:
а) что столкновение было именно носом... тобишь лбом?
б) что скорость была высокой за секунду ДО этого
2. водитель вылетает "из седла" - как заставить сиджея вылететь из машины через лобовое стекло?
скажите где мне найти список клавиш
00E1: key_pressed 0 13
0AB0: key_pressed 0x11
для опкода 00E1 - в справке по санни
для опкода 0AB0 - в любом справочнике программиста - это virtual key codes системные (везде на винде одинаковы)
если поставить ограничитель скорости?
Неа, он всё равно разгоняется и взлетает 
Вопрос: а реально с помощью клео, серией точек задать свой путь, и потом к нему привязать самолёт?
взлетает и следует к точке уже в воздухе
а если указать Z координату чуть ниже земли? может тогда не полетит?
Неа. Всё равно. Взлетает 
Ну а может оно и не расчитано на самолётов.
Ты же рассказывал что раньше делал.
Чем не подходит 04D2 ???
Тем, что работает через раз: 50% работает так же как драйв_ту, а в 50% взлетает и следует к точке уже в воздухе.
ИМХО так бы:
CTRL+ВВЕРХ - выше
CTRL+ВНИЗ - ниже
ALT+ВВЕРХ - ближе
ALT+ВНИЗ - дальшеа так кул
Всё в твоих руках - меняй 11 на 12 и компиль. Всё же в опенсурсе дано.....
если jump идет на метку сразу после этой команды, он лишний. игра и сама перейдет. эти jump и метки нужно убрать.
Знаю, просто когда писал скрипт, думал, что там может ещё что-то быть.
много лишнего. 0000, wait и метка start совершенно не нужны.
Я просто тут где-то читал, что на первую метку не перескакивает гта. Потому и поставил старт. Кстати иногда (когда забываю писать старт и ноп - игра вылетает сразу после запуска)
while true
Да красивие, только я уже запутался в сложной структуре синтаксиса языка гта, что уже не рискую 
В самом скрипте не хватает возможности "стереть" последнюю цифру нажатием Backspace.
Да явообще хотел сделать вызов простым нажатием этих клавишь в нужной последовательности (по принципу ЧИТа, но не дождался ответа об этом и решил сделать "по-старинке"...
и добавить выгрузку модели
Я выгружаю только ссылку на модель. А саму модель - необязательно - ибо при отъезде от неё на определённое расстояние - она исчезает.
...
Блииин, я же говорю про ЗЕМЛЮ. В воздухе получается всё что требуется, а на земле самолёт как камень почти. Пробовал указать куда ехаьть, пробовал заставить пилота туда поехать, но всё заканчивается либо полной остановкой, либо при придании скорости он начинает поворачивать и так до бесконечности 
Пилота посадил. Пропеллер крутится, двигатель шумит. Но когда я говорю ему ехать к точке - он чуток сдвигается и затем практически останавливается. Если присвоить ему какую-то скорость, то самолёт начинает движение, а потом плавно тормозит так и не доехав до точки. Если присвоение скорости и/или пути запустить в цикл каждую секунду, то самолёт начинает двигаться по кругу
:go 02C2: car 0@ drive_to 1508.57 1788.499 11.0 04BA: set_car 0@ speed_to 5.0 wait 1000 jump @go
Что ж делать то?
Как заставить самолёт плавно доехать до конкретной точки?
Народ я тут пытаюсь отредактировать скрипт так, чтобы камеру можно было менять только в машине, но ничего не вышло экран стал мерцать и ваще ппц. Помогите пожалуста! И еще сделайте чтобы можно было поворачивать головой в разные стороны...
Не парься и возьми мой скрипт.
В отдельной теме http://sannybuilder.com/forums/viewtopi … 3592#p3592 выложил.
Там есть всё что нужно. Так что смотри и изучай. Или просто юзай 
p.s.: скрипт в самом конце темы
От нечего делать написал скрипт, который спаунит нужную машину (по её ID) и сажает сиджея в неё.
Активация по CTRL+O (буква О, а не ноль)
Далее вводим трёхзначный код (от 400 до 611)
Отменить выбор той же кнопкой, как и выход из любого меню.
// siple car spawner by vehicle ID (400 - 612)
// by AlphaOmega
{$CLEO .cs}
//-------------MAIN---------------
:start
thread 'SPAWNER'
0000: NOP
:new
wait 0
0@ = 0 // car id
1@ = 0 // additional value
2@ = 0 // additional value digit
:check
wait 0
if and
0AB0: key_pressed 0x11 // ctrl
0AB0: key_pressed 0x4F // o
not Actor.Driving($PLAYER_ACTOR)
jf @check
077E: get_active_interior_to 9@
if
9@ == 0
jf @check
02A3: toggle_widescreen 1
Player.CanMove($PLAYER_CHAR) = False
03BF: set_player $PLAYER_CHAR ignored_by_everyone 1
:menu
01E3: show_text_1number_styled GXT 'NUMBER' number 0@ time 10 style 5
wait 10
if
00E1: player 0 pressed_key 15
jf @input0
jump @end
:input0
if
0AB0: key_pressed 0x30
jf @input1
1@ = 0
jump @output
:input1
if
0AB0: key_pressed 0x31
jf @input2
1@ = 1
jump @output
:input2
if
0AB0: key_pressed 0x32
jf @input3
1@ = 2
jump @output
:input3
if
0AB0: key_pressed 0x33
jf @input4
1@ = 3
jump @output
:input4
if
0AB0: key_pressed 0x34
jf @input5
1@ = 4
jump @output
:input5
if
0AB0: key_pressed 0x35
jf @input6
1@ = 5
jump @output
:input6
if
0AB0: key_pressed 0x36
jf @input7
1@ = 6
jump @output
:input7
if
0AB0: key_pressed 0x37
jf @input8
1@ = 7
jump @output
:input8
if
0AB0: key_pressed 0x38
jf @input9
1@ = 8
jump @output
:input9
if
0AB0: key_pressed 0x39
jf @menu
1@ = 9
jump @output
:output
2@ += 1
0012: 0@ *= 10
005A: 0@ += 1@ // (int)
01E3: show_text_1number_styled GXT 'NUMBER' number 0@ time 250 style 5
wait 250
if
0039: 2@ == 3
jf @menu
jump @ifcan
:ifcan
if and
0029: 0@ >= 400
002B: 611 >= 0@
jf @end
0247: request_model 0@
01E3: show_text_1number_styled GXT 'NUMBER' number 0@ time 250 style 5
fade 0 250
wait 250
:loading
wait 0 ms
if 0
0248: model 0@ available
jf @loading
04C4: store_coords_to 3@ 4@ 5@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0
0172: 7@ = actor $PLAYER_ACTOR Z_angle
00A5: 6@ = create_car 0@ at 3@ 4@ 5@
0175: set_car 6@ Z_angle_to 7@
036A: put_actor $PLAYER_ACTOR in_car 6@
01C3: remove_references_to_car 6@
fade 1 500
jump @end
:end
Player.CanMove($PLAYER_CHAR) = True
03BF: set_player $PLAYER_CHAR ignored_by_everyone 0
02A3: toggle_widescreen 0
wait 1000
jump @new
Ещё небольшой вопрос. Как скриптом сделать проверку ПОСЕДОВАТЕЛЬНОГО нажатия клавиш? ну типа чтобы можно было свои "команды" запускать на принципе читов - набрал слово или комбинацию цифр - вуа-ля!
Для примера можно взять последовательный набор 7 4 7 цдерживая контроль,...
***
кстати,
0AA5: call 0x0043A0B6 num_params 1 pop 1 #INFERNUS
работает только если указать заранее модель...
а вот если вместо #INFERNUS поставить 0@ с номеом машины - он не компилит 
народ, а реально сделать, чтобы по нажатию на кнопку определённую загорались фары автомобиля ТОЛЬКО С ОДНОЙ СТОРОНЫ? Ну что-то типа "поворотников". Мол, нажад на ">" и замигали правый файры, а "<" - - только левые? или нет такого опкода?
@AlphaOmega - Поиграл, в целом хорошо.
<...>
Идея интересная. Надо попробовать. Только вот в чём проблема: когда аттачишь самолёт к пути - онвсегда начинает его с начала. Как его переместить в другую часть пути - не знаю.
Когда создаются много самолётов, они начинают накладывать друг на друга в аэропортах (проходят друг друга насквозь).
Кстати, пытался использовать опкод типа "драйв_кар_ту_ХYZ" и "ротэйт_обжект_фром_А_ту_Z" но самолёты всё равно стоят на месте. Как быть? А то вручную его передвижение (как в конце к ангару) прописывать жутко неудобно и косячно.
Понравилась мне очень идея jayrocc`а и решил я переписать код с нуля, при этом устранив предыдущие баги.
Итак. Сначала преамбула.
МИНУСЫ
1. не поддерживает paintjob`ы (ибо у меня тока один пейнт, а остальные влом вписывать)
ПЛЮСЫ
1. самолёты при посадке останавливаются в конце полосы и не разбиваются
2. самолёты после посадки разворачиваются и начинают новый перелёт (после небольшой паузы)
3. при совершении трёх перелётов самолёт подъезжает к ангару
4. при уничтожении самолёта скрипт автоматически перезапускается
5. шасси выпускаются и убираются
ВИД
Скрипт "поставляется" в виде двух скриптов. Альфы и Омеги. Принцыпы у них одинаковые только последовательность и маршруты разные.
Альфа:
<41> LS(R) - SF
<44> SF - LV
<48> LV - LS(L)
Омега:
<46> LS(L) - LV
<43> LV - SF
<49> SF - LS(L)
Сорок второй маршрут не используется ибо не имеет точки остановки.
итак, вот и скрипты:
файл autopilot_alpha.cs
// rewrited script of airlines
// by AlphaOmega
// [alpha]
{$CLEO .cs}
//-------------MAIN---------------
:start
0000: NOP
:check
wait 10000
Model.Load(#AT400)
038B: load_requested_models
:plane
wait 0
if and
Model.Available(#AT400)
else_jump @plane
0@ = Car.Create(#AT400, 0.0, 0.0, 500.0)
0175: set_car 0@ Z_angle_to 0.0
08E6: set_plane 0@ landing_gear 0
/////////////////////////////////////////////////////////////
//0430: put_actor $PLAYER_ACTOR into_car 0@ passenger_seat 0
//0186: 22@ = create_marker_above_car 0@
/////////////////////////////////////////////////////////////
1@ = 0
8@ = 41
:nextpath
07C0: load_path 8@
:path
wait 0
if
07C1: path 8@ available
else_jump @path
054F: clear_car 0@ damage
05EB: assign_car 0@ to_path 8@
wait 15000
:far
wait 2500
00AA: store_car 0@ position_to 4@ 5@ 6@
if
0031: 6@ >= 50.0
jf @landing
08E6: set_plane 0@ landing_gear 1
jump @far
:landing
08E6: set_plane 0@ landing_gear 0
:nopath
wait 10000
if
060E: car 0@ assigned_to_path
jf @changing
jump @nopath
:changing
if
not Car.Wrecked(0@)
jf @restart
06C5: release_car 0@ from_path
0873: release_path 8@
08E6: set_plane 0@ landing_gear 0
0174: 3@ = car 0@ Z_angle
2@ = 0
000A: 1@ += 1
if
0029: 1@ >= 3
jf @rotate
jump @move
:rotate
wait 10
000B: 3@ += 1.0
000A: 2@ += 1
0175: set_car 0@ Z_angle_to 3@
if
0029: 2@ >= 180
jf @rotate
wait 5000
jump @next1
:move
2@ = 0
4@ = 2046.304
5@ = -2492.627
6@ = 14.0
7@ = 270.0
:drive
wait 5
000A: 2@ += 1
000B: 4@ += 0.127
000B: 5@ += 0.101
000B: 7@ += 0.172
00AB: put_car 0@ at 4@ 5@ 6@
0175: set_car 0@ Z_angle_to 7@
if
0029: 2@ >= 520
jf @drive
00AB: put_car 0@ at 2112.690 -2439.955 14.0
0175: set_car 0@ Z_angle_to 0.0
wait 10000
06C5: release_car 0@ from_path
0873: release_path 8@
Car.RemoveReferences(0@)
jump @check
:next1
if
0039: 1@ == 1
jf @next2
0006: 8@ = 44
jump @nextpath
:next2
if
0039: 1@ == 2
jf @next3
0006: 8@ = 48
jump @nextpath
:next3
1@ = 0
0006: 8@ = 41
jump @nextpath
:restart
06C5: release_car 0@ from_path
0873: release_path 8@
Car.RemoveReferences(0@)
jump @checkфайл autopilot_omega.cs
// rewrited script of airlines
// by AlphaOmega
// [omega]
{$CLEO .cs}
//-------------MAIN---------------
:start
0000: NOP
:check
wait 30000
Model.Load(#AT400)
038B: load_requested_models
:plane
wait 0
if and
Model.Available(#AT400)
else_jump @plane
0@ = Car.Create(#AT400, 0.0, 0.0, 500.0)
0175: set_car 0@ Z_angle_to 0.0
08E6: set_plane 0@ landing_gear 0
/////////////////////////////////////////////////////////////
//0430: put_actor $PLAYER_ACTOR into_car 0@ passenger_seat 0
//0186: 22@ = create_marker_above_car 0@
/////////////////////////////////////////////////////////////
1@ = 0
8@ = 46
:nextpath
07C0: load_path 8@
:path
wait 0
if
07C1: path 8@ available
else_jump @path
054F: clear_car 0@ damage
05EB: assign_car 0@ to_path 8@
wait 15000
:far
wait 2500
00AA: store_car 0@ position_to 4@ 5@ 6@
if
0031: 6@ >= 50.0
jf @landing
08E6: set_plane 0@ landing_gear 1
jump @far
:landing
08E6: set_plane 0@ landing_gear 0
:nopath
wait 10000
if
060E: car 0@ assigned_to_path
jf @changing
jump @nopath
:changing
if
not Car.Wrecked(0@)
jf @restart
06C5: release_car 0@ from_path
0873: release_path 8@
08E6: set_plane 0@ landing_gear 0
0174: 3@ = car 0@ Z_angle
2@ = 0
000A: 1@ += 1
if
0029: 1@ >= 3
jf @rotate
jump @move
:rotate
wait 10
000B: 3@ += 1.0
000A: 2@ += 1
0175: set_car 0@ Z_angle_to 3@
if
0029: 2@ >= 180
jf @rotate
wait 5000
jump @next1
:move
2@ = 0
4@ = 2046.304
5@ = -2492.627
6@ = 14.0
7@ = 270.0
:drive
wait 5
000A: 2@ += 1
000B: 4@ += 0.127
000B: 5@ += 0.101
000B: 7@ += 0.172
00AB: put_car 0@ at 4@ 5@ 6@
0175: set_car 0@ Z_angle_to 7@
if
0029: 2@ >= 520
jf @drive
00AB: put_car 0@ at 2112.690 -2439.955 14.0
0175: set_car 0@ Z_angle_to 0.0
wait 10000
06C5: release_car 0@ from_path
0873: release_path 8@
Car.RemoveReferences(0@)
jump @check
:next1
if
0039: 1@ == 1
jf @next2
0006: 8@ = 43
jump @nextpath
:next2
if
0039: 1@ == 2
jf @next3
0006: 8@ = 49
jump @nextpath
:next3
1@ = 0
0006: 8@ = 46
jump @nextpath
:restart
06C5: release_car 0@ from_path
0873: release_path 8@
Car.RemoveReferences(0@)
jump @check
Создаю миссии с помощью San Andreas Race Mission Creator...
Ну, во-первых, здесь мы всё-таки обсуждаем миссии, созданные в Sanny Builder`е под клео. С твой же программой синтаксис очень похож, но принципы немного отличаются.
Тебе нужно поставить клео и санни, и уже в нём писать миссии.
Кстати в одном из "комплектов" санни в хэлпе есть пример создания простейшей миссии...
Выложи скомпилированный файл.
Выкладываю.
О-па, а я и не видел это. Хотя поиск ничего конкретного не давал.
/offtop/ - когда-то на каком-то тёмно синем сайте видел форум, в которой были ПОДРОБНО описаны основные опкоды (например если создавался маркер, то были показаны картинки, какому ID какой маркер идёт) - не подскажешь, где этот сат сейчас?
В помощь скриптерам написал скрипт отображающий координаты игрока и/или машины.
Возможно многие пользуются другими "примочками" для узнавания координат, но я всё же выложу свой здесь - многим (уж новичкам то точно) может помочь.
Активация по кнопке ~ (ТИЛЬДА).
Выводит на экран X Y Z игрока, а если он в машине - то X Y Z и A (угол) машины.
В качестве бонуса - два припаркованных хантера в аэропорту лас вентурас.
файл COORDINATES.cs
{$VERSION 3.1.0027}
{$CLEO .cs}
//-------------MAIN---------------
014B: 20@ = init_parked_car_generator #HUNTER color 0 0 1 alarm 0 door_lock 0 0 10000 at 1550.0 1412.8 15.0 angle -270.0
014B: 22@ = init_parked_car_generator #HUNTER color 0 0 1 alarm 0 door_lock 0 0 10000 at 1550.0 1512.8 15.0 angle -270.0
014C: set_parked_car_generator 20@ cars_to_generate_to 101
014C: set_parked_car_generator 22@ cars_to_generate_to 101
0AA2: 31@ = load_library "CLEO\PLUGINS\GXTHOOK.CLEO"
:check
wait 0
if
0AB0: key_pressed 192
jf @check
jump @type1
:type1
if
80DF: not actor $PLAYER_ACTOR driving
jf @type2
04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0
gosub @convert
0308: show_text_6numbers GXT 'COORDS' numbers 7@ 1@ 8@ 2@ 9@ 3@ time 125 flag 5
jump @off
:type2
03C0: 4@ = actor $PLAYER_ACTOR car
0407: store_coords_to 1@ 2@ 3@ from_car 4@ with_offset 0.0 0.0 0.0
0174: 10@ = car 4@ Z_angle
0085: 12@ = 3@
008E: 11@ = float 10@ to_integer
008E: 13@ = float 12@ to_integer
000A: 13@ += 1
gosub @convert
0308: show_text_6numbers GXT 'COORDZ' numbers 7@ 1@ 8@ 2@ 13@ 11@ time 125 flag 5
jump @off
:convert
wait 125
008E: 4@ = float 1@ to_integer
008E: 5@ = float 2@ to_integer
008E: 6@ = float 3@ to_integer
0085: 7@ = 4@ // (int)
0085: 8@ = 5@ // (int)
0085: 9@ = 6@ // (int)
4@ *= 1000
5@ *= 1000
6@ *= 1000
1@ *= 1000.0
2@ *= 1000.0
3@ *= 1000.0
008E: 1@ = float 1@ to_integer
008E: 2@ = float 2@ to_integer
008E: 3@ = float 3@ to_integer
0062: 1@ -= 4@ // (int)
0062: 2@ -= 5@ // (int)
0062: 3@ -= 6@ // (int)
0095: make 1@ absolute_integer
0095: make 2@ absolute_integer
0095: make 3@ absolute_integer
return
:off
if
0AB0: key_pressed 192
jf @type1
wait 1000
jump @check
end_threadфайл COORDINATES.fxt
COORDS ~w~X=~y~~1~.~1~~n~~w~Y=~y~~1~.~1~~n~~w~Z=~y~~1~.~1~ COORDZ ~w~X=~y~~1~.~1~~n~~w~Y=~y~~1~.~1~~n~~w~Z=~y~~1~ ~w~A=~y~~1~
Гы гы... а кто то говорил что не льзя вставить новые картинки (не заменить а вставить!)
Как?
Я пытался TXDworkshop`ом добавлять новые текстуры (в effectsPC.txd) и прописывать их (в effects.fxp), но как только гта доходит до них - её вышибает. Думаю с меню будет так же.
Расскажи как ты "безболезненно" добавил в txd 12 штук текстур... мне б одной-двух хватило б 
Видимо никак. Только если менять текстуры. Попробуй еще опкод 057E: set_radar_grey 1
Текстуры поменял, только вот они как буд-то чб прорисовываются.
Пробовал радар_грей - он стал серым - сам радар (карта).
В первом посте, удалось выяснить за что отвечают строчки второй половины кода?
ну так как радар перекрасить в белый и в т.ч. угол атаки самолёта? КЛЕО СКРИПТОМ
ВЫШЛА НОВАЯ ВЕРСИЯ!
Скрипт обновил (см. 1 пост)
К нему же приаттачил скомпилированный скрипт (gtt версию) в паре со скриптом «от первого лица»)
нововведения:
* устранена ошибка размещения на запасных путях
* возможность выбрать начальную станцию
* улучшен интерфейс выбора
* можно переключатся (компилятором) между обычной и gtt версией
* машинист более не выкидывает игрока из кабины
* глобальные переменные заменены на локальные
* др. мелкие. корректировки
32@, 33@ это таймеры. Это локальные переменные особого типа, их значение постоянно увеличивается. Поэтому совсем неразумно использовать их для хранения данных (в данном случае хендла огня и т.п.)
32ой в моём коде нужен только чтобы создать, а не ссылать - и работает он замечательно (если в самолёте летишь, то самолёт как порывом ветра сносит когда сиджей загорается). Меня интересует вот эта чать:
02CF: 25@ = create_fire_at 22@ 23@ 24@ propagation 3 size 5 09E5: create_flash_light_at 22@ 23@ 24@ RGB_mask 16383 16383 16383 radius 10.0 04D5: create_corona_at 22@ 23@ 24@ radius 15.0 type 10 flare 10 RGB 4095 4095 4095
22 23 24 - это x y z положения игрока в данный момент (присваивается чуть выше).....
/offtop/ а нельзя ли в след. версии санни сделать столбец, в котором будет показано какие переменные (от 1 до 33) задействованы в скрипте? а то голову сломить мона пока ищешь свободные 
Поэтому упомянул это - чтобы кому надо могли убрать эту строку
лучше наоборот - чтобы те, кому надо, добавили эту строку
Обновил.
Так всё же, что же делать с огнём и вспышкой возле актёра при взрыве всех машин? почему не появляются?
Насчет взрыва всех машин я тебе уже ответил
Спасибо. Код обновил.
Кстати, если написать их в том виде (с повторами и паузой) то получается прикольный эффект разлетания на части.
во время взрыва отключается скрипт TRAFFIC (если есть)
это не лучшая идея, на мой взгляд. скрипт-то у разных людей может быть разным
Поэтому упомянул это - чтобы кому надо могли убрать эту строку
Кстати, в обновлённом коде, после уничтожения всех машин я прописал появление огня и вспышки, но почему-то при тесте ничего не появляется... почему?