ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Справочник по скриптовым командам (X3)|v. 0.3.54|05.07.2008 | страница 4 |
|
|
|
Канал X3: Reunion »
Модовый и скриптовый отсек X3: Reunion: «Справочник по скриптовым командам (X3)|v. 0.3.54|05.07.2008» |
|
Что нужно добавить в справочник в первую очередь ? |
Описания файлов из каталога types. |
|
25% |
[ 2 ] |
Статьи, написанные выдающимися скриптерами. |
|
37% |
[ 3 ] |
Задачи, и лучшие решения скрипт-школы. |
|
37% |
[ 3 ] |
Свой вариант (просьба описать кратко, но емко). |
|
0% |
[ 0 ] |
|
Всего проголосовало : 8 |
|
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32767
Зарегистрирован: 26.10.2003
 |
|
sergej4341 : |
Цитата: |
Эту ситуацию нужно еще очень долго разруливать и тестировать, в каких ситуациях стеки очищаются игрой, а в каких нет
|
а не влияет ли часом на это включена/отключена расовая логика для непися и включена/отключена стартовая команда для вновь созданого непися
|
Похоже, что влияет стартэкшн (расовая логика не влияет). Но это проверять и проверять. Так как я сейчас в стандартную х3 не играю, то проверить не могу. В Х-А стартэкшн и логика вырезаны с корнями для всех кораблей и станций в обже (специально, ибо нефиг), там проблем не видел пока со стеками.
Chem : |
Имеет смысл вложить в отдельный пак для того чтобы редактор в игре был правильный - английский, а все остальное - русское
т.е. вложить английский текст из 440001 но в русский язык ?
|
Да. Все разделы скриптредактора лучше вставить родные из 44.
Chem : |
И еще, получается система игнорирует 70001.pck (там написание команд правильное) лежащий в t папке, точнее читает его раньше cat/dat Файлов ?
|
Да.
Krom : |
Распакованные языковые файлы имеют приоритет выше, чем нераспакованные
|
Наоборот. У запакованных приоритет выше. Плюс у датов приоритет выше, чем у файлов в папках в корне игры.
Т.е. сперва читаются папки в игре (сперва xml, потом pck, с перезаписью одноименных xml в памяти), потом читаются dat`ы с 1 по последний. Вобщем, что прочиталось последним, то и главное.
Исключение - файл голосовой разметки. там pck вроде вообще не читается, т.е. xml главный.
Executor : |
в EG-переводе, там наверное не переводили редактор
|
Переводили частично
|
|
|
Krom
455 EGP
   Рейтинг канала: 1(3) Репутация: 159 Сообщения: 1988 Откуда: Горы Урала Зарегистрирован: 19.07.2005
 |
|
AlexYar : |
Executor : |
в EG-переводе, там наверное не переводили редактор
|
Переводили частично
|
Собственно команды перевод не затрагивал. Переводились только названия пунктов меню, по которым разбиты команды во встроенном редакторе.
_________________ Не спешите меня. |
|
|
ULiX
320 EGP
      Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005
 |
|
Мдя... Обшибки и недочеты в описании команд напрмую наследуются с проекта DragonP
Тут нужно немного порулить. А то скриптёры так и останутся без достойного справочника.
Chem, написание справочника - это идея хорошая. Но желательно, чтоб все команды были проверены и прочувствованы в действии.
Есть множество команд, которые должны быть использованы совместно для достижения цели, однако находятся они в разных разделах. Для удобства использования справочника желательно создавать перекрёстные ссылки "См. также" на подкоманды, без которых использование целевой функции безсмысленно.
Пример я тебе выслал в личку:
<RefObj> -> set pilot speaker: voice=<Value>, face=<Value>, Pirate subrace=<Value>, Argon female=<Value>
<RefObj> -> send audio message <Value> to player
Эти команды для достижения эфекта должны быть использованы совместно, однако одна из них в разделе аудио команд, а другая в разделе общих команд для объектов. Нехилое расстояние, если начнёшь искать. А если поставить взаимные ссылки от этих команд, то поиск значительно упрощается и число скриптёров, которые найдут эти команды полезными, увеличится.
Дополнения по массивам.
Для создания двумерного массива нужно использовать команды:
append <Value> to array <Var/Array>
Или
insert <Value> into array <Var/Array> at index <Var/Number>
где в качестве аргумента добавляемого или вставляемого элемента выступает переменная-массив.
Пример:
$MyArray = array alloc: size=0
$ValArray = array alloc: size=2
append $ValArray to array $MyArray
$ValArray = array alloc: size=6
append $ValArray to array $MyArray
$ValArray = array alloc: size=4
append $ValArray to array $MyArray
После выполнения данной серии команд массив $MyArray примет следующую структуру:
{[],[]},
{[],[],[],[],[],[]},
{[],[],[],[]}
Три строки, в каждой из которой различное количество элементов.
После этого мы сможем считывать и присваивать следующие элементы:
$MyArray[0][0] = <Value>
$MyArray[0][1] = <Value>
$MyArray[1][0] = <Value>
$MyArray[1][1] = <Value>
$MyArray[1][2] = <Value>
$MyArray[1][3] = <Value>
$MyArray[1][4] = <Value>
$MyArray[1][5] = <Value>
$MyArray[2][0] = <Value>
$MyArray[2][1] = <Value>
$MyArray[2][2] = <Value>
$MyArray[2][3] = <Value>
Как видим, возможно создавать несемитричные массивы.
Вычисления
<RetVar> = = fixed sin <Var/Number>
· Команда вычисляет значение синуса <Var/Number> и возвращает его в переменную <RetVar> = .
<RetVar> = = fixed cos <Var/Number>
· Команда вычисляет значение косинуса <Var/Number> и возвращает его в переменную <RetVar> = .
А ничего, что это ОЧЕНЬ не точное описание.
<Var/Number> - это псевдо угол, используемый в X.
Для углов от -Pi (-180 градусов) до Pi (180 градусов) ставится в соответствие числовые значения от -32768 до 32768.
Аналогично возвращаемое значение косинуса и синуса умножается на коэффициент 32768.
fixed sin (Alpha) = 32768 * sin (Pi * Alpha / 32768)
fixed cos (Alpha) = 32768 * cos (Pi * Alpha / 32768)
Либо, если ваш калькулятор привык принимать углы в градусах а не радианах:
fixed sin (Alpha) = 32768 * sin (180 * Alpha / 32768)
fixed cos (Alpha) = 32768 * cos (180 * Alpha / 32768)
P.S. Чем дальше в лес, тем больше дров. Чувствую, нужно продолжить тему
Новые скриптовые команды. Угадайка
_________________ Новое ещё не значит лучшее |
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 6(416) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
ULiX : |
P.S. Чем дальше в лес, тем больше дров. Чувствую, нужно продолжить тему
Новые скриптовые команды. Угадайка
|
Не нужно. Тема уже помогла чем могла .
Лучше посильно помогать Chem-у, а то интузиазм у человека что-то падать стал .
|
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Andrei [<>Ace] : |
Лучше посильно помогать Chem-у, а то интузиазм у человека что-то падать стал .
|
Энтузазизм хлещет через край!
Просто текущая работа немного нагрузила, но процесс идет.
Обновил - Справочник по скриптовым командам игры X3:Reunion version 0.2.1, build date 06.02.2007, 21:23
Внес перекрестные ссылки. Внизу каждой команды есть задел под поля
Внимание! Примеры и См.также
Те внимания что сразу попались сделал.
Вот это сделал - ссылки:
ULiX : |
Пример я тебе выслал в личку:
<RefObj> -> set pilot speaker: voice=<Value>, face=<Value>, Pirate subrace=<Value>, Argon female=<Value>
<RefObj> -> send audio message <Value> to player
|
внес данные от Andrei [<>Ace]
_________________ Умножим энтропию на 0 :-) |
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 6(416) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
Chem : |
<RetVar> = register hotkey <Var/String> to call script <Script Name>
• Команда регистрирует новую "горячую клавишу" с именем <Var/String> и присваивает ей скрипт обработчик <Script Name>,
|
После запятой наверно следует продолжить - регистрационный номер "горячей клавиши" возвращается в переменную <RetVar>.
|
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Вопрос в плане формулировок.
правильно ли то, что я про все эти команды языка пишу что они команды ?
потому что бывает местами тавтология:
"Данной командой осуществляется передача объекту-кораблю <RefObj> команды «лететь в сектор» <Var/Sector>."
И еще - важный вопрос:
Как будем правильно называть page id и text id
Я (и не только) местами называю текстовая страница и строка(иногда текст).
Но вот как-то не нравится мне оно
Обновил - Справочник по скриптовым командам игры X3:Reunion (version 0.2.3, build date 07.02.2007, 21:35).
Топики с ярко красным фоном под словом Команда - ждут вашего описания их работы - т.к. оно пустое
Andrei [<>Ace] : |
После запятой наверно следует продолжить Улыбка - регистрационный номер "горячей клавиши" возвращается в переменную <RetVar>.
|
Пофиксил.
_________________ Умножим энтропию на 0 :-) |
|
|
sergej4341
460 EGP
  Рейтинг канала: 5(139) Репутация: 148 Сообщения: 1593 Откуда: Химки/Брест Зарегистрирован: 16.01.2004
 |
|
Chem : |
Данной командой осуществляется передача объекту
|
имхо, инструкция
Данная инструкция выполняет (запускает) на объекте-корабле <RefObj> команду "лететь в сектор" <Var/Sector>.
_________________ нажал клав. и затаил дыхание |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32767
Зарегистрирован: 26.10.2003
 |
|
Chem : |
Данной командой осуществляется передача объекту-кораблю <RefObj> команды «лететь в сектор» <Var/Sector>.
|
Данная команда заставляет объект <RefObj> лететь в сектор <Var/Sector>
sergej4341 : |
инструкция выполняет (запускает) на объекте-корабле <RefObj> команду
|
Она ничего не запускает, она сама и есть команда, которая запускает движковую процедуру полёта
Navigation Commands, Audio Commands - т.е. это всё команды скриптредактора.
|
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32767
Зарегистрирован: 26.10.2003
 |
|
Стоило копнуть немного в тему врат, как тут же нашлося кучка багов в скриптдвижках х2 и х3, а так же ошибков в учебнике от DragonP для х2.
Цитата: |
<RetVar/IF> <sector> get warp gate: gate id <gate>
Находит и возвращает врата с ID <gate>, в секторе <sector>. Под ID подразумевается не ID объекта, а расположение врат относительно сторон света.
ID Описание
0 Северные
1 Южные
2 Восточные
3 Западные
Если таких врат не существует, возвращает null. Может использоваться например, для определения какие врата имеются в секторе.
|
Красным выделено то, что полностью не соответствует действительности.
Должно быть так:
<RetVar/IF> <sector> get warp gate: gate id <Var/Number>
Данная команда возвращает врата с заданным ИД, равным <Var/Number>, в секторе <sector>.
Следующие ИД соответствуют только оригиальной карте х2! Для модовых карт раскладка ИД может быть совсем иной:
0 Северные.
1 Южные.
2 Западные.
3 Восточные.
255 Разрушенные врата
Для оригинальной х3 карты так же используется следующий ИД:
4 - нестандартные врата, ведущие в несоседний сектор.
Команда не может использоваться для определения, какие врата имеются в секторе, так как она не определяет, какие врата она нашла.
Она просто ищет некие врата с нужным ИД. Расположение же врат (северные, южные, западные, восточные) определяет не ID, а тип врат, вернуть который в скрипт ни в х2, ни в х3 инструментов не существует.
Далее:
Цитата: |
<RetVar>=<sector> get north warp gate
<RetVar>=<sector> get south warp gate
<RetVar>=<sector> get east warp gate
<RetVar>=<sector> get west warp gate
Возвращает соответствующие (северные, южные, западные, восточные) врата из сектора <sector> или null если таких ворот нет.
|
Здесь так же красным обозначена неверная информация.
Благодаря багам в скриптдвижке как х2, так и х3, эти команды возвращают не врата нужного типа(С,Ю,З,В), а врата с фиксированными ИД! Т.е. по сути эти команды вообще не имеют смысла в игре, так как являются аналогами одной команды, но с разным аргументом, соответственно:
<RetVar/IF> <sector> get warp gate: gate id 0
<RetVar/IF> <sector> get warp gate: gate id 1
<RetVar/IF> <sector> get warp gate: gate id 3
<RetVar/IF> <sector> get warp gate: gate id 2
Другими словами, команда: <RetVar>=<sector> get north warp gate возвращает не северные врата, а врата с ИД=0! Если в секторе есть северные врата, но с ИД=4 или любым другим, то эта команда их не найдёт!
Это очень важно понимать, так как врата с ИД=0 могут быть любого типа, хоть южные, хоть восточные, хоть западные, хоть даже разрушенные!
зыж: Так как скриптописание априори подразумевает НЕоригинальную игру, поэтому, думаю, данная информация будет полезна всем, кто пишет скрипты на тему врат и хочет, чтобы его скрипты работали с любыми картами, скриптами и модами, а не только исключительно с оригинальной картой и игрой (новые врата могли быть созданы и на оригинальной игре другим скриптом, это тоже нужно учитывать).
|
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32767
Зарегистрирован: 26.10.2003
 |
|
Здесь так же следует обязательно поправить и добавить:
Цитата: |
<retvar>= create gate: type=<type> addto=<sector> gateid=<id> dstsecx=<sectorx> dstsecy=<sectory> dstgateid=<linkto> x=<x> y=<y> z=<z>
Создать врата и связать из с другим сектором. Параметр type указывает на тип врат Северные /North/ (0), Южные /South/ (1), Западные /West/ (2), Восточные /East/ (3). Gateid это специальный цифровой идентификатор врат, для встроенных в игру врат он совпадает с параметром type, задается в виде произвольного числа и служит для организации связи со вратами в другом секторе. Distsecx и Distsecy указывают соответственно на X и Y координаты сектора на карте галактики в который будет производится перемещение через новые врата. Далее следует идентификатор врат назначения, как уже говорилось он для встроенных в игру врат совпадает с «type», в случае если вы пытаетесь связать врата с вратами созданными вами, то укажите идентификатор который вы указывали при создании этих врат. Последние параметры «X» «Y» «Z» указывают координаты в секторе, где установить новые врата.
В случае если врата удачно созданы, инструкция вернет указатель на созданные врата, если по каким либо причинам не удалось создать врата, то вернет null.
|
Исправить на это:
Цитата: |
<retvar>= create gate: type=<type> addto=<sector> gateid=<id>
dstsecx=<sectorx> dstsecy=<sectory> dstgateid=<linkto> x=<x>
y=<y> z=<z>
Создать врата и связать их с другими вратами. Параметр type указывает на тип врат:
Северные /North/ - 0
Южные /South/ - 1
Западные /West/ - 2
Восточные /East/ - 3
Разрушенные - 4
Данные типы соответствуют строчкам в конфигурационном файле TGates.txt.
Gateid это специальный цифровой идентификатор врат.
Для встроенных в игру (т.е. только на стандартной карте) врат он совпадает с параметром type, задается в виде произвольного числа и служит для организации связи с вратами в другом секторе.
Внимание!
В х2 не существует метода определить в скрипте ТИП врат, поэтому крайне рекомендуется создавать в своих скриптах врата с чётким соответствием принятых Егософтом стандартов маркировки ИД врат!
Всегда следуйте следующим правилам:
1. В одном секторе должны быть только одни врата одного типа. Не создавайте врата, если таковые уже имеются в секторе! Т.е. не должно быть двое и более северных/южных/западных/восточных/разрушенных врат.
2. ИД создаваемых врат должен быть равен ТИПу этих врат. Если вы создаёте северные врата, значит и их ИД должен равняться нулю (0). Таблица соответствия ТИП/ИД следующая:
ТИП-ИД
0-0
1-1
2-2
3-3
4-255 (разрушенные врата)
Нарушение этих правил приведет к тому, что стандартные скрипты игры или скрипты других пилотов с вашими вратами работать не будут.
Секрет: Если связать врата типов 0-3 с вратами типа 4 (разрушенные), то связь получится односторонней. Корабли в сторону разрушенных врат прыгнуть смогут (обычным ходом, а не джампом), а вот обратно пролететь - не смогут.
Distsecx и Distsecy указывают соответственно на X и Y координаты сектора на карте галактики в который будет производится перемещение через новые врата. Далее следует идентификатор (ИД) врат назначения, как уже говорилось он для встроенных в игру врат совпадает с «type», в случае если вы пытаетесь связать врата с вратами созданными вами, то укажите идентификатор который вы указывали при создании этих врат. Последние параметры «X» «Y» «Z» указывают координаты в секторе, где установить новые врата.
В случае если врата удачно созданы, инструкция вернет указатель на созданные врата, если по каким либо причинам не удалось создать врата, то вернет null.
Примечание. Если вы решили создать пару новых врат, которые соединены друг с другом, то лучше делать это в одном скрипте двумя следующими друг за другом строками без задержек между ними. Так больше всего шансов, что врата вообще будут созданы, а так же меньше вероятность ошибки, так как вам будут видны параметры обоих врат.
|
|
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 6(416) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
AlexYar : |
Должно быть так:
<RetVar/IF> <sector> get warp gate: gate id <Var/Number>
|
У Chem-а так и есть.
AlexYar : |
Данная команда возвращает врата с заданным ИД, равным <Var/Number>, в секторе <sector>.
Следующие ИД соответствуют только оригиальной карте х2! Для модовых карт раскладка ИД может быть совсем иной:
0 Северные.
1 Южные.
2 Западные.
3 Восточные.
255 Разрушенные врата
|
А здесь буду спорить
Команда возвращает врата в переменную, либо проверяет их наличие, <RetVar/IF> в секторе <sector> созданные согласно id <Var/Number> как:
0 - Северные.
1 - Южные.
2 - Западные.
3 - Восточные.
255 - Разрушенные врата
AlexYar : |
Для оригинальной х3 карты так же используется следующий ИД:
4 - нестандартные врата, ведущие в несоседний сектор.
Команда не может использоваться для определения, какие врата имеются в секторе, так как она не определяет, какие врата она нашла.
Она просто ищет некие врата с нужным ИД.
|
Здесь согласен.
|
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32767
Зарегистрирован: 26.10.2003
 |
|
Andrei [<>Ace] : |
созданные согласно id <Var/Number> как:
|
Да вот как раз и неважно, как и чем они созданы! И таблица ИД к команде не имеет никакого отношения, так как я могу тебе так врата насоздавать, что ты с помощью этой команды вообще не поймёшь, где в игре чего
Команда командой, таблица таблицей (и только для оригинальной карты в игре без скриптов, создающих новые врата). Так что не надо мешать их в кучу
зыж У меня горе - пока тексты елозил по опере - мышкино колёсико отвалилось Неудобно теперь - жуть, как будто первый раз за комп сел
|
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 6(416) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
AlexYar : |
Да вот как раз и неважно, как и чем они созданы! И таблица ИД к команде не имеет никакого отношения, так как я могу тебе так врата насоздавать, что ты с помощью этой команды вообще не поймёшь, где в игре чего
Команда командой, таблица таблицей (и только для оригинальной карты в игре без скриптов, создающих новые врата). Так что не надо мешать их в кучу
|
Ну нет, чтобы вдуматься, так филосовствовать будешь.
Допустим ты создаешь врата
<retvar>= create gate: type=<type> addto=<sector> gateid=<id>
dstsecx=<sectorx> dstsecy=<sectory> dstgateid=<linkto> x=<x>
y=<y> z=<z>
а потом определяешь их
<RetVar/IF> <sector> get warp gate: gate id <Var/Number>
пологаю, что gateid=<id> в первой команде равно gate id <Var/Number> во второй? Следовательно если созданы врата как 0 значит и определятся как 0. Вот только что выдаст команда <RetVar>= <object> get ID code если в нее подставить созданные врата. Не будет ли это значение начинаться с ' NO-...'?
|
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32767
Зарегистрирован: 26.10.2003
 |
|
Andrei [<>Ace] : |
Ну нет, чтобы вдуматься, так филосовствовать будешь
|
Попробуй с оптической мышки на шариковую пересесть - еще не так зафилософствуешь
Раз материал делается для учебника, то он должен быть максимально универсален и верен во всех случаях, а ты предлагаешь исключительно однобокий вариант только для стандартной игры.
Andrei [<>Ace] : |
пологаю, что gateid=<id> в первой команде равно gate id <Var/Number> во второй?
|
Если ты создал врата с ИД=0, то второй командой, если поставишь ИД=0, то ты найдёшь именно созданные врата. Так вернее формулировка Создать в одном секторе двое и более врат с одним ИД нельзя, а вот с одним типом - сколько угодно.
Andrei [<>Ace] : |
Вот только что выдаст команда <RetVar>= <object> get ID code если в нее подставить созданные врата Не будет ли это значение начинаться с ' NO-...'?
|
Совсем необязательно. Может и с WE и с SU начинаться.
Даже если ты дашь команду <RetVar>=<sector> get north warp gate, то она тебе с большим успехом может вернуть южные, восточные, западные и даже разрушенные врата Баг в том и заключается, что команда должна возвращать врата по типу (в идеале - массив врат по типу), но возвращает одни врата по ИД!
Есть ТИП врат, есть ИД врат, а есть ИД-КОД врат. Это всё разные вещи и для разного предназначены.
Тип врат - как раз и определяет врата по сторонам света, а точнее иконку и название врат (и их ИД-код).
ИД врат нужен для линкования врат друг с другом.
ИД-КОД - это маркировка врат, первые две буквы которой соответствуют типу врат (а не их ИД).
Это уже в частном случае в ЕС придумали присваивать вратам ИД равный ТИПу врат, так как иначе будет невозможно определить тип врат скриптом. Но в модовых картах, или стандартной карте, но измененной скриптами, может быть совершенно иная ситуация!
Есть много случаев, когда просто невозможно присвоить вратам ИД равный ТИПу, так как в секторе несколько врат одного типа.
Ну вроде того, что 4 северных врат, 5 западный, 7 южных, 3 восточных. В таком случае все ИД уедут по-любому, и команды скриптредактора будут возвращать что угодно, только не правду.
Поэтому я и отделил таблицу, так как она справедлива только для оригинальной игры, которую ничем не меняли, и к самим командам таблица вообще никакого отношения не имеет
На модовых картах скриптерам нужно будет придумывать другие таблицы соответствия ТИП-ИД для последующего нахождения врат, так как стандартная таблица для такой игры будет абсолютно неверна.
Понял, нет?
|
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 6(416) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
AlexYar : |
Попробуй с оптической мышки на шариковую пересесть - еще не так зафилософствуешь
|
Сам две недели на шариковой просидел , паяльник только на работе.
Я давно все понял.
AlexYar : |
Раз материал делается для учебника, то он должен быть максимально универсален и верен во всех случаях, а ты предлагаешь исключительно однобокий вариант только для стандартной игры.
|
Ну так обобщай матерриал, доказываешь, а выводы делайте сами .
Получаем четыре типа врат ориентированных по сторонам света и один тип разрушенные.
Тип врат определяет:
1. в каком направлении будет портирован корабль при анимации перехода;
2. название врат;
3. и, соответственно, ID code врат.
Однотипных врат в секторе может быть много и различаться они будут только по ID code и ID "линкования", следовательно и определить...
AlexYar : |
Это уже в частном случае в ЕС придумали присваивать вратам ИД равный ТИПу врат, так как иначе будет невозможно определить тип врат скриптом. Но в модовых картах, или стандартной карте, но измененной скриптами, может быть совершенно иная ситуация!
Есть много случаев, когда просто невозможно присвоить вратам ИД равный ТИПу, так как в секторе несколько врат одного типа.
Ну вроде того, что 4 северных врат, 5 западный, 7 южных, 3 восточных. В таком случае все ИД уедут по-любому, и команды скриптредактора будут возвращать что угодно, только не правду.
|
... скриптом тип врат для Х3 можно. И команда которая точно выберет нужные врата: <RetVar/IF> <sector> get warp gate: gate id <Var/Number> - так как не может быть в одном секторе двух врат с одинаковым ID "линкования". А тип отределим из ID code врат.
|
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32767
Зарегистрирован: 26.10.2003
 |
|
Andrei [<>Ace] : |
Сам две недели на шариковой просидел , паяльник только на работе.
|
Дык я и спаял из двух одну Только оптику уже было не восстановить, вот восстановил шариковую. Всё равно что с мерседеса на мопед пересел
Andrei [<>Ace] : |
Получаем четыре типа врат ориентированных по сторонам света и один тип разрушенные.
Тип врат определяет:
1. в каком направлении будет портирован корабль при анимации перехода;
2. название врат;
3. и, соответственно, ID code врат.
|
1. Нет.
2. Да.
3. Да.
1 нет потому, что ориентацию врат определяет не тип врат, а установка углов альфа/бета/гамма, а она может быть и не нулевой
Andrei [<>Ace] : |
Однотипных врат в секторе может быть много и различаться они будут только по ID code и ID "линкования"
|
И названию, выводимому в титрах (там еще сектор назначения прибавляется).
Andrei [<>Ace] : |
И команда которая точно выберет нужные врата: <RetVar/IF> <sector> get warp gate: gate id <Var/Number> - так как не может быть в одном секторе двух врат с одинаковым ID "линкования"
|
Этой командой мы выберем не нужные по типу врата, а нужные по ИД.
Andrei [<>Ace] : |
А тип отределим из ID code врат
|
И сделаем скрипт несовместимым с х2 В х2 нельзя по коду врат определить их тип, так как нет команд работы со строками.
Пока мы тут рассуждаем, я уже нашел стандартный способ определить тип врат, всё просто до безобразия и со строками работать не надо ни в х3, ни в х2
Вот стопроцентный способ определить тип врат с любым ID:
002 $GateType=$gate1 -> get subtype
А дальше уже руководствуемся таблицей ТИПов по TGates.txt:
0 - север
1 - юг
2 - запад
3 - восток
4 - разрушенные
И не нужно никаких ID линкования и никаких других таблиц. Даже блатные врата в х3 таким способом сразу определяются
|
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 6(416) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
AlexYar : |
1 нет потому, что ориентацию врат определяет не тип врат, а установка углов альфа/бета/гамма, а она может быть и не нулевой
|
Это хуже, но не принципиально
AlexYar : |
И сделаем скрипт несовместимым с х2 В х2 нельзя по коду врат определить их тип, так как нет команд работы со строками.
|
Всегда чем-то приходится жертвовать. Создание мода с нестандартными вратами к этому толкает .
AlexYar : |
Вот стопроцентный способ определить тип врат с любым ID:
002 $GateType=$gate1 -> get subtype
|
!!! - а какие утвержденгия и идеи выдвигались .
|
|
|
sergej4341
460 EGP
  Рейтинг канала: 5(139) Репутация: 148 Сообщения: 1593 Откуда: Химки/Брест Зарегистрирован: 16.01.2004
 |
|
<RetVar/IF><RefObj> get attack target
• Команда возвращает информативное значение атакуемого объекта для корабля <RefObj>. Возвращаемое значение может быть установлено командой из командного меню или командой set attack target.
во всех стандартных скриптах так и сделано, не применимо к кораблю под непосредственным управлением игроком за иссключением случаев когда игрок отдает своему кораблю команду из раздела консоли Боевые...
Также следует учитывать, что атакуемый объект может находится в другом секторе. Является неплохим способом выявить потенциального агрессора еще до того как он произвел первый выстрел по жертве
<RetVar/IF> <RefObj> get job id
примерно так, возвращает номер задания (лидер патруля, ведомые патруля, торговцы, пираты) для объекта <RefObj> полученного им при респавне
в аттаче расшифровка (стянуто давным давно с егософта, автора непомню, может быть aalrb)
номера в колонке G как раз и соотвествуют полученному в <RetVar/IF> значению
<RetVar> = <RefObj> get job jump range
радиус в котором действует объект получивший при респавне соответсвующее "задание" с соответсвующим номером job id
jump range не имеет отношения к прыжковому двигателю даже если он установлен на объекте <RefObj>
в аттаче колонка P
goto label <Label>
• Оператор безусловного перехода, осуществляет переход к метке (передает управления команде, следующей за меткой ) <Label>.
прежде чем использовать этот оператор, необходимо создать саму метку командой define label <Label> (справедливо и для gosub)
define label <Label>
• Команда определения метки для команды goto и gosub
ps а вот кто что может сказать по этой команде?
<RetVar/IF><RefObj> is target visible <Var/Ship/Station>
jobs.rar |
Описание: |
|
Имя файла: |
jobs.rar |
Размер файла: |
14.52 KB |
Скачано: |
454 раз(а) |
_________________ нажал клав. и затаил дыхание |
|
|
Chem
780 EGP
          Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007
 |
|
Сменил хостинг , т.к. на том стали обрываться файлы (показывались не полностью), теперь живем здесь:
Справочник по скриптовым командам игры X3:Reunion (version 0.2.4, build date 22.02.2007, 14:08). Thanks to DragonP, AlexYar, Andrei [<>Ace], sergej4341, ULiX
Дозаполнил
- Аудио команды
- Команды бортжурнала
- Команды автопилота
так же были добавлены -
- Торговые команды (общие)
- для кораблей
- для кораблей и станций
просьба пункты отмеченные желтым фоном - посмотреть, и дать комментарии.
По поводу jobs id и т.п. - я понял что оно берется из файла (спасибо sergej4341), но для чего оно, что дает.
_________________ Умножим энтропию на 0 :-) |
|
|
|
|
|
Канал X3: Reunion ->
Модовый и скриптовый отсек X3: Reunion: «Справочник по скриптовым командам (X3)|v. 0.3.54|05.07.2008» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: А ты не вчитывайся, а для ускорения - читай только каждое третье слово, гарантирую - смысл постов останется тем же. (Harley)
|
» Справочник по скриптовым командам (X3)|v. 0.3.54|05.07.2008 | страница 4 |
|