Учимся простейшим скриптам
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

На сайте онлайн (человек): 124



 



Учимся простейшим скриптам

Форумы: Terran Conflict (X3TC) / X3 Земной конфликт / Скрипты и моды для X3 Terran Conflict / Учимся простейшим скриптамВойти
Количество: 338
12345678>»
Учимся простейшим скриптам
10.01.2010 13:58:20
Malstrime

Репутация: 3611
Сообщений: 5699
Регистрация: 19.01.2009
 
СКРИПТ-УРОКИ ДЛЯ НАЧИНАЮЩИХ
 


Здесь я подробно расскажу о том как сделать скрипт на деньги/репутацию/захват/халяву ну и т.п. Обратите внимание, что готовых скриптов Вы здесь не увидите, т.к. отпадает сам смысл этой темы. Наконец-то сбудутся ваши мечты о любом корабле, станции, репутации...
Я не буду здесь учить скриптам, которым  научил MistR в своих "Уроках танцев". Скрипт на деньги... Хм... А вы в курсе что для него вообще практически ничего не нужно делать и всё же я напишу. Спасибо. Пока всё.

 
Внимание! Для активации ВСТРОЕННОГО в игру редактора скритов вместо имени пилота введите Thereshallbewings - регистр важен, а также двойная "эль".
 
Помимо встроенного есть сторонние редаторы, например External Script Editor. Глваное различие заключается в том, что во встроенном редакторе удобней работать, он стабильнее, и сразу можно посмотреть, что Вы натворили.

Вступление

Существует несколько видов скриптов, каждый отвечает за свою функцию. За время (момент) их исполнения отвечают префиксы:
 
"!setup.*" - скрипт выполняется ПОСЛЕ создания галактики. Если скрипт не подписан, то игра обретает статус ***Modified***
"setup.*" -  скрипт выполняется ПОСЛЕ создания галактики. Запуск только в игре ***Modified***
"!init.*" - скрипт выполняется ДО создания галактики (кораблей и станций). Если скрипт не подписан, то игра обретает статус ***Modified***
"init.*" - скрипт выполняется ДО создания галактики (кораблей и станций). Запуск только в игре ***Modified***
"!al.plugin.*" и "al.plugin.*" - отвечают за процесс, происходящий в галактике, связанный с искусственной жизнью.
"galaxy.<имя карты>.initplayership" - создает корабль игрока в заданной точке с опр. кол-вом  денег, кораблем и т.д.
 

Но ни с одним из данных префиксов мы работать не будем, т.к. нам много не надо, хотя возможно и понадобится, посмотрим. Запускать скрипты мы будем из Редактора скриптов, либо по горячей клавише.


Замечу, что чтобы подписать скрипт, нужно отправить его на данный e-mail: script@egosoft.com, однако он не должен быть читерским или автоматизировать экономику Вселенной Х. Мы этим заниматься не будем.

 
УРОКИ
 


НазваниеОписаниеСсылка+
1ЗахватПередает объект в Вашу собственностьУрок 1
2Деньги2,000,000,000 кр на счетУрок 2
3ТоварВсё от Батареи до ФЛКУрок 3
4ОборудованиеЛюбой гаджет или устройиствоУрок 4
5АпгрейдыИдеальная скорость, маневренность и трюмУрок 5
6ВратаИз любой точки галактики в другуюУрок 6
7Корабль/станцияСоздание кораблейУрок 7
8РепутацияСтанем королями любой расыУрок 8
9Супер-ШипИсскуственно увеличенные генераторы щита и лазераУрок 9
10ПрыжокПрыжок по технологии "точка-в-точку"Урок 10
11МузыкаЗамена оригинальных треков и добавление новых.Урок 11
12ХоткейДобавление горячей клавиши.Урок 12
13Новая командаДобавляем новую команду в консоли корабля/станции.Урок 13


Благодарю Вас за уделенное мне время.
Ниже вы найдете все уроки. Спасибо.

Редактировалось 23 раз (а). Последний раз 10.06.2010 20:06:48.

10.01.2010 14:21:43
Malstrime

Репутация: 3611
Сообщений: 5699
Регистрация: 19.01.2009
Урок 1. Читерский скрипт на захват корабля/станции НПС

  • Заходишь в Редактор скриптов - новый скрипт, называй как хочешь (station, например.)(рис.1)

  • Новый параметр(рис.2), Вводишь имя переменной (например station)(рис.3), Перем/Корабль/Станция (рис.4), Описание (любой(ые) символ(ы), это не важно, впрочем как и имя переменной)

  • Код->Новая строка(рис. 5)->Общие команды для объектов(рис. 6)-><РеферОбъект> set owner race to <Перем/Раса>(рис. 7), выбираешь переменную (в примере $station)(рис. 8).

  • В первой строке кода видим:
    $station-> get owner race to <?>(рис. 9)

  • Если <?> - красное, то жмем Enter (если нет, то наводим курсор (оно выделено и мы его редактируем)).

  • Жмем Page Down(рис. 10), затем Enter, находим наше имя пилота, наводим курсор (рис. 11), жмем Enter.

  • Жмем Esc(рис. 12), соглашаемся.

  • Находим скрипт в самом низу, наводим курсор, запускаем клавишей R

  • В открывшемся окне жмем Enter, в другом еще раз в третьем выбираем второй вариант, Enter.

  • Выбираем жертву

  • Жмем Enter, объект ваш.

  • Выходим из редактора и со щенячьим восторгом радуемся какие мы умные (рис. 13). Всё.

    Ну а теперь иллюстрации

    Рисунок 1Рисунок 2Рисунок 3Рисунок 4
    Рисунок 5Рисунок 6Рисунок 7Рисунок 8
    Рисунок 9Рисунок 10Рисунок 11Рисунок 12


    Конец.
  • Редактировалось 1 раз (а). Последний раз 10.01.2010 18:48:11.

    11.01.2010 20:28:22
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 2. Печатаем деньги

    Действие 
    1Создаем скрипт, называем его  
    2Код -> Торговые команды -> add money to player: <Перем/Число> (а вы как думали?? )  
    3В сл. окне выбираем "Число"  
    4Вводим число до 2,000,000,000  
    5Сохраняем, запускаем (из редактора с помощью "R")  
      


    Вот в общем то и все, о том как создать/запустить/сохранить скрипт читайте в первом уроке со скринами. Проще скрипта не бывает и всё же. "Почему до 2,000,000,000?" спросите Вы. Отвечаю: Игра использует тип "переменной" 4 байта для хранения денег, а максимальное числовое значение: 2,1**,***,*** (не помню точные цифры), т.е. 2ккк - это впритык.

    Для того чтобы было интереснее и кто не хочет такой халявы можно задать рандомное число в заданном диапазоне для этого:
  • Перед вторым действием добавляем Код -> Общие команды -> <ВозврПерем> = = random value from <Перем/Число> to <Перем/число> -1.
  • Первое значение <ВозврПерем> - это имя переменной, которой будет присвоено значение. Вторые два - начало и конец диапазона.
  • Теперь в третьем действии выбираем не "Число", а в списке переменных выбираем нашу созданную переменную (которую мы назвали как хотели).
  • Соответственно 4 действие пропускается, переходя в пятое.

    Урок закончен.
  • 11.01.2010 21:00:13
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 3. Доставка товара

    Действие  
    1Создаем скрипт  
    2Параметры -> Перем/Товар (в самом низу)  
    3Параметры -> Перем/Число (тоже внизу)  
    4Код -> Торговые команды -> <Возвр/IF><РеферОбъект> inslall <Перем/Число> units of <Перем/Товар> (выбирать "<Не возвращает значения>")   
    5
  • <РеферОбъект> - Выбираем в Констатах: [PLAYERSHIP]
  • <Перем/Число> - Выбираем в переменных переменную из третьего действия
  • <Перем/Товар> - Выбираем в переменных переменную из второго действия
  •   
    6Сохраняем скрипт, запускаем  
        


    Теперь объясню что к чему:
    Мы делали переменные, чтобы не лазать и каждый раз не исправлять скрипт, если потребовалось то или иное.
    "РеферОбъект" - это то с каким объектом работает команда ([PLAYERSHIP] в данном случае)
    "Перем/Число" - сколько нужно товара
    "Перем/Товар" - что нужно
    В параметрах Вас будут просить задавать значения переменной по порядку, так что переменные лучше делать осмысленные и пожертвовать время на описание каждой.
    Т.е. Вас сначала спросят какой товар (сами выберите - выбор огромный) и сколько его нужно (для оборудования: 1)

    Результат


    Урок закончен.

    Редактировалось 1 раз (а). Последний раз 17.05.2010 18:21:41.

    12.01.2010 14:27:26
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 4. Оборудование.

    Действие  
    1Создаем скрипт.  
    2Код -> Торговые команды -> <Возвр/IF><РеферОбъект> install <Перем/Число> units of <Перем/Товар> (<Не возвращает значение>).   
    3<РеферОбъект> - Константы -> [PLAYERSHIP]; <Перем/Число> - Ввод скрипта -> <Число> -> 1; <Перем/Товар> пока не трогаем.  
    4Далее наводим курсор на полученный код, жмем Ctrl+C - скопировали  
    5Жмем Ctrl+V - вставляем сколько нужно раз (сколько оборудования)  
    6Потом в каждой строке кода <Перем/Товар> изменяем на нужное оборудование (в "Технике")  
    7Сохраняем, запускаем  
      


    Да, знаю, времени много ушло, но разве оно этого не стоит? . Таким способом можно добавлять себе страховку, кредиты, лицензии... (находятся они также в "Технике"). Это простой скрипт, можно сделать, к примеру, чтобы все, что вы добавили записывалось в бортовой журнал

    Урок закончен.

    Редактировалось 1 раз (а). Последний раз 12.01.2010 14:29:13.

    12.01.2010 14:47:08
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 5. Апгрейды.

    Действие  
    1Создаем скрипт  
    2Тут возможны варианты:  
    2.1Использовать постоянные величины  или "каждый раз спрашиваемые"  
    2.2Для спрашиваемых: Параметры -> <Перем/число>  
    2.3Для постоянных: Сразу вводить в команду (в код)  
    3Опять Код -> Торговые команды -> <Возвр/IF><РеферОбъект> install <Перем/Число> units of <Перем/Товар>  
    4Скопировать и снова вставить код (Ctrl+C & Ctrl+V) (для скорости, маневренности и трюма)  
    5Если переменные величины, то вместо <Перем/Число> ставим переменную, если нет, то в выбираем <Число> и вводим, а в <Перем/Товар> в разделе "Техника" выбираем "Форсирование двигателя"(далее Скорость), "Оптимизация ручного управления"(далее Управляемость), или "Расширение грузового отсека"(далее Трюм)  
    6Сохраняем, запускаем  
      


    Для "Расширения грузового отсека" лучше использовать постоянную, т.к. он, в отличии от скорости и управляемости, не расширится выше заявленного. Как вы могли догадаться и в предыдущих уроках - скорость, управляемость и трюм покупаются как товар, к примеру, на торговых станциях

    Результат для "каждый раз спрашиваемых"


    Урок закончен.

    Редактировалось 1 раз (а). Последний раз 17.05.2010 18:23:27.

    15.01.2010 21:04:37
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 6. Врата


     
    В этом уроке я НЕ буду рисовать таблицу, т.к. я подробно буду описывать что и как делается.
     


    1. Для начала вы должны определиться какой именно скрипт вам нужен:
       
      1. Создание врат на месте, рядом с вами и указание точки выхода (запуск и параметры - ручные) - не рассматривается, есть Хаб и "Прыжок в точку"
      2. Автосоздание врат в определенных точках при загрузке игры. - тогда перейдем к делу

    2. Мы должны определиться, что нам нужно:
      1. Секторы, которые будут соединены (в уроке я соединю Аргон Прайм и Королевский тупик):
        1. Определяем галактический индекс с помощью карты. Промежутки считать.
           
        2. По-горизонтали - X (0-21); По-вертикали - Y (0-16); Земные сектора не считаем.

      2. Координаты врат (в Метрах, т.е. 1000 - 1км)
      3. Доступность врат, время активности

    3. Приступим:

    4. Для начала сделаем автоматический одноразовый запуск, спасибо, MistR'у:
      1. Ищем: Общие команды -> <Возвр/IF> get global variable: name=<Перем/Текст>  - оба значения пускай будут off
      2. Далее: Общие команды -> <Возвp/IF><Выражение> - первое значение - имя переменной, второе значение, пускай имя of, а значение 0
      3. Снова: Общие команды -> <Возвp/IF><Выражение> - Теперь первое уже не переменная, а оператор условного перехода, выбираем "Ввод скрипта -> if"
      4. Продолжаем вводить данные: троеточие красное? жмите Enter! После выбираем в переменных переменную of, потом еще раз Enter, выбираем в действиях знак "==", жмем Enter, выбираем переменную off
      5. Новая строка, идем сюда: Общие команды -> Управление исполнением цикла -> go to label <Метка>, вводим имя метки - end
      6. Идем туда же, только  выбираем else
      7. Первая часть окончена, далее - основной скрипт.


    5. Запишем в переменные гал. индексы (X и Y). Чтобы каждый раз не писать числа и не запутаться. Находим в общих командах:
       Код:
      1. <Возвр/IF><Выражение>
       

      Выбираем переменная, вводим название (например, from.X (координата X первого сектора (Аргон Прайм), в котором стоят врата)) и значение (ввод скрипта -> <Число>), чтобы было вот так:
       Код:
      1. $from.X= 1 ...
       

      Повторяем три раза, введя имя второй раз from.Y (координата Y первого сектора (Аргон Прайм), в котором стоят врата), третий и четверты соответственно (to.X и to.Y (координаты Королевского тупика) они равны нулям), значения переменных - координаты Х и Y соответственно.

      В итоге всё должно выглядеть так:
       Код:
      1. ...
      2. 006 $from.X= 1
      3. 007 $from.Y= 2
      4. 008 $to.X= 0
      5. 009 $to.Y= 0
      6. ...
       


    6. Далее координаты:

      Получим случайное число в заданном диапазоне.
      "Общие команды -> <Возвр/Перем> = = random value from <Перем/Число> from <Перем/Число> -1"
      Пускай это будет переменная xyz
      Пускай первое <Перем/Число> будет равно -10000, а второе +10001. Таким образом мы получим случайное число в диапазоне 20000. Если его потом использовать и как X, и как Y, и как Z, то врата создадутся в воображаемой сфере с центром, совпадающим с центром сектора и радиусом в 10 км.
      Итог:
       Код:
      1. ...
      2. 010 $xyz= random value from -10000 to 10001
      3. ...
       


    7. Нам необходимо знать в каком секторе создать врата, здесь нам и пригодятся наши переменные. Для этого:

      оманды секторов и Галактики -> <Возвр/IF> get sector from universe index: x=<Перем/Число>, y=<Перем/Число>"

      Повторяем два раза. В первом случае <Возвр/IF> (далее переменная)= from.sector, x=from.X, y=from.Y Во втором случае переменная = to.sector, x=to.X, y=to.Y.

      Примечание, переменные задаются сразу же после выбора команды в "Ввод скрипта -> <Переменная>", а остальные переменные уже выбираются сверху, либо создаются новые таким же образом,как и при выборе команды.

      Вот, что должно получиться в шестом пункте:
       Код:
      1. ...
      2. 011 $from.sector= get sector from universe index: x=from.X, y=from.Y
      3. 012 $to.sector= get sector from universe index: x=to.X ,y=to.Y
      4. ...
       


    8. Создание врат.
      Вот мы и подготовились к конкретике, а точнее к созданию врат, нам потребуется две пары врат, для их создания:
      Общие команды для объектов -> Создание объектов -> <ВозврПерем> = create gate: type=<Перем/Число> addto= <Перем/Сектор> gateid=<Перем/Число> dstsecx=<Перем/Число> dstsecy=<Перем/Число> dstgateid=<Перем/Число> x=<Перем/Число> y=<Перем/Число> z=<Перем/Число>
      Повторяем команду два раза.

      Что?Значение 1Значение 2Почему?
      <ВозврПерем>gate1gate2Мы присваиваем переменным каждые из врат
      type=2122Это тип врат. Ниже найдете типы врат.
      addto=from.sectorto.sectorСектора, в которых создадутся врата.
      gateid=nullnullТипы данных врат. (Чем отличается от "type="?)
      dstsecx=to.Xfrom.XX-индекс сектора с парными данным вратами.
      dstsecy=to.Yfrom.YY-индекс сектора с парными данным вратами.
      dstgateid=nullnullТип вторых врат. (Зачем?)
      x=xyzxyzСмотри V пункт
      y=xyzxyzСмотри V пункт
      z=xyzxyzСмотри V пункт



      Типы врат. Тип - <Перем/Число>.
      Тип\НаправлениеNSWE
      Обычныеnull123
      Земные21222324
      Ускорители5678

      *4 - разрушенные врата.
      Хаб: 9-14 - включенные,
      15-20 - выключенные


      ВНИМАНИЕ! Если вам нужна пара взаимосвязанных врат не используйте "Обычные" врата! Земные работают.


    9. Завершаем скрипт:
      1. Общие команды -> set global variable: name=<Перем/Текст> value=<Значение> - имя off, значение 0
      2. Общие команды -> Вызовы скриптов -> return <значение> - значение null
      3. Общие команды -> Управление исполнением цикла -> end conditional
      4. Общие команды -> Управление исполнением цикла -> define label <Метка> - называем ее end
      5. Общие команды -> Вызовы скриптов -> return <значение> - значение null


    10. В конечном итоге должно получиться так:
       Код:
      1. [color=blue]001[/color] [color=green]$of=[/color] get global variable: name= [color=green]$of[/color]
      2. [color=blue]002[/color][color=green] $off == 1 ...[/color]
      3. [color=blue]003[/color] [color=green]if $off == $of ...[/color]
      4. [color=blue]004[/color]  goto label [color=green]end[/color]
      5. [color=blue]005[/color] else
      6. [color=blue]006[/color]  [color=green]$from.X= 1 ...[/color]
      7. [color=blue]007[/color]  [color=green]$from.Y= 3 ...[/color]
      8. [color=blue]008[/color]  [color=green]$to.X= 0 ...[/color]
      9. [color=blue]009[/color]  [color=green]$to.Y= 0 ...[/color]
      10. [color=blue]010[/color]  [color=green]$xyz=[/color] = random value from [color=green]-10000[/color] to [color=green]10001[/color] - 1
      11. [color=blue]011[/color]  [color=green]$from.sector= [/color]get sector from universe index: x= [color=green]$from.X[/color] , y= [color=green]$from.Y[/color]
      12. [color=blue]012[/color]  [color=green]to.sector= [/color]get sector from universe index: x= [color=green]$to.X[/color] , y=[color=green]&to.Y[/color]
      13. [color=blue]013[/color]  [color=green]$gate1=[/color] create gate: type= [color=green]21[/color] addto= [color=green]$from.sector[/color] gateid= [color=green]null[/color] dstsecx= [color=green]$to.X[/color] dstsecy= [color=green]$to.Y[/color] dstgateid= [color=green]null[/color] x= [color=green]$xyz[/color] y= [color=green]$xyz[/color] z= [color=green]$xyz[/color]
      14. [color=blue]014[/color]  [color=green]$gate2=[/color] create gate: type= [color=green]22[/color] addto= [color=green]$to.sector[/color] gateid= [color=green]null[/color] dstsecx= [color=green]$from.X[/color] dstsecy= [color=green]$from.Y[/color] dstgateid= [color=green]null[/color] x= [color=green]$xyz[/color] y= [color=green]$xyz[/color] z= [color=green]$xyz[/color]
      15. [color=blue]015[/color]  set global variable: name= [color=green]$of[/color] value= [color=green]1[/color]
      16. [color=blue]016[/color]   return [color=green]null[/color]
      17. [color=blue]017[/color]  end
      18. [color=blue]018[/color] [color=green]end[/color]:
      19. [color=blue]019[/color]    return [color=green]null[/color]
       



    Насчет автозапуска... Ну у меня не получилось, а делается это добавление префикса setup. , либо !setup (в чем разница смотри выше), а так же изменение имени скрипта в самом скрипте. Вобщем пока довольствуемся ручным запуском, однако два запуска Вы уже совершить не сможете (да и зачем?)

    Вроде все, всем спасибо.
    Урок закончен.
    20.01.2010 19:53:32
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 7. Создаем корабль

    Действие
    1Создаем скрипт
    2Параметры -> Перем/Положение сектора (например, sector)
    2Параметры -> Перем/Тип корабля (например, ship)
    3Код -> Общие команды -> Массивы -> <Возвр/IF><Перем/Массив>[<Перем/Число>] - Повторяем четыре раза. В массиве sector четыре элемента. 0 - координата Х ($x), 1 - координата Y ($y), 2 - координата Z ($z), 3 - Сектор ($sector). Присваиваем переменным соответствующие значения.
    4Код -> Общие команды для объектов -> Создание объектов -> <Возвр/Перем>= create ship: type= <Перем/Тип корабля> owner= <Перем/Раса> addto= <Значение> x= <Перем/Число> y= <Перем/Число> z= <Перем/Число> - Первое выбираем $ship), второе выбираем тоже $ship, третье Выбрать расу - Игрок, четвертое выбираем переменную sector; X,Y,Z - либо соответствующую переменную.
    5Код -> Торговые команды -> для кораблей -> <РеферОбъект> add default items to ship (переменная ship)
    6По желанию: Код -> Торговые команды -> <Возвр/IF><РеферОбъект> add <Перем/Число> units of <Перем/Товар> (как пользовать смотри Урок 3)
    7Сохраняем, запускаем


    Результат


    Урок закончен.

    Редактировалось 2 раз (а). Последний раз 17.05.2010 18:18:15.

    01.02.2010 07:22:33
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 8. Репутация

    Что делать
    1Создаем скрипт.
    2Код -> Общие команды для объектов -> set notoriety <Перем/Раса> -> <Перем/Раса> to <Перем/Число> points
    3Первый <Перем/Раса> - не трогаем; Второй <Перем/Раса> - Ввод скрипта -> Выбрать расу -> Игрок (то имя, котором вы зоветесь); <Перем/Товар> - кол-во очков (см. ниже)
    4Копируем наш код (Ctrl+C) и вставляем (Сtrl+V) до 13 рас (все зависит от того с какими расами вы хотите подружиться (в том числе хааки, ксеноны, яки, пираты и АОГ (да-да - АОГ ))
    5Теперь меняем первый <Перем/Раса> во всех кодах на нужную расу
    6Сохраняем, запускаем.


     
    "Как со всеми помириться, как со всеми по дружиться?"
     



    НомерЗначениеСловами
    -5-1000000минус миллион
    -4-100000минус сто тысяч
    -3-10000минус десять тысяч
    -2-1000минус тысяча
    -1-100минус сто
    0-10минус десять
    110десять
    233тридцать три
    3100сто
    4333триста тридцать три
    51000тысяча
    63333три тысячи триста тридцать три
    710000десять тысяч
    833333тридцать три тысячи триста тридцать три
    9100000сто тысяч
    10333333триста тридцать три тысячи триста тридцать три


     
    Примечание: Некоторые все равно останутся красными, однако Хаакский эсминец хоть и был красным, он не вздумал в меня пулять даже когда я в него выстрелил. Уважает, сцуко .
     


    Урок закончен.
     

    Редактировалось 1 раз (а). Последний раз 01.02.2010 07:23:51.

    01.02.2010 07:48:35
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 9. Супер-Шип by КС

    Действие  
    1Создаем скрипт.  
    2Код->Общие команды-><Возвр/IF><Выражение> - <Возвр/IF> - ввод скрипта->while. <Выражение> - Число->1. Таким образом мы начинаем тело цикла и делаем его бесконечным.  
    3Все команды в третьем шаге находятся в Код->Общие команды для объектов  
    3.1.1$hull=[PLAYERSHIP] -> get max hull   
    3.1.2[PLAYERSHIP] -> set hull to $hull   
    3.2.1$shields=[PLAYERSHIP] -> get maximum shield strength   
    3.2.1[PLAYERSHIP] -> set current shield strength to $shields   
    3.3.1 $laser=[PLAYERSHIP] -> get maximum laser strength   
    3.3.2[PLAYERSHIP] -> set laser energy to $laser   
    4Код->Общие команды->@ wait <Перем/Число> ms - выбирать <не возвращает значения>. <Перем/Число> пускай 100. Выставляе задержку, равную 100 миллисекундам. Без задержки игра зависнет.  
    5Код->Общие команды->Управление исполнением цикла->End conditionalЗавершаем тело цикла.  
    6Сохраняем, запускаем  
      


    По сути мы получаем максимальное значение корпуса(3.1.1), щита(3.2.1), лазера(3.3.1) и устанавливаем текущее (current) значение оных на максимальное
    (3.1.2;3.2.2;3.3.2). Все 3.х.х мы знаем как оформить из предыдущих уроков . А заново расписывать... :rolleyes:
    Напомню, что [PLAYERSHIP] - это константа и находится в соответсвующем списке.
    Внимание оценивайте через шапку темы! Т.к. оценивать надо не меня

    Результат


    Урок закончен.

    Редактировалось 4 раз (а). Последний раз 17.05.2010 18:20:19.

    01.02.2010 07:49:30
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 10. Разбираем скрипт "Точка-в-точку"


    Здесь, как и в 7 уроке я не буду составлять табицу. Как можно догадаться из названия, я буду объяснять структуру этого скрипта и пары инициализирующих.
    П.С. Код не оптимизирован, но работает)

    Часть I. Основной скрипт

    Для начала взглянем на него:

    Ссылка на сам скрипт внизу.
    Разбираем:
    В верхней части название, версия, описание.

    Arguments (Аргументы): Именно это спрашивается у нас, когда запускается скрипт, т.е. просит выбрать сектор и позицию.
    То что мы ввели ввели записывается в переменную $sector типа Массив.

    Source Text (код): непосредственно исполняемая часть скрипта. Поехали попорядку:

     Код:
    1. 001   $ship=[PLAYERSHIP] -> get ware type code of object
    2. 002   if$ship != Экспериментальный шаттл
    3. 003   |=speak text: page=17 id=3983 priority=2
    4. 004   |=speak text: page=13 id=1356 priority=2
    5. 005   else
    6. ...
    7. 061   end
    8. 062   return null
     

    001 - мы получаем тип объекта, в котором находится игрок и записываем полученное знасение в переменную $ship
    002 - "если (if) значение переменной шип($ship) не равно (!=) Экспериментальный шаттл", то тут возможно два варианта: TRUE (далее "T") или FALSE (далее "F"), т.е. если условие выполняется (T), то выполняются строчки, идущие до else (иначе). Если условие не выполняется (F), то выполняются строчки от else до end.
    при выполнении 003 и 004 бортовой компьютер произносит (далее "Бетти") фразу "Прыжковый двигатель... не отвечает".
    По идее именно эта часть скрипта определяет является ли корабль Экспериментальным Шаттлом.

     Код:
    1. 006   |$currshield=[PLAYERSHIP] -> get current shield strength
    2. 007   |$maxshield=[PLAYERSHIP] -> get maximum shield strength
    3. 008   |if$maxshield > 0
    4. 009   ||if$currshield >= $maxshield / 2
    5. ...
    6. 055   ||else
    7. 056   |||=speak text: page=13 id=1100056 priority=10
    8. 057   ||end
    9. 058   |else
    10. 059   ||=speak text: page=13 id=1100056 priority=10
    11. 060   |end
     

    Сейчас нам нужно узнать достаточно ли энергии щита для прыжка:
    006 Получаем значение текущей энергии щита (в джоулях)
    007 Получаем маскимальное значение щита (в джоулях)
    008 Т.к. если на корабле щита вообще не будет, то и энергия будет отсутствовать. Проверяем установлен ли щит. Если T, то идем дальше, если F, то переходим к 58 строке, где бетти говорит, что недостаточно энергии. И переходим к 62 строке, т.е. аборт.
    009 Проверяем выше ли текущий щит 50%. Если T, то идем дальше. Если F - "Недостаточно энергии" и аборт.
    Строки 057 и 060 завершают работу оператора условного перехода (т.е. if). Строки 055 и 058 - "иначе". Больше к ним возвращаться не будем.

     Код:
    1. 010   |||$x=$sector[0]
    2. 011   |||$y=$sector[1]
    3. 012   |||$z=$sector[2]
    4. 013   |||$sector=$sector[3]
    5. 014   |||=speak text: page=13 id=6 priority=3
    6. 015 @ |||=wait randomly from 1500 to 2500 ms
    7. 016   |||$batery=[PLAYERSHIP] -> needed jump drive energy for jump to sector $sector
    8. 017   |||$bateryest=[PLAYERSHIP] -> get volume of ware Батареи in cargo bay
    9. 018   |||if$bateryest >= $batery
    10. ...
    11. 052   |||else
    12. 053   ||||=speak text: page=13 id=1100056 priority=10
    13. 054   |||end
     

    010 - 013 записываем координаты в переменные.
    014 - бетти говорит: "Наведение на цель"
    015 - задержка от 1,5-2,5 сек. (типа наведение )
    016 - получаем необходимое кол-во батарей для прыжка в целевой сектор
    017 - получаем кол-во батарей в трюме.
    018 - сравниваем. Если в трюме батарей больше либо равно необходимому кол-ву, то получаем T  и идем дальше, если F, то "Энергии не хватает" и аборт.

     Код:
    1. 019   ||||$jumps=$batery / 5
    2. 020   ||||$veroyat= = random value from 0 to 6 - 1
    3. 021   ||||if$veroyat != 0
    4. ...
    5. 029   ||||else
    6. ...
    7. 051   ||||end
     

    019 - получаем кол-во прыжков
    020 - Вот он ВЕЛИКИЙ И МОГУЧИЙ НЕМЕЦКИЙ РАНДОМ!
    021 - если рандомное число не 0, то начинает выполняться прыжок туда, куда нужно.
    029 - Если рандомное число 0, то начиает выполняться прыжок с отклонением от заданного курса
    051 - завершает условие

     Код:
    1. 022   |||||=speak text: page=13 id=1294 priority=3
    2. 023   |||||=[PLAYERSHIP] -> use jump drive: target=$sector
    3. 024   |||||[PLAYERSHIP] -> set position: x=$x y=$y z=$z
    4. 025   |||||$shield=[PLAYERSHIP] -> get maximum shield strength
    5. 026   |||||$shield=$shield / 20
    6. 027   |||||[PLAYERSHIP] -> set current shield strength to $shield
    7. 028   |||||=speak text: page=13 id=1100014 priority=1
     


    022 - бетти говорит: "Готово" (наведение на цель)
    023 - прыжок
    024 перемещение корабля по заданным координатам. Дело в том, что в 023 строке target (цель) может быть или врата или сектор. Если сектор, то вы появляетесь в его центре. А мы прыгаем по координатам.
    025 - получаем макс. мощность.
    026 - делим на 20.
    027 - устанавливаем щиты корабля на одну двадцатую от макс энергии щита.
    028 - бетти: "Бортовой компьютер ожидает новых команд"
    051 - аборт

     Код:
    1. 030   |||||=speak text: page=13 id=1351 priority=1
    2. 031   |||||=speak text: page=13 id=1282 priority=1
    3. 032   |||||$randsect= find a random sector: startsector=$sector, jumps=$jumps, owner=null
    4. 033   |||||=[PLAYERSHIP] -> use jump drive: target=$randsect
    5. 034   |||||$x= = random value from 0 to 100000 - 1
    6. 035   |||||$y= = random value from 0 to 100000 - 1
    7. 036   |||||$z= = random value from 0 to 100000 - 1
    8. 037   |||||[PLAYERSHIP] -> set position: x=$x y=$y z=$z
    9. 038   |||||[PLAYERSHIP] -> set current shield strength to 0
    10. 039   |||||$damage= = random value from 0 to 10 - 1
    11. 040   |||||$hull=[PLAYERSHIP] -> get hull
    12. 041   |||||$hullperc=$hull / 100 * $damage
    13. 042   |||||$hull=$hull - $hullperc
    14. 043   |||||[PLAYERSHIP] -> set hull to $hull
    15. 044   |||||=speak text: page=13 id=1280 priority=1
    16. 045 @ |||||=wait 1000 ms
    17. 046   |||||=speak text: page=13 id=1270 priority=1
    18. 047 @ |||||=wait 1000 ms
    19. 048   |||||=speak text: page=13 id=1324 priority=1
    20. 049 @ |||||=wait 1000 ms
    21. 050   |||||=speak text: page=13 id=1100014 priority=0
     


    030-031 - опять бетти
    032 - еще один рандом. Теперь рандомный сектор. Макс удаление - энергия, деленная на пять, необходимая для прыжка.
    033 - прыжок
    034-036 - получение случайных координат
    037 перемещение корабля по координатам
    038 - снимаем щит
    039 - опять рандом - процент повреждения корпуса
    040-043 - повреждаем корпус
    044-050 - проверка корабля и задержка.

    Ну вот. Основной скрипт готов. Теперь надо его офрмить:

    Часть II. Текстовый файл

    В текстовом файле находятся все тексты из игры.
    Текстовый файл хранится в расширении *.xml.
    Приступим:
    Создадим блокнотом в папке t файл формата ХХХХ-L0YY.xml, где ХХХХ - id файла (у меня 4531), а YY - язык (07 - Русский).
    Шаблон текстового файла:


     Код:
    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <language id="7">
    3.  
    4. <page id=" " title=" " descr=" ">
    5.  <t id=" "> </t>
    6. </page>
    7. </language>
     

    Внимание! Пересохраните документ, указав в кодировке UTF-8
    Если посмотреть, то структура его проста. Но для редактирования я предпочитаю программу XML Notepad. Она на английском.
    Как редактировать вы разберетесь. Вот мануал. Не смотрите, что для Х2. В Х3 практичеки ничего не поменялось.

    Часть III. Инициализация

    Скрипт инициализации команды и текстового файла (назовем его setup.masltrime.jump.text(!!!Внимание! префикс setup. (с точкой) очень важен!):
     Код:
    1. 001   load text: id=4531
    2. 002   $command=COMMAND_TYPE_SHIP_55
    3. 003   global script map: set: key=$command, class=M3, race=Player, script='Malstrime.Jump', prio=1
    4. 004   set script command upgrade: command=$command  upgrade=Прыжковый двигатель
    5. 005   return null
     

    001 - подгружаем текстовый файл, id которго мы указали в названии текстового файла.
    002 - присваиваем переменной команду COMMAND_SHIP_TYPE_55
    003 - устанавливаем связь между командой и скриптом (класс корабля - М3, владелец - Игрок)
    004 - ограничиваем появление команды на кораблях, на которых отсутствует джампдрайв
    005 - аборт
    строку 004 можно повторять несколько раз для более точного фильтра.
    Команде COMMAND_SHIP_TYPE_55 соответствует номер 1255 (12 - допонительные, 55 - порядковый номер).

    Часть IV. Дорабатываем тесктовый файл

    Открывем текстовый файл.
    Нам нужно четыре страницы. Копипастим, чтобы было вот так:
     Код:
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <language id="7">
    3.   <page id=" " title=" " descr=" ">
    4.     <t id=" "></t>
    5.   </page>
    6.   <page id=" " title=" " descr=" ">
    7.     <t id=" "> </t>
    8.   </page>
    9.   <page id=" " title=" " descr=" ">
    10.     <t id=" "></t>
    11.   </page>
    12.   <page id=" " title=" " descr=" ">
    13.     <t id=" "> </t>
    14.   </page>
    15. </language>
     

    Меняем значения, чтобы было вот так:
     Код:
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <language id="7">
    3.   <page id="2010" title="Script Cmd Names" descr=" ">
    4.     <t id="1255">Полное имя</t>
    5.   </page>
    6.   <page id="2011" title="Script Cmd Shorts" descr=" ">
    7.     <t id="1255">Краткое имя</t>
    8.   </page>
    9.   <page id="2022" title="Command Info" descr=" ">
    10.     <t id="1255">Описание (любой текст)</t>
    11.   </page>
    12.   <page id="2008" title="Script Object Commands" descr=" ">
    13.     <t id="1255">Malstrime_Jump</t>
    14.   </page>
    15. </language>
     

     Код:
    1.  <page id="2010" title="Script Cmd Names" descr=" ">
     

    2010 - это полное имя команды, 2011 - краткое, 2022 - описание, 2008 - название команды (в РС)
    Script Cmd Names и другие - имена. Их надо ставить в соответствии с id страницы. descr роли не играет
     Код:
    1. <t id="1255">Текст</t>
     

    1255 - id текста для команды под таким же id.
    Заполняем поля текста. Сохраняем. Тесктовый файл готов.

    Часть V. Дорабатываем инициализирующий скрипт
     
    Переименуйте имя скрипта setup.malstrime.jump.text в !setup.malstrime.jump.text
    Откройте этот скрипт блокнотом. Вверху ищите <name>setup.malstrime.jump.text</name>. Точно также добавьте !
    Внизу найдите:
    И тоже добавтьте !. Сохраните.
    Вот впринципе и все. Удачи! "Точка-в-точку"

    Урок закончен.

    Редактировалось 2 раз (а). Последний раз 30.04.2010 13:25:11.

    30.04.2010 16:38:03
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 11. Собственная музыка в секторах


    Этот урок посвящен не совсем скриптам, но модификации игры. Каждый из нас хотел собственную музыку в сектора. Некоторые мотивируются тем, что секторов больше 250, а треков кот наплакал. Чтож, здесь я вам обо всем расскажу .

    Для начала нам необходимо:
    • X3:Editor
    • Сами композиции
    Сразу скажу, что если вы захотите поменять много музыки, то Вам потребуется много треков, а треки надо переименовывать в чисельные символы, т.е. название формата 01234.mp3, а значит нужно в них ориентироваться. Пусть названия треков будут формата 1XY.mp3, где X и Y - галактические координаты секторов. Т.е. для Аргон Прайм трек будет именоваться как 10103.mp3, а Край Еретиков 11304.mp3. Итак, приступим.

    Поменяем музыку в секторе Аргон прайм.
    1. Открываем X3:Editor и выбираем пункт Galaxy Editor
    2. Жмем Open
    3. Ищем 08.cat и открываем его
    4. Открываем папку maps и выбираем файл x3_universe.pck
    5. Жмем на кнопку Universe
    6. На открывшейся карте выбираем Argon Prime ОДНИМ щелчком и жмем на крестик, чтобы закрыть карту.
    7. Двойным щелчком редактируем параметр sector - music
    8. Вместо стандартного 8100 вписываем наш 10103.mp3
    9. Сохраняем и закрываем.

    Вот скриншоты, если что-то не поняли.

    Внимание! Для работы надо начать новую игру.
    Спасибо за внимание!

    Урок закончен.

    Редактировалось 1 раз (а). Последний раз 24.05.2010 21:12:48.

    30.04.2010 16:38:51
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 12. Горячая клавиша

    Действие 
    1Создаем скрипт, называем его  
    2Код -> Общие команды -> <ВозврПерем> = register hotkey <Перем/Текст> to call script <Имя скрипта>  
    3Первое возвращаемое значение - номер горячей клавиши. Оно записывается в переменную.  
    4Второе - название горячей клавиши  
    5Третье - имя скрипта, который мы вызываем. Скрипт придется создать заранее.  
    5Сохраняем, запускаем.  
      


    Назначить горячую клавишу Вы можете, зайдя в "Управление" -> "Интерфейс" раздел "Дополнения".
    На этом все)
    Урок закончен.

    Редактировалось 2 раз (а). Последний раз 10.06.2010 18:27:05.

    30.04.2010 16:39:12
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
    Урок 13. Языковые файлы и новая команда


    Все вы наверно не раз слышали о языковых файлах и новых командах в различных меню...
    Здесь я попытаюсь все объяснить. Что и как устроено. Ах да, для правки рекомендую использовать XML Notepad. Итак, начнем!

    Для начала рассмотрим языковой файл.
    Все языковые файлы носят определенный формат имени. Например имя 1234-L007 говорит нам о том, что номер языкового файла 1234, а регион 7-ой (Россия). Т.е. Языковой файл имеет формат ХХХХ-L0YY, где XXXX - ID текстового файла, а YY - язык (07 - Российский, 44 - Английский). Игра в зависимости от локализации сама выберет нужный файл. Рассмотрим структуру языкового файла, открыв его в блокноте:
     Код:
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <language id="7">
    3.   <page id="1" name="name">
    4.     <t id="1">text</t>
    5.   </page>
    6. </language>
     

    В первой стороке указывается версия xml и кодировка введенного текста.
    Во 2 и последней теги "языка". Во второй указывается язык., соответствующий названию файла.
    3&5 строки - теги страницы. В 3 третьей строки указывается id страницы (pageid).
    В 4 строке тег текста, где указывается номер текста (textid или просто id). Кол-во страниц и тестов неограниченно (или в крайнем случае достаточно велико). Как видите в XML Notepad'e намного удобнее работать:

    Абсолютно весь текст, включая цифры и символы, хранится в языковых файлах игры.
    Языковые файлы могут модифицировать друг друга. Если в языковых файлах используются одинаковые страницы, то будет отображаться та страница, которая загрузится позже, однако, если вы не заменяете тексты игры, то можете спокойно создавать страницы, будучи уверенным(ой), что ни с кем в конфликт языковой файл не вступит. Посмотреть список используемых игрой страниц Вы можете, открыв 0001-L007.xml (он запакован в cat/dat).

    Для сегодняшнего урока нам понадобятся страницы 2010, 2011 и 2022. ID текстов (они должны совпадать на всех трех страницах) Вы можете выбрать из таблицы:

    РазделID страницыРасположениеКоманда (в зависимости от id страницы)
    Navigation200-261Командное меню, НавигацияCOMMAND_TYPE_NAV_00 to 61
    Combat300-361Командное меню, БоевыеCOMMAND_TYPE_FIGHT_00 to 61
    Trade400-461Командное меню, ТорговыеCOMMAND_TYPE_TRADE_00 to 61
    Special500-561Командное меню, СпециальныеCOMMAND_TYPE_SPECIAL_00 to 61
    Piracy600-661Командное меню, ПиратскиеCOMMAND_TYPE_PIRACY_00 to 61
    Custom700-761Командное меню, ВыборочныеCOMMAND_TYPE_CUSTOM_00 to 61
    General800-861Командное меню, ОбщиеCOMMAND_TYPE_GENERAL_00 to 61
    Turret900-961Меню турелей (из основного меню)COMMAND_TYPE_TURRET_00 to 61
    Station1100-1161Командная консоль станцийCOMMAND_TYPE_STATION_00 to 61
    Ship1200-1261Дополнительные корабельные командыCOMMAND_TYPE_SHIP_00 to 61


    Я выбрал COMMAND_TYPE_NAV_55. Значит и нужная мне страница будет 255

    Теперь о нужных страницах. Я уже упоминал 2010, 2011 и 2022. Теперь об их назначении:
     
    2010
    Эта страница содержит текст являющийся длинной версией имени команды. То есть этот текст отражаемся в виде пункта в меню. Также именно этот текст будет отражен в разделе команда информационного экрана и в разделе команда списка вашей собственности (при условии что в теле вызываемого будет присутствовать инструкция set command, иначе во всех информационных окнах вместо имя выполняемой команды будет отражаться «Нет команд»)
    2011
    На этой странице находятся короткие имена команд. Короткие имена отражаются в командном меню справа от длинных имен, тек же короткое имя команды отражается в верхней части экрана также справа от длинного имени в главном окне командного меню .
    2022
    На этой странице находится краткое описание вашей команды. Это описание не является обязательным, но не забывайте что ваши скрипты будут использовать другие пилоты, и по этому желательно создавая в командном меню новую команду, делать для нее краткое описание. Наличие данного описания на соответствующей странице добавит небольшой значок в виде буквы «i», между длинным и коротким именем команды при отражении меню, а при нажатии на клавишу «i», при курсоре установленном на вашу команду на экране отразиться окно содержащее описание вашей команды.
     


    Текст можно раскрашивать... Для этого перед текстом укажите соответствующие символы. Вот таблица:
    СпецсимволЦвет
    \033BСиний
    \033CГолубой
    \033GЗеленый
    \033MМалиновый
    \033RКрасный
    \033WБелый
    \033XЯрко-белый (стандарт для меню)
    \033YЖелтый
    \033ZСерый
    \nПеревод строки (форматирующий, не для цвета!)


    Итак, редактируем свой языковой файл. Пусть команда будет называться "Первая команда". В блокноте:

     Код:
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <language id="7">
    3.   <page id="2010" name="name">
    4.     <t id="255">Первая команда</t>
    5.   </page>
    6.   <page id="2011" name="name">
    7.     <t id="255">Перв. ком.</t>
    8.   </page>
    9.   <page id="2022" name="name">
    10.     <t id="255">Это описание моей первой команды.</t>
    11.   </page>
    12. </language>
     


    Попробуем добавить команду всем истребителям за исключением М5, у которых установлен БПМ-1.

    Итак, запускаем игру. Заходим в редактор скриптов и создаем скрипт. Желательно с префиксом setup.

    Для начала игра должна знать какой файл ей читать. В общих командах находим команду load text: id=<Перем/Число> в ней указываем номер языкового файла. У меня 1234 :)
    Во второй строке для нашего удобства присваиваем переменной $comand значение COMMAND_TYPE_NAV_55
    В третьей мы должны зарегистрировать команду. Общие команды -> Команды/Сигналы -> global script map: set: key=<Перем/Сигнал>, class= <Перем/Класс>, race=<Перем/Раса>, script=<Имя скрипта>, prio=<Перем/Число> Здесь key - переменная $comand, class - Истребител, race - Игрок, скрипт - произвольный (или какой-либо Ваш), prio - Приоритет? Я всегда ставлю 1
    Так как мы должны исключить класс М5, в четвертой строке в тех же командах строчкой ниже находим команду global script map: ignore: key=<Перем/Сигнал>, class= <Перем/Класс>, race=<Перем/Раса> все аналогично третьей строке, только в классе надо указать М5
    Теперь команда зарегистрирована, но еще не создана.
    В строке ниже находим команду set script command upgrade: command=<Перем/Сигнал> upgrade=<Перем/Товар> на месте первого значения опять же переменная $comand, а на втором выбираем БПМ-1 (если поставить [TRUE], то команда будет появляться всегда).
    Вот то, что у меня в скрипте:

    Теперь сохраняем и запускаем его.
    Теперь сидя на М4 или М3 и имея БПМ-1, заходим в консоль навигации...
    И, преисполняясь радостью, со щенячьим визгом идем рассказывать семье о том, что Вы сделали! 

    Удачи!
    Урок закончен.

    Редактировалось 1 раз (а). Последний раз 10.06.2010 19:56:38.

    30.04.2010 16:39:35
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
     
    Дополнение к Пособию "Скрипты. Что это и с чем их едят."
     

    Список всех скриптовых команд. Часть 1.

  • Общие команды
     Код:
    1. <RetVar/IF><Expression>
    2. inc <RetVar>
    3. dec <RetVar>
    4. @ <RetVar/IF> wait <Var/Number> ms
    5. @ <RetVar/IF> wait randomly from <Var/Number> to <Var/Number> ms
    6. <RetVar/IF> = random value from 0 to <Var/Number> - 1
    7. <RetVar> = random value from <Var/Number> to <Var/Number> - 1
    8. * <Comment>
    9. <RetVar> = script engine version
    10. <RetVar> = get script version
    11. <RetVar/IF> is a new script version available
    12. <RetVar> = get script name
    13. <RetVar> = get script priority
    14. set script priority to <Var/Number>
    15. infinite loop detection enabled=<Var/Number>
    16. <RetVar/IF> is script with prio <Var/Number> on stack
    17. <RetVar/IF> get task ID
    18. <RetVar/IF> get PID
    19. enable signal/interrupt handling: <Var/Number>
    20. <RetVar/IF> is signal/interrupt handling on
    21. <RefObj> -> set local variable: name=<Var/String> value=<Value>
    22. <RetVar/IF> <RefObj> -> get local variable: name=<Var/String>
    23. set global variable: name=<Var/String> value=<Value>
    24. <RetVar/IF> get global variable: name=<Var/String>
    25. <RetVar> = datatyp[<Value>]
    26. <RetVar/IF> is datatyp[<Value>] == <Var/Script Data Type>
    27. <RetVar> = read text: page=<Var/Number> id=<Var/Number>
    28. <RetVar/IF> read text: page id=<Var/Number>, from <Var/Number> to <Var/Number> to array, include empty=<Var/Number>
    29. <RetVar/IF> read text: page id=<Var/Number>, id=<Var/Number> exists
    30. <RetVar> = sprintf: fmt=<Var/String>, <Value>, <Value>, <Value>, <Value>, <Value>
    31. <RetVar> = sprintf: pageid=<Var/Number> textid=<Var/Number>, <Value>, <Value>, <Value>, <Value>, <Value>
    32. load text: id=<Var/Number>
    33. <RetVar/IF> state of news article: page=<Var/Number> id=<Var/Number>
    34. set state of news article page=<Var/Number> id=<Var/Number> to <Var/Number>
    35. <RetVar/IF> system date is month=<Var/Number>, day=<Var/Number>
    36. <RetVar> = playing time
    37. <RetVar/IF> is plot <Var/Number> state flag <Var/Number>
    38. <RetVar> = register hotkey <Var/String> to call script <Script Name>
    39. <RetVar> = register hotkey <Var/String> to call script name <Var/String>
    40. unregister hotkey <Var/Number>
    41. <RetVar> = last load time
    42. <RetVar/IF> <RefObj> -> get all local variable keys, starting with=<Var/String>
    43. <RetVar/IF> get all global variable keys, starting with=<Var/String>
    44. <RetVar/IF> <RefObj> -> get local variables: regular expression=<Var/String>
    45. <RetVar/IF> get global variables: regular expression=<Var/String>
    46. <RetVar> = get maximum, <Var/Number>, <Var/Number>, <Var/Number>, <Var/Number>, <Var/Number>
     


  • Общие команды - Управление исполнением цикла
     Код:
    1. end conditional
    2. else
    3. continue
    4. break
    5. goto label <Label>
    6. gosub <Label>
    7. define label <Label>
    8. endsub
     

  • Общие команды - Вызовы скриптов
     Код:
    1. @ <RetVar/IF/START><RefObj> call script <Script Name> : <Parameter>
    2. <RefObj> interrupt with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value>
    3. <RefObj> interrupt task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value>
    4. <RefObj> start task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value> arg5=<Value>
    5. return <Value>
    6. <RetVar/IF> <RefObj> -> is script <Script Name> on stack of task=<Var/Number>
    7. <RetVar/IF> <RefObj> -> is task <Var/Number> in use
    8. <RetVar/IF> <RefObj> -> call named script: script=<Var/String>, <Value>, <Value>, <Value>, <Value>, <Value>
    9. <RefObj> -> start named script: task=<Var/Number> scriptname=<Var/String> prio=<Var/Number>, <Value>, <Value>, <Value>, <Value>, <Value>
    10. <RetVar> = <RefObj> -> get next available task: starting=<Var/Number>
    11. <RefObj> -> interrupt with script <Script Name> and prio <Var/Number>
     

  • Общие команды - Массивы
     Код:
    1. <RetVar> = array alloc: size=<Var/Number>
    2. <RetVar/IF><Var/Array>[<Var/Number>]
    3. <Var/Array>[<Var/Number>] = <Value>
    4. <RetVar/IF><Var/Array>[<Var/Number>][<Var/Number>]
    5. <Var/Array>[<Var/Number>][<Var/Number>] = <Value>
    6. <RetVar/IF> size of array <Var/Array>
    7. <RetVar> = clone array <Var/Array>: index <Var/Number> ... <Var/Number>
    8. copy array <Var/Array> index <Var/Number> ... <Var/Number> into array <Var/Array> at index <Var/Number>
    9. insert <Value> into array <Var/Array> at index <Var/Number>
    10. append <Value> to array <Var/Array>
    11. remove element from array <Var/Array> at index <Var/Number>
    12. resize array <Var/Array> to <Var/Number>
    13. <RetVar> = get index of <Value> in array <Var/Array> offset=<Var/Number> + 1
    14. <Var/Array>[<Var/Number>] = <Var/Array>[<Var/Number>]
    15. <RetVar> = sort array <Value>
    16. <RetVar> = sort array: data=<Value> sort values=<Value>
    17. <RetVar/IF> find <Value> in array: <Value>
    18. <RetVar> = create new array, arguments=<Value>, <Value>, <Value>, <Value>, <Value>
    19. <RetVar/IF> reverse array <Value>
    20. <RetVar/IF> arrays <Value> and <Value> are equal
     


  • Общие команды - Строки
     Код:
    1. <RetVar/IF> get length of string <Var/String>
    2. <RetVar> = find position of pattern <Var/String> in <Var/String>
    3. <RetVar> = get substring of <Var/String> offset=<Var/Number> length=<Var/Number>
    4. <RetVar> = string <Var/String> to integer
    5. <RetVar> = substitute in string <Var/String>: pattern <Var/String> with <Var/String>
    6. <RetVar> = convert number <Var/Number> to string
    7. <RetVar> = format time: <Var/Number>
    8. <RetVar/IF> match regular expression: <Var/String> to string <Var/String>
    9. <RetVar/IF> get string font length: <Var/String>
     

  • Общие команды - Вычисления
     Код:
    1. <RetVar> = = fixed sin <Var/Number>
    2. <RetVar> = = fixed cos <Var/Number>
    3. <RetVar> = square root of <Var/Number>
     


  • Общие команды - Команды/Сигналы
     Код:
    1. <RefObj> -> connect ship command/signal <Object Command/Signal> to script <Script Name> with prio <Var/Number>
    2. <RefObj> -> set ship command/signal <Object Command/Signal> to global default behaviour
    3. <RefObj> -> ignore ship command/signal <Object Command/Signal>
    4. <RefObj> -> add secondary signal: signal=<Object Signal>, script=<Script Name>, prio=<Var/Number>, name=<Var/String>
    5. <RefObj> -> remove secondary signal: signal=<Object Signal>, name=<Var/String>
    6. global secondary signal map: add signal=<Object Signal> race=<Var/Race> class=<Var/Class> script=<Script Name> prio=<Var/Number> name=<Var/String>
    7. global secondary signal map: remove signal=<Object Signal> race=<Var/Race> class=<Var/Class> name=<Var/String>
    8. global script map: set: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>, script=<Script Name>, prio=<Var/Number>
    9. global script map: remove: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>
    10. global script map: ignore: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>
    11. set script command upgrade: command=<Object Command/Signal> upgrade=<Var/Ware>
    12. <RetVar> = get script command upgrade: command=<Object Command/Signal>
    13. set script command upgrade: command=<Object Command/Signal> upgrade=<Var/Ware> script=<Script Name>
    14. set ship command preload script: command=<Object Command/Signal> script=<Script Name>
    15. global script map for wings: key=<Var/Wing Command> race=<Var/Race> script=<Script Name> prio=<Var/Number>
    16. set script command upgrade: wing command=<Var/Wing Command> upgrade=<Var/Ware>
    17. set script command upgrade: wing command=<Var/Wing Command> upgrade=<Var/Ware> script=<Script Name>
    18. set wing command preload script: wing command=<Var/Wing Command> script=<Script Name>
    19. add ship custom command: id=<Var/Number>
    20. remove ship custom command: id=<Var/Number>
    21. <RetVar> = ship custom command exists: id=<Var/Number>
    22. set script command: <Object Command/Signal>
    23. <RetVar/IF> get script command
    24. set script command target: <Value>
    25. <RetVar/IF> get script command target
    26. <RefObj> -> connect wing command/signal <Object Command/Signal> to script <Script Name> with prio <Var/Number>
     

  • Аудио команды
     Код:
    1. play sample <Var/Number>
    2. play sample: incoming transmission <Var/Number>, from object <Value>
    3. <RefObj> -> send audio message <Var/Number> to player
    4. send incoming message <Var/String> to player: display it=<Var/Number>
    5. <RefObj> -> send incoming message: text=<Var/String> temporary=<Var/Boolean>
    6. send incoming question <Var/String> to player: callback=<Script Name>
    7. send incoming question <Var/String> to player: callback=<Script Name> flags=<Var/Number>
    8. <RetVar> = <RefObj> -> serialise object
    9. <RetVar/IF/START> speak text: page=<Var/Number> id=<Var/Number> priority=<Var/Number>
    10. display subtitle text: text=<Var/String> duration=<Var/Number> ms
    11. <RetVar/IF> <RefObj> -> get object name array
    12. <RetVar/IF> get text id: ware=<Var/Ware>
    13. <RetVar/IF/START> speak array: <Value> prio=<Var/Number>
     

  • Команды бортжурнала
     Код:
    1. write to player logbook <Value>
    2. write to player logbook: printf: fmt=<Var/String>, <Value>, <Value>, <Value>, <Value>, <Value>
    3. write to player logbook: printf: pageid=<Var/Number> textid=<Var/Number>, <Value>, <Value>, <Value>, <Value>, <Value>
    4. <RefObj> -> write to logbook <Value>
    5. write to log file <Var/Number> append=<Var/Number> value=<Value>
    6. write to log file <Var/Number> append=<Var/Number> printf: fmt=<Var/String>, <Value>, <Value>, <Value>, <Value>, <Value>
    7. write to log file <Var/Number> append=<Var/Number> printf: pageid=<Var/Number> textid=<Var/Number>, <Value>, <Value>, <Value>, <Value>, <Value>
     


  • Команды автопилота
     Код:
    1. @ <RetVar/IF> <RefObj> -> fly to home base
    2. @ <RetVar/IF> <RefObj> -> fly to station <Var/Station>
    3. @ <RetVar/IF> <RefObj> -> fly to sector <Var/Sector>
    4. <RetVar/IF> <RefObj> -> find nearest enemy ship: max.dist=<Var/Number>
    5. <RetVar/IF> <RefObj> -> find nearest enemy station: max.dist=<Var/Number>
    6. <RetVar/IF> <RefObj> -> fire lasers on target <Value> using turret <Var/Number>
    7. @ <RetVar/IF> <RefObj> -> turn turret <Var/Number> to target <Var/Ship/Station>: timeout=<Var/Number> ms
    8. @ <RetVar/IF> <RefObj> -> attack run on target <Value>: timeout=<Var/Number> ms
    9. @ <RetVar/IF> <RefObj> -> defensive move: type=<Var/Number>, intensity=<Var/Number>, timeout=<Var/Number> ms, avoid object=<Value>
    10. @ <RetVar/IF> <RefObj> -> move to ware object <Value> for collecting: timeout=<Var/Number> ms
    11. <RetVar/IF> <RefObj> -> catch ware object <Value>
    12. @ <RetVar/IF> <RefObj> -> move around <Var/Number> ms
    13. @ <RetVar/IF> <RefObj> -> escort ship <Var/Ship>
    14. @ <RetVar/IF> <RefObj> -> escort ship <Var/Ship>: timeout=<Var/Number> ms
    15. <RefObj> -> set formation <Var/Number>
    16. <RefObj> -> add to formation with leader <Var/Ship>
    17. <RefObj> -> remove from any formation
    18. <RetVar/IF> <RefObj> -> get formation leader
    19. <RetVar> = <RefObj> -> get formation follower ships
    20. <RetVar> = <RefObj> -> get formation
    21. <RetVar> = <RefObj> -> select new formation leader by: ship class=<Var/Number> strength=<Var/Number> min.speed=<Var/Number>
    22. <RetVar/IF> <RefObj> -> has formation ships
    23. <RefObj> -> give formation leadership to <Var/Ship>
    24. <RefObj> -> set as player wingman: <Var/Number>
    25. <RetVar/IF> <RefObj> -> is player wingman
    26. START <RefObj> -> command <Object Command>: arg1=<Value>, arg2=<Value>, arg3=<Value>, arg4=<Value>
    27. START <RefObj> -> delayed command <Object Command>: arg1=<Value>, arg2=<Value>, arg3=<Value>, arg4=<Value>
    28. <RefObj> -> send signal <Object Signal>: arg1=<Value>, arg2=<Value>, arg3=<Value>, arg4=<Value>
    29. @ <RetVar/IF> <RefObj> -> follow object <Var/Ship> with precision <Var/Number> m
    30. @ <RetVar/IF> <RefObj> -> follow <Var/Ship> with precision <Var/Number> m : timeout=<Var/Number> ms
    31. <RefObj> -> set follow mode <Var/Number>
    32. <RetVar/IF> <RefObj> -> get follow mode
    33. <RetVar/IF> <RefObj> -> use jump drive: target=<Value>
    34. <RetVar/IF> <RefObj> -> needed jump drive energy for jump to sector <Var/String>
    35. <RefObj> -> set destination to <Value>
    36. <RetVar/IF> <RefObj> -> get destination
    37. <RefObj> -> set attack target to <Value>
    38. <RetVar/IF> <RefObj> -> get attack target
    39. @ <RetVar/IF> <RefObj> -> move to position: x=<Var/Number> y=<Var/Number> z=<Var/Number> with precision <Var/Number> m
    40. <RefObj> -> set command: <Object Command>
    41. <RetVar/IF> <RefObj> -> get command
    42. <RefObj> -> set command target: <Value>
    43. <RetVar/IF> <RefObj> -> get command target
    44. <RefObj> -> set command target2: <Value>
    45. <RetVar/IF> <RefObj> -> get command target2
    46. <RetVar/IF> get player tracking aim
    47. set player tracking aim to <RefObj>
    48. <RetVar/IF> <RefObj> -> is <Var/Ship/Station> in firing range of turret <Var/Number>
    49. <RetVar> = <RefObj> -> find enemy in firing range of turret <Var/Number>
    50. <RefObj> -> set command: <Object Command> target=<Value> target2=<Value> par1=<Value> par2=<Value>
    51. <RetVar/IF> <RefObj> -> fire missile <Var/Ware> on <Value>
    52. <RetVar/IF> <RefObj> -> fire missile <Var/Ware> from turret <Var/Number> on <Value>
    53. <RetVar/IF> <RefObj> -> find best missile for target <Value>
    54. <RetVar> = best missile type for target <Value>
    55. <RetVar/IF> <RefObj> -> get current missile
    56. <RetVar/IF> <RefObj> -> is missile <Var/Ware> ready to fire
    57. <RetVar/IF> <RefObj> -> should a missile be fired
    58. <RetVar> = <RefObj> -> get fire missile probability
    59. <RetVar> = <RefObj> -> get fire missile time difference in seconds
    60. <RefObj> -> set fire missile probability to <Var/Number>
    61. <RefObj> -> set fire missile time difference to <Var/Number> ms
    62. <RetVar/IF> <RefObj> -> check, select and fire missile on <Value>
    63. <RetVar/IF> <RefObj> -> launch <Var/Number> fight drones: protect me or attack target=<Value>
    64. <RetVar> = <RefObj> -> find nearest missile aiming to me
    65. <RetVar> = <RefObj> -> get array of missiles aiming to me
    66. <RetVar/IF> <RefObj> -> decouple ships
    67. <RetVar/IF> <RefObj> -> is decoupled ships leader
    68. <RetVar/IF> <RefObj> -> get current galaxy flight timestep in ms
    69. <RetVar/IF> <RefObj> -> is landing
    70. <RetVar/IF> <RefObj> -> is starting
    71. @ <RetVar/IF> <RefObj> -> move to position continue: x=<Var/Number> y=<Var/Number> z=<Var/Number> with precision <Var/Number> m
    72. <RetVar/IF> <RefObj> -> move to debris/asteroid <Value> and turn turret <Var/Number> to target: timeout=<Var/Number>
    73. <RetVar/IF> <RefObj> -> add big ship <Var/Ship>
    74. <RetVar/IF> <RefObj> -> has a free ship dock port: ship subtype = <Value>
    75. <RetVar/IF> <RefObj> -> can be controlled by race logic
    76. <RefObj> -> set race logic control enabled to <Var/Number>
    77. <RetVar/IF> <RefObj> -> can execute StartAction
    78. <RefObj> -> set StartAction enabled to <Var/Number>
    79. <RetVar/IF> <RefObj> -> get current action
    80. <RefObj> -> set pirate cover state to <Var/Number>
    81. <RetVar/IF> <RefObj> -> scan potential pirate <Var/Ship> for illegal wares
    82. @ <RetVar/IF> <RefObj> -> attack run on target <Value> : timeout=<Var/Number> ms speedlimit=<Var/Number>
    83. <RetVar> = <RefObj> -> get scanner range
    84. <RefObj> -> select and switch lasers for target <Var/Ship/Station> in turret <Var/Number>: scan for friends <Var/Number>
    85. <RetVar> = <RefObj> -> select best lasers for target <Var/Ship/Station> in turret <Var/Number>: scan for friends <Var/Number>
    86. <RefObj> -> start job
    87. <RetVar/IF> <RefObj> -> get job id
    88. <RetVar/IF> <RefObj> -> get job leader
    89. <RetVar> = <RefObj> -> get job idle rate
    90. <RetVar> = <RefObj> -> get job jump range
    91. <RetVar/IF> <RefObj> -> wait idle rate minimum: <Var/Number> ms
    92. <RetVar> = <RefObj> -> get flight time
    93. <RefObj> -> reset flight time
    94. <RefObj> -> auto sync patrol sector with environment: <Var/Number>
    95. <RefObj> -> add to patrol group for sector: <Var/Sector>
    96. <RefObj> -> remove from patrol group for sector: <Var/Sector>
    97. <RefObj> -> remove all patrol group references
    98. <RetVar> = <RefObj> -> find nearest enemy ship in range: class=<Var/Class>
    99. <RetVar> = get freight scanner range
    100. <RetVar> = get transporter range
    101. <RetVar> = get mineral scanner range
    102. <RetVar/IF> <RefObj> -> is in freight scanning range: ship=<Var/Ship>
    103. <RetVar/IF> <RefObj> -> is in transporter range: ship=<Var/Ship>
    104. <RetVar/IF> <RefObj> -> is in mineral scanner range: asteroid=<Var/Asteroid>
    105. <RetVar/IF> <RefObj> -> is autojump activated
    106. <RefObj> -> set autojump active: <Var/Number>
    107. <RetVar/IF> <RefObj> -> get autojump minimum jumps
    108. <RefObj> -> autojump minimum jumps = <Var/Number>
    109. <RetVar/IF> <RefObj> -> is emergency jump activated
    110. <RefObj> -> set emergency jump active: <Var/Number>
    111. <RetVar/IF> <RefObj> -> get emergency jump minimum shield threshold
    112. <RefObj> -> autojump emergency jump shield threshold = <Var/Number>%
    113. <RetVar/IF> <RefObj> -> get missile resupply: missile=<Var/Ware>
    114. <RefObj> -> set missile resupply: missile=<Var/Ware> amount=<Var/Number>
    115. <RetVar/IF> <RefObj> -> get ammo resupply: ammo=<Var/Ware>
    116. <RefObj> -> set ammo resupply: ammo=<Var/Ware> amount=<Var/Number>
    117. <RetVar/IF> <RefObj> -> get jumpdrive fuel resupply
    118. <RefObj> -> set jumpdrive fuel resupply: amount=<Var/Number>
    119. <RetVar/IF> <RefObj> -> send marines to board ship: <Var/Ship> marines=<Value>
    120. <RetVar/IF> <RefObj> -> launch boarding pod at target: victim=<Var/Ship> marines=<Value>
    121. <RetVar/IF> <RefObj> -> get resupply fuel required
    122. <RetVar/IF> <RefObj> -> get all formation followers
    123. <RetVar/IF> <RefObj> -> get highest formation leader
    124. <RetVar/IF> is player warping
    125. <RetVar/IF> <RefObj> -> get desired speed
    126. <RefObj> -> set desired speed: <Var/Number>
     

     
  • Команды автопилота - звенья
     Код:
    1. <RetVar/IF> create a new flight wing: name=<Var/String> race=<Var/Race>
    2. <RetVar/IF> find flight wing: name=<Var/String> race=<Var/Race>
    3. disband flight wing: wing=<Var/Wing>
    4. remove ship from flight wing: wing=<Var/Wing> ship=<Var/Ship>
    5. add ship to flight wing: wing=<Var/Wing> ship=<Var/Ship>
    6. <RetVar/IF> get flight wing ship array: wing=<Var/Wing>
    7. <RetVar/IF> get flight wing array
    8. <RefObj> -> add to flight wing: wing=<Var/Wing>
    9. <RefObj> -> remove from flight wing
    10. global script map for wings: key=<Var/Wing Command> race=<Var/Race> script=<Script Name> prio=<Var/Number>
    11. set script command upgrade: wing command=<Var/Wing Command> upgrade=<Var/Ware>
    12. set script command upgrade: wing command=<Var/Wing Command> upgrade=<Var/Ware> script=<Script Name>
    13. <RetVar> = get wing command upgrade: command=<Var/Wing Command>
    14. <RefObj> -> set wing command: <Var/Wing Command>
    15. <RefObj> -> set wing command: <Var/Wing Command> target=<Value> target2=<Value>
    16. <RetVar/IF> <RefObj> -> get wing natural formation
    17. <RefObj> -> set wing natural formation: formation=<Var/Number>
    18. <RetVar/IF> <RefObj> -> is temporarily removed from wing
    19. <RefObj> -> temporarily remove from wing
    20. <RefObj> -> return to wing
    21. <RetVar/IF> get predefined wing: wing=<Var/Number>
    22. <RefObj> -> add wing additional ship command: id=<Var/String> script=<Script Name> pageid=<Var/Number> textid=<Var/Number>
    23. <RefObj> -> add wing additional ship command: id=<Var/String> script=<Script Name> pageid=<Var/Number> textid=<Var/Number> checkscript=<Script Name>
    24. <RefObj> -> remove wing additional ship command: id=<Var/String>
    25. <RetVar/IF> <RefObj> -> does wing additional ship command exists: id=<Var/String>
    26. <RetVar/IF> <RefObj> -> get ship array for wing command upgrade: command=<Var/Wing Command>
    27. <RetVar/IF> <RefObj> -> ship has wing command upgrade: command=<Var/Wing Command>
    28. add wing custom command: id=<Var/Number>
    29. remove wing custom command: id=<Var/Number>
    30. <RetVar> = wing custom command exists: id=<Var/Number>
    31. START <RefObj> -> wing command <Var/Wing Command> : arg1=<Value>, arg2=<Value>, arg3=<Value>, arg4=<Value>
    32. <RetVar/IF> <RefObj> -> is in same wing as <Var/Ship>
    33. <RetVar/IF> <RefObj> -> get wing formation leaders
    34. <RetVar/IF> <RefObj> -> get temporarily removed ship array from wing
    35. set wing command preload script: wing command=<Var/Wing Command> script=<Script Name>
    36. <RetVar/IF> <RefObj> -> get number of wing formation leaders
    37. <RetVar/IF> <RefObj> -> get max number of ships per wing formation
     


  • Торговые команды
     Код:
    1. <RetVar/IF> get player money
    2. add money to player: <Var/Number>
    3. <RetVar/IF> <RefObj> -> add <Var/Number> units of <Var/Ware>
    4. <RetVar/IF> <RefObj> -> install <Var/Number> units of <Var/Ware>
    5. <RetVar> = get volume of ware <Var/Ware>
    6. <RetVar> = get transport class of ware <Var/Ware>
    7. <RetVar/IF> find station: product <Var/Ware> with best price: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    8. <RetVar/IF> <RefObj> -> find station: product <Var/Ware> with best price: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    9. <RetVar/IF> find station: product <Var/Ware> with min. jumps: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    10. <RetVar/IF> <RefObj> -> find station: product <Var/Ware> with min. jumps: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    11. <RetVar/IF> find station: resource <Var/Ware> with best price: min.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    12. <RetVar/IF> <RefObj> -> find station: resource <Var/Ware> with best price: min.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    13. <RetVar/IF> find station: resource <Var/Ware> with min. jumps: min.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    14. <RetVar/IF> <RefObj> -> find station: resource <Var/Ware> with min. jumps: min.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    15. <RetVar/IF> find station sells: resource <Var/Ware> with best price: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    16. <RetVar/IF> <RefObj> -> find station sells: resource <Var/Ware> with best price: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    17. <RetVar/IF> find station sells: resource <Var/Ware> with min. jumps: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    18. <RetVar/IF> <RefObj> -> find station sells: resource <Var/Ware> with min. jumps: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    19. <RetVar/IF> find station: product <Var/Ware> with best price depend on jumps: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    20. <RetVar/IF> find station: resource <Var/Ware> with best price depend on jumps: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    21. <RetVar/IF> find station sells: resource <Var/Ware> with best price depend on jumps: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
    22. <RetVar> = get average price of ware <Var/Ware>
    23. <RetVar> = get max price of ware <Var/Ware>
    24. <RetVar> = get min price of ware <Var/Ware>
    25. <RetVar> = get max price of ware <Var/Ware> as secondary resource
    26. <RetVar> = get min price of ware <Var/Ware> as secondary resource
    27. <RetVar/IF> is ware <Var/Ware> illegal in <Var/Race> sectors
    28. <RetVar> = get maintype of ware <Var/Ware>
    29. <RetVar> = get subtype of ware <Var/Ware>
    30. <RetVar> = get ware from maintype <Var/Number> and subtype <Var/Number>
    31. <RetVar> = get number of subtypes of maintype <Var/Number>
    32. <RetVar> = <RefObj> -> get maintype
    33. <RetVar> = <RefObj> -> get subtype
    34. <RetVar> = get relvalue of <Var/Ware>
    35. <RetVar> = get notoriety required to buy ware: <Var/Ware>
    36. <RetVar/IF> is equipment: ware=<Var/Ware>
    37. <RetVar/IF> is upgrade: ware=<Var/Ware>
    38. <RetVar/IF> is inventory: ware=<Var/Ware>
     


  • Торговые команды - Для кораблей
     Код:
    1. <RetVar/IF> <RefObj> -> buy <Var/Number> units of <Var/Ware>
    2. <RetVar/IF> <RefObj> -> buy <Var/Number> units of <Var/Ware> to a max. price of <Var/Number> Cr
    3. <RetVar/IF> <RefObj> -> sell <Var/Number> units of <Var/Ware>
    4. <RetVar/IF> <RefObj> -> load <Var/Number> units of <Var/Ware>
    5. <RetVar/IF> <RefObj> -> unload <Var/Number> units of <Var/Ware>
    6. <RetVar> = <RefObj> -> get max. ware transport class
    7. <RetVar/IF> <RefObj> -> get cargo bay size
    8. <RetVar/IF> <RefObj> -> get free volume of cargo bay
    9. <RetVar/IF> <RefObj> -> get volume of ware <Var/Ware> in cargo bay
    10. <RetVar/IF> <RefObj> -> get true volume of ware <Var/Ware> in cargo bay
    11. <RetVar/IF> <RefObj> -> get free volume of ware <Var/Ware> in cargo bay
    12. <RetVar/IF> <RefObj> -> get total volume in cargo bay
    13. <RetVar/IF> <RefObj> -> can transport ware <Var/Ware>
    14. <RefObj> -> add default items to ship
    15. <RefObj> -> add lasers per value: <Var/Number> flags: <Var/Number>
    16. <RefObj> -> add shields per value: <Var/Number>
    17. <RefObj> -> switch laser in turret <Var/Number> gun <Var/Number> to <Var/Ware>
    18. <RefObj> -> set wanted ware count to <Var/Number>
    19. <RefObj> -> set wanted ware to <Var/Ware>
    20. <RetVar> = <RefObj> -> get wanted ware count
    21. <RetVar> = <RefObj> -> get wanted ware
    22. <RetVar/IF> <RefObj> -> has illegal ware onboard: race=<Var/Race>
    23. <RetVar/IF> <RefObj> -> get tradeable ware array from ship
    24. <RetVar> = get warearray for <Var/Ship>
    25. <RetVar> = <RefObj> -> get upgrade price: cargo-speed-rot <Var/Ware> units: <Var/Number>
    26. <RetVar/IF> <RefObj> -> get defined amount of ware <Var/Ware> as ship hardware
    27. <Var/Ware> <RefObj> -> set defined amount of ware <Var/Number> as ship hardware
    28. <RetVar> = <RefObj> -> get ship hardware as array
    29. <RetVar/IF> <RefObj> -> can buy ware <Var/Ware> at station <Var/Station>
    30. <RetVar/IF> <RefObj> -> can buy ware <Var/Ware> from race <Var/Race>
     


  • Торговые команды - Для станций
     Код:
    1. <RetVar/IF> <RefObj> -> get best store amount of ware <Var/Ware>
    2. <RetVar/IF> <RefObj> -> get max. store amount of ware <Var/Ware>
    3. <RetVar/IF> <RefObj> -> can buy ware <Var/Ware>
    4. <RetVar/IF> <RefObj> -> get intermediates buyable
    5. <RefObj> -> set intermediates buyable to <Var/Number>
    6. <RetVar/IF> <RefObj> -> can sell ware <Var/Ware>
    7. <RetVar/IF> <RefObj> -> get intermediates sellable
    8. <RefObj> -> set intermediates sellable to <Var/Number>
    9. <RetVar/IF> <RefObj> -> get price of ware <Var/Ware>
    10. <RetVar/IF> <RefObj> -> get average price of ware <Var/Ware>
    11. <RefObj> -> set price of ware <Var/Ware> to <Var/Number> Cr
    12. <RetVar/IF> <RefObj> -> uses ware <Var/Ware> as primary resource
    13. <RetVar/IF> <RefObj> -> uses ware <Var/Ware> as secondary resource
    14. <RetVar/IF> <RefObj> -> trades with ware <Var/Ware>
    15. <RetVar/IF> <RefObj> -> get product ware
    16. <RetVar/IF> <RefObj> -> get number of resources
    17. <RetVar/IF> <RefObj> -> get number of primary resources
    18. <RetVar/IF> <RefObj> -> get number of secondary resources
    19. <RetVar/IF> <RefObj> -> get max trade jumps
    20. <RefObj> -> set max trade jumps: <Var/Number>
    21. <RetVar/IF> <RefObj> -> only player own ships can trade with
    22. <RetVar> = <RefObj> -> get tradeable ware array from station
    23. <RetVar/IF> <RefObj> -> get products
    24. <RetVar/IF> <RefObj> -> uses ware <Var/Ware> as product
    25. <RetVar> = <RefObj> -> get production cycle time: account for secondary resources=<Var/Number>
    26. <RetVar> = <RefObj> -> get remaining production cycle time
    27. <RetVar> = <RefObj> -> get number of products per cycle
    28. <RetVar> = <RefObj> -> get number of products per cycle for ware <Var/Ware>
    29. <RetVar> = <RefObj> -> get production status: as percentage=<Var/Number>
    30. <RefObj> -> add product to factory or dock: <Var/Ware>
    31. <RefObj> -> add primary resource to factory: <Var/Ware>
    32. <RefObj> -> add second resource to factory: <Var/Ware>
    33. <RefObj> -> remove product from factory or dock: <Var/Ware>
    34. <RefObj> -> remove primary resource from factory: <Var/Ware>
    35. <RefObj> -> remove second resource from factory: <Var/Ware>
    36. <RefObj> -> factory production task: on=<Var/Number>
    37. <RetVar/IF> <RefObj> -> get repair cost of ship <Var/Ship>
    38. <RefObj> -> add default wares to station/dock
     


  • Торговые команды - Для кораблей и станций
     Код:
    1. <RetVar/IF> <RefObj> -> get money
    2. <RefObj> -> add money: <Var/Number>
    3. <RetVar/IF> <RefObj> -> get amount of ware <Var/Ware> in cargo bay
    4. <RetVar/IF> <RefObj> -> get true amount of ware <Var/Ware> in cargo bay
    5. <RetVar/IF> <RefObj> -> get free amount of ware <Var/Ware> in cargo bay
    6. <RetVar/IF> <RefObj> -> get max amount of ware <Var/Ware> that can be stored in cargo bay
    7. <RetVar/IF> <RefObj> -> get ware storage percentage: ware=<Var/Ware>
     


  • Торговые команды - Торговец
     Код:
    1. add merchant <Var/String> base=<RefObj> -> wanted wares=<Var/Array> owned wares=<Var/Array> cash=<Var/Number> rank=<Var/Number>
    2. <RetVar> = <RefObj> -> get merchants
    3. remove merchant <Var/String>
    4. merchant <Var/String> got ware <Var/Ware>: quantity=<Var/Number>
    5. merchant <Var/String> sold ware <Var/Ware>: quantity=<Var/Number>
    6. reset merchant <Var/String> expiry
    7. <RetVar> = get data for merchant <Var/String>: item number=<Var/Number>
     


  • Торговые команды - Пассажиры
     Код:
    1. <RetVar/IF> <RefObj> -> create passenger in ship: name=<Var/String> race=<Var/Race> voice=<Var/Number> face=<Var/Number>
    2. <RetVar/IF> <RefObj> -> add pilot of ship <Var/Ship> as passenger: disable ship=<Var/Boolean>
    3. <RetVar/IF> <RefObj> -> get passenger array
    4. <RetVar/IF> <RefObj> -> move passenger to ship <Var/Ship>: set passenger as pilot=<Var/Boolean>
    5. <RetVar/IF> <RefObj> -> eject passenger
    6. <RetVar/IF> <RefObj> -> enslave passenger
    7. <RetVar/IF> <RefObj> -> destroy passenger
    8. <RefObj> -> train passenger to marine
    9. <RefObj> -> create marine from passenger: fighting=<Var/Number> hacking=<Var/Number> mechanical=<Var/Number> engineering=<Var/Number>
    10. <RefObj> -> set marine skill: fighting=<Var/Number>
    11. <RefObj> -> set marine skill: hacking=<Var/Number>
    12. <RefObj> -> set marine skill: mechanical=<Var/Number>
    13. <RefObj> -> set marine skill: engineering=<Var/Number>
    14. <RetVar/IF> is marine: passenger/astronaut=<Var/Passenger>
    15. <RetVar/IF> <RefObj> -> can transport passenger: <Var/Passenger>
    16. <RetVar/IF> <RefObj> -> can launch marines
    17. <RetVar/IF> <RefObj> -> is ship boardable
    18. <RetVar/IF> <RefObj> -> get marines array
    19. <RetVar/IF> <RefObj> -> free space for marines
    20. <RefObj> -> set passenger transport, destination=<Var/Station>, payment=<Var/Number>
    21. <RetVar/IF> <RefObj> -> is passenger to be transported
    22. <RetVar/IF> <RefObj> -> get passenger transport destination
    23. <RetVar/IF> <RefObj> -> get passenger transport payment
    24. <RetVar/IF> <RefObj> -> get marine buy price
    25. <RetVar/IF> <RefObj> -> get number of marines can board
    26. <RetVar/IF> <RefObj> -> get maximum number of marines
    27. <RetVar/IF> <RefObj> -> get number of marines attacking
    28. <RetVar/IF> <RefObj> -> get incoming marines
    29. <RetVar/IF> <RefObj> -> get marine fighting skill
    30. <RetVar/IF> <RefObj> -> get marine hacking skill
    31. <RetVar/IF> <RefObj> -> get marine mechanical skill
    32. <RetVar/IF> <RefObj> -> get marine engineering skill
    33. <RetVar/IF> <RefObj> -> get marine overall skill
    34. <RetVar/IF> <RefObj> -> add marine <Value> to attack group on ship
    35. <RefObj> -> stop incoming marines
    36. <@RetVar/IF> <RefObj> -> move marine to board: <Value>, timeout=<Var/Number>
     
  • Редактировалось 3 раз (а). Последний раз 15.09.2011 22:51:20.

    30.04.2010 16:39:55
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
     
    Дополнение к Пособию "Скрипты. Что это и с чем их едят."
     

    Список всех скриптовых команд. Часть 2.

  • Общие команды для объектов
     Код:
    1. <RetVar/IF> <RefObj> -> get object class
    2. <RetVar/IF> <RefObj> -> is of class <Var/Class>
    3. <RetVar> = <RefObj> -> get true owner
    4. <RetVar/IF> <RefObj> -> get owner race
    5. <RefObj> -> set owner race to <Var/Race>
    6. <RetVar/IF> <RefObj> -> get environment
    7. <RetVar/IF> <RefObj> -> get sector
    8. <RetVar/IF> <RefObj> -> get homebase
    9. <RefObj> -> set homebase to <Var/Ship/Station>
    10. <RetVar/IF> <RefObj> -> get homesector
    11. <RefObj> -> set homesector to <Var/Sector>
    12. <RetVar/IF> <RefObj> -> exists
    13. <RetVar/IF> <RefObj> -> get ware type code of object
    14. <RetVar/IF> <RefObj> -> is of type <Var/Ship Type/Station Type>
    15. <RetVar> = <RefObj> -> get ID code
    16. <RetVar/IF> <RefObj> -> get serial name of station
    17. <RefObj> -> set serial name of station to <Var/Stations Serial>
    18. <RetVar> = <RefObj> -> get name
    19. <RefObj> -> set name to <Var/String>
    20. <RetVar/IF> <RefObj> -> is known
    21. <RefObj> -> set known status to <Var/Number>
    22. <RetVar/IF> <RefObj> -> get current laser strength
    23. <RetVar/IF> <RefObj> -> get maximum laser strength
    24. <RetVar/IF> <RefObj> -> get max laser strength in turret <Var/Number>
    25. <RetVar/IF> <RefObj> -> get max. shield type that can be installed
    26. <RetVar/IF> <RefObj> -> get number of shield bays
    27. <RetVar/IF> <RefObj> -> get number of laser bays
    28. <RetVar/IF> <RefObj> -> get most destructive missile type that can be installed
    29. <RetVar/IF> <RefObj> -> get relation to object <Var/Ship/Station>
    30. <RefObj> -> set relation against <Value> to <Relation>
    31. <RefObj> -> set relations from notoriety: include player as target and race > teladi as owner=<Var/Number>
    32. <RetVar/IF> <RefObj> -> get relation to race <Var/Race>
    33. <RetVar/IF> <RefObj> -> get notoriety to race <Var/Race>
    34. <RetVar/IF> <RefObj> -> is <Var/Ship/Station> a enemy
    35. <RetVar/IF> <RefObj> -> is <Var/Ship/Station> a friend
    36. <RetVar/IF> <RefObj> -> is <Var/Ship/Station> neutral to me
    37. <RetVar/IF> get notoriety from race <Var/Race> to race <Var/Race>
    38. set notoriety of <Var/Race> -> <Var/Race> to <Var/Number> points
    39. <RetVar/IF> <RefObj> -> get shield type in bay <Var/Number>
    40. <RetVar/IF> <RefObj> -> has same environment as <Var/Ship/Station>
    41. <RetVar/IF> <RefObj> -> is in same sector as <Var/Ship/Station>
    42. <RetVar/IF> <RefObj> -> is landed
    43. <RetVar/IF> <RefObj> -> is docked
    44. <RetVar/IF> <RefObj> -> is docking possible of <Value>
    45. <RetVar/IF> <RefObj> -> is docking allowed at <Var/Ship/Station>
    46. <RetVar/IF> <RefObj> -> is in a sector
    47. <RetVar/IF> <RefObj> -> get attacker
    48. <RefObj> -> set attacker to <Var/Ship/Station>
    49. <RetVar> = get distance between <Var/Ship/Station> and <Var/Ship/Station>
    50. <RetVar> = <RefObj> -> get distance to: x=<Var/Number> y=<Var/Number> z=<Var/Number>
    51. <RetVar> = <RefObj> -> get distance to: position array=<Var/Array>
    52. <RetVar> = get distance: position array1=<Var/Array> array2=<Var/Array>
    53. <RetVar> = <RefObj> -> get x position
    54. <RetVar> = <RefObj> -> get y position
    55. <RetVar> = <RefObj> -> get z position
    56. <RetVar> = <RefObj> -> get position as array
    57. <RetVar> = get player ship
    58. <RetVar/IF> <RefObj> -> is disabled
    59. <RefObj> -> station trade and production tasks: on=<Var/Number>
    60. <RetVar/IF> <RefObj> -> is in active sector
    61. <RefObj> -> destruct: show no explosion=<Var/Number>
    62. <RefObj> -> destroy object: killer=<Value>, show no explosion=<Var/Number>
    63. <RefObj> -> set position: x=<Var/Number> y=<Var/Number> z=<Var/Number>
    64. <RefObj> -> force position: x=<Var/Number> y=<Var/Number> z=<Var/Number>
    65. <RefObj> -> set rotation: alpha=<Var/Number> beta=<Var/Number> gamma=<Var/Number>
    66. <RetVar> = <RefObj> -> get rot alpha
    67. <RetVar> = <RefObj> -> get rot beta
    68. <RetVar> = <RefObj> -> get rot gamma
    69. <RetVar> = <RefObj> -> get size of object
    70. <RetVar/IF> <RefObj> -> get max upgrades for upgrade <Var/Ware>
    71. <RetVar/IF> <RefObj> -> get max speed
    72. <RetVar> = <RefObj> -> get current max speed
    73. <RetVar> = <RefObj> -> get current speed
    74. <RefObj> -> set ship speed to <Var/Number>
    75. <RetVar/IF> <RefObj> -> get max hull
    76. <RetVar/IF> <RefObj> -> get hull
    77. <RefObj> -> set hull to <Var/Number>
    78. <RetVar/IF> <RefObj> -> get hull percent
    79. <RetVar/IF> <RefObj> -> get maximum shield strength
    80. <RetVar/IF> <RefObj> -> get current shield strength
    81. <RefObj> -> set current shield strength to <Var/Number>
    82. <RetVar/IF> <RefObj> -> get shield percent
    83. <RetVar/IF> <RefObj> -> get shield and hull percent
    84. <RetVar/IF> <RefObj> -> get max upgraded speed
    85. <RetVar/IF> <RefObj> -> get dock bay size
    86. <RetVar/IF> <RefObj> -> get number of landed ships
    87. <Var/Race> add notoriety: race=<Var/Race> value=<Var/Number>
    88. <RefObj> -> set ship disabled to <Var/Number>
    89. <RefObj> -> put into environment <RefObj>
    90. <RefObj> -> station send defend squad against ship <Var/Ship/Station>
    91. <RetVar> = get Kha'ak aggression level
    92. set Kha'ak aggression level to <Var/Number>
    93. <RetVar> = <RefObj> -> is detectable
    94. <RetVar> = <RefObj> -> is hired
    95. <RetVar> = get player name
    96. <RefObj> -> disable ship rebuild
    97. <RetVar> = order ship in next shipyard: owner=<Var/Race> sector=<Var/Sector> class=<Var/Class> optional: default shiptype for race: <Var/Race>
    98. <RetVar/IF> <RefObj> -> is hidden
    99. <RetVar/IF> <RefObj> -> is target visible <Var/Ship/Station>
    100. <RetVar> = <RefObj> -> get asteroid yield
    101. <RetVar/IF> <RefObj> -> is asteroid scanned
    102. <RefObj> -> set asteroid scanned to <Var/Number>
    103. <RetVar> = <RefObj> -> get resource waretype of asteroid
    104. <RetVar/IF> <RefObj> -> has collectible rocks
    105. <RetVar> = <RefObj> -> get flying ware count
    106. <RefObj> -> ignore collisions: <Var/Number>
    107. <RetVar/IF> player HQ has blueprints for: type=<Var/Ship Type>
    108. add blueprints to player HQ: type=<Var/Ship Type>
    109. remove blueprints from player HQ: type=<Var/Ship Type>
    110. <RetVar/IF> move player to ship <Var/Ship>: Teleport=<Var/Number>
    111. <RetVar> = get maker race: shiptype=<Value>
    112. <RetVar/IF> <RefObj> -> get maker race
    113. <RefObj> -> jump out of existence
    114. <RetVar/IF> <RefObj> -> get flight wing
    115. <RetVar/IF> <RefObj> -> is civilian ship
    116. <RetVar/IF> <RefObj> -> get number of decks on ship
    117. <RetVar/IF> <RefObj> -> get ship boarding defence level
    118. <RetVar/IF> <RefObj> -> get hacking security level
    119. <RetVar/IF> <RefObj> -> realign gate: gatenum=<Value> gate to link=<Var/Warpgate> force=<Var/Boolean>
    120. <RefObj> -> change destination gate to <Var/Warpgate>
    121. <RetVar> = <RefObj> -> get ship variation
    122. <RetVar> = get ship variation: subtype=<Var/Number>
    123. <RetVar/IF> <RefObj> -> is missile boat
    124. <RetVar/IF> <RefObj> -> is military outpost
    125. <RetVar/IF> <RefObj> -> get debris count
    126. <RetVar/IF> <RefObj> -> is invincible
    127. <RetVar/IF> <RefObj> -> find nearest military outpost
    128. <RetVar/IF> <RefObj> -> get boarding shield threshold
     


  • Общие команды для объектов - Информация об оружии
     Код:
    1. <RetVar> = get power generator of ship/station type <Var/Ware>
    2. <RetVar> = <RefObj> -> get power generator
    3. <RetVar/IF> <RefObj> -> fits laser <Var/Ware> into turret <Var/Number>
    4. <RetVar/IF> <RefObj> -> get max. number of lasers in turret <Var/Number>
    5. <RetVar> = <RefObj> -> get laser type in turret <Var/Number> at slot <Var/Number>
    6. <RetVar/IF> <RefObj> -> get laser type in bay <Var/Number>
    7. <RetVar> = <RefObj> -> get number of turrets
    8. <RetVar/IF> <RefObj> -> turret <Var/Number> can use laser <Var/Ware>
    9. <RetVar> = get range of laser <Var/Ware>
    10. <RetVar> = get shield damage of laser <Var/Ware>
    11. <RetVar> = get hull damage of laser <Var/Ware>
    12. <RetVar/IF> get ammunition of laser <Var/Ware>
    13. <RetVar> = get bullet speed of laser <Var/Ware>
    14. <RetVar/IF> <RefObj> -> can missile <Var/Ware> be installed
    15. <RetVar> = get range of missile type <Var/Ware>
    16. <Var/Ware> = get missile max damage of <Var/Ware>
    17. <RetVar> = get default launch time difference for missile type: <Var/Ware>
    18. <RetVar> = get missile flags of <Var/Ware>
    19. <RefObj> -> set laser energy to <Var/Number>
    20. <RetVar> = <RefObj> -> get compatible laser array: turret=<Var/Number>
    21. <RetVar/IF> <RefObj> -> can turret <Var/Number> fire missiles
    22. <RetVar/IF> <RefObj> -> get compatible missile array
    23. <RetVar/IF> <RefObj> -> get maximum laser range: turret=<Var/Number>
    24. <RetVar/IF> <RefObj> -> get minimum laser range: turret=<Var/Number>
    25. <RetVar/IF> <RefObj> -> get compatible missile array from cargobay
     


  • Общие команды для объектов - Пилоты
     Код:
    1. <RetVar> = <RefObj> -> get pilot name
    2. <RefObj> -> set pilot name to <Var/String>
    3. <RetVar> = get random name: race=<Var/Race>
    4. <RetVar> = get fight rank
    5. <RetVar> = get trade rank
    6. <RefObj> -> set pilot speaker: voice=<Value>, face=<Value>, Pirate subrace=<Value>, Argon female=<Var/Number>
    7. <RetVar> = <RefObj> -> get pilot fightskill
    8. <RefObj> -> set pilot fightskill to <Var/Number>
    9. <RetVar> = <RefObj> -> get pilot tradeskill
    10. <RefObj> -> set pilot tradeskill to <Var/Number>
    11. <RetVar> = <RefObj> -> get pilot morale
    12. <RefObj> -> set pilot morale: <Var/Number>
    13. <RetVar> = <RefObj> -> get pilot aggression
    14. <RefObj> -> set pilot aggression: <Var/Number>
    15. <RetVar/IF> <RefObj> -> pilot eject from ship
    16. <RetVar/IF> <RefObj> -> move pilot to ship <Var/Ship>: disable=<Var/Boolean>
    17. <RetVar> = get trade rank title: text=<Var/Boolean>
    18. <RetVar> = get fight rank title: text=<Var/Boolean>
    19. <RetVar> = get trade rank percentage
    20. <RetVar> = get fight rank percentage
    21. <RetVar> = <RefObj> -> get notoriety title to race <Var/Race>: text=<Var/Boolean>
    22. <RetVar> = <RefObj> -> get notoriety percentage to race <Var/Race>
    23. <RetVar/IF> get mission rank: name=<Var/String>
    24. set mission rank: name=<Var/String> rank=<Var/Number>
     



  • Общие команды для объектов - создание объектов
     Код:
    1. <RetVar> = create ship: type=<Var/Ship Type> owner=<Var/Race> addto=<Value> x=<Var/Number> y=<Var/Number> z=<Var/Number>
    2. <RetVar> = create station: type=<Var/Station Type> owner=<Var/Race> addto=<Value> x=<Var/Number> y=<Var/Number> z=<Var/Number>
    3. <RetVar> = create gate: type=<Var/Number> addto=<Var/Sector> gateid=<Var/Number> dstsecx=<Var/Number> dstsecy=<Var/Number> dstgateid=<Var/Number> x=<Var/Number> y=<Var/Number> z=<Var/Number>
    4. <RetVar> = create asteroid: type=<Var/Number> addto=<Var/Sector> resource=<Var/Number> yield=<Var/Number> x=<Var/Number> y=<Var/Number> z=<Var/Number>
    5. <RetVar> = create debris: type=<Var/Number> addto=<Var/Sector> resource=<Var/Number> yield=<Var/Number> x=<Var/Number> y=<Var/Number> z=<Var/Number>
    6. <RetVar> = create nebula: type=<Var/Number> addto=<Var/Sector> x=<Var/Number> y=<Var/Number> z=<Var/Number>
    7. <RetVar> = create sun: subtype=<Var/Number> r=<Var/Number> g=<Var/Number> b=<Var/Number> addto=<Var/Sector> x=<Var/Number> y=<Var/Number> z=<Var/Number>
    8. <RetVar> = create planet: subtype=<Var/Number> addto=<Var/Sector> x=<Var/Number> y=<Var/Number> z=<Var/Number>
    9. <RetVar> = create special: type=<Var/Number> addto=<Var/Sector> x=<Var/Number> y=<Var/Number> z=<Var/Number>
    10. <RetVar> = create flying ware: maintype=<Var/Number> subtype=<Var/Number> count=<Var/Number> sector=<Var/Sector> x=<Var/Number> y=<Var/Number> z=<Var/Number> selfdestruct=<Var/Number>
     


  • Команды секторов и Галактики
     Код:
    1. <RetVar/IF> find ship: sector=<Var/Sector> class or type=<Value> race=<Var/Race> flags=<Var/Number> refobj=<Value> maxdist=<Var/Number> maxnum=<Var/Number> refpos=<Var/Array>
    2. <RetVar/IF> <RefObj> -> find ship: class or type=<Value> race=<Var/Race> flags=<Var/Number> refobj=<Value> maxnum=<Var/Number> with homebase=<Value>
    3. <RetVar/IF> find asteroid: sector=<Var/Sector> resourcetype=<Var/Number> min.yield=<Var/Number> flags=<Var/Number> refobj=<Value> maxdist=<Var/Number> maxnum=<Var/Number> refpos=<Var/Array>
    4. <RetVar/IF> find debris: sector=<Var/Sector> resource=<Var/Ware> min yield=<Var/Number> flags=<Var/Number> refobj=<Value> num=<Var/Number> max distance=<Var/Number> refpos=<Var/Array>
    5. <RetVar/IF> find nebula: sector=<Var/Sector> type=<Var/Number> effect=<Var/Number> flags=<Var/Number> refobj=<Var/Ship/Station> maxdist=<Var/Number> maxnum=<Var/Number> refpos=<Var/Array>
    6. <RetVar/IF> find flying ware: sector=<Var/Sector> maintype=<Var/Number> subtype=<Var/Number> flags=<Var/Number> refobj=<Value> maxdist=<Var/Number> maxnum=<Var/Number> refpos=<Var/Array>
    7. <RetVar/IF> find station: sector=<Var/Sector> class or type=<Value> race=<Var/Race> flags=<Var/Number> refobj=<Value> maxdist=<Var/Number> maxnum=<Var/Number> refpos=<Var/Array>
    8. <RetVar/IF> find station in galaxy: startsector=<Var/Sector> class or type=<Value> race=<Var/Race> flags=<Var/Number> refobj=<Value> serial=<Var/Stations Serial> max.jumps=<Var/Number>
    9. <RetVar/IF> find station in galaxy: startsector=<Var/Sector> class or type=<Value> race=<Var/Race> flags=<Var/Number> refobj=<Value> serial=<Var/Stations Serial> max.jumps=<Var/Number> num=<Var/Number>
    10. <RetVar/IF> find gate: flags=<Var/Number>, refobj=<Value>, max dist=<Var/Number>, refpos=<Var/Array>
    11. <RetVar/IF> get sector from universe index: x=<Var/Number>, y=<Var/Number>
    12. <RetVar> = get max sectors in x direction
    13. <RetVar> = get max sectors in y direction
    14. <RetVar/IF> <RefObj> -> is sector known by the player
    15. <RetVar> = <RefObj> -> get universe x index
    16. <RetVar> = <RefObj> -> get universe y index
    17. <RetVar> = <RefObj> -> get north warp gate
    18. <RetVar> = <RefObj> -> get south warp gate
    19. <RetVar> = <RefObj> -> get east warp gate
    20. <RetVar> = <RefObj> -> get west warp gate
    21. <RetVar/IF> <RefObj> -> get warp gate: gate id=<Var/Number>
    22. <RetVar> = <Var/Warpgate> get gate id
    23. <RetVar/IF> get next gate on route from <Var/Sector> to <Var/Sector>
    24. <RetVar> = <Var/Warpgate> get gate destination: return sector=<Var/Number>
    25. <RetVar/IF> get jumps from sector <Var/Sector> to sector <Var/Sector>
    26. <RetVar/IF> get next sector on route from sector <Var/Sector> to sector <Var/Sector>
    27. <RetVar> = find a random sector: startsector=<Var/Sector>, jumps=<Var/Number>, owner=<Var/Race>
    28. <RetVar> = find a random sector: startsector=<Var/Sector>, jumps=<Var/Number>, owner=<Var/Race>, security level=<Var/Number>
    29. <RetVar/IF> <RefObj> -> find all sectors within <Var/Number> jumps: Only known sectors=<Var/Number>
    30. <RetVar> = <RefObj> -> get ship array from sector/ship/station
    31. <RetVar> = <RefObj> -> get station array from sector
    32. <RetVar> = <RefObj> -> get factory array from sector
    33. <RetVar> = <RefObj> -> get dock array from sector
    34. <RetVar> = <RefObj> -> get player owned ship array from sector
    35. <RetVar> = <RefObj> -> get player owned station array from sector
    36. <RetVar> = <RefObj> -> get asteroid array from sector
    37. <RetVar/IF> <RefObj> -> get owned ships: class/type=<Value>
    38. <RetVar> = get ship array: of race <Var/Race> class/type=<Value>
    39. <RetVar> = get station array: of race <Var/Race> class/type=<Value>
    40. <RetVar> = get station array: product=<Var/Ware> include empty=<Var/Boolean>
    41. <RetVar> = get station array: resource=<Var/Ware> include empty=<Var/Boolean>
    42. <RetVar/IF> player has police licence for race <Var/Race>
    43. player loses police licence for race <Var/Race>
    44. <RetVar/IF> <RefObj> -> is core sector
    45. <RefObj> -> set sector to core security <Var/Boolean>
    46. <RetVar> = get ship type array: maker race=<Var/Race> class=<Value>
    47. <RetVar/IF> <RefObj> -> get planet array
    48. set discovered status: type=<Value> status=<Var/Boolean>
    49. <RetVar/IF> has <Value> been discovered
    50. <RetVar/IF> <RefObj> -> get all stationary objects: include asteroids=<Var/Boolean>
    51. <RetVar/IF> <RefObj> -> get buyable wares in sector. Include player factories: <Var/Number> Include shipyards: <Var/Number> Include docks: <Var/Number>
     


  • Прочее
     Код:
    1. <RetVar/IF> <RefObj> -> get user input: type=<Script Reference Type>, title=<Var/String>
    2. <RetVar/IF> open custom menu: title=<Var/String> description=<Var/String> option array=<Var/Array>
    3. <RetVar/IF> open custom info menu: title=<Var/String> description=<Var/String> option array=<Var/Array> maxoptions=<Var/Number>
    4. <RetVar> = create custom menu array
    5. <RetVar> = create custom menu array: heading=<Var/String>
    6. <RetVar> = create custom menu array, info lines=<Var/String>, <Var/String>, <Var/String>, <Var/String>, <Var/String>
    7. add custom menu item to array <Value>: text=<Var/String> returnvalue=<Value>
    8. add custom menu heading to array <Value>: title=<Var/String>
    9. add custom menu info line to array <Value>: text=<Var/String>
    10. capture screen
    11. set monitor mode and viewpoint: monitor=<Var/Number> cockpit=<Var/Number> mode=<Var/Number> alpha=<Var/Number> beta=<Var/Number> gamma=<Var/Number> range=<Var/Number>
    12. add section to custom menu: <Var/Array>
    13. <RetVar> = create text for custom menu, left=<Var/String>, right=<Var/String>
    14. add value selection to menu: <Var/Array>, text=<Var/String>, value array=<Var/Array>, default=<Var/Number>, return id=<Var/String>
    15. <RetVar/IF> <RefObj> -> get user input without sector: type=<Script Reference Type>, title=<Var/String>
    16. <RetVar/IF> <RefObj> -> get user input type=<Script Reference Type>, title=<Var/String>, sector=<Var/Sector>
    17. add encyclopedia custom article: News, id=<Var/String>, title page=<Var/Number>, title id=<Var/Number>, text page=<Var/Number>, text id=<Var/Number>, timeout=<Var/Number>
    18. add encyclopedia custom article: Information, id=<Var/String>, title page=<Var/Number>, title id=<Var/Number>, text page=<Var/Number>, text id=<Var/Number>, timeout=<Var/Number>
    19. add encyclopedia custom article: History, id=<Var/String>, title page=<Var/Number>, title id=<Var/Number>, text page=<Var/Number>, text id=<Var/Number>, timeout=<Var/Number>
    20. add encyclopedia custom article: Stories, id=<Var/String>, title page=<Var/Number>, title id=<Var/Number>, text page=<Var/Number>, text id=<Var/Number>, timeout=<Var/Number>
    21. remove encyclopedia custom article: id=<Var/String>
    22. set encyclopedia custom article sectors: id=<Var/String>, sector array=<Value>
     


  • Прочее - NPC
     Код:
    1. <RetVar> = get random NPC
    2. <RetVar> = <RefObj> -> get NPC personal ship
    3. <RefObj> -> NPC send voice message: id=<Var/Number>
    4. <RefObj> -> release NPC personal ship
    5. <RefObj> -> release NPC
    6. <RetVar> = <RefObj> -> NPC wants to bail
    7. <RetVar> = <RefObj> -> NPC is aggressive
    8. <RefObj> -> spawn NPC personal ship: rank=<Var/Number>
    9. <RefObj> -> spawn NPC fleet: rank=<Var/Number>
    10. <RetVar> = <RefObj> -> get NPC fleet
     


  • Прочее - События
     Код:
    1. <RetVar/IF> display news article: page=<Var/Number> newsid=<Var/Number> occurrences=<Var/Number> maxoffertime=<Var/Number> maxtime=<Var/Number> placeholder:race1=<Var/Number> race2=<Var/Number> customarray=<Var/Array>
    2. change event news availability: <Var/Number> race=<Var/Race> sector=<Var/Sector> jumps=<Var/Number>
    3. register god event: script=<Script Name> mask=<Var/Number>
    4. abort god event: <Var/Quest>
    5. finish god event: <Var/Quest>
     


  • Прочее - AL Engine
     Код:
    1. al engine: register script=<Script Name>
    2. al engine: unregister script=<Script Name>
    3. al engine: set plugin <Var/String> description to <Var/String>
    4. al engine: set plugin <Var/String> timer interval to <Var/Number> s
     
  • Редактировалось 1 раз (а). Последний раз 14.09.2011 21:17:47.

    30.04.2010 16:40:41
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
     
    РЕЗЕРВ
     
    30.04.2010 16:41:25
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
     
    РЕЗЕРВ
     
    30.04.2010 16:41:47
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
     
    РЕЗЕРВ
     

    Редактировалось 2 раз (а). Последний раз 14.09.2011 21:17:35.

    30.04.2010 16:43:09
    Malstrime

    Репутация: 3611
    Сообщений: 5699
    Регистрация: 19.01.2009
     
    РЕЗЕРВ
     
    12345678>»
    Список игр