|
|
|
Канал X3: Terran Conflict »
Модовый и скриптовый отсек X3: Terran Conflict: «Новые скриптовые команды. Справочник от 16.01.2009.» |
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 4(94) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
Раздел Торговые команды (Trade Commands)
Andrei [<>Ace] : |
5. Далее как и было.
|
Дополнение к посту выше
5. От trader=<Var/Ship/Station> значительно зависит полученный результат, если этот аргумент не = null, причем null не скорректирует данный аргумент относительно <RefObj>. Если подставить корабли игрока - поиск будет вестись среди известных (отмеченных на карте) станций. Если подставлять корабли разных расс - то есть предпочтение по рассам. Почемуто Борон находясь в одном скачке от станции Аргона выдает Боронскую станцию в пяти скачках (вражда ведь непричем).
|
|
|
Chem
780 EGP
          Рейтинг канала: 6(498) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Блин, как-то вчера мое сообщение странно не запостилось.
В общем - вот список команд, которые выверены с встроенным редактором (см. вложение).
Дополнительно выкладываю список команд (и старых и новых), которые не были найдены во встроенном.
Прошу проверить оба списка (второй с большим приоритетом), по возможности, т.к. они буду основой справочника, и не только.
Заранее спасибо.
Код: |
Поиск станций:
1176 : <RetVar/IF> find station: product <Var/Ware> with best price random: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
1177 : <RetVar/IF> find station: resource <Var/Ware> with best price random: min.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
1178 : <RetVar/IF> find station sells: resource <Var/Ware> with best price random: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>, exclude array=<Value>
Старые квесты (их заменил МД):
1084 : register quest script <Script Name> instance multiple=<Var/Number>
1085 : set quest state with message: quest=<Var/Quest> state=<Var/Number> msg=<Var/String>
1086 : set quest/event <Var/Quest> timer to <Var/Number>ms
1087 : set quest <Var/Quest> timeout to <Var/Number>
1088 : <RefObj> add event listener: quest/event=<Var/Quest> objevent=<Var/Number> script=<Script Name>
1089 : <RefObj> remove event listener: quest/event=<Var/Quest>
Похоже убрали эту непонятную команду ;-):
1189 : <RetVar> = <RefObj> fire laser of turret <Var/Number> ahead
Вот эта из новых, но во встроенном не нашел:
1232 : <RetVar/IF><RefObj> add passenger to ship <Var/Ship>
Из старых, логично, т.к. теперь это похоже определяется типом:
1138 : <RetVar> = get missile range of <Var/Ware>
Похоже убрана любая работа с объектами отображения в текущем секторе с игроком
762 : <RetVar> = get ware type of SectorObject <Var/Number>
763 : <RetVar/IF> exists SectorObject <Var/Number>
771 : set rotation of sector object <Var/Number> : x=<Var/Number> y=<Var/Number> z=<Var/Number>
772 : <RetVar> = create sector object: maintype=<Var/Number> subtype=<Var/Number>
773 : free sector object <Var/Number>
774 : kill sector object <Var/Number> : reason=<Var/Number> , killer sector object=<Var/Number>
775 : start sector object <Var/Number> in space <Var/Number>
769 : set position of sector object <Var/Number> : x=<Var/Number> y=<Var/Number> z=<Var/Number>
764 : <RetVar/IF> get object from SectorObject <Var/Number>
А вот эту команду по-моему добавляли в 2.5:
770 : set safe position of sector object <Var/Number> : x=<Var/Number> y=<Var/Number> z=<Var/Number>
А вот это было у Мерчантов:
1172 : <RetVar/IF><RefObj> lock ware: <Var/Ware> on station: <Var/Station> for this
|
all_list.zip |
Описание: |
вот список команд, которые выверены с встроенным редактором |
|
Имя файла: |
all_list.zip |
Размер файла: |
9.61 KB |
Скачано: |
1110 раз(а) |
_________________ Умножим энтропию на 0 :-)
Последний раз редактировалось: Chem (14:45 15-01-2009), всего редактировалось 2 раз(а) |
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 4(94) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
Радел Другое
Код: |
1329 <RetVar/IF><RefObj> get user input: type=<Script Reference Type>, title=<Var/String> |
Вызывает меню для ввода аргумента type=<Script Reference Type> игроком из тала скрипта, ждет реакции (скрипт не выполняется пока игрок не ткнет "Esc" или не выполнит условие всплывшего меню), полученные данные присваивает <RetVar/IF>. Управление кораблем при этом не работает! title=<Var/String> - строка с пояснениями к аргументу, выводится ниже справа заголовока.
Код: |
1230 <RetVar/IF> open custom menu: title=<Var/String> description=<Var/String> option array=<Var/Array> |
Открывает пользовательское меню, именует его title=<Var/String>, description=<Var/String> - пояснения к меню, option array=<Var/Array> - массив опций самого меню.
Код: |
1489 <RetVar/IF> open custom info menu: title=<Var/String> description=<Var/String> option array=<Var/Array> maxoptions=<Var/Number> |
Не понял пока. Визуальная разница - меню открываемое второй командой шире .
Код: |
1445 <RetVar>= create custom menu array |
Создает массив для пользовательского меню.
Код: |
1416 <RetVar>= create custom menu array: heading=<Var/String> |
Создает массив для пользовательского меню с подзаглавием (подразделом) heading=<Var/String>.
Код: |
1444 <RetVar>= create custom menu array, info lines=<Var/String>, <Var/String>, <Var/String>, <Var/String>, <Var/String> |
Создает массив для пользовательского меню и подготавливает область для инструкций (сообщений, новостей ...) коих пять, а при желании можно и больше.
Код: |
1447 add custom menu item to array <Value>: text=<Var/String> returnvalue=<Value> |
Добавляет в созданный ранее массив array <Value> пользовательского меню активную строку text=<Var/String> при активации каторой результат returnvalue=<Value> будет передан переменной <RetVar/IF> команд open custom menu расмотренных веше.
Код: |
1448 add custom menu heading to array <Value>: title=<Var/String> |
Добавляет подзаглавие (подраздел) title=<Var/String> в созданный ранее массив array <Value> пользовательского меню.
Код: |
1446 add custom menu info line to array <Value>: text=<Var/String> |
Добавляет область для инструкций (сообщений, новостей ...) text=<Var/String> в созданный ранее массив array <Value> пользовательского меню.
Косательно трех последних команд:
Массив пользовательского меню выглядит как массив массивов и обрабатывается последовательно. Поэтому следует сперва добавлять подзаглавие (подраздел) потом активные строки, потом опять подзаглавие (подраздел) и так далее. Из перечисленных последовательно подзаглавий (подразделов) (без прочих элементов) отразится последний. Информационные строки отправятся в шапку независимо от расположения в массиве пользовательского меню.
Последний раз редактировалось: Andrei [<>Ace] (10:28 16-01-2009), всего редактировалось 3 раз(а) |
|
|
TsArIo
65 EGP
 Рейтинг канала: 1(3) Репутация: 2 Сообщения: 176
Зарегистрирован: 11.08.2006
 |
|
много хочу, но все же - планируется лм аналог (или update)
http://www.elite-games.ru/x3/scripts_howto/index.html ?
Последний раз редактировалось: TsArIo (17:30 15-01-2009), всего редактировалось 1 раз |
|
|
Арманкессилон
1740 EGP
             Рейтинг канала: 10(1323) Репутация: 346 Сообщения: 13122 Откуда: Ставрополь Зарегистрирован: 16.08.2007
 |
|
TsArIo : |
много хочу, но все же - планируется лм аналог (или update)
|
А для чего по твоему всё это делается?
_________________ Все астероиды не пересчитать! |
|
|
Chem
780 EGP
          Рейтинг канала: 6(498) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
См. первый пост:
: |
Справочник по скриптовым командам игры X3:Terran Conflict, в формате .chm.
version 0.1.11, build date 16.01.2009
|
Описания внес только из первого поста Эйса
_________________ Умножим энтропию на 0 :-) |
|
|
Chem
780 EGP
          Рейтинг канала: 6(498) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
По разделу Audio Commands,
конкретно команда :
send incoming question <Var/String> to player: callback=<Script Name> flags=<Var/Number>
и ее параметр flags.
Ну наконец-то !!!, можно задавать вопрос без записи в журнал, и отображать его сразу
Допускает флаги:
Msg.Display - отобразить сразу.
Msg.NoVoice - предположительно - и не пытаться озвучивать
Msg.Silent - предположительно - не отображать сразу
Msg.LogEntry - записать в журнал
Msg.Temporary - не записывать в журнал.
Флаг Msg.Temporary - похоже - по умолчанию.
Флаг Msg.Display - проверил - работает.
Как и в остальных флагах допускается комбинация, через операцию битовое ИЛИ ( | ).
Msg.Plot</t>
_________________ Умножим энтропию на 0 :-) |
|
|
z_m_a
105 EGP
  Рейтинг канала: 5(110) Репутация: 20 Сообщения: 264 Откуда: Подмосковье Зарегистрирован: 23.07.2007
 |
|
Наверное сюда.
Цитата: |
<RefObj> send incoming message: text=<Var/String> temporary=<Var/Number>
engine v. 32
......
· Сообщение может поступить только от корабля находящегося в том же секторе что и игрок.
|
В v1.4 приходит и в других секторах.
Цитата: |
<RetVar/IF><RefObj> eject passenger
engine v. 41
· eject passenger
|
Можно выкинуть и десантника. Возвращает ссылку на выкинутого астронавта в секторе и им можно управлять.
Дополнение:
Цитата: |
<RetVar/IF><RefObj> get marines array
|
Полученные элементы списка актуальны пока существует десантник. Даже если он в секторе в виде астронавта или в трюме другого транспортника( можно узнать где он вызвав $marine-> get environment - вернет транспорт или скафандр).Станет Unknown Object если астронавт уничтожен оружием.
В игре присутствует косяк: если астронавт уничтожен корпусом при попытке подбора истребителем(есть система жизнеобеспечения) ссылка на него сохраняется( get environment возвращает null - видимо будет существовать в игре вечно.) Ну это для обжекопателей
Для астронавта(десантника) get homebase возвращает транспорт из которого выброшен.
<RefObj> -> set destination to $target
Информационное значение $target может использоваться навигационными скриптами. Например !move.movetosector прыгает к ближайшим к $target воротам.
Дополнение2:
Десантники - не собственность игрока, а принадлежат к соответствующим расам и на них распространяются отношения и между расами и с игроком. Секторные патрули могут и пристрелить враждебного десантника.
Последний раз редактировалось: z_m_a (16:27 15-02-2009), всего редактировалось 2 раз(а) |
|
|
Dark_XSM
170 EGP
     Рейтинг канала: 6(345) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009
 |
|
Chem : |
Как и в остальных флагах допускается комбинация, через операцию битовое ИЛИ ( | ).
|
| - это точно "или"?
Я сейчас запускал поиск объектов с параметром
$Flag= [Find.nearest] | [Find.multiple]
Нашёл множество объектов, и рассортировал по увеличению расстояния от корабля.
По моему "или" записывается как ||
Хотя могу и ошибаться
|
|
|
z_m_a
105 EGP
  Рейтинг канала: 5(110) Репутация: 20 Сообщения: 264 Откуда: Подмосковье Зарегистрирован: 23.07.2007
 |
|
Продолжаем разговор...
Цитата: |
<RetVar/IF><RefObj> is ship boardable
|
Проверка возможности захвата.
Можно захватить ТL, TM, M6,M7,M1,M2.
Нельзя М8, М5, М4, М3, TP, TS, Оружейные платформы, некоторые миссионные объекты(Озирас), корабли Хааков.
PS: Несмотря на возвращаемое значение корабли Хааков можно захватить.
Цитата: |
<RetVar/IF><RefObj> get boarding shield threshold
engine v. 41
· get boarding shield threshold
|
Видимо возвращает уровень щита для абордажа в процентах М6 - 10, TL - 6, M1 - 4, M7 - 8 ... Сycrow почему-то считает что надо умножать на 2.
Неправильно считает.
Последний раз редактировалось: z_m_a (00:18 23-02-2009), всего редактировалось 4 раз(а) |
|
|
Dark_XSM
170 EGP
     Рейтинг канала: 6(345) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009
 |
|
Люди, я думаю одних описаний команд мало будет. Предлагаю ещё примеры к ним делать, дабы показать хотя бы одно направление применения скоманды.
К примеру я связал команды
<RetVar> create new array, arguments=<Value>, <Value>, <Value>, <Value>, <Value>
add custom menu item to array <Value>: text=<Var/String> returnvalue=<Value>
<RetVar/IF> open custom menu: title=<Var/String> description=<Var/String> option array=<Var/Array>
в такой вот не хитрый скрипт:
Код: |
$retval = 0
$Items.from.menu = create new array, arguments=null, null, null, null, null
$Sector = [PLAYERSHIP]->get sector
$Flags = [Find.Nearest] | [Find.Multiple]
$Objects = find flying ware: sector=$Sector maintype=null subtype=null flags=$Flags refobj=[PLAYERSHIP] maxdist=null maxnum=999999, refpos=null
Start:
$amount = size of array $Objects
$amount2 = size of array $Items.from.menu
$Obj = $Objects[0]
if $amount != 0
$retval = $retval + 1
add custom menu item to array $Items.from.menu: text=$Obj returnvalue=$retval
remove element from array $Objects at index 0
goto label Start
else if $amount2 != 0
$Menu2 = open custom menu: title='Objects' description='Flying objects' option array=$Items.from.menu
end
if $Menu2 > 0
$Objects = find flying ware: sector=$Sector maintype=null subtype=null flags=$Flags refobj=[PLAYERSHIP] maxdist=null maxnum=999999, refpos=null
$num = $Menu2 - 1
$Obj = $Objects[$num]
write to player logbook $Obj
end
return null |
Как из него понятно, он находит все контейнеры в секторе, впихивает их в меню и присваивает некие номера. Затем показывает менюшку игроку.
Таким образом можно не только указать всё барахло летающее в космосе, но и сделать с этим барахлом что-нибудь
Добавлено через неделю, что-ли: вообще можно гораздо проще сделать, но таким образом больший охват команд.
(сори, уже 2 О_о)
Последний раз редактировалось: Dark_XSM (18:26 11-03-2009), всего редактировалось 9 раз(а) |
|
|
Dark_XSM
170 EGP
     Рейтинг канала: 6(345) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009
 |
|
Dark_XSM : |
| - это точно "или"?
...
|
Там мне ответ писали, жаль что удалили.
И так, я вот до чего додумался. Этот знак не может быть и не И, и не ИЛИ, ибо оба этих оператора есть и так, и называются AND, и OR
Думаю оператор | это AND/OR (И/ИЛИ)
В самом деле, почему бы и нет? Да и работает он и так и так...
Последний раз редактировалось: Dark_XSM (20:46 22-02-2009), всего редактировалось 1 раз |
|
|
Chem
780 EGP
          Рейтинг канала: 6(498) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Dark_XSM : |
| - это точно "или"?
...
|
Точно.
И с его помощью действие флагов складывается. Но, некоторые флаги, имеют приоритет над другими, т.е. при их наличии некоторые другие игнорируются.
_________________ Умножим энтропию на 0 :-) |
|
|
z_m_a
105 EGP
  Рейтинг канала: 5(110) Репутация: 20 Сообщения: 264 Откуда: Подмосковье Зарегистрирован: 23.07.2007
 |
|
Dark_XSM : |
Там мне ответ писали, жаль что удалили.
И так, я вот до чего додумался. Этот знак не может быть и не И, и не ИЛИ, ибо оба этих оператора есть и так, и называется AND, и OR
Думаю оператор | = AND/OR
В самом деле, почему бы и нет? Да и работает он и так и так..
|
Отвечу еще раз. Побитовое ИЛИ. Позволят совместить 2 и более флага. Флаги должны иметь значения 1, 2, 4, 8 и т.д.
1 | 2 = 3 (00000001|00000010 = 00000011)
4 | 8 | 1 = 13 (00000100|00001000|00000001 = 00001101)
Если хоть в в одной из переменных соответствующий бит равен 1 в результате он будет 1.
ЗЫЖ Здесь тема не для вопросов по скриптописанию, как просмотришь пошли в личку - пост потру.
ЗЗЫЖ Соответсвующие операторы есть в С++.
2 Chem
А списка звуков/текстов у тебя для X3TC нет? Ведь со времен учебника DragonP что-то изменилось. Или где хоть этот 13 файл теперь искать?
Последний раз редактировалось: z_m_a (22:32 22-02-2009), всего редактировалось 4 раз(а) |
|
|
Dark_XSM
170 EGP
     Рейтинг канала: 6(345) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009
 |
|
А типы врат идут не только до 8-х, а аж до 20.
_________________ Дружбомагия пролюблена... |
|
|
Chem
780 EGP
          Рейтинг канала: 6(498) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Dark_XSM : |
А типы врат идут не только до 8-х, а аж до 20.
|
Угу
0-3 - обычные
4 - убитые
5-8 - земные
9-14 - хабовые рабочие
15-20 - хабовые - нерабочие.
_________________ Умножим энтропию на 0 :-) |
|
|
Dark_XSM
170 EGP
     Рейтинг канала: 6(345) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009
 |
|
Функцию команды gosub <label> поподробнее бы описали...
Что-нить типа "функция gosub позволяет на время передать управление другой части кода скрипта. Когда выбранная часть завершится, управление вернётся к следующей строке после gosub, и вернёт туда-же все данные полученные в другой части кода." Пример:
Код: |
01 gosub Sub (передаём управление части "Sub" (4-я строка))
02 write to player logbook $X (получает управление после "Sub", и переменную X со строки 5)
03 return null (скрипт завершается)
04 Sub:(часть "Sub" получает управление от 1-й строки, и начинает выполнение команд)
05 $X = 1000 (переменная X устанавливается равной 1000)
06 endsub (часть "Sub" завершается, и управление идёт ко 2-й строке)
07 return null
|
Стоит обратить внимание, что return null стоит ДО установки переменной X. Таким образом если для одного скрипта в разных частях требуется одно и -то-же условие, или вычисление, или ещё что, сделать так будет очень удобно.
Команда capture screen делает скриншот
_________________ Дружбомагия пролюблена...
Последний раз редактировалось: Dark_XSM (15:51 03-04-2009), всего редактировалось 3 раз(а) |
|
|
vudu
155 EGP
   Рейтинг канала: 6(349) Репутация: 28 Сообщения: 253
Зарегистрирован: 19.02.2009
 |
|
Dark_XSM : |
А типы врат идут не только до 8-х, а аж до 20.
|
в патче 2.0 добавили еще 4 штуки терранских врат, только где их используют я так пока и не понял
|
|
|
Dark_XSM
170 EGP
     Рейтинг канала: 6(345) Репутация: 17 Сообщения: 668 Откуда: Новосибирск Зарегистрирован: 21.02.2009
 |
|
В справочнике сказано что команда <RetVar/IF><RefObj> fire missile <Var/Ware> on <Value> запускает любую ракету, лишь бы та была в трюме. Пытался проверить. Запускает только ракеты разрешённые для корабля.
Короче: запускает только те ракеты, которыми может стрелять корабль.
А когда будет следующее обновление справочника? Было бы не плохо побыстрее, а то при нужде узнать инфу о какой-нить команде, в которой не можешь разобраться сам, приходится ждать пока загрузится сайт, да и загрузится ли вообще(проблемы с сетью).
В результате потеря времени и нервов.
_________________ Дружбомагия пролюблена... |
|
|
ULiX
320 EGP
      Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005
 |
|
Я вижу, Эгософт решили ввести в скрипт серьёзные вещи, поддержку регулярных выражений... Интересно вот только поддерживается полный набор инструкций?
Не думаю, что начинающие скриптеры, на которых в первую очередь рассчитан справочник, имеют представления о регулярных выражениях, которые по большей степени используются в web программировании. Возможно стоит включить эту информацию в справочник. Если Эгософт действительно используют весь функционал регулярных выражений, то работа с текстом сильно упростится. Судя по тому, что расчет регулярных выражений происходит вызовом функций из exe, то вполне возможно, что подключен оригинальный модуль обработки регулярных выражений.
_________________ Новое ещё не значит лучшее |
|
|
|
|
|
Канал X3: Terran Conflict ->
Модовый и скриптовый отсек X3: Terran Conflict: «Новые скриптовые команды. Справочник от 16.01.2009.» |
|