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

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

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

   Страница 5 из 68
На страницу: Пред.  1, 2, 3, 4, 5, 6 ... 66, 67, 68  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал X2: The Threat: «Скриптами делимся, скриптами»
*SHIFT_B_Z_NJ:T* :)
 





А как? Есть вроде скриптец !ship.signal.leaderneedshelp.pck цепляющийся на лидера, а что тогда цеплять на охрану?.. Можно просто добавить скрипт (или модифицировать поведение ведомых, но не помню уже в каком скрипте это), типа если раса = пират то если кто-то атакован, то все пираты сектора - обижаем обидчика Улыбка - должно сработать...
    Добавлено: 21:49 05-01-2004   
Ctrl_Alt_Del :)
 





*SHIFT_Z*
ВСЕ пираты сеатора? ХМ... А как и где их взять-то, всех, команды ведь такой нету, типа "get ship number <> from sector <>..."?
И вообще как написать скрипт на все карабли рассы X?
    Добавлено: 22:27 05-01-2004   
akm
 470 EGP


Рейтинг канала: 1(4)
Репутация: 173
Сообщения: 1638
Откуда: Паразит Прайм
Зарегистрирован: 23.10.2002
2 All
Скрипт элементарно остановить, если его правильно запускать Подмигиваю

Вот мои собственные скрипты автоматизированной поставки сырья/продажи продукции:
Get Ware Best
Sell Ware Best

Способ установки скриптов на транспорт:
- Скопировать скрипты в папку scripts
- Войти в редактор скриптов
- Если в списке скриптов мои скрипты еще не появились, то нужно их 1 раз добавить, т.е. нажать <L> и набрать "akm.getwarebest", и затем аналогично <L> и "akm.sellwarebest"
- Выделить нужный скрипт в списке и нажать <R> для его запуска
- Указать транспорт, на котором хотите запустить скрипт
- Указать товар (список длинный, но в случае ошибки исполнение скрипта просто будет отменено Улыбка )
- указать радиус поиска (теперь его можно задать индивидуально для каждого товара) или ввести "-1", что приведет к стандартному использованию значения Jumps из настроек фабрики.
Примечание: транспорт должен быть предварительно привязан к HomeBase.

Для остановки выполнения данных скриптов достаточно дать транспорту в меню Command Console команду "None" или любую другую.


Краткое описание возможностей:

1. При продаже/покупке используются деньги с основного счета игрока, а не фабрики. На фабрике теперь можно держать 0 денег. Однако, если другим расам разрешена торговля с данной фабрикой, то счет фабрики может пополняться как результат этой торговли.

2. Радиус поиска Jumps теперь вводится как 2-й параметр скрипта. Т.е. теперь имеется возможность настраивать радиус поиска по каждому ресурсу/продукту индивидуально! (Примечание: если ввести отрицательное значение Jumps, то радиус будет браться из настроек фабрики.)

3. Пока на борту транспорта имеется какое-либо количество ресурса, он будет стоять дома и разгружаться. Если количество ресурса на фабрике более 80%, то транспорт(ы), закупающий данный ресурс, будет стоять дома. Если на фабрике произведенной продукции менее 20%, транспорт(ы), реализующий продукцию, будет стоять дома.

4. Выбор станции для закупки сырья/сбыта продукции осуществляется по следующим принципам:

а) если на фабрике до 30% сырья (или более 70% продукции), поиск станции осуществляется по критерию минимальной удаленности согласно цене, указанной в настройках фабрики.

б) иначе для поиска станции используется критерий наибольшей выгоды в пределах установленного на фабрике радиуса. Поиск среди торговых станций для закупки ресурса будет производиться лишь при отсутствии каких-либо фабрик, продающих данный ресурс по необходимой нам цене в заданном радиусе.

в) при достижении транспортом сектора, в котором находится ранее найденная станция, производится повторный поиск станции по критерию максимальной выгоды в радиусе = 0. Если цена нас устраивает, двигаемся к данной станции.

г) повтор пп. каждые 15-20 секунд.

д) по достижении станции делаем еще 1 поиск. Если цена на станции, с которой мы состыковались, нас устраивает и поиск в пределах текущего сектора выдает предложение менее выгодное по цене или более выгодное, но разница в пределах 10%, то совершаем закупку/продажу на текущей станции и возвращаемся домой.

е) Если при поиске в пп. 4в-4д не найдено ни одной устраивающей нас станции в пределах данного сектора, то переходим к пп. , используя при поиске за точку отсчета HomeBase, а не текущий сектор.

5. При назначении данного скрипта транспорту, в его статусе будет указываться задание: Get (или Sell) Ware for Best Price...{тип товара}. Т.е. то же самое, что при использовании стандартных скриптов. Как эту надпись модифицировать (с целью сделать ее отличной от стандартной) пока не имею представления.

6. Оптимизировал все что можно. Т.е. убрал задержки, что не в тему в оригинальных скриптах (точнее нашел им более удачные места), убрал ненужные проверки с учетом, что данные скрипты не будут использоваться NPC.


Ведется работа над следующими дополнениями:

7. Динамическое назначение заданий покупки/продажи и типа закупаемого сырья транспортам в зависимости от состояния фабрики и состояния приписанных к данной фабрике транспортов. Это позволит обслуживать фабрику меньшим количеством транспортов, а также намного более эффективно использовать приписанные к фабрике транспорты, к примеру, на поставку более дефицитного сырья будет динамически (временно) выделено бОльшее количество транспортов. Транспорты больше не будут простаивать (нет какого-то сырья в пределах установленной цены, или сырье в избытке, приписанный к нему транспорт займется поставкой другого ресурса). Если один из транспортов собьют, оставшиеся динамически распределят задачи и фабрика не остановится. В общем, вытекающих преймуществ море, а программируется все не так уж и сложно.

8. При атаке транспорта, временное бегство к ближайшей станции и "отсидка" 2-3 минуты. Впринципе можно придумать что-то и посложнее, например избегание врагов при движении, а для "зубастых" транспортов, к примеру сплитской Игуаны, можно прописать и атаку, в случае, если соотношение сил в нашу пользу.

Буду рад любым замечаниям и идеям. Скрипты довольно сложные, поэтому протестировать абсолютно все нюансы еще просто не успел, но вроде все работает как задумывалось Подмигиваю
    Добавлено: 00:55 06-01-2004   
bal
 





Скрипт для автоторговли (наем менеджера на работу)
Все инструкции в архиве.
Тестил долго - вроде без глюков.
Изначально он был взят с http://xscripting.com/, но очень много глюков и вообще Задница Оптимизированно и многое добавлено.

Чтобы не называли читом: добавлена отплата усуг "менеджера" которого Вы наняли для торговли на Ваш корабль в виде процента от дохода с каждой ходки. Процент задается вручную Улыбка , кому сколько не жалко. Хотя, если 0, (не платим вообще) тоже читом не является (личное мнение Подмигиваю )

Примерный доход с корабля за час 120 тыс (Цифра усредненная для 8 кораблей за 4 часа торговли), но все зависит от зарплаты Улыбка

Ссылка: http://www.textiles.ru/x2/AutoTrade.rar

Все маты на адрес balakleyskiy@yandex.ru
    Добавлено: 11:16 06-01-2004   
SKY_WOLF
 140 EGP


Репутация: 27
Сообщения: 409
Откуда: pinsk
Зарегистрирован: 05.05.2003
Вообщем AkM!!! Мой тебе респект, но я нулевый в програмировании, не мог бы ты запаковать их так, что бы просто скинуть в папочку и он появился в списке доступных скриптов(с твоей подписью), что бы не путать потом. Твоя идея конечно про динамическое снабжение Очень хорошая, не понял, как в твоем скрипте указать свою фабрику ресурсовую для доставки с нее.
_________________
там море звезд и я ищу их...
    Добавлено: 12:05 06-01-2004   
Пассажир
 

Пассажир




*SHIFT_Z*
Всётаки мне удалось заставить пиратов, и не только их, атаковать обидчика всей группой а не по одному. Это делается довольно легко, исправленный скрипт вечером выложу на http://xscripting.com/.
Но больше всего меня удивил тупизм программеров из ЕгоСофт, а точнее их хроническая лень и не желание исправлять собственные баги, а багов там Вау! ... туева хуча.
Мой скрипт автоторговли на 200кб длинее всех их скриптов вместе взятых. Ой, не могу!.. Не понимаю, чем они занимались 5 лет? Примитивы, слов нет.
Помнится где-то читал интервью с ЕгоСофт, переведено что-то типа этого:"Нуу, короче, там будет динамично-развивающаяся вселенная, расы между собой могут внезапно начать воевать, и так же внезапно закончить..." Ой, не могу!..
Мдя, с таким-то АИ? Научили хотябы расы свои владения толком защищать, а уж потом межрассовые войны вести. Смех, да и только.
    Добавлено: 16:23 06-01-2004   
akm
 470 EGP


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

По идее они и появляются в списке доступных скриптов в редакторе сразу как только скинешь их в папку scripts. Но иногда не появляются Озадачен (сам не просек еще закономерности), тогда нужно просто их всего 1 раз загрузить (клавишей <L> и указать имя фаила) и после этого они уже будут всегда в списке.
По идее в набор стандартного софта MK1/2 их тоже можно добавить, но я пока не знаю как.

SKY_WOLF :
не понял, как в твоем скрипте указать свою фабрику ресурсовую для доставки с нее.
Как обычно. Перед запуском скрипта транспорту назначаешь в качестве HomeBase эту фабрику.
    Добавлено: 09:17 07-01-2004   
WG
 135 EGP


Рейтинг канала: 1(8)
Репутация: 4
Сообщения: 141

Зарегистрирован: 08.12.2003
> Мой скрипт автоторговли на 200кб длинее всех их скриптов вместе взятых...

Как бы только длинные скрипты совсем игру не затормозили. Может, потому у егософтовцев все и примитивное...
    Добавлено: 16:48 07-01-2004   
ZED
 100 EGP


Репутация: 16
Сообщения: 174
Откуда: Киев
Зарегистрирован: 21.03.2003
Слушайте, а давайте сделаем Систему новостей почти как в Рейнджерах, даем скрип любому кораблю (Но лучше Паранидской Станции Коммуникации, так реалистичней Гы-гы ) Что бы она раз в час за сумму кредитов высылала игроку сводку новостей о Х-Вселенной? (Мечтать не вредно Ругаюсь, недоволен! , но ведь можно просто написать простой скрипт по которому она бы проверяла в каком наибольшее число врагов итд.), А еще лучше написать игроку скрипт который бы отсылал на станцию запрос и она за 1000 кредитов выдавала эту инфу, а? По моему былобы весело...
_________________
"Правдой дорожить, лжи не потакать, дальних не судить, ближним помогать..."
    Добавлено: 17:44 07-01-2004   
Пассажир
 

Пассажир




*SHIFT_Z*
Господа пилоты-скриптоделы, помогите разобраться с так называемыми сигналами. Чем они отличаются от команд и как их заставить выполняться. Команду Send signal MY_Siganl... все игнорируют, а Егософтовские Сигналы какимто макаром где-то прописаны и выполняются каким-то образом. Например: каким образом вызывается !Ship.signal.attacked, где, как, когда??? Совсем запутался...

Кстати, исправленный !Ship.signal.attacked уже лежит на xscripting.
    Добавлено: 19:46 07-01-2004   
HF-Trade
 86 EGP


Репутация: 6
Сообщения: 62
Откуда: Spb
Зарегистрирован: 10.12.2003
Накопал где-то, мож кому пригодится?


Синтаксис

Подробно рассматривать синтаксис НС я не стану, по той простой причине что редактор скриптов практически не оставляет вам возможности ошибиться. Вы просто подгоняете курсор к нужной строке, затем выбираете нужную позицию в строке и выбираете нужную команду из списка (исключение составляют лишь имена переменных и абсолютные значения, которые вы вводите сами, но будучи один раз введенным, имя переменной далее так же можно выбирать из списка). Удобно? Черта-лысого! Руками я набираю раз в 10 быстрее , но для человека который плохо помнит названия команд, или даже сел за это “грязное дело” в первый раз, конечно, гораздо проще и удобнее. Остается только пожалеть что альтернативного варианта не предусмотрено . Но в “релизе” все возможно  (я буду повторять это как заклинание еще много-много раз Улыбка. Каждая строка имеет свой уникальный номер, который необходим когда вы хотите изменить последовательность выполнения команд в НС (см. “Операторы перехода”). Однако вы не обязаны заполнять строки подряд, вы можете оставлять пустые строчки (NOP), например для того чтобы позже ввести в них какие-то дополнительные команды, а также можете менять нумерацию строк. Имена команд/функций а также их аргументы выделяются разными цветами для удобства чтения НС. Символ “@” стоящий в начале строки означает что выполнение команды стоящей в этой строке, может быть прервано (другой командой или сигналом с равным или более высоки приоритетом). Подробнее см. раздел «Сигналы». Символ “!” стоящий в начале имени скрипта означает что скрипт является «системным» или «низкоуровневым примитивом» и не подлежит модификации игроком.

Переменные, типы данных, константы

Var
Label
String
Number
Condition
Parameter
Label
Script Name
Comment
Value
Var/Number
Var/String
Var/Station
Var/Ware
Var/Sector
RetVar
Var/Race
Var/Station Type
Var/Stations Serial
Var/Ship Type
RefObj
Var/Ship
Var/Ship/Station
Var/Class
Var/Transport Class
RetVar/IF
RetVar/IF
Var/Ship Type/Station Type
RetVar/IF/START
Relation
Expression
Object Command
Object Signal
Object Command/Signal
Flight Retcode
Var/Ship owned by Player
Var/Station owned by Player
Var/Station/Carrier owned by Player
Var/Ship/Station owned by Player
Var/Warpgate
Var/Station/Carrier
Var/Station/Carrier to dock at
Var/All Wares
Var/Environment
Var/Script Data Type
Var/Array
Var/Station and Resource
Var/Station and Product
Var/Station and Ware
Var/Homebase and Resource
Var/Homebase and Product
Var/Homebase and Ware
Var/Sector Position
Var/Constant
Var/Asteroid
Var/Flying Ware

THIS
ALL
MAX
PLAYERSHIP
HOMEBASE
ENVIRONMENT
SECTOR
OWNER
NEAREST
FALSE
TRUE
DOCKEDAT

Formation.Delta
Formation.Line
Formation.X
Formation.BigShipEscort
Formation.Random

Find.Random
Find.Nearest
Find.ExactJumps
Find.Enemy
Find.Neutral
Find.Friend
Find.Multiple
Find.TypeAsWareCategorie

SSTYPE_BULLET
SSTYPE_SPACE
SSTYPE_BACKGROUND
SSTYPE_SUN
SSTYPE_PLANET
SSTYPE_DOCK
SSTYPE_FACTORY
SSTYPE_SHIP
SSTYPE_LASER
SSTYPE_SHIELD
SSTYPE_ROCKET
SSTYPE_W_ENERGY
SSTYPE_W_NATURAL
SSTYPE_W_BIO
SSTYPE_W_FOOD
SSTYPE_W_MINERALS
SSTYPE_W_TECH
SSTYPE_ASTEROID
SSTYPE_WARPGATE
SSTYPE_CAMERA
SSTYPE_SPECIAL
SSTYPE_NEBULA
SSTYPE_INSTATION
SSTYPE_DUMMY
SSTYPE_COMMAND
SSTYPE_COCKPIT
SSTYPE_DATATYP


Массивы (таблицы)

«array alloc»
«size of array»
«clone array»
«copy array into array»
«insert into array»
«append to array»
«remove element from array»
«resize array»

Математические операторы, логические операторы, операторы сравнения

==
!=
>
<
>=
<=
&
|
^
AND
OR
+
-
*
/
mod
[
]
-
~
!

Операторы условного перехода

Операторы условного перехода используются для того, чтобы изменить последовательность выполнения команд в скрипте в зависимости от определенного условия. Простейшим примером оператора условного перехода может служить оператор «if» применяющийся в паре с оператором «end». Логика его работы следующая:

if (выражение принимающее значение «Истина» или «Ложь»)
операторы исполняющиеся в случае если выражение принимает значение «Истина»
end

Пример:

210 if [HOMEBASE]
220 @ = [THIS] -> fly to homebase
230 end

В строке 210 проверяется задана ли база для данного корабля. Если она установлена (функция [HOMEBASE] вернула значение которое может быть интерпретировано как «Истина») то управление переходит в строку 220, где корабль получает команду возвращаться на неё. Поскольку нам может быть необходимо чтобы при выполнении определенного условия исполнялся не один, а целая группа операторов, мы должны указать где именно заканчивается эта группа. Для этой цели и служит оператор «end». Оператор «if» может принимать и более сложные формы:

if (выражение принимающее значение «Истина» или «Ложь»)
операторы исполняющиеся в случае если выражение принимает значение «Истина»
else
операторы исполняющиеся в случае если выражение принимает значение «Ложь»
end

if not (выражение принимающее значение «Истина» или «Ложь»)
операторы исполняющиеся в случае если выражение принимает значение «Ложь»
else
операторы исполняющиеся в случае если выражение принимает значение «Истина»
end

if (выражение1 принимающее значение «Истина» или «Ложь»)
операторы исполняющиеся в случае если выражение1 принимает значение «Истина»
else if (выражение2 принимающее значение «Истина» или «Ложь»)
операторы исполняющиеся в случае если выражение1 принимает значение «Ложь» а выражение2 принимает значение «Истина»
else
операторы исполняющиеся в случае если выражение1 принимает значение «Ложь» и выражение2 принимает значение «Ложь»
end

if not (выражение1 принимающее значение «Истина» или «Ложь»)
операторы исполняющиеся в случае если выражение1 принимает значение «Ложь»
else if not (выражение2 принимающее значение «Истина» или «Ложь»)
операторы исполняющиеся в случае если выражение1 принимает значение «Истина» а выражение2 принимает значение «Ложь»
else
операторы исполняющиеся в случае если выражение1 принимает значение «Истина» и выражение2 принимает значение «Истина»
end


skip if (выражение принимающее значение «Истина» или «Ложь»)
оператор исполняющийся в случае если выражение принимает значение «Ложь»

В данной форме записи оператора «if» оператор «end» не требуется, поскольку в случае если выражение принимает значение «Истина» пропускается (не выполняется) только один оператор (не группа операторов), следующий в строке сразу за «skip if»

skip if not (выражение принимающее значение «Истина» или «Ложь»)
оператор исполняющийся в случае если выражение принимает значение «Истина»

Оператор безусловного перехода

К операторам безусловного перехода относится оператор «goto label», который используется для перехода к определенной строке скрипта. Прежде чем использовать «goto label» необходимо объявить метку для строки в которую мы хотим осуществить переход. Делается это при помощи оператора «define label».

Пример:

100 StartCalculation:
110 $Total = $Price * $Amount
120 …

430 goto label StartCalculation

Само ключевое слово «define label» в тексте скрипта не указывается, вместо него указывается имя метки со знаком “:” - двоеточие после него. Будьте особенно внимательны используя конструкцию «define label»… «goto label» так как с её помощью очень легко получить «вечный» цикл – т.е. закольцованный кусок программы, выход из которого не предусмотрен.

Циклы

Циклы используются когда вам необходимо повторять определенную последовательность команд пока не будет достигнуто некоторое условие. Конечно получить зацикленный кусок кода можно и используя операторы безусловного перехода, однако подобный подход не рекомендуется, поскольку он ухудшает читаемость (понимаемость) кода, к тому же использовать команды цикла гораздо удобнее и проще. Вот пример простейшего цикла:

010 while [ENVIRONMENT] != [HOMEBASE]
011 @ =wait randomly from 5000 to 10000 ms
012 @ =[THIS] ->fly to home base
013 end

В строке 010, заголовке цикла («while»), задано условие цикла (пока корабль не пристыкован к своей базе), пока оно истинно, те. принимает значение «истина», цикл выполняется, те. выполняются строки с номерами 011 и 012 (ждать 5-10с, возвращаться на базу). Как только выполнение скрипта доходит до строки 013, управление передается в строку 010, проверяется условие и если оно выполняется (принимает значение «истина») то снова выполняются строки 011 и 012, и так до тех пор пока условие не примет значение «ложь». Как только условие становится ложно, управление переходит в сроку следующую за «end». Если срока с ключевым словом «end» последняя в скрипте, выполнение скрипта завершается. Однако нам может понадобится выйти из цикла до того как условие цикла примет значение «ложь» (например базу уничтожили, в этом случае корабль никогда не сядет на свою базу, и цикл окажется «вечным»). Для этих целей служит команда «break». Она передает управление в строку следующую за «end». С учетом проверки на существование базы наш цикл можно записать следующим образом:

010 while [ENVIRONMENT] != [HOMEBASE]
011 if not [HOMEBASE]
012 break
013 end
014 @ =wait randomly from 5000 to 10000 ms
015 @ =[THIS] ->fly to home base
016 end

Ключевое слово «end» стоящее в строке 013 относится к оператору «if» стоящему в строке 011, «end» всегда относится к ближайшему «if» или «while». Оператор «while» можно записать и как «while not», в этом случае значение выражения, задающего условие цикла, инвертируется. Вот так будет выглядеть предыдущий пример в форме «while not»:

010 while not [ENVIRONMENT] == [HOMEBASE]
011 if not [HOMEBASE]
012 break
013 end
014 @ =wait randomly from 5000 to 10000 ms
015 @ =[THIS] ->fly to home base
016 end

Также может потребоваться начать новый виток цикла до того как будут выполнены все операторы текущего витка, это делается оператором «continue» примеры см. в конце (покупка товара по лучшей цене) .

Сигналы (прерывания)

SIGNAL_ATTACKED
SIGNAL_KILLED
SIGNAL_COLLISIONWARN
SIGNAL_FORMATIONLEADERCHANGED
SIGNAL_CAPTURED
SIGNAL_LEADERNEEDSHELP
SIGNAL_FOLLOWERNEEDSHELP
.

Список команд, функций

Основные команды

NOP
Нет операции.

<RetVar/IF> <Expression>
Присвоить переменной <RetVar> результат выражения/функции/команды <Expression> или
вернуть значение, логического типа, выражения/функции/команды <Expression> для обработки в операторе сравнения <IF>.

@<RetVar/IF> wait <Var/Number> ms
Ожидать <Var/Number> ms*1. Возвращает количество прошедших ms. <Var/Number> или информацию о том происходило-ли прерывание за время ожидания <IF>.

@<RetVar/IF> wait randomly from <Var/Number> to <Var/Number> ms
Ожидать случайное число ms. в диапазоне от <Var/Number> до <Var/Number> ms. Возвращает количество прошедших ms. <Var/Number> или информацию о том происходило-ли прерывание за время ожидания <IF>.

<Var> = Random value from 0 to <Var/Number> -1
Присвоить переменной <Var> случайную величину в диапазоне от 0 до <Var/Number> -1.

* <Comment>
Комментарий.

<Var> = get script priority
Присвоить переменной <Var> величину приоритета скрипта.

set script priority to <Var/Number>
Установить приоритет скрипта равным <Var/Number>.

<Var> = Random value from <Var/Number> to <Var/Number> -1
Присвоить переменной <Var> случайную величину в диапазоне от <Var/Number> до <Var/Number> -1.

<RefObj> interrupt with <Script Name> and prio <Var/Number>
Прерваться для выполнения скрипта <Script Name>, в случае если приоритет <Var/Number> больше или равен приоритету текущего скрипта.

<RefObj> connect ship command/signal <Object Command/Signal> to script <Script Name> with prio <Var/Number>
Подключить команду/сигнал <Object Command/Signal> объекта <RefObj> к скрипту <Script Name>, и установить его приоритет равным <Var/Number>.

<RefObj> set ship command/signal <Object Command/Signal> to global default behaviour
Назначить команде/сигналу <Object Command/Signal> объекта <RefObj> обработчик по умолчанию.

<RefObj> ignore ship command/signal <Object Command/Signal>
Игнорировать команду/сигнал <Object Command/Signal> объекта <RefObj>.

enable signal/interrupt handling: <Var/Number>
Включить обработку прерываний по сигналам с приоритетом <Var/Number> и выше.

<RetVar/IF> is signal/interrupt handling on
Возвращает состояние обработки сигналов/прерываний <IF>или текущий приоритет <RetVar>.

global ship map: set: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>, script=<Script Name>, prio=<Var/Number>
Назначить для команды <Object Command/Signal> всех объектов класса <Var/Class> принадлежащих расе <Var/Race> скрипт <Script Name> и установить для него приоритет <Var/Number>. (Назначить скрипт стандартным обработчиком команды).

global ship map: remove: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>, script=<Script Name>, prio=<Var/Number>
Отменить назначение для команды <Object Command/Signal> всех объектов класса <Var/Class> принадлежащих расе <Var/Race> скрипта <Script Name>. (Удалить стандартный обработчик команды).

set script command <Object Command/Signal>
Установить командой для текущего скрипта команду <Object Command/Signal>

<RetVar/IF> get script command
Получить команду <RetVar> установленную для текущего скрипта или логическое значение <IF>установлена (ИСТИНА) не установлена (ЛОЖ)

set script command target <Value>
Установить цель <Value> для команды текущего скрипта

<RetVar/IF> get script command target
Получить цель <RetVar> установленную для команды текущего скрипта или логическое значение <IF>установлена (ИСТИНА) не установлена (ЛОЖ)

<RetVar> datatyp[ <Value> ]
Получить тип данных <RetVar> переменной <Value>

<RetVar/IF> is datatyp[ <Value> ] == <Var/Script Data Type>
Получить результат проверки <RetVar/IF> принадлежит-ли тип данных переменной <Value> типу данных <Var/Script Data Type>

<RetVar> read text: page=<Var/Number> id=<Var/Number>
Получить текстовую строку для текущего языкового ресурса из страницы <Var/Number> с идентификатором <Var/Number>

global ship map: ignore: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>, script=<Script Name>, prio=<Var/Number>
???

<RetVar/IF> state of news article page=<Var/Number> id=<Var/Number>
Получить статус <RetVar/IF> статьи новостей из страницы <Var/Number> с идентификатором <Var/Number>

set state of news article page=<Var/Number> id=<Var/Number> to <Var/Number>
Установить статус статьи новостей из страницы <Var/Number> с идентификатором <Var/Number> равным <Var/Number>

Основные команды / Контроль последовательности исполнения

goto label <Label>
Перейти к метке
См. «Операторы перехода»

define label <Label>
Определить метку
См. «Операторы перехода»

end conditional
Конец условия (оператора «if»). См. «Операторы условного перехода»

else
См. «Операторы условного перехода»

continue
Начать следующий виток цикла. См. «Циклы»

break
Прервать выполнение цикла. См. «Циклы»

Основные команды / Вызовы скриптов

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

return <Value>
Завершить выполнение скрипта и вернуть результат исполнения <Value> вызывавшему скрипту.

Основные команды / Работа с массивами

<RetVar> = array alloc: size=<Var/Number>
Распределить память для массива размерностью <Var/Number> элементов и вернуть переменную <RetVar> типа массив. См. «Массивы».

<RetVar/IF> <Var/Array> [<Var/Number>]
Получить значение <RetVar/IF> из массива <Var/Array> с индексом <Var/Number>. См. «Массивы».

<Var/Array> [<Var/Number>] = <Value>
Присвоить элементу массива <Var/Array> с индексом <Var/Number> значение <Value>. См. «Массивы».

<RetVar> = size of array <Var/Array>
Получить размерность <RetVar> массива <Var/Array>. См. «Массивы».

<RetVar> = clone array <Var/Array> : index <Var/Number> … <Var/Number>
Создать копию (и распределить память под нее) <RetVar> элементов массива <Var/Array> начиная с индекса <Var/Number> по индекс <Var/Number>. См. «Массивы».

copy array <Var/Array> index <Var/Number> … <Var/Number> into array <Var/Array> at index <Var/Number>
Скопировать элементы массива <Var/Array> начиная с индекса <Var/Number> по индекс <Var/Number> в массив <Var/Array> начиная с индекса <Var/Number>. См. «Массивы».

insert <Value> into array <Var/Array> at index <Var/Number>
Вставить в массив <Var/Array> новый элемент <Value> на место элемента с индексом <Var/Number>. (Фактически изменить размерность массива. Индексы всех элементов массива начиная с заданного увеличатся на 1). См. «Массивы».

append <Value> to array <Var/Array>
Добавить в конец массива <Var/Array> новый элемент <Value>. (Фактически изменить размерность массива) См. «Массивы».

remove element from array <Var/Array> at index <Var/Number>
Удалить элемент с индексом <Var/Number> из массива <Var/Array>. (Фактически изменить размерность массива. Индексы всех элементов начиная с заданного уменьшатся на 1) См. «Массивы».

resize array <Var/Array> to <Var/Number>
Установить размерность массива <Var/Array> равной <Var/Number>. (Если размерность массива уменьшается то “лишние” элементы окажутся обрезанными, если увеличивается то в массив добавляются пустые элементы). См. «Массивы».

Команды работы с бортовым журналом

write to player logbook <Value>
Записать значение <Value> в бортовой журнал игрока.

<RefObj> write to logbook <Value>
Записать значение <Value> в бортовой журнал объекта <RefObj>.

Навигационные команды

Все навигационные команды возвращают коды завершения, которые позволяют определить каким именно образом завершилась команда (например постреляв из лазера полезно знать - враг все еще жив или уже уничтожен?). Смысл каждого кода определяется для каждой конкретной команды. Возможны следующие коды завершения:

FLRET_INVALIDPARMS - Указан неверный параметр команды
FLRET_DESTROYED - Объект команды уничтожен
FLRET_LANDED - Объект команды пристыкован / пристыковался
FLRET_WARPED - Объект команды совершил прыжок через врата
FLRET_NOCOMMANDS - Аргумент команды не существует
FLRET_IMMEDIATE -
FLRET_ERROR - Во время выполнения команды произошла ошибка
FLRET_INTERRUPTED - Выполнение команды было прервано другим скриптом
FLRET_BREAK - Команда по какой либо причине не может быть выполнена
FLRET_FIREFREE - Цель в радиусе поражения
FLRET_TARGETREACHED - Цель достигнута
FLRET_NEXTFLIGHTSTEP - Часть команды выполнена, исполняется следующая часть
FLRET_TIMEOUT - Время отведенное на выполнение команды истекло

@<RetVar/IF> <RefObj> fly to home base
Получить код завершения команды <RetVar/IF> (выполнить команду) «лететь на базу» для объекта <RefObj>.

@<RetVar/IF> <RefObj> fly to station <Var/Station>
Получить код завершения команды <RetVar/IF> (выполнить команду) «лететь на станцию» <Var/Station> для объекта <RefObj>.

@<RetVar/IF> <RefObj> fly to sector <Var/Sector>
Получить код завершения команды <RetVar/IF> (выполнить команду) «лететь в сектор» <Var/Sector> для объекта <RefObj>.

<RetVar/IF> <RefObj> find nearest enemy ship: max.dist=<Var/Number>
Найти ближайший враждебный корабль <RetVar/IF> в радиусе <Var/Number> для объекта <RefObj>.

<RetVar/IF> <RefObj> find nearest enemy station: max.dist=<Var/Number>
Найти ближайшую враждебную станцию <RetVar/IF> в радиусе <Var/Number> для объекта <RefObj>.

<RetVar/IF> <RefObj> fire lasers on target <Value> using turret <Var/Number>
Получить код завершения команды <RetVar/IF> (выполнить команду) «стрелять лазерами» по цели <Value> используя орудийную башню <Var/Number> для объекта <RefObj>.

@<RetVar/IF> <RefObj> turn turret <Var/Number> to target <Var/Ship/Station> : timeout=<Var/Number> ms
Получить код завершения команды <RetVar/IF> (выполнить команду) «навести орудийную башню» <Var/Number> на цель <Var/Ship/Station> для объекта <RefObj>. Исполнять команду не дольше <Var/Number> мс.

@<RetVar/IF> <RefObj> attack run on target <Value>
Получить код завершения команды <RetVar/IF> (выполнить команду) «подготовиться к атаке на цель» <Value>. (Команда необходима для подготовительных действий: взлет со станции, сближение с целью, етс.)
Возвращаемые значения:

FLRET_FIREFREE - все готово для ведения огня по цели;
FLRET_INTERRUPTED - выполнение команды было прервано другим скриптом;
FLRET_BREAK - цель не существует или не может быть атакована (цель находится в другом секторе, пристыкована к станции / кериеру, etc.);
FLRET_NOCOMMANDS - нужна новая цель (цель уже уничтожена).

@<RetVar/IF> <RefObj> move to ware object <Value> for collecting
???

<RetVar/IF> <RefObj> catch ware object <Value>
???

@<RetVar/IF> <RefObj> move around <Var/Number> ms
???

@<RetVar/IF> <RefObj> escort ship <Var/Ship>
???

<RefObj> set formation <Var/Number>
???

<RefObj> add to formation with leader <Var/Ship>
???

<RefObj> remove from any formation
???

<RetVar/IF> <RefObj> get formation leader
???

<RetVar> = <RefObj> get formation follower ships
???

<RetVar/IF> <RefObj> is docking allowed at <Var/Ship/Station>
???

START <RefObj> command <Object Command> : arg1=<Value>, arg2=<Value>, arg3=<Value>, arg4=<Value>
???

<RefObj> send signal <Object Signal> : arg1=<Value>, arg2=<Value>, arg3=<Value>, arg4=<Value>
???

@<RetVar/IF> <RefObj> follow ship <Var/Ship> with precision <Var/Number> m
???

<RefObj> set follow mode <Var/Number>
???

<RetVar/IF> <RefObj> get follow mode
???

<RefObj> set destination to <Value>
???

<RetVar/IF> <RefObj> get destination
???

<RefObj> set attack target to <Value>
???

<RetVar/IF> <RefObj> get attack target
???

@<RetVar/IF> <RefObj> move to position: x=<Var/Number> y=<Var/Number> z=<Var/Number> with precision <Var/Number> m
???

<RefObj> set command: <Object Command>
???

<RetVar/IF> <RefObj> get command
???

<RefObj> set command target: <Value>
???

<RetVar/IF> <RefObj> get command target
???

<RefObj> set command target2: <Value>
???

<RetVar/IF> <RefObj> get command target2
???

<RetVar> = <RefObj> select new formation leader by: ship class=<Var/Number>
strength=<Var/Number> min.speed=<Var/Number>
???

<RetVar/IF> <RefObj> has formation ships
???

<RefObj> give formation leadership to <Var/Ship>
???

<RefObj> set tactical to <Var/Number>
???

<RetVar> = <RefObj> get tactical
???

<RetVar/IF> get player tracking aim
???

<RetVar/IF> <RefObj> is <Var/Ship/Station> in firing range of turret <Var/Number>
???

<RetVar> = <RefObj> find enemy in firing range of turret <Var/Number>
???

<RefObj> set command: <Object Command> target=<Value> target2=<Value> par1=<Value> par2=<Value>
???

<RetVar/IF> <RefObj> fire missile <Var/Ware> on <Value>
???

<RetVar/IF> <RefObj> get current missile
???

<RetVar/IF> <RefObj> find best missile for target <Value>
???

<RetVar> = best missile type for target <Value>
???

<RetVar/IF> <RefObj> launch <Var/Number> fight drones: protect me or attack target=<Value>
???

<RetVar/IF> <RefObj> is missile <Var/Ware> ready to fire
???

<RetVar/IF> <RefObj> should a missile be fired
???

<RetVar> = <RefObj> get fire missile probability
???

<RetVar> = <RefObj> get fire missile time difference in seconds
???

<RefObj> set fire missile probability to <Var/Number>
???

<RefObj> set fire missile time difference to <Var/Number> s
???

<RetVar/IF> <RefObj> fits laser <Var/Ware> into turret <Var/Number>
???

<RetVar> = <RefObj> get max. number of lasers in turret <Var/Number>
???

<RetVar> = <RefObj> get laser type in turret <Var/Number> at slot <Var/Number>
???

<RetVar> = <RefObj> get number of turrets
Получить количество <RetVar> орудийных башен установленных на объекте <RefObj>

<RetVar> = get range of missile type <Var/Ware>
Получить радиус поражения (в метрах) <RetVar> ракеты типа <Var/Ware>

<RetVar> = <RefObj> find nearest missile aiming to me
Найти ближайшую ракету <RetVar> наведённую на объект <RefObj>

Комплексные торговые команды

??? (До версии ScE 13 еще не реализованы)

Основные торговые команды

<RetVar/IF> <RefObj> add <Var/Number> units of <Var/Ware>
???

<RetVar/IF> <RefObj> install <Var/Number> units of <Var/Ware>
???

<RetVar> = get volume of ware <Var/Ware>
???

<RetVar> = get transport class of ware <Var/Ware>
???

<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>
Найти станцию <RetVar> производитель товара <Var/Ware> с наилучшей ценой или проверить возможность существования таковой <IF>. Максимальная цена на товар = <Var/Number>, количество товара на станции не меньше <Var/Number>, прыжков до станции не больше <Var/Number>, начиная с сектора <Var/Sector>, которая может торговать с кораблем/станцией <Var/Ship/Station>.

<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>
Найти станцию <RetVar> производитель товара <Var/Ware> с минимальным количеством прыжков до неё или проверить возможность существования таковой <IF>. Максимальная цена на товар = <Var/Number>, количество товара на станции не меньше <Var/Number>, прыжков до станции не больше <Var/Number>, начиная с сектора <Var/Sector>, которая может торговать с кораблем/станцией <Var/Ship/Station>.

<RetVar/IF> find station: resource <Var/Ware> with best price: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>
Найти станцию <RetVar> покупатель товара <Var/Ware> по наилучшей цене или проверить возможность существования таковой <IF>. Максимальная цена на товар = <Var/Number>, объем свободного места для товара на станции не меньше <Var/Number>, прыжков до станции не больше <Var/Number>, начиная с сектора <Var/Sector>, которая может торговать с кораблем/станцией <Var/Ship/Station>.

<RetVar/IF> find station: resource <Var/Ware> with min. jumps: max.price=<Var/Number>, amount=<Var/Number>, max.jumps=<Var/Number>, startsector=<Var/Sector>, trader=<Var/Ship/Station>
Найти станцию <RetVar> покупатель товара <Var/Ware> с минимальным количеством прыжков до неё или проверить возможность существования таковой <IF>. Максимальная цена на товар = <Var/Number>, объем свободного места для товара на станции не меньше <Var/Number>, прыжков до станции не больше <Var/Number>, начиная с сектора <Var/Sector>, которая может торговать с кораблем/станцией <Var/Ship/Station>.

<RetVar/IF> get player money
Получить объем наличности игрока.

<RetVar> = get average price of ware <Var/Ware>
???

<RetVar> = get max price of ware <Var/Ware>
???

<RetVar> = get min price of ware <Var/Ware>
???

<RetVar> = get max price of ware <Var/Ware> as secondary resource
???

<RetVar> = get min price of ware <Var/Ware> as secondary resource
???

<RetVar/IF> is ware <Var/Ware> illegal in <Var/Race> sectors
???

<RetVar> = get maintype of ware <Var/Ware>
???

<RetVar> = get subtype of ware <Var/Ware>
???

<RetVar> = get ware from maintype <Var/Number> and subtype <Var/Number>
???

<RetVar> = get number of subtypes of maintype <Var/Number>
???

<RetVar/IF> = <RefObj> get maintype
???

<RetVar/IF> = <RefObj> get subtype
???

Основные торговые команды / Для кораблей

<RetVar/IF> <RefObj> buy <Var/Number> units of <Var/Ware>
???

<RetVar/IF> <RefObj> buy <Var/Number> units of <Var/Ware> to a max. price of <Var/Number> Cr
???

<RetVar/IF> <RefObj> sell <Var/Number> units of <Var/Ware>
???

<RetVar/IF> <RefObj> load <Var/Number> units of <Var/Ware>
???

<RetVar/IF> <RefObj> unload <Var/Number> units of <Var/Ware>
???

<RetVar> = <RefObj> get max. ware transport class
???

<RetVar/IF> <RefObj> get cargo bay size
???

<RetVar/IF> <RefObj> get free volume of cargo bay
???

<RetVar/IF> <RefObj> get volume of ware <Var/Ware> in cargo bay
???

<RetVar/IF> <RefObj> get true volume of ware <Var/Ware> in cargo bay
???

<RetVar/IF> <RefObj> get free volume of ware <Var/Ware> in cargo bay
???

<RetVar/IF> <RefObj> get total volume in cargo bay
???

<RetVar/IF> <RefObj> can transport ware <Var/Ware>
???

<RefObj> add default items to ship
???

<RefObj> switch laser in slot <Var/Number> to <Var/Ware>
???

<RefObj> set wanted ware count to <Var/Number>
???

<RefObj> set wanted ware to <Var/Ware>
???

<RetVar> = <RefObj> get wanted ware count
???

<RetVar> = <RefObj> get wanted ware
???

<RetVar/IF> <RefObj> has illegal ware onboard: race=<Var/Race>
???

Основные торговые команды / Для станций

<RetVar/IF> <RefObj> get best store amount of ware <Var/Ware>
???

<RetVar/IF> <RefObj> get max. store amount of ware <Var/Ware>
???

<RetVar/IF> <RefObj> can buy ware <Var/Ware>
???

<RetVar/IF> <RefObj> can sell ware <Var/Ware>
???

<RetVar/IF> <RefObj> get price of ware <Var/Ware>
???

<RetVar/IF> <RefObj> get average price of ware <Var/Ware>
???

<RefObj> set price of ware <Var/Ware> to <Var/Number> Cr
???

<RetVar/IF> <RefObj> uses ware <Var/Ware> as primary resource
???

<RetVar/IF> <RefObj> uses ware <Var/Ware> as secondary resource
???

<RetVar/IF> <RefObj> trades with ware <Var/Ware>
???

<RetVar/IF> <RefObj> get product ware
???

<RetVar/IF> <RefObj> get number of resources
???

<RetVar/IF> <RefObj> get number of primary resources
???

<RetVar/IF> <RefObj> get number of secondary resources
???

<RetVar/IF> <RefObj> get max trade jumps
???

<RetVar/IF> <RefObj> get money
???

<RetVar/IF> <RefObj> get amount of ware <Var/Ware> in cargo bay
???

<RetVar/IF> <RefObj> get true amount of ware <Var/Ware> in cargo bay
???

<RetVar/IF> <RefObj> get free amount of ware <Var/Ware> in cargo bay
???

<RetVar/IF> <RefObj> get max amount of ware <Var/Ware> that can be stored in cargo bay
???

Основные торговые команды / Для кораблей и станций

<RetVar/IF> <RefObj> get money
???

<RetVar/IF> <RefObj> get amount of ware <Var/Ware> in cargo bay
???

<RetVar/IF> <RefObj> get true amount of ware <Var/Ware> in cargo bay
???

<RetVar/IF> <RefObj> get free amount of ware <Var/Ware> in cargo bay
???

<RetVar/IF> <RefObj> get max amount of ware <Var/Ware> that can be stored in cargo bay
???

Основные команды работы с объектами

<RetVar/IF> <RefObj> get object class
???

<RetVar/IF> <RefObj> get owner race
???

<RetVar/IF> <RefObj> get environment
???

<RetVar/IF> <RefObj> get sector
???

<RetVar/IF> <RefObj> get homebase
???

<RetVar/IF> <RefObj> is of class <Var/Class>
???

<RetVar/IF> <RefObj> exists
???

<RetVar/IF> <RefObj> get ware type code of object
???

<RetVar/IF> <RefObj> get serial name of station
???

<RetVar/IF> find station: startsector=<Var/Sector> class or type=<Value> race=<Var/Race> flags=<Var/Number> refobj=<Value> serial=<Var/Station Serial> max.jumps=<Var/Number>
???

<RetVar/IF> <RefObj> is of type <Var/Ship Type/Station Type>
???

<RetVar/IF> get jumps from sector <Var/Sector> to sector <Var/Sector>
???

<RetVar/IF> get next sector on route from sector <Var/Sector> to sector <Var/Sector>
???

<RefObj> set homebase to <Var/Ship/Station>
???

<RetVar/IF> <RefObj> get current shield strength
???

<RetVar/IF> <RefObj> get maximum shield strength
???

<RetVar/IF> <RefObj> get current laser strength
???

<RetVar/IF> <RefObj> get maximum laser strength
???

<RetVar/IF> <RefObj> get max. shield type that can be installed
???

<RetVar/IF> <RefObj> get max. laser type that can be installed
???

<RetVar/IF> <RefObj> get number of shield bays
???

<RetVar/IF> <RefObj> get number of laser bays
???

<RetVar/IF> <RefObj> get max. rocket type that can be installed
???

<RetVar/IF> <RefObj> get relation to object <Var/Ship/Station>
???

<RetVar/IF> <RefObj> get relation to race <Var/Race>
???

<RetVar/IF> <RefObj> get notoriety to race <Var/Race>
???

<RetVar/IF> get notoriety from race <Var/Race> to race <Var/Race>
???

<RetVar/IF> <RefObj> is <Var/Ship/Station> a enemy
???

<RetVar/IF> <RefObj> is <Var/Ship/Station> a friend
???

<RetVar/IF> <RefObj> is <Var/Ship/Station> neutral to me
???

<RetVar/IF> <RefObj> get shield type in bay <Var/Number>
???

<RetVar/IF> <RefObj> get laser type in bay <Var/Number>
???

<RetVar/IF> <RefObj> has same environment as <Var/Ship/Station>
???

<RetVar/IF> <RefObj> is in same sector as <Var/Ship/Station>
???

<RetVar/IF> <RefObj> is landed
???

<RetVar/IF> <RefObj> is in a sector
???

<RetVar/IF> <RefObj> get attacker
???

<RefObj> set attacker to <Var/Ship/Station>
???

<RetVar> = get distance between <Var/Ship/Station> and <Var/Ship/Station>
???

<RetVar> = create ship: type=<Var/Ship Type> owner=<Var/Race> addto=<Value> x=<Var/Number> y=<Var/Number> z=<Var/Number>
???

<RetVar> = <RefObj> get x position
???

<RetVar> = <RefObj> get y position
???

<RetVar> = <RefObj> get z position
???

<RetVar> = get player ship
???

<RefObj> set relation against <Var/Ship/Station> to <Relation>
???

<RetVar/IF> <RefObj> is docked
???

<RetVar/IF> <RefObj> is docking possible of <Value>
???

<RetVar> = create station: type=<Var/Station Type> owner=<Var/Race> addto=<Var/Sector>
x=<Var/Number> y=<Var/Number> z=<Var/Number>
???

<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>
???

<RetVar> = create asteroid: type=<Var/Number> addto=<Var/Sector> resource=<Var/Number> yield=<Var/Number> x=<Var/Number> y=<Var/Number> z=<Var/Number>
???

<RefObj> add product to factory or dock: <Var/Ware>
???

<RefObj> add primary resource to factory: <Var/Ware>
???

<RefObj> add second resource to factory: <Var/Ware>
???

<RefObj> remove product from factory or dock: <Var/Ware>
???

<RefObj> remove primary resource from factory: <Var/Ware>
???

<RefObj> remove second resource from factory: <Var/Ware>
???

<RetVar> = create nebula: type=<Var/Number> addto=<Var/Sector> x=<Var/Number> y=<Var/Number> z=<Var/Number>
???

<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>
???

<RetVar> = create planet: subtype=<Var/Number> addto=<Var/Sector> x=<Var/Number> y=<Var/Number> z=<Var/Number>
???

<RetVar> = create special: type=<Var/Number> addto=<Var/Sector> x=<Var/Number> y=<Var/Number> z=<Var/Number>
???

<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>
???

<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>
???

<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>
???

<RetVar/IF> <RefObj> is disabled
???

<RefObj> station trade and production tasks: on=<Var/Number>
???

<RetVar/IF> <RefObj> get SectorObject ID
???

<RetVar> = get ware type of SectorObject <Var/Number>
???

<RetVar/IF> exists SectorObject <Var/Number>
???

<RetVar/IF> get object from SectorObject <Var/Number>
???

<RefObj> destruct: show no explosion=<Var/Number>
???

<RefObj> set position: x=<Var/Number> y=<Var/Number> z=<Var/Number>
???

<RefObj> set rotation: alpha=<Var/Number> beta=<Var/Number> gamma=<Var/Number>
???

<RefObj> set position of sector object <Var/Number> : x=<Var/Number> y=<Var/Number> z=<Var/Number>
???

<RefObj> set safe position of sector object <Var/Number> : x=<Var/Number> y=<Var/Number> z=<Var/Number>
???

<RefObj> set rotation of sector object <Var/Number> : x=<Var/Number> y=<Var/Number> z=<Var/Number>
???

<RetVar> = create sector object: maintype=<Var/Number> subtype=<Var/Number>
???

free sector object <Var/Number>
???

kill sector object <Var/Number> : reason=<Var/Number> , killer sector object=<Var/Number>
???

start sector object <Var/Number> in space <Var/Number>
???

<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>
???

<RetVar> = <RefObj> get rot alpha
???

<RetVar> = <RefObj> get rot beta
???

<RetVar> = <RefObj> get rot gamma
???

<RetVar> = <RefObj> get size of object
???


Команды работы с галактикой и секторами

<RetVar/IF> get sector from galaxy index: x=<Var/Number> y=<Var/Number>
???

<RetVar> = get max sectors in x direction
???

<RetVar> = get max sectors in y direction
???

<RetVar/IF> <RefObj> is sector known by the player
???

<RetVar> = <RefObj> get galaxy x index
???

<RetVar> = <RefObj> get galaxy y index
???

<RetVar> = <RefObj> get north warp gate
???

<RetVar> = <RefObj> get south warp gate
???

<RetVar> = <RefObj> get east warp gate
???

<RetVar> = <RefObj> get west warp gate
???

<RetVar> = find a random sector: startsector=<Var/Sector>, jumps=<Var/Number>, owner=<Var/Race>
???

Примечания:
*1 Одна секунда = 1000 ms.
Примеры скриптов

Ниже будет рассмотрен пример, демонстрирующий стандартную команду «Взять товар по наилучшей цене». Он состоит из нескольких отдельных, логически завершенных скриптов. Почему именно из нескольких? Почему не одним? Ответ на этот вопрос очень прост: как я уже писал в «вступлении» все скрипты будут строится из отдельных кусков – примитивов, например скрипт «!move.movetostation» вполне можно использовать и в других скриптах, например хотя-бы «Продать товар по наилучшей цене», а постоянно повторять одни и те-же одинаковые куски кода - напрасный расход памяти, гораздо логичнее разбить НС на стандартизированные кусочки кода (примитивы) и далее вызывать их из других НС.

!init.ship.globalscriptmap.pl
Версия: 1
Для версии ScE: 11
Описание:
Инициализация всех кораблей рассы «игрок»
Аргументы:
Исходный текст:

009 global ship map: set: key=COMMAND_GET_WARE_BEST, class=Ship, race=$race, script= '!ship.cmd.getwarebest.pl', prio=0


Как мы видим из названия этого скрипта – он является системным (в начале имени стоит знак «!») и не подлежит модификации игроком. Этот скрипт вызывается одним из первых (сразу после запуска игры, когда все данные о галактических объектах уже подготовлены) и занимается присвоением скриптов всем командам и сигналам всех объектов рассы «игрок». Я не стал приводить его в этом примере целиком – в данном случае нас интересует лишь строка под номером 009, в которой за командой COMMAND_GET_WARE_BEST всех объектов класса корабль, рассы заданной переменной $race, закрепляется НС под названием «!ship.cmd.getwarebest.pl» и устанавливается для него нулевой приоритет.

!ship.cmd.getwarebest.pl
Версия: 1
Для версии ScE: 11
Описание:
Команда корабля игрока «Взять товар по лучшей цене»
Аргументы:
1: ware , Var/Homebase and Resource , 'ware'
Исходный текст:

001 @ =[THIS] ->call script '!ship.cmd.getwarebest.std': ware = $ware

Очень длинный скрипт , он всего-лишь «переводит стрелки» на «стандартный» НС используемый кораблями НПЦ. Здесь [THIS] это ссылка на конкретный экземпляр объекта класса корабль, который только что получил от игрока команду COMMAND_GET_WARE_BEST, и занялся её исполнением. Скрипт имеет один аргумент – тип ресурсов которые нужно найти (его мы указываем когда даем кораблю команду) и передает его скрипту «!ship.cmd.getwarebest.std», который так же имеет аргумент того-же типа. Символ «@» означает что выполнение скрипта может быть прервано (например сигналом «SIGNAL_ATTACKED» или любой другой командой / сигналом с таким-же, или более высоким приоритетом). Результат исполнения скрипта (значение возвращаемое Return) в данном случае не анализируется (пустой оператор присвоения).

!ship.cmd.getwarebest.std
Версия: 1
Для версии ScE: 11
Описание:
Стандартная команда корабля «Взять товар по лучшей цене»
Аргументы:
1: ware , Var/Ware , 'ware'
Исходный текст:

001 [THIS] ->set command:COMMAND_GET_WARE_BEST target=$ware target2=null par1=null par2=null
002 // Просто пустая строка (NOP)
003 @ =[THIS] ->call script '!trade.loop.getwarebest': ware=$ware

Устанавливаем целью команды COMMAND_GET_WARE_BEST товар заданный переменной $ware, присваиваем цели номер два и дополнительным параметрам значение null (те. нет значения). Вызываем скрипт '!trade.loop.getwarebest' с аргументом $ware.

!trade.loop.getwarebest
Версия: 1
Для версии ScE: 11
Описание:
Поиск и покупка товара, возвращение обратно
Аргументы:
1: ware , Var/Ware , 'ware'
Исходный текст:

001 skip if [HOMEBASE] // Если для текущего корабля задана база пропускаем следующую строку
002 return null // Возврат в вызывавший скрипт (база не задана). Команда return в данном случае возвращает пустое, «неопределенное» значение (в нашем примере оно все равно нигде не анализируется)
003 skip if [HOMEBASE] ->can buy ware $ware // Пропустить следующую строку если база может покупать товар заданный переменной $ware
004 return null // Возврат в вызывавший скрипт (база не может покупать указанный товар)
005
006 while 1 // «Вечный» цикл (вместо условия задана константа, выход возможен по return или break)
007 @ =wait randomly from 5000 to 10000 ms // Ждем случайное число ms от 5000 до 10000 (5-10с.) (во первых так просят делать ребята из Egosoft’а (такие задержки необходимы чтобы куча скриптов могла выполнятся одновременно не мешая друг-другу), во вторых возможно это уже не первый виток цикла, и мы просто ждем пока «ситуация изменится» (упадет цена, накопится достаточное кол-во товара, появится свободное место для товара на станции, появятся деньги, etc.)
008
009 $homebase =[HOMEBASE] // Присваиваем переменной $homebase базу, заданную для корабля на котором выполняется этот скрипт.
010 skip if $homebase // Еще раз проверяем существует ли база, (мы ведь ждали 5-10с. и возможно это уже не первый виток цикла, за это время её уже могли уничтожить )
011 return null // Возврат в вызывавший скрипт (база не существует)
012 $env =$homebase ->get environment // Получить «окружение» базы, (те. объект типа сектор) и присвоить его переменной $env.
013
014 $amount =$homebase ->get free amount of ware $ware in cargobay // Получить объем оставшегося свободного места на станции для товара ware$ и присвоить его переменной $amount.
015 skip if $amount>0 // Если объем оставшегося места больше 0, пропускаем следующую строку.
016 continue // Запускаем новый виток цикла (те. переходим в строку 006) (объем оставшегося места равен 0)
017
018 $money =$homebase ->get money // Получить количество денег на станции и присвоить его переменной $money.
019 $price =$homebase ->get price of ware $ware // Получить цену установленную на станции для товара $ware.
020 skip if $price>0 // Если установлена не нулевая цена пропускаем следующую строку
021 continue // Запускаем новый виток цикла (те. переходим в строку 006) (цена нулевая)
022
023 $resnum =$homebase ->get number of resources // Получить количество типов ресурсов, потребляемых станцией и присвоить его переменной $resnum.
024 skip if $resnum<=3 // Если количество различных типов ресурсов потребляемых станцией меньше или равно 3, пропускаем следующую строку.
025 $resnum =3 // Присваиваем переменной $resnum значение равное 3. (Станция потребляет больше трех типов ресурсов. Мы принудительно присваиваем переменной число три, для упрощения расчетов).
026 if $resnum==0 // Если количество потребляемых типов ресурсов равно 0 (нет первичных ресурсов (например фабрика батареек)) то переходим в строку 027 иначе в строку 029. Обратите внимание что проверка на равенство выгладит именно как «==», в то время как «=» является оператором присвоения.
027 $mult =50 // Присваиваем переменной $mult значение равное 50.
028 else // Условие ложно.
029 $mult =140/$resnum // Присваиваем переменной $mult значение равное 140/$resnum.
030 end // Конец условного оператора из строки 026
031 $goodamount =[$money/$price]*$mult/100 // Подсчитываем «правильный» остаток свободного места, которое должно быть на станции и присваиваем его переменной $goodamount.
032 skip if $goodamount>0 // Если «правильный» остаток свободного места больше 0 то пропускаем следующую строку.
033 continue // Запускаем новый виток цикла (те. переходим в строку 006) (если «правильный» остаток равен 0 (нет денег на станции для закупки)).
034 skip if $amount<=$goodamount // Если действительный остаток свободного места меньше чем «правильный», пропускаем следующую строку.
035 $amount =$goodamount // Присваиваем переменной $amount значение «правильного» остатка.
036
037 $free =[THIS] -> get free amount of ware $ware in cargobay // Получить объем оставшегося свободного места на корабле для товара ware$ и присвоить его переменной $free.
038 skip if $amount<=$free // Если рассчитанное количество товара меньше, либо равно количеству товара, которое может загрузить в трюм корабль, пропускаем следующую строку.
039 $amount =$free // Присваиваем переменной $amount количество товара, которое может загрузить в трюм корабль.
040 skip if $amount>0 // Если в результате получилось количество большее нуля, пропускаем следующую строку.
041 continue // Запускаем новый виток цикла (те. переходим в строку 006) (получилось нулевое количество товара (например трюм корабля заполнен другим товаром))
042
043 $jumps =$homebase ->get max trade jumps // Получить максимальное количество прыжков за товаром, заданное на станции установленной как база для корабля и присвоить его переменной $jumps.
044 $station =find station: product $ware with best price: max.price=$price, amount=$amount, max.jumps=$jumps, startsector=$env, trader=[THIS] // Найти станцию удовлетворяющую следующим условиям: станция производит товар $ware, с наименьшей ценой, не превышающей $price, с количеством товара не меньше $amount, находящуюся не более чем в $jumps прыжках от сектора $env, с которой мог-бы торговать корабль [THIS] (текущий); и присвоить её идентификатор переменной $station.
045 skip if $station // Если станция была найдена (получен не нулевой идентификатор) то пропускаем следующую строку.
046 continue // Запускаем новый виток цикла (те. переходим в строку 006) (StationID равен 0)
047
048 @ =[THIS] ->call script '!trade.getwareandreturnhome':ware=$ware destination station=$station amount=$amount max.price=$price // Вызываем скрипт '!trade.getwareandreturnhome' с аргументами $ware, $station, $amount, $price (см. аргументы скрипта '!trade.getwareandreturnhome').
049
050 end // Запускаем новый виток цикла (те. переходим в строку 006) (и так до тех пор пока корабль не получит новую команду или какой либо сигнал с более высоким приоритетом)

!trade.getwareandreturnhome
Версия: 1
Для версии ScE: 11
Описание:
Взять товар и вернутся домой
Аргументы:
1: ware , Var/Ware , 'ware'
2: station , Var/Station/Carrier , 'destination station'
3: amount , Var/Number , 'amount'
4: maxprice , Var/Number , 'max.price'
Исходный текст:

001 [THIS] ->set wanted ware count to $amount //
002 [THIS] ->set wanted ware to $ware //
003
004 skip if [HOMEBASE] != $station // Пропустить следующую строку если найденная нами станция не является базой заданной для корабля.
005 return null // Возврат в вызывавший скрипт (найденная нами станция является базой заданной для корабля)
006
007 while 1 // «Вечный» цикл (выход возможен по return или break)
008 @ =wait randomly from 100 to 200 ms // Ждем случайное число ms от 100 до 200.
009
010 skip if [HOMEBASE] // Если для текущего корабля задана (существует) база пропускаем следующую строку
011 return null // Возврат в вызывавший скрипт (база не существует)
012
013 skip if $station ->exists // Пропустить следующую строку если станция назначения существует
014 break // Прервать выполнение цикла, управление перейдет в строку №027 (Попытка вернутся на базу) (станции уже не существует)
015
016 if [DOCKEDAT] == $station // Если корабль пристыкован к станции назначения то переходим в строку 017, иначе в строку 024
017 skip if $maxprice>0 // Если переменная $maxprice больше нуля, то пропустить следующую строку
018 $maxprice = null // Присвоить переменной $maxprice неопределенное значение (0 «ноль» и Null совсем не одно и тоже! см. «Переменные») в данном случае подразумевается «покупать по любой цене»
019 skip if $amount>0 // Если желаемое количество (переменная $amount) больше нуля, пропустить следующую строку
020 $amount =[THIS] ->get free amount of ware $ware in cargobay // Получить объем оставшегося свободного места на корабле для товара ware$ и присвоить его переменной $amount
021 =[THIS] ->buy $amount units of $ware to a max. price of $maxprice Cr // Купить товар $ware в количестве $amount по цене не выше $maxprice
022 break // Прервать выполнение цикла, управление перейдет в строку 027 (Попытка вернутся на базу)
023 else
024 @ =[THIS] ->call script '!move.movetostation': station = $station // Вызвать скрипт '!move.movetostation' с аргументом $station
025 end // Конец условного оператора из строки 016
026 end // Конец витка цикла из строки 007
027
028 @=wait randomly from 10000 to 20000 ms // Ждем случайное число ms от 10000 до 20000(10-20с)
029
030 * fly home if possible // Просто комментарий (пр: лететь домой если возможно Улыбка
031 while [ENVIRONMENT] != [HOMEBASE] // Цикл с условием: пока «окружение» (сектор/станция) корабля не равно («!=») заданной для корабля базе (те. цикл завершится как только корабль окажется на базе).
032 @ =wait randomly from 100 to 200 ms // Ждем случайное число ms от 100 до 200
033 skip if [HOMEBASE] // Если для текущего корабля задана (существует) база пропускаем следующую строку
034 return null // Возврат в вызывавший скрипт (база не существует)
035 @ =[THIS] ->fly to home base // Лети домой! Птичка! 
036 end // Конец витка цикла из строки 031
037
038 =[THIS] ->unload $amount units of $ware // Выгрузить товар $ware в количестве $amount
039 return null // Возврат в вызывавший скрипт

!move.movetostation
Версия: 1
Для версии ScE: 11
Описание:
Перемещение корабля на станцию или авианосец
Аргументы:
1: targetstation , Var/Station/Carrier , 'station'
Исходный текст:

001 skip if $targetstation ->is docking possible of [THIS] // Пропустить следующую строку если стыковка со станцией назначения возможна
002 return null // Возврат в вызывавший скрипт (стыковка не возможна)
003
004 while 1 // «Вечный» цикл (выход возможен по return или break)
005 skip if $targetstation ->exists // Пропустить следующую строку если станция назначения существует
006 break // Прервать выполнение цикла, управление перейдет в строку 016, выполнение скрипта завершится, произойдет возврат в вызывавший скрипт (станции уже не существует)
007
008 $dockedat =[THIS] ->is docked
009 if $targetstation==$dockedat
010 break // Прервать выполнение цикла, управление перейдет в строку 016, выполнение скрипта завершится, произойдет возврат в вызывавший скрипт (корабль пристыкован к станции назначения)
011 end // Конец условного оператора из строки 009
012
013 @ =[THIS] ->fly to station $targetstation // Лететь на станцию заданную переменной $targetstation
014 @ =wait randomly from 100 to 200 ms // Ждем случайное число ms от 100 до 200
015 end // Конец витка цикла из строки 004 (те. цикл будет выполнятся пока станция назначения существует и пока корабль к ней не пристыкован)
_________________
FidoNet 2:5030/1071.55
Team - TBH
    Добавлено: 20:05 07-01-2004   
HF-Trade
 86 EGP


Репутация: 6
Сообщения: 62
Откуда: Spb
Зарегистрирован: 10.12.2003
Народ подскажите как глюк с текстом исправить в версии 1.1 , прописываю в новом xml название скрипта, скрипт работает, а название выглядит как textчегототам ....Подмигиваю)
_________________
FidoNet 2:5030/1071.55
Team - TBH
    Добавлено: 20:13 07-01-2004   
Пассажир
 

Пассажир




*SHIFT_Z*
To HF-Trade: Вау! ТЫ ОХРЕНЕЛ??? Зачем же ты ето всё сюда-то прям вывалил? Надо было ссылочку дать. Щас модеры сбегуться - ругаться начнут.
    Добавлено: 20:39 07-01-2004   
Пассажир
 

Пассажир




*SHIFT_Z*
"...выглядит как textчегототам..."
text2010-410 Так примерно? Если так, то тебе на первую страницу сией темы.
    Добавлено: 20:46 07-01-2004   
HF-Trade
 86 EGP


Репутация: 6
Сообщения: 62
Откуда: Spb
Зарегистрирован: 10.12.2003
Гость :
*SHIFT_Z*
"...выглядит как textчегототам..."
text2010-410 Так примерно? Если так, то тебе на первую страницу сией темы.

Был я там, все так и делаю, нифиха не получается, все равно текст не видит, помимо ентого при изменении любой строки в xml в папке Т, гама вылетает сразу после запуска, енто из-за версии 1.1?
У меня однодисковая версия...она помоему добавленно XML вообще не видит, пробовал конвертить, то же не видит, вощем нет текста...
Может кто запостит сюды свою xml?
Она ж маленькая Улыбка , строчек 6 помойму.

To Moderator сорри, за текст, ну я ж говорю не помню откуда слил...
_________________
FidoNet 2:5030/1071.55
Team - TBH
    Добавлено: 21:20 07-01-2004   
BabyWolf_UNREGISTR
 





2 HF-Trade
Да уж вываливать описалово целиком да ещё там где легко можно взять в ссылках базы данных Х2 Разозлен
2 Akm
Посмотри скрипт автоторговли - там как раз скрипт добавлен в пользовательские. Твой скрипт на тестировании - базы стали полнее что-ли, наполненность баз в % выше и корабли менее часто летают за 1 штучкой.
2 bal
Твой скрипт тестируется. Очень засоряет лог - при каждой сделке запись. Приходится его килять.
Также добегало до 14 ошибок.
Интересно что 70-80% возят кремний.
5 кораблей - около 1 дня.
Если даже поставить зарплату менеджеру в 100% но забабахать побольше кораблей получаем халявный рейтинг - торговый и отношения рас.
    Добавлено: 21:23 07-01-2004   
WG
 135 EGP


Рейтинг канала: 1(8)
Репутация: 4
Сообщения: 141

Зарегистрирован: 08.12.2003
Залез сегодня наконец в редактор скриптов, посмотрел, что да как. Принцип построения этого редактора чем-то напоминает синклеровский бейсик, не находите ?

Ладно, перехожу к делу. Насчет динамического распределения заданий и т.п. - решил я сделать скрипт, который позволит транспорту работать не две стороны. Ну, понятно, что любой шахте не самом деле хватит одного транспорта, а привязывать два приходится. Идея простая - если на фабрике больше 25% продукции - развозим ее, меньше - закупаем ресурсы (потом можно помудрить с увязкой времени цикла / количеством ресурсов на цикл и т.п., если в редакторе такие средства есть - но пока я готов пожертвовать эффективностью ради простоты и скорости работы игры). И вот в процессе написания наткнулся на такие грабли - как программно выяснить закупаемые станцией ресурсы ? Явно к этому имеют отношение загадочные функции maintype и subtype - кто-нибудь может объяснить, что это такое ? И примерчик бы... Скрипты автоторговли я смотрел, но там задача проще - все равно весь массив ресурсов обрабатывать надо. А тут как ? Проверять, закупается ли станцией ресурс по всему списку ? Бред, уверен, есть решение проще. Подскажите...


И еще, никто не делал такой скриптик - при появлении противника обстрелять его и сразу отходить в условленную точку (а там лазерные башни, штук десять Улыбка ?
    Добавлено: 23:20 07-01-2004   
akm
 470 EGP


Рейтинг канала: 1(4)
Репутация: 173
Сообщения: 1638
Откуда: Паразит Прайм
Зарегистрирован: 23.10.2002
Улучшил свои скрипты автоматизированной поставки сырья/реализации продукции.
Get Ware Best ver.3
Sell Ware Best ver.3

Изменения:

3. Если на фабрике готовой продукции менее свободного места в трюме, транспорт, реализующий продукцию, будет стоять дома (раньше было пока готовой продукции на фабрике менее 20%).

4в. Поиск станции по критерию максимальной выгоды теперь производится постоянно на всем маршруте следования транспорта. Причем радиус поиска = 1 (отсчет от текущего сектора, который пролетает транспорт) до тех пор, пока транспорт не достиг конечного сектора, в котором находится оптимальная станция, и становится 0 по факту входа в этот сектор. Т.е. транспорт запросто может поменять по дороге станцию для закупки на любую другую (если цена окажется выгодней) и даже завернуть 1 сектор в сторону, при этом изначально запланированная им дистанция не увеличится ни на один сектор.

Обнаружил странную и весьма досадную особенность движка скриптов в Х2: если в скрипте идут порядка 15-20 строк совсем не разбавленных командами со значком "@" слева (т.е. теми, что могут прерываться), то игра может намертво повиснуть! И я даже не говорю про циклы...
Внутри любого цикла обязательно ставте строку:
@ = wait randomly from 100 to 200 ms !!!
    Добавлено: 23:32 07-01-2004   
WG
 135 EGP


Рейтинг канала: 1(8)
Репутация: 4
Сообщения: 141

Зарегистрирован: 08.12.2003
> Если на фабрике готовой продукции менее свободного места в трюме...

А разве не бывает случаев, когда остаткок всегда будет меньше места в трюме ? Силикона, по-моему, никогда на трюм не набежит. Хотя точно не помню...
    Добавлено: 01:32 08-01-2004   
violator666
 337 EGP


Нарушитель
Рейтинг канала: 1(1)
Репутация: 79
Сообщения: 1744
Откуда: Moscow (Мытищи)
Зарегистрирован: 19.09.2001
епрст побывал на Scripting Center ... вот понаделали уже скриптов кучу, скачал Station manager, вообще все скрипты как читы .. или представьте это как компьютеры на биржах современных через интернет сами с собой торгуют на сверхскоростях.. а тут типа скрипты автоторговли - имеешь там например пентиум 50 Ггц и у тебя несколько тысяч транспортов лазяют по галактике как спруты в матрице и торгуют - делают деньги из воздуха - а потом скрипты апдейтят сами по себе когда много наторгуют и по каналам интернета докачивают их себе в базу потом их исполняют и нанимают себе охрану из нескольких М6 и М3 ... кароче хана - оставляешь ком на ночь - к утру Терминатор просто отдыхает - хаки все в рабстве и при попытке к бегству будут трансклюкированы Супер! хорош Улыбка
_________________
Attention All Departing Pirates: Pilots have been seen in this sector
    Добавлено: 04:39 08-01-2004   
Канал X2: The Threat: «Скриптами делимся, скриптами»
На страницу: Пред.  1, 2, 3, 4, 5, 6 ... 66, 67, 68  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Посадка разрешена. Стыкуйтесь после появления зеленых чертей.

  » Скриптами делимся, скриптами | страница 5
Каналы: Новости | 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