ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Справочник по скриптовым командам (X3)|v. 0.3.54|05.07.2008 | страница 10 |
|
|
|
Канал X3: Reunion »
Модовый и скриптовый отсек X3: Reunion: «Справочник по скриптовым командам (X3)|v. 0.3.54|05.07.2008» |
|
Что нужно добавить в справочник в первую очередь ? |
Описания файлов из каталога types. |
|
25% |
[ 2 ] |
Статьи, написанные выдающимися скриптерами. |
|
37% |
[ 3 ] |
Задачи, и лучшие решения скрипт-школы. |
|
37% |
[ 3 ] |
Свой вариант (просьба описать кратко, но емко). |
|
0% |
[ 0 ] |
|
Всего проголосовало : 8 |
|
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
бухой джедай : |
наверно намекают по той причине что появился ...
теперь можно не боятся впечататся
|
Я немного дополнил пост выше :
Chem : |
Заглянув унутрь, не нашел разницы в работе данной новой команды с
вот этой :
<RefObj> set position: x=<Var/Number> y=<Var/Number> z=<Var/Number>.
Вот прийдет Алекс - он пояснит, я надеюсь Подмигиваю.
|
Вот та команда и раньше не особо проверяла.
_________________ Умножим энтропию на 0 :-) |
|
|
Bob_Koh 61 EGP
Рейтинг канала: 3(31) Репутация: 4 Сообщения: 125 Откуда: Хмельник Зарегистрирован: 15.10.2007 |
|
Chem : |
Забыл написать, что добавил еще -
<RefObj> force position: x=<Var/Number> y=<Var/Number> z=<Var/Number>
• Команда перемещает объект <RefObj> в точку пространства с указанными координатами x=<Var/Number> y=<Var/Number> z=<Var/Number>. Будьте аккуратны используя эту инструкцию, она не делает проверки находиться ли по этим координатам какой либо объект. И соответственно если по этим координатам будет находится, например станция, а вы поместите туда корабль, то он разобьется о корпус станции.
Заглянув унутрь, не нашел разницы в работе данной новой команды с
вот этой :
<RefObj> set position: x=<Var/Number> y=<Var/Number> z=<Var/Number>.
Вот прийдет Алекс - он пояснит, я надеюсь .
З.Ы. Даешь рейтинг 2008 до начала 2008 года
З.Ы.Ы. Блин, теперь надо еще в команды вписать версию игры, структуру придется изменить .
|
Разница есть! В новом варианте не требуется батарей!
|
|
|
Andrei [<>Ace] 303 EGP
Рейтинг канала: 6(416) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006 |
|
Bob_Koh : |
Разница есть! В новом варианте не требуется батарей!
|
RefObj> set position: x=<Var/Number> y=<Var/Number> z=<Var/Number>. - никогда батареи не хавала
|
|
|
Expert 423 EGP
Рейтинг канала: 9(1073) Репутация: 154 Сообщения: 533 Откуда: Златоуст, Южный Урал Зарегистрирован: 15.08.2004 |
|
Цитата: |
<RetVar/If> = player HQ has blueprints for: type=<Var/Ship Type>
add blueprints to player HQ: type=<Var/Ship Type>
remove blueprints from player HQ: type=<Var/Ship Type>
|
Если у игрока несколько Штаб-Квартир, то ни одна команда не работает
Chem : |
Ибо нефиг
|
Это понятно. Просто программеры Эгософта в очередной раз продемонстрировали свою недальновидность. Весь этот патч - очередная недоделка. Даже в раздел загрузок на своём сайте нормальный архив с первого раза выложить не смогли
Последний раз редактировалось: Expert (00:47 28-12-2007), всего редактировалось 1 раз |
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
Ибо нефиг
_________________ Умножим энтропию на 0 :-) |
|
|
ULiX 320 EGP
Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005 |
|
Отличие команды
<RefObj> force position: x=<Var/Number> y=<Var/Number> z=<Var/Number>
от
<RefObj> set position: x=<Var/Number> y=<Var/Number> z=<Var/Number>
Первой командой можно совместить два объекта в одних координатах. Например можно соединить в одно точке два корабля или совместить корабль и ракету вызвав детонацию.
Фактически эта команда обединяет следующий алгоритм, который я использовал в своих скриптах для достижения того же эфекта:
Код: |
$SecObj = $Obj -> get SectorObject ID
if $SecObj
set safe position of sector object $SecObj : x= $x y= $y z= $z
else
$Obj -> set position: x= $x y= $y z= $z
end
|
Сравните c оригиналом в обжах:
Код: |
var SecObj = RefObj -> GetObjectID();
if(SecObj)
{
SA_SetPos(SecObj,x*500,y*500,z*500);
RefObj -> GetPos();
}
else
{
RefObj -> SetPos(x*500,y*500,z*500);
}
}
|
Т.е в удаленных секторах действует как стандартная команда, а в активном секторе устанавливает координаты без проверки совмещения и столкновения.
Другое дело, что команду
set safe position of sector object $SecObj : x= $x y= $y z= $z
нельзя набрать во встроенном редакторе. Однако набрать её можно в ExSCE, а потом она преспокойно копируется и редактируется во встроенном редакторе.
Не могу понять зачем её заблокировали, ведь она рабочая, как и ряд других заблокированных команд:
set position of sector object %0 : x=%1 y=%2 z=%3
set rotation of sector object %0 : x=%1 y=%2 z=%3
%0 create sector object: maintype=%1 subtype=%2
free sector object %0
kill sector object %0 : reason=%1 , killer sector object=%2
start sector object %0 in space %1
Конечно, этими командами нужно пользоваться с большой осторожностью, но всё же пользоваться можно.
Хочу команду позициониравния с точностью физических координат (1/500 метра)!!! Это позволит плавно двигать прикрепленные обекты. А также команды чтения физических координат. Иногда очень нужно спозиционировать с большей точностью чем в 1 метр. 1 метр это очень не мало, если двигать объект скриптами, он движется ступенчато....
<RefObj> ignore collisions: <Var/Number>
Хм... Вот то, что корабли не будут облетать объекты, это понятно, а вот зачем сделали, чтоб корабли могли пролетать сквозь обекты? Ответ напрашивается сам собой... XTM повлиял на егософтовцев. Помните как часто корабли при отстыковке разбивались о верфи и носители? Ну так теперь можно модифицировать скрипты отстыковки и корабли при отстыковке просто пролетят сквозь верфь или носитель и неповреждаясь... Мдя... координальное решение. Команда XTM будет просто без ума от счастья.
Кстати, Chem, а что AlexYar у нас единественный кодокапатель на форуме? Я же тоже ещё не потерян.
_________________ Новое ещё не значит лучшее |
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
ULiX : |
Кстати, Chem, а что AlexYar у нас единественный кодокапатель на форуме? Я же тоже ещё не потерян
|
Ну раз так (Хотя я в этом и не сомневался .
Вот все равно не вижу разницы между:
set position : |
Код: |
loc21->SetPos(loc23*500,loc25*500,loc27*500);
|
|
и
force position : |
Код: |
if(loc28)
{
var loc28=loc21->GetObjectID();
SA_SetPos(loc28,loc23*500,loc25*500,loc27*500);
loc21->GetPos();
}
else
{
loc21->SetPos(loc23*500,loc25*500,loc27*500);
}
|
|
Хотя нет, уже увидел .
В случае когда объект это корабль или ракета и действие происходит в активном секторе - действительно в случае force pos используется SA_SetPos вместо SA_SafeSetPos.
Исправлю описание
_________________ Умножим энтропию на 0 :-) |
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
Добавил указание версии игры, с которой действует команда (2.0.02 или 2.5)
Описание : |
Справочник по скриптовым командам игры X3:Reunion, в формате .chm.
version 0.3.31, build date 28.12.2007, 18:44
Имя файла: Commands-0.3.31.7z
|
_________________ Умножим энтропию на 0 :-) |
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
Expert : |
Если у игрока несколько Штаб-Квартир, то ни одна команда не работает
|
Должна работать по последней. Т.е. если ШК создавались именно как ШК игрока.
Не будут работать, если :
1. Были созданы, а потом присвоены игроку.
2. Или если последняя, по времени создания, ШК была уничтожена.
_________________ Умножим энтропию на 0 :-) |
|
|
ULiX 320 EGP
Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005 |
|
Chem, ты ещё внеси команды из X2 и укажи, что они работают токлько в версии 1.4 игры X2
Уже если команда в 2.0. не работает, то скриптописатель её и не найдёт в скрипт редакторе. Тут скорее важно указать весию скриптового движка, которая поддерживает данные скрипт-команды. Вот её-то можно поулучить из скриптов командой:
<RetVar> = script engine version
И тогда скриптёр в своих скриптах может учесть, будет ли его скрипт работать с этими командами или нет.
Ладно. Принциписльно не нашел что-то нового от версии 3.27.
Начинаем закрашивать белуе... пардон... жёлтые пятна справочника.
Хотя мы и вели активную переписку с Chem во время моего бана, но он куда-то исчезал (кстати до сих пор не колится, где пропадал) поэтому видимо забыл о нововедениях и дополнениях, на которые я ему указывал. Так что начнём по порядку. И всё таки не с BBS квестов. Надеюсь Chem перечитает статью по созданию BBS и выпишет из неё описания команд. Кстати всю эту статью можно сделать частью справочника. Будет очень полезно. Тем более что раздел справочника имеется.
Начнём.
<RetVar> = <RefObj> serialise object
Команда возвращает строку содержащюю внутренний идентификатор объекта в виде:
"$#"+<номер>+"$"
Где <номер> - челочисленное представление указателя на объект. Передавая такую строку скриптам через аргументы, те будуи интерпритировать её ни как строку а как указатель на объект.
Применяется для передачи указателя на объект в квестовых командах диалога с пилотом.
См. дополнение к команде:
send incoming question <Var/String> to player: callback=<Script Name>
Всвязи с этим дополнения к команде:
send incoming question <Var/String> to player: callback=<Script Name>
· Команда посылает сообщение запрос <Var/String> игроку. Результат выбора будет возвращен в первый аргумент скрипта с именем <Script Name>.
· Правила и примеры форматирования сообщений запросов смотрите в дополнении "Общение с игроком". <доделать>
· Дополнение от пилота Andrei [<>Ace]:
....
....
* Дополнение от меня.
ПОДРОБНЕЙ расмотрим тег
[select value="Answer"]Message[/select]
А точннее параметр Answer.
Через данный параметр можно в скрипт <Script Name> передать не один а несколько параметров. Достаточно перечислить эти параметры через запятую. Параметры будут помещены в соотвотствующий по порядку аргументы скрипта <Script Name>.
Например можно создать шаблон
[select value="%s,%s,%s"]Message[/select]
И передавать вызваемому скрипту три параметра.
А самое важное, что вызываемому скрипту можно передать указатель на любой объект, будь это корабль, станция, или даже массив.
Для этой цели создана команда:
<RetVar> = <RefObj> serialise object
Указав в качестве одного из передаваемых параметров полученное данной командой значение, скрипт обработчик ответа пилота получит в аргументе сам объект. Очень полезное дополнение, когда, скажем, диалог должен точно знать, о каком именно корабле идёт речь.
---------------
<RefObj> add lasers per value:<Var/Number>(0-100) flags:<Var/Number>
С помощью флага можно конкретизировать из коких типов лазеров подбирать набор вооружения для корабля.
Информация по флагам flags:<Var/Number>
Если указать -1, то выбор будет производиться из любого возможного вооружения.
Группа 1:
2 - AIRE, BIRE
4 - APAC, BPAC
8 - AHEPT, BHEPT
16 - APPC, BPPC, GPPC
32 - AKE, BKE, GKE
Группа 2:
64 - MD
128 - APSG, BPSG, GPSG
256 - ID
512 - AFAA, BFAA
1024 - APBE, BPBE
2048 - MDS
4096 - TB
8192 - Repair Laser
32768 - AEMP, BEMP
Если выбран хотя бы один лазер из группы 2, то к фильтру прибаляется CIG.
-------------------
Эххх... Уже подготовил описание по другим командам, но техника подкачала... Занимался составлением дома, точно помню что сохранялся, но почему-то файлик содержит старую информацию... Странно... Где-то наверно лежит более новая копия файла... Придётся по памяти и кратко, буду вспоминать, что помню...
Для начала... Уже в третий, если не в четвертый раз прошу исправить:
Информация об оружии (General Object Commands)
Это не исправлено в окне навигации. Не знаю, как у кого, но у меня это окно слева Можно его также назвать Окно Содержания.
Далее по командам.
<RetVar/IF>get sector from universe index: x=<Var/Number>, y=<Var/Number>
Добавить. Индексация секторов начинается с вехнего левого сектора соответсвующего в стандарте Kindom End. нумерация начинается с индексов x=0, y=0.
Это, чтоб у новичком вопросов не возникало.
<RefObj> start task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value> arg5=<Value>
Дополнение от пилота AlexYar : |
Однако стабильная работа стеков, отличных от нулевого, возможна только в том секторе, где находится игрок. В остальных работа стеков будет либо заморожена, либо будет нестабильна (игра их выкинет просто напросто, хотя и не в 100% случаев).
Такая ситуация наблюдается в игре со стандартными обжами.
Т.е. использование стеков кроме 0 не рекомендуется в удаленных секторах.
|
Удалить дополннение от этого пилота. Я уважаю его мнение, но в данном случае его дополнение звучит слишком угрожающе, а XTM и мой Droid живое подтвеждение его неправоты. Может в версиях 1.4 и менее это возможно имело место, но сейчас это безосновательное утвеждение отпугивающее молодых скриптеров от использования фоновых скриптов. Другое дело, что навигационные команды могут вызывать сбой работы основного нулевого стека, если их использовать в других стеках одновременно с работой в нулевом стеке.
<RefObj> start job
Запускает скрипт выполнения работы по умолчанию согласно JobID. Например торговцы начнут торговлю, а патрульные начнут патрулировать сектор. Эта команда полезна к примеру в случаях, если ваш скрипт временно взял контроль над каким то кораблём, чтоб выполнить определенную задачу, к примеру, защитить мирный кораблль от нападения. А после того как задача выполнена, вы отдаёте ему команду start job и он продолжит выполнять свои прямые обязаности в галактике.
<RefObj> set pilot morale: <Var/Number>
Уровень морали очень силно влияет на вероятность эвакуации пилота корабля. Уменьшив это значение до нуля можно увеличить вероятность раз в 10-20.
<RefObj> set pilot aggression: <Var/Number>
От уровня агрессии зависит вероятность "покраснения" корабля при совершении по отношению к окраблю нежелательных для него дейсвий. К числу этих действий относится незаконное сканирование груза и просьба "Скинуть груз". Чем выше агрессия, тем больше вероятность ожесточение пилота.
Тааак... Почему-то не желтые пятна... В глаза не бросаются.
<RetVar> = get power generator of ship/station type <Var/Ware>
Возвращает значение генератора лазеров для типа корабля или станции <Var/Ware>. Не понятно какой может быть генератор лазеров у станций.
Чем больше значение генератора лазеров, тем быстрее происходит восстановление мощности лазеров.
<RetVar> = <RefObj> get power generator
Возвращает значение генератора энергии лазеров для объекта <RefObj>. Фактически эта команда есть комплекс последовательных команд:
$WareType = $RefObj -> get ware type code of object
$PowerGen = get power generator of ship/station type $WareType
------------------------
<RetVar/IF> get ammunition of laser <Var/Ware>
Команда возвращает код товара соответсвующий боеприпасам для типа лазкера <Var/Ware>. Для большинства лазеров возвращает null, Для MassDrive возвращает товар "Боеприпасы".
Т.е. этой командой можно определить нужны ли боеприпасы данному типу лазера и какие именно, чтоб к примеру полететь и закупить.
-------------------
Ух млин... писатель... Главное, чтоб свет не вырубили
Идём далее...
Опять без желтых пятен... Да чтож такое...
<RetVar> = get random NPC
Возвращает случайного NPC персонажа. Персонажей всего шесть штук. Соответсвуют како-то одной из шести рас. У каждого персонажа свой набор любымых персональных кораблей и свой набор флота поддержки.
Итак Эта команда вернёт нам указатель на этого самого персонажа. Не путайте... Это не корабль!!! Это NPC герой. Это пилот!!! Существующий отдельно от корабля. Его можно ввести в игру и выдать ему корабль и флот поддержки.
Далее по логическому порядку вещей...
<RetVar> = <RefObj> get NPC personal ship
Команда возвращает персональный корабль на котором в данный момент находится персонаж. По умолчанию у персонажа корабля нет, так как вы ему его не дали, поэтому команда вернёт... Нет не null она верёт не существующий корабль "Not Exists Object". Так что при проверке учтите, что если вы используете условие в виде:
Код: |
$Ship = $NPC -> get NPC personal ship
if $Ship
...
end
|
то условие будет соблюдено в любом случае, даже если корабль не существует. Правильно использовать структуру:
Код: |
$Ship = $NPC -> get NPC personal ship
if $Ship -> exists
...
end
|
Теперь дадим нашему NPC персонажу корабль...
<RefObj> spawn NPC personal ship: rank=<Var/Number>
Команда создаёт или заменяет корабль NPC. Тип корабля и его вооружение будут зависеть от указания ранга <Var/Number>.
РАнг задаётся от 0 до 1000000. Фактически это боевой ранг персонажа. Вы можете передавать в качестве этого параметра боевой ранг игрока, чтобы создать персонажа с соразмерной силой. Таким образом по ходу игры персонаж будет усиливаться.
Созданные данной командой корабли имеют уникальные имена. Очень даже красивые, например "Центурион", "Быстрая Смерть", "Быстрый Убийца" и другие.
В случае создания нового корабля, корабль создаётся абстрактно. Т.е. корабль не будет физически присутствовать ни в одном окружении, ни на станции, ни в каком либо секторе. Для этого вам потребуется самим переместить корабль в нужное окружение командой:
<RefObj> put into environment <RefObj>
Честно говоря, забыл проверить как поведёт себя команда, если применить её повторно, когда корабль персонажа уже создан. Возможно три варианта:
1. Старый корабль уничтожится а на его месте возникнет новый.
2. Старый корабль исчезнет и создастся новый но абстрактно и вам снова придется перемещать его в нужное окружение и задавать координаты.
3. Старый корабль не уничтожится, а новый не создастся.
Ну я думаю, Chem проверит, какой вариант верный прежде, чем добавлять описание в справочник.
Поехали дальше...
<RefObj> spawn NPC fleet: rank=<Var/Number>
Команда создаёт флот поддержки для NPC персонажа <RefObj>. Размер флота и мощность его кораблей зависит от заданного ранга <Var/Number> от 0 до 1000000. Состав кораблей по типам будет зависеть от самого NPC, вернее от его расового происхождения.
Все корабли флота создаются абстрактными моделями и физически не присутствуют ни в каком из секторов. Для того, чтоб их ввести в игру нужно переместить их в нужное окружение командой:
<RefObj> put into environment <RefObj>
Названия кораблей флота персонажа будут также как и название персонального корабля давольно уникальными.
Например: "Бригада смерти 101", "Жрецы справедливости 201", "Корпус защиты прибыли 14".
Получить массив кораблей флота персонажа можно командой:
<RetVar> = <RefObj> get NPC fleet
Команда возвращает массив кораблей флота поддержки NPC персонажа <RefObj>
-------------------------
Теперь очистка.
<RefObj> release NPC
Команда переинициализирует NPC персонажа <RefObj>. Сбрасываются все настройки персонажа. Уничтожается персональный корабль персонажа (без эфекта взрыва), уничтожаются все корабли флота поддержки данного персонажа.
<RefObj> release NPC personal ship
Сбрасываются настройки персонального корабля персонажа NPC <RefObj>. Эта команда не уничтожает корабли флота поддержки.
<RetVar> = <RefObj> NPC wants to bail
Команда возвращает 1 если корабль готов сдаться и молит о пощаде. Ну это по установкам разработчиков. Всего в игре возможно шесть персонажей и каждый имеет свои пороги значения щитов и корпуса ниже которых персонаж якобы готов сдаться... Или не сдатья а попросить о помощи... Так или иначе это должно проверяться скриптами.
Вот таблица возращения TRUE этой командой для различных персонажей:
Рей Трасер
Щиты менее 10% Корпус менее 40%
Аманчкигнак
Щиты менее 15% Корпус менее 65%
Сн т'Тз
Щиты менее 10% Корпус менее 35%
Семента Винтарс
Щиты менее 15% Корпус менее 45%
Байо Ю
Щиты менее 15% Корпус менее 85%
Хурлис Тумулис Дереанис VII
Щиты менее 30% Корпус менее 45%
Это весь доступный набор персонажей.
Не знаю, на сколько эта команда полезна
Ещё более бесполезная команда:
<RetVar> = <RefObj> NPC is aggressive
Возвращает единицу для агрессивных персонажей. Заисит от самого персонажа:
Рей Трасер -> 1
Аманчкигнак -> 0
Сн т'Тз -> 1
Семента Винтарс -> 1
Байо Ю -> 0
Хурлис Тумулис Дереанис VII -> 1
Т.е. два не агресивных и четыре агресивных персонажа... Ничего по этому поводу сказать больше не могу.
Последнюю команду
<RefObj> NPC send voice message: id=<Var/Number>
Забыл исследовать и протестировать. Так что уже потом. Она точно не работает пока не создашь персонажу персональный корабль, по крайней мере я не заставил эту команду издавать звуки. А когда создал персонажу корабль и флот, то забыл про эту команду.
Ну вот вроде... Теперь белых и желтых пятен стало меньше...
Надеюсь Chem внесёт инфу по командам создания BBS Quests из моей статьи. Там вроде я всё очень подробно описывал.
На сегодня информации достаточно. Переваривайте.
Если за все мои кодокопательства меня так и не номинируют на получение награды "Знаток X3" я начну огорчаться
_________________ Новое ещё не значит лучшее |
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
ULiX : |
<RetVar> = get power generator of ship/station type <Var/Ware>
Возвращает значение генератора лазеров для типа корабля или станции <Var/Ware>. Не понятно какой может быть генератор лазеров у станций.
Чем больше значение генератора лазеров, тем быстрее происходит восстановление мощности лазеров.
<RetVar> = <RefObj> get power generator
Возвращает значение генератора энергии лазеров для объекта <RefObj>. Фактически эта команда есть комплекс последовательных команд:
$WareType = $RefObj -> get ware type code of object
$PowerGen = get power generator of ship/station type $WareType
|
Какие же это лазеры -
Код: |
if(loc20==9&&(loc21>>16&255==7||loc21>>16&255==5||loc21>>
16&255==6))
{
loc18=4;
loc19=SA_GetTypeShieldPowerGeneration(loc21>>16&255,loc21&
65535);
}
else
{
if(loc20==65542||loc20==65543)
{
loc18=4;
loc19=loc21->GetShieldPowerGenerator();
}
|
Шилд это.
ULiX : |
<RetVar> = <RefObj> get NPC personal ship
Команда возвращает персональный корабль на котором в данный момент находится персонаж. По умолчанию у персонажа корабля нет, так как вы ему его не дали, поэтому команда вернёт... Нет не null она верёт не существующий корабль "Not Exists Object". Так что при проверке учтите, что если вы используете условие в виде:
|
Не согласен, смотри -
Код: |
if(TObj8048.PersonalShip&&!SE_ObjectExists(TObj8048.PersonalShip))
{
TObj8048.PersonalShip=0;
}
return(TObj8048.PersonalShip);
|
_________________ Умножим энтропию на 0 :-) |
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
ULiX : |
Надеюсь Chem перечитает статью по созданию BBS и выпишет из неё описания команд.
|
я же писал:
Chem : |
З.Ы.Ы. ULiX - Про квестовіе - помню Подмигиваю
|
В общем держите новую версию:
Описание:
Справочник по скриптовым командам игры X3:Reunion, в формате .chm.
version 0.3.41, build date 29.12.2007, 16:25
Имя файла: Commands-0.3.41.7z
В общем как и обещал - квесты учел. Исправления - тоже.
По некоторым моментам - смотри выше.
По поводу:
ULiX : |
но он куда-то исчезал
|
хочу в преддверии Нового Года всем пожелать того, чтобы причин исчезать не было ни у кого и никогда!
З.Ы.
Насчет команд, которые совсем не описаны -
register god event: script=<Script Name> mask=<Var/Number>
abort god event: <Var/Quest>
finish god event: <Var/Quest>
<RefObj> connect wing command/signal <Object Command/Signal> to script <Script Name> with prio <Var/Number>
И можно считать релиз-кандидатом. В качестве хелпа к редактору.
Дальше пойдут статьи и таблицы всякие, с картинками и т.п.
З.Ы.Ы. Добавил голосовалку.
З.Ы.Ы.Ы. Напоминаю - всегда параллельно с .chm версией обновляется веб-версия по адресу Справочник по скриптовым командам игры X3:Reunion
З.Ы.Ы.Ы.Ы. Заменил версию игры на версию движка.
_________________ Умножим энтропию на 0 :-)
Последний раз редактировалось: Chem (11:12 30-12-2007), всего редактировалось 4 раз(а) |
|
|
ULiX 320 EGP
Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005 |
|
Chem : |
Не согласен, смотри -
|
Вот именно что вернёт 0 а не null
Null это когда тип данных DATATYPE_NULL и значение integer(0)
А эта команда вернёт значение 0 но тип данных DATATYPE_SHIP поэтому это не Null а не существующий объект. Проверено в скриптах.
C генераторами прогнался. Стереотипное мышление не у тебя одного Я тоже этим грешу. Два сапога пара. Иногда лень проверять. Я просто почему-то когда писал о генераторах думал почему-то о команде "get maximum laser strength" с которой я до этого разбирался, как следвие заклинило, что раз это информация об оружии, значит и генераторы должны быть оружейными.
god event это что-то... Перехват событий на уровне god engine Пока что имеется только одно применение для генерации новостей BBS. GOD гененрирует хорошие и плохие события, а скрипты bad и good решают что бы такое замутить во вселеннной и сообщить об этом в новостях. Например пожар устроить чтоб весь товар сгорел, или метеоритом станцию снести... Всё это как-то странно работает, придётся напрячься. Кстати ключи для mask= задаются по тому же принципу, что и при создании BBS квестов, когда задаются обработчики событий для определённых объектов. Только в god event судя по всему можно перехватить любые сигналы от любых объектов. Например перехватывать все сигналы SIGNAL_KILLED или все сигналы SIGNAL_CAPTURED. Это как бы предварительная обработка сигнала, до того как будет запущен основной обработчик этого события для конкретного объекта. Короче, есть над чем поразмыслить. И есть где применить. Осталось только исследовать это.
_________________ Новое ещё не значит лучшее |
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
ULiX : |
Вот именно что вернёт 0 а не null
Null это когда тип данных DATATYPE_NULL и значение integer(0)
А эта команда вернёт значение 0 но тип данных DATATYPE_SHIP поэтому это не Null а не существующий объект. Проверено в скриптах.
|
Все, согласен .
ULiX : |
god event это что-то.
|
Угу. И учитывая, что развития оно не имело, пока пропустим .
_________________ Умножим энтропию на 0 :-) |
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
Теперь и веб-версия - на Элайт-Геймс!
Справочник по скриптовым командам игры X3:Reunion (version 0.3.51, build date 17.01.2008)
Оффлайн версию - тоже обновил.
_________________ Умножим энтропию на 0 :-) |
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
Похоже нашел, две неточности, которые перелезли с предыдущих версий. Как минимум в 2.5 версии уже не актуально следующее (выделено красным).
<RetVar/IF><RefObj> buy <Var/Number> units of <Var/Ware> : |
· Данной командой осуществляется передача объекту-кораблю <RefObj> игровой команды "купить товар" <Var/Ware>, в количестве <Var/Number> units, на станции к которой корабль пристыкован (это обязательное условие, иначе вернет null).
· Если в грузовом отсеке корабля не хватает места или на станции нет достаточного количества указанного товара, то будет приобретено максимально возможное количество товара (либо сколько войдет, либо сколько есть на станции).
· Деньги снимаются со счета станции к которой приписан корабль, если корабль не имеет базы приписки, то деньги будут взяты со счета игрока (если не хватает денег то будет приобретено столько товара, на сколько денег хватит).
· Эта команда не будут работать с кораблями класса «большой корабль», если он пристыкован снаружи станции или дока.
· Команда возвращает количество реально приобретенного товара.
|
Так же проверено отсутствие данного ограничения в командах <RetVar/IF><RefObj> load <Var/Number> units of <Var/Ware> и <RetVar/IF><RefObj> unload <Var/Number> units of <Var/Ware>. Проверял на TL и с аргонской верфью..
<RefObj> put into environment <RefObj> : |
· Команда позволяет поместить корабль <RefObj> в определенное окружение environment <RefObj>.
· Не путайте эту команду с навигационной командой fly to, т.к. эта инструкция просто перемещает объект в указанную среду.
· Средой для перемещения может являться сектор или станция, а объектом корабль.
· Будьте осторожны при работе с большими кораблями, их при помощи этой команды можно перемещать только в сектор, т.к. перемещаемый корабль помещается непосредственно в стыковочный док, а не в шлюз (то есть, внутрь станции). Если вы все таки попробуете переместить большой корабль на станцию, то перемещение произойдет, но корабль никогда не сможет взлететь со станции.
· При перемещении объекта в сектор, он появиться по координатам в которых он находился в предыдущем секторе.
|
Проблем не обнаружил, по крайней мере на аргонской верфи и с ТЛ. Наверное стоит допроверять, и написать - что если отрабатывает проверка - is docking possible of - то можно применять put.
_________________ Умножим энтропию на 0 :-) |
|
|
Reliant 175 EGP
Рейтинг канала: 6(478) Репутация: 33 Сообщения: 232 Откуда: Москва Зарегистрирован: 07.12.2002 |
|
ULiX : |
<RefObj> start task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value> arg5=<Value>
Дополнение от пилота AlexYar : |
Однако стабильная работа стеков, отличных от нулевого, возможна только в том секторе, где находится игрок. В остальных работа стеков будет либо заморожена, либо будет нестабильна (игра их выкинет просто напросто, хотя и не в 100% случаев).
Такая ситуация наблюдается в игре со стандартными обжами.
Т.е. использование стеков кроме 0 не рекомендуется в удаленных секторах.
|
Удалить дополннение от этого пилота. Я уважаю его мнение, но в данном случае его дополнение звучит слишком угрожающе, а XTM и мой Droid живое подтвеждение его неправоты. Может в версиях 1.4 и менее это возможно имело место, но сейчас это безосновательное утвеждение отпугивающее молодых скриптеров от использования фоновых скриптов. Другое дело, что навигационные команды могут вызывать сбой работы основного нулевого стека, если их использовать в других стеках одновременно с работой в нулевом стеке.
|
Насколько я помню в другом месте он писал, что это происходит при использовании SETA (я подозреваю, чтобы X3 могла компенсировать падение производительности и возможно это не касается станций (куча скриптов использует же слоты 10 -19 для процессов управления станциями) )
to Chem: ты это удалил из раздела вызова скриптов, а из раздела общих команд забыл
_________________ Открылась бездна, звезд полна; Звездам числа нет, бездне дна. |
|
|
Chem 780 EGP
Рейтинг канала: 15(2610) Репутация: 248 Сообщения: 4751 Откуда: Киев Зарегистрирован: 08.01.2007 |
|
Ок, спасибо.
_________________ Умножим энтропию на 0 :-) |
|
|
Reliant 175 EGP
Рейтинг канала: 6(478) Репутация: 33 Сообщения: 232 Откуда: Москва Зарегистрирован: 07.12.2002 |
|
Раздел "Управление исполнением цикла" - опечатка "Управление исполнением программы", и там отсутствуют операторы if , if not (надо отметить что if not применятся к результату всего следующего за ним выражения).
В операторах "write to log file ..." - если номер лога задать отрицательным то записи не будет (удобно отключать протоколирование, если в качестве параметра передавать переменную).
Я думаю нужно включить список типов данных, прерываний, флагов и глобальных констант или хотя бы указать что информация из справочника DragonP соответствует X3.
_________________ Открылась бездна, звезд полна; Звездам числа нет, бездне дна. |
|
|
AlexYar 1856 EGP
Рейтинг канала: 13(2096) Репутация: 324 Сообщения: 31707
Зарегистрирован: 26.10.2003 |
|
AlexYar : |
Однако стабильная работа стеков, отличных от нулевого, возможна только в том секторе, где находится игрок.
|
Ulix : |
Другое дело, что навигационные команды могут вызывать сбой работы основного нулевого стека, если их использовать в других стеках одновременно с работой в нулевом стеке
|
Вот именно это я и имел в виду. Т.е. скрипты с нав.командами должны работать исключительно в нулевом стеке, так как это исключает одновременное отдание кораблю двух нав.команд.
Ну и в стеках турелей нельзя использовать скрипты, которые для турелей не предназначены, так как стеки турелей в удалённом секторе фризятся.
|
|
|
|
|
|
Канал X3: Reunion ->
Модовый и скриптовый отсек X3: Reunion: «Справочник по скриптовым командам (X3)|v. 0.3.54|05.07.2008» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: Нет предела совершенству! Но во всем надо знать меру... (Keynol)
|
» Справочник по скриптовым командам (X3)|v. 0.3.54|05.07.2008 | страница 10 |
|