Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Учебник по скриптам | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 3
На страницу: 1, 2, 3  След. | Все страницы
Поиск в этой теме:
Канал X2: The Threat: «Учебник по скриптам»
Пишете ли Вы скрипты к X2?
Уже пишу
26%
 26%  [ 31 ]
Еще нет, но буду
19%
 19%  [ 23 ]
Хотел бы, но не хватает знаний
44%
 44%  [ 52 ]
Лучше скачаю готовые
6%
 6%  [ 7 ]
Скрипты вообще не нужны
2%
 2%  [ 3 ]
Всего проголосовало : 116
Пассажир
 

Пассажир




Приветствую всех!

Возможно, этот вопрос уже поднимался, но я нигде не смог обнаружить нормального учебника по скриптам X2. Я знаю, что некоторые пилоты уже разобрались со скриптами и пишут свои (причем успешно, очень полезные и нужные), но наверняка также есть и такие, кто хотел бы что-то написать, но не смог разобраться в нагромождениях редактора (тот еще "шедевр" Разозлен).

В общем мое предложение таково: давайте объеденим усилия и сделаем нормальное описание всех команд редактора с подробным комментарием:
1. Назначение
2. Какие параметры принимает
3. Что возвращает
4. Пример использования

Я уже начал делать что-то подобное для себя, но пока еще не разобрался примерно с половиной (а то и больше) команд, поэтому предлагаю сделать этот проект совместным.
    Добавлено: 09:09 02-08-2004   
XenonTomb
 250 EGP


Рейтинг канала: 2(16)
Репутация: 66
Сообщения: 867
Откуда: Николаев, Украина
Зарегистрирован: 17.03.2004
Идея хорошая. Надо сделать и добавить в хелп по Х2. Там уже много чего есть, чуть переделать с учетом реалий 1.4, с некоторыми неописанными там командами уже разобрались. Ты Dimaxx'у отпиши в приват, согласуй. А там уж будем всем миром править, а ты проект скоординируешь.

Начнем, пожалуй. Вот несколько команд, помеченных ??? в разделе про скрипты хелпа:

<RetVar/IF> get player tracking aim
Возвращает объект, который находится в прицеле корабля игрока. Вернет null, если в прицеле ничего нет.

<RetVar> = best missile type for target <Value>
Возвращает тип ракеты, которая по мнению компьютера, лучше всего подходит для поражения цели <Value>.

<RetVar/IF> <RefObj> trades with ware <Var/Ware>
Проверить, торгует ли станция <RefObj> товаром <Var/Ware>.

<RefObj> station trade and production tasks: on=<Var/Number>
Вызов команды с параметром TRUE запускает процесс производства и торговли для станции <RefObj>. При FALSE, соответственно, наоборот.

Кто еще чего нарыл, постите сюда.
_________________
Будут предложения - присылайте на расчетный счет :)
    Добавлено: 09:36 02-08-2004   
Пассажир
 

Пассажир




Поехали! Выбрал из своих набросков то, чего не нашел (или нашел, но не полностью) в хелпе. Версия игры 1.4, скриптового движка - 25.

@<RetVar/IF/START> <RefObj> call script <Script Name>: <Parameter>
Вызывает скрипт <Script Name> для объекта <RefObj> с параметрами <Parameter>. Возвращаемое скриптом значение присваивается переменной <RetVar> или анализируется в <IF>. Указание <START> означает продолжение выполнения текущего скрипта, без ожидания завершения вызванного. Допускается игнорирование возвращаемого значения (отсутствие <RetVar/IF>).

Аудио команды.
play sample <Var/Number>
???

play sample: incoming transmission <Var/Number> from object <Value>
В качестве incoming transmission допускаются константы IncomingMessage.XXXX Работа команды заключается в произнесении голосом бортового компьютера фразы "Нас приветствуют" или чего-то подобного в зависимости от аргумента. Аргумент from object - по идее должен указывать источник сообщения, но я не понял что там надо указывать

<RefObj> send audio message <Var/Number> to player
В качестве параметра используются константы Comm.XXXX От объекта <RefObj> приходит сообщение типа "Мы просканировали..."

send incoming message <Var/String> display it=<Var/Number>
Посылает сообщение message игроку. Если display it=[TRUE], то сообщение сразу же отображается на экране, если [FALSE] - записывается в журнал, игрок слышит "Пришло новое сообщение". В поле "От:" будет написано "Неизвестно". Как задать источник и форматировать сообщение - не знаю, есть подозрение, что надо загружать текст из заранее подготовленного файла.

Продолжение следует...
    Добавлено: 12:01 02-08-2004   
XenonTomb
 250 EGP


Рейтинг канала: 2(16)
Репутация: 66
Сообщения: 867
Откуда: Николаев, Украина
Зарегистрирован: 17.03.2004
Akela :
play sample <Var/Number>

Проигрывает звуковой сэмпл с номером <Var/Number>. Сэмплы хранятся в папке "s" игры и имеют формат WAV. Номера сэмплов совпадают с именем файла. Это всякого рода простые звуки, например открытия люка, звука от оружия и т.п.
Есть подозрение, что можно добавить своих сэмплов и потом их использовать.
_________________
Будут предложения - присылайте на расчетный счет :)
    Добавлено: 12:32 02-08-2004   
serg-314159
 97 EGP


Репутация: 6
Сообщения: 50

Зарегистрирован: 08.06.2004

<RetVar>=<RefObj> get rot alpha
<RetVar>=<RefObj> get rot beta
<RetVar>=<RefObj> get rot gamma
<RefObj> set rotation: alpha=<Var/Number> beta=<Var/Number> gamma=<Var/Number>

Получает/устанавливает угол поворота объекта в системе координат X2
alpha - угол поворота в плоскости XZ (карта X2), направление на N = 0, W = 16384,S = 32768,E = -16384 = (32768+16384)
beta - угол подъема вектора корабля от плоскости XZ (тангаж), 0 - вектор в плоскости XZ, 16384 - нормаль XZ (параллелен оси Y) итд
gamma - крен корабля - угол поворота плоскости корабля относительно положения вектора, заданного alpha и beta; определяет не столько ориентацию вектора, сколько способ модификации alpha и beta при управлении (изменяется клавишами <Q>,<W>), задается также в системе [-0xFFFF..0xFFFF], c направлением против часовой стрелке
    Добавлено: 13:22 02-08-2004   
Пассажир
 

Пассажир




2XenonTomb Ок, спасибо.

<RetVar/IF/START> speak text: page=<Var/Number1> id=<Var/Number2> priority=<Var/Number3>
Озвучивает текст из языкового ресурса (файлы 70001.xml и т.п. в папке t) со страницы <Var/Number1>, строка <Var/Number2> с приоритетом <Var/Number3>. Что возвращает - х/з, предполагаю, что это сделано для возможности поставить префикс START, который означает, что скрипт не будет ожидать конца текста, а продолжит выполнение. Если в момент озвучивания текста приходит запрос на озвучку с таким же или большим приоритетом - озвучиваемый текст перебивается запросом. Если приоритет меньше - запрос игнорируется.
    Добавлено: 13:58 02-08-2004   
XenonTomb
 250 EGP


Рейтинг канала: 2(16)
Репутация: 66
Сообщения: 867
Откуда: Николаев, Украина
Зарегистрирован: 17.03.2004
Akela :
<RetVar/IF/START> speak text: page=<Var/Number1> id=<Var/Number2> priority=<Var/Number3>
Озвучивает текст из языкового ресурса (файлы 70001.xml и т.п. в папке t) со страницы <Var/Number1>, подраздел <Var/Number2> с приоритетом <Var/Number3>.

Да. А если точнее, чаще всего со страницы 13; id - номер соответствующей строки на странице.
_________________
Будут предложения - присылайте на расчетный счет :)
    Добавлено: 14:45 02-08-2004   
Пассажир
 

Пассажир




Продолжу по командам. Опять-таки выбираю только те команды, которые не описаны в хелпе.

Основные команды
inc<RetVar>=
Увеличивает значение <RetVar> на 1.
dec<RetVar>=
Уменьшает значение <RetVar> на 1.
По идее, эти команды применимы только к числовым переменным.

<RetVar>=script engine version
Возвращает версию скриптового движка. Может применяться в скриптах, рассчитанных на высокие версии игры, для автоматического контроля возможности выполнения в данной системе.

<RetVar/IF>is script prio <Var/Number> on stack
Возвращает [TRUE] если на вершине стека находится (выполняется в данный момент) скрипт с приоритетом <Var/Number>

<RefObj> start task <Var/Number1> with script <Script Name> and prio <Var/Number2>: arg1=<Value1> arg2=<Value2> arg3=<Value3> arg4=<Value4> arg5=<Value5>
<RefObj> interrupt task <Var/Number1> with script <Script Name> and prio <Var/Number2>: arg1=<Value1> arg2=<Value2> arg3=<Value3> arg4=<Value4>
<RefObj> interrupt with script <Script Name> and prio <Var/Number2>: arg1=<Value1> arg2=<Value2> arg3=<Value3> arg4=<Value4>
<RefObj> interrupt with script <Script Name> and prio <Var/Number2>
Это команды управления задачами и скриптами объекта <RefObj>. Подробнее я с ними еще не разобрался.

<RetVar/IF>get task ID
Возвращает локальный идентификатор текущей задачи для того объекта на котором она выполняется. Этот идентификатор виден в окошке Script Task Infos объекта
<RetVar/IF>get PID
Возвращает глобальный идентификатор задачи. Можно посмотреть там же где и локальный.

<RetVar>=sprintf: fmt=<Var/String>, <Value1>, <Value2>, <Value3>, <Value4>, <Value5>
Возвращает строку <Var/String> в которой все символы %s заменены соответствующими значениями параметров <Value>. Первый %s - <Value1>, второй - <value2> и т.д. Применяется для подстановки в заданный шаблон вычисляемых значений.
<RetVar>=sprintf: pageid=<Var/Number1> id=<Var/Number2>, <Value1>, <Value2>, <Value3>, <Value4>, <Value5>
То же самое, что и предыдущая функция, только шаблон читается из языкового ресурса, страница <Var/Number1>, строка <Var/Number2>

load text: id=<Var/Number>
???

<RetVar/IF> system date is month=<Var/Number1> day=<Var/Number2>
Возвращает [TRUE] если системная (не игровая!) дата на компьютере совпадает с запрошенной и [FALSE] в противном случае.
<RetVar>=playing time
Возвращает текущее игровое время в секундах.

<RefObj>set local variable: name=<Var/String> value=<Value>
Устанавливает значение локальной переменной объекта <Var/String> равным <Value>.
<RetVar/IF><RefObj> get local variable: name=<Var/String>
Возвращает значение локальной переменной объекта <RefObj> с именем <Var/String>. Локальные переменные разных объектов независимы. Эта пара функций может применяться для обмена данными между скриптами выполняемыми на одном объекте. Отменить установку переменной можно задав её значание в null.
set global variable: name=<Var/String> value=<Value>
<ReTVar>=get global variable: name=<Var/String>
Пара функций аналогичная предыдущей, но работающая с глобальными переменными. Глобальные переменные не привязаны к какому-либо объекту, а являются общими для всех.

al engine: register script=<Script Name>
al engine: unregister script=<Script Name>
Регистрирует и снимает регистрацию скрипта <Script Name> как плагина к AL (Artificial Life) Engine.
al engine: set plugin <Var/String1> description to <Var/String2>
Устанавливает описание плагина с идентификатором <Var/String1> равным <Var/String2>
al engine: set plugin <Var/String> timer interval to <Var/Number> s
Устанавливает интервал вызовов плагина <Var/String> по таймеру в <Var/Number> секунд

<RetVar>=get script version
Возвращает версию скрипта
<RetVar>=get script name
Возвращает имя скрипта

<RetVar/IF> is plot <Var/Number> is state <Var/Number>
???

<RetVar>=get random name: race=<Var/Race>
Возвращает случайно выбранное имя представителя расы <Var/Race>

<RetVar>=get Khaak agression level
Возвращает уровень агрессивности Хааков
set Khaak agression level to <Var/Number>
Устанавливает уровень агрессивности Хааков. В каких пределах изменяется этот упровень и на что именно вляет - неясно.

Уфф! Вроде по основным командам все...
    Добавлено: 18:19 02-08-2004   
RAider
 405 EGP


Рейтинг канала: 2(21)
Репутация: 133
Сообщения: 1294
Откуда: Таганрог
Зарегистрирован: 08.07.2003
Akela :
.

load text: id=<Var/Number>
???


эта команда на загрузку языкового файла описания с соответсвтующим ID из папки "t"...например, для 70003 - id = 3. делается это для того, чтобы в дополнительных файлах прописать все поля описания нестанадартных товаров\кораблей, которые добавлены в игру, иначе мы получим read-text`ы в их описаниях.
(хотя, как вариант, описания дополнительных товаров\корабелй\объектов могут быть добавлены и в 70001, который загружается автоматически, имхо, он там прописан такой же командой где-то в эгософтофских скриптах...)
_________________
Smart is the new Sexy.
    Добавлено: 23:37 02-08-2004   
akm
 470 EGP


Рейтинг канала: 1(4)
Репутация: 173
Сообщения: 1638
Откуда: Паразит Прайм
Зарегистрирован: 23.10.2002
Цитата:
Вы все это Пегасычу на мыло или приват...

У Пегасыча почтовый ящик загнется Подмигиваю

2 All Дополнения/исправления постим в эту тему.

Можно попросить модераторов резать весь оффтоп (со снятием ЕГП) ?

Я к тому, что работы очень много. Вы вот дополняете... а я сейчас начну исправлять ошибки. Вот посмотрите какой бардак в текущей версии "учебника" Подмигиваю

@<RetVar/IF/START> <RefObj> call script <Script Name>: <Parameter>
Запускает скрипт <Script Name> в стеке Task 0 объекта <RefObj> (либо в текущем стеке текущего объекта если не использован префикс START) с параметрами <Parameter> и приоритетом текущего скрипта. Возвращаемое скриптом значение присваивается переменной <RetVar> или анализируется в <IF>. Допускается игнорирование возвращаемого значения (отсутствие <RetVar/IF>). Если <RefObj> = null и использован префикс START, то скрипт будет запущен как глобальный.
При запуске в текущем стеке (т.е. без префикса START) команда call script ничего не удаляет из текущего стека. В противном случае из стека Task 0 объекта <RefObj> будут удалены все остальные скрипты независимо от приоритетов.
Указание префикса <START> означает продолжение выполнения текущего скрипта, без ожидания завершения вызванного. При этом скрипт будет запущен строго в стеке Task 0 объекта <RefObj>, удалив при этом все остальные скрипты из этого стека.
Внимание! Никогда не используйте @ START [THIS]->call script в скрипте, запущенном в Task 0 объекта! Скрипт не будет запущен, а текущий повиснет!
Также будьте внимательны с запуском без префикса START и с <RefObj> отличным от [THIS], т.к. если объект <RefObj> будет уничтожен, вызванный скрипт сам остановлен при этом не будет, он будет продолжать выполняться на текущем объекте и может повиснуть.

<RetVar/IF>is script prio <Var/Number> on stack
Возвращает [TRUE] если в текущем стеке находится (выполняется в данный момент) скрипт с приоритетом <Var/Number>. Т.е. если эта команда вызвана из скрипта, запущеннго в стеке Task 10, то будут проанализированы все скрипты, включая текущий, но запущенные только в этом же стеке Task 10 этого же объекта. Кстати, весьма полезная команда. На сегодня это единственная команда, с помощью которой извне (из другого скрипта) можно узнать а запущен ли такой-то скрипт в таком-то слоте такого-то корабля/станции.

<RefObj> start task <Var/Number1> with script <Script Name> and prio <Var/Number2>: arg1=<Value1> arg2=<Value2> arg3=<Value3> arg4=<Value4> arg5=<Value5>
Запускает скрипт <Script Name> в стеке Task <Var/Number1> объекта <RefObj> с приоритетом <Var/Number2> и параметрами <Value1> ... <Value5>, при этом вытеснив (удалив) все остальные скрипты из этого же стека.
Внимание! Командой start task <Var/Number> with script ни в коем случае нельзя запускать скрипт в текущем стеке! (т.е. на том же объекте и том же Task, где запускается команда start task) Если это сделать, скрипт повиснет.

<RefObj> interrupt task <Var/Number1> with script <Script Name> and prio <Var/Number2>: arg1=<Value1> arg2=<Value2> arg3=<Value3> arg4=<Value4>
Формирует запрос на прерывание (см. IntReq в статистике объекта) скриптом <Script Name> в стеке Task <Var/Number1> объекта <RefObj> с приоритетом <Var/Number2> и параметрами <Value1> ... <Value4>, но только при условии, что в соответствующем стеке уже запущен хоть 1 скрипт и указанный приоритет <Var/Number2> выше приоритета активного в данном стеке скрипта. Если прерывания разрешены в данном стеке, то запуск скрипта <Script Name> фактически произойдет лишь в момент завершения первой встретившейся за командой interrupt прерываемой команды (т.е. помеченной "@"). И, если такой команды нет вплоть до return, то скрипт <Script Name> запущен не будет.

<RefObj> interrupt with script <Script Name> and prio <Var/Number2>: arg1=<Value1> arg2=<Value2> arg3=<Value3> arg4=<Value4>
<RefObj> interrupt with script <Script Name> and prio <Var/Number2>
Формируют запрос на прерывание (см. IntReq в статистике объекта) скриптом <Script Name> в стеке Task 0 объекта <RefObj> с приоритетом <Var/Number2> и параметрами <Value1> ... <Value4>, но только при условии, что в соответствующем стеке уже запущен хоть 1 скрипт и указанный приоритет <Var/Number2> выше приоритета активного в данном стеке скрипта. Если прерывания разрешены в данном стеке, то запуск скрипта <Script Name> фактически произойдет лишь в момент завершения первой встретившейся за командой interrupt прерываемой команды (т.е. помеченной "@"). И, если такой команды нет вплоть до return, то скрипт <Script Name> запущен не будет.

enable signal/interrupt handling: <Var/Number>
Включает/выключает (TRUE/FALSE) прерывания для всего текущего стека.

<RetVar/IF>get task ID
Возвращает номер стека (задачи) на объекте, в котором выполняется текущий скрипт. Также в разделе "Script Task Infos" меню информации об объекте можно увидеть список всех активных стеков (задач) и какие скрипты и с каким приоритетом выполняются в каждом из них.

Все обработчики сигналов запускаются строго в стеке Task 0 (ничего не удаляя из стека). Любые команды кораблю из командной консоли тоже запускаются в стеке Task 0, удаляя при этом все остальные скрипты из этого стека. Скрипт, запущенный командой START <RefObj> command <Object Command> (она почему то в разделе Fly Commands) также запускается в стеке Task 0, удаляя все остальные срипты из этого стека.

Скрипты турели 1 запускаются в стеке Task 1.
Скрипты турели 2 запускаются в стеке Task 2 и т.д.

Скрипты в доп. слоте 1 запускаются в стеке Task 10.
Скрипты в доп. слоте 2 запускаются в стеке Task 11 и т.д. Причем одинаково и для кораблей, и для фабрик.
    Добавлено: 00:58 03-08-2004   
XenonTomb
 250 EGP


Рейтинг канала: 2(16)
Репутация: 66
Сообщения: 867
Откуда: Николаев, Украина
Зарегистрирован: 17.03.2004
Некоторые новые команды игры версии 1.4:

<RefObj> station send defend squad against ship <Var/Ship/Station>
Станции <RefObj> выслать корабли охраны (все корабли класса "истребитель", которые приписаны к этой станции) против объекта <Var/Ship/Station>. По-идее в качестве станции могут быть и бигшипы (не проверено).

<RetVar>=<RefObj> get name
Получить в <RetVar> название объекта <RefObj> как строку.

<RefObj> set name to <Var/String>
Переименовать объект <RefObj> в <Var/String>.

<RefObj> set owner race to <Var/Race>
Назначить объекту <RefObj> владельцем расу <Var/Race>. По-идее можно использовать для эмуляции захвата.

<RetVar>=<RefObj> get pilot name
Получить в <RetVar> имя пилота корабля <RefObj> как строку.

<RefObj> set pilot name <Var/String>
Переименовать пилота корабля <RefObj> в <Var/String>.

<RefObj> set pilot speaker: voice=<Value>, face=<Value>, Pirate subrace=<Value>, Argon female=<value>
Установить тип голоса пилота корабля <RefObj> в <Value>, тип лица пилота в <Value>, расу пилота (если это пират) в <Value>, а также признак "женский голос" если пилот - женщина расы Аргон.

Дополнение к уже известным торговым командам <RetVar/IF> <RefObj> buy (sell, load, unload) <Var/Number> units of <Var/Ware> - все они возвращают кол-во товара, которое успешно куплено, продано, загружено, выгружено.
_________________
Будут предложения - присылайте на расчетный счет :)
    Добавлено: 09:24 03-08-2004   
Vitalii
 955 EGP


чОрный борон
Рейтинг канала: 1(3)
Репутация: 249
Сообщения: 7214
Откуда: Тула
Зарегистрирован: 13.08.2002
akm :
Можно попросить модераторов резать весь оффтоп (со снятием ЕГП) ?


попросить всегда можно Гы-гы

зы: ну все поняли, да? Модератор
_________________
Связь - это как воздух, незаметна, пока не испортишь.
    Добавлено: 17:19 03-08-2004   
serg-314159
 97 EGP


Репутация: 6
Сообщения: 50

Зарегистрирован: 08.06.2004
Поскольку, как я понимаю, на форуме присутствуют пассажиры, пытающиеся пользоваться
редактором скриптов, не имея представления о программировании в целых числах, рискну написать для них
краткое руководство.
В понятии целочисленных операций важное значение имеет разрядность d, показывающая число бит, отведенных под число
В SCE d=31(+1 на знак)
{примечание: на практике не проверял, но в системе координат X2 разрядность явно выше 16, и вряд ли достигает 64; собственно, это не принципиально},
при этом числа имеют диапазон - [-2147483648,2147483647] или [-0x80000000,0x7FFFFFFF]
в шестнадцатиричной системе счисления.
Обращаю Ваше внимание, что вне этого диапазона чисел не существует, поэтому верно
Код:

x:=2147483647
inc(x)=
* COMMENT:x=-2147483648

В связи с этим возможна ситуация ЦЕЛОЧИСЛЕННОГО ПЕРЕПОЛНЕНИЯ:
Код:

* x1=x2=0x10000
x1:=65536
x2:=x1
Result:=x1*x2
* COMMENT:True Result=0x10000*0x10000=0x100000000
* COMMENT:SCE  Result=0

Как и в большинстве языков программирования,в SCE операция деления определена как
ЦЕЛОЧИСЛЕННАЯ С ОТБРАСЫВАНИЕМ:
Код:

div:=x/N
xmod:=x mod N
* COMMENT:x=div*N+xmod

где div - частное с отбрасыванием остатка
xmod - остаток от деления
В связи с вышесказанным имеется проблема получения наиболее точного значения x1*x2/x3.
С одной стороны, умножение x1*x2 может вызвать переполнение, с другой стороны
x1/x3*x2 вызовет ошибку вычисления на (x1 mod x3)*x2/x3
Обычно эта проблема решается повышением разрядности произведения x1*x2
    Добавлено: 13:03 26-08-2004   
XenonTomb
 250 EGP


Рейтинг канала: 2(16)
Репутация: 66
Сообщения: 867
Откуда: Николаев, Украина
Зарегистрирован: 17.03.2004
Возвращаю тему из Задница. Что-то ничего никто не пишет... Расстроен

Повторюсь еще раз - да простят меня модераторы Улыбка

2ANS, akm, GreyWolf и др. желающим поучаствовать

Тут товарищ Vitalii на днях предлагал сварганить раздел в хелп про стандартные скрипты Х2: какой что делает (кратенько), желательно указывать назначение параметров. Я готов свести это дело до кучи в удобоваримом виде. Будете помогать? Обсуждать предлагаю в "Скриптописании" (пусть здесь будут готовые решения).

З.Ы. Мое личное мыло для обсуждений paa@ua.fm
_________________
Будут предложения - присылайте на расчетный счет :)
    Добавлено: 18:34 06-09-2004   
Grey Wolf
 500 EGP


Рейтинг канала: 2(17)
Репутация: 115
Сообщения: 1677
Откуда: Ростов-на-Дону
Зарегистрирован: 31.03.2003
Кстати, я сталкивался с переполнением, когда пытался в каком-то скрипте активно работать с координатами. Пришлось тогда именно париться, уменьшая разрядность.

Насчет хелпа про стандартные скрипты: по моему нах не нужен. Собсно, зачем он? Гораздо нужнее хелп по самому скриптовому языку с аргументами функций и некоторыми примерами. Многое уже сделано, надо только до кучи все свести, например в хелп Димакса и Пегасыча.
_________________
Быстро выпитая рюмка не считается налитой
    Добавлено: 18:55 06-09-2004   
Пассажир
 

Пассажир




to akm

Добавь, что скрипт, запущенный в том же стеке по call script, наследует приоритет родительского скрипта. То есть в стеке появляется два скрипта с одинаковым приоритетом - родитель и потомок.
    Добавлено: 00:00 12-09-2004   
Proffesor
 65 EGP


Рейтинг канала: 1(2)
Репутация: 5
Сообщения: 180
Откуда: Санкт-Петербург
Зарегистрирован: 30.08.2004
Прошу прощения, подскажите где еще можно X2 modder pack Version 1.4 скачать? Отсюда не качает! Ругаюсь, недоволен! Ругаюсь, недоволен! Десять раз пробовал!!!
_________________
Хранитель сущего Proffesor,
Лидер команды PMM-team.
    Добавлено: 00:06 12-09-2004   
akm
 470 EGP


Рейтинг канала: 1(4)
Репутация: 173
Сообщения: 1638
Откуда: Паразит Прайм
Зарегистрирован: 23.10.2002
Столкнулся с таким багом в версии 1.4, но полагаю и в более ранних версиях Х2 он присутствует.
Функция <RetVar/IF> <RefObj> get max speed возвращает вовсе не максимальную скорость корабля <RefObj> с учетом его текущих апгрейдов движка, а макс. скорость корабля без апгрейдов Engine Tuning. Т.е. в ТТХ кораблей это минимальная скорость. Кроме того, функция возвращает скорость не в м/с, а в игровых юнитах.

Вот как можно "добыть" реальную макс. скорость корабля $Ship с учетом его текущих апгрейдов:
$speed = $Ship -> get max speed
$engine.upgrades = $Ship -> get amount of ware Engine Tuning in cargo bay
$speed = $speed * ( 10 + $engine.upgrades ) / 10

Получившаяся скорость $speed будет в игровых юнитах. Если желаете перевести ее в м/с, то $speed надо разделить на 222.01:
$speed = $speed * 100 / 22201
    Добавлено: 21:26 15-09-2004   
Grey Wolf
 500 EGP


Рейтинг канала: 2(17)
Репутация: 115
Сообщения: 1677
Откуда: Ростов-на-Дону
Зарегистрирован: 31.03.2003
Такую вот фигню обнаружил:
Все функции, связанные с SectorObject Id работают только в том секторе, где пилот. Во всех остальных секторах этот самый Id любого объекта равен 0.
_________________
Быстро выпитая рюмка не считается налитой
    Добавлено: 01:10 24-09-2004   
Gor
 220 EGP


Репутация: 45
Сообщения: 680
Откуда: Московский филиал клана [OEG]
Зарегистрирован: 23.06.2004
<RefObj> set position: x=<Var/Number> y=<Var/Number> z=<Var/Number>

перемешает объект в точку с заданными координатами, если по этим координатам находиться объект, то перемещение производится в ближайшую свободную зону.
_________________
Аргон ксенону не товарищ
    Добавлено: 12:23 24-09-2004   
Канал X2: The Threat: «Учебник по скриптам»
На страницу: 1, 2, 3  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Странно. Музыкальное образование по аккордеону у тебя, а баянит Осьма... (Fry - DSMу)

  » Учебник по скриптам | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18