|
|
|
Канал X3: Reunion »
Модовый и скриптовый отсек X3: Reunion: «Справочник по скриптовым командам (X3)|v. 0.3.54|05.07.2008» |
|
Что нужно добавить в справочник в первую очередь ? |
Описания файлов из каталога types. |
|
25% |
[ 2 ] |
Статьи, написанные выдающимися скриптерами. |
|
37% |
[ 3 ] |
Задачи, и лучшие решения скрипт-школы. |
|
37% |
[ 3 ] |
Свой вариант (просьба описать кратко, но емко). |
|
0% |
[ 0 ] |
|
Всего проголосовало : 8 |
|
|
|
AlexYar 1851 EGP
Рейтинг канала: 13(2096) Репутация: 324 Сообщения: 31640
Зарегистрирован: 26.10.2003 |
|
Посмотрел - команда всегда будет возвращать 1 для всех несюжетных объектов.
Принцип действия таков:
Если проверяющий корабль или цель имеет флаг невидимости на карте сектора -> проверяется следующее условие:
Код: |
if(SE_DistanceAA(this->GetPos(),arg1->GetPos())>SA_GetGlobalParameter(12)+(arg1->GetSize()+this->GetSize()))
|
По-русски: если дистанция между проверяющим объектом и целью > (радиус радара в небуле + размер проверяющего объекта + размер корабля).
Радиус радара в небуле - нерабочий параметр, он всегда равен 750000*2 метров.
Если условие истинно - возвращается 0 (цель невидима).
Во всех остальных случаях возвращается 1.
Флаг "невидимости на карте сектора" устанавливается только для сюжетных кораблей кодом сюжета.
Резюме - команда абсолютно бесполезна для скриптеров в стандартной игре (в ext-патче можно флаг невидимости ставить принудительно из скриптов, и корабля/станции не будет видно на карте сектора, соотно и эта команда будет работать).
|
|
|
X3-Protector 180 EGP
Рейтинг канала: 5(166) Репутация: 20 Сообщения: 634 Откуда: Новосибирск Зарегистрирован: 26.07.2008 |
|
В общем что-то нечто подозрительный эффект от этой команды.
_________________ Я давно уже не в форме, я уже совсем не тот, но не стоит делать вызов, я прославленный пилот...
Последний раз редактировалось: X3-Protector (23:07 29-07-2008), всего редактировалось 1 раз |
|
|
AlexYar 1851 EGP
Рейтинг канала: 13(2096) Репутация: 324 Сообщения: 31640
Зарегистрирован: 26.10.2003 |
|
X3-Protector : |
эффект невироятно точный.
|
Какой эффект? Что ты вообще хотел этим показать?
Всё обсуждение переноси в тему "скриптописание, делимся опытом".
Здесь ему не место.
Про команду я написал точнее некуда - она всегда возвращает 1 для несюжетных кораблей.
|
|
|
z_m_a 105 EGP
Рейтинг канала: 7(635) Репутация: 20 Сообщения: 264 Откуда: Подмосковье Зарегистрирован: 23.07.2007 |
|
Цитата: |
<RetVar> = <RefObj> get size of object
engine v. 32
· Команда возвращает размер объекта <RefObj> пространстве. Представляет из себя радиус воображаемой сферы, созданной вокруг объекта. Значение возвращается в юнитах, для перевода в метры разделите значение на 222.
|
Видимо устарело или опечатка. Возвращает значение в метрах. Делить на 222 не нужно.
|
|
|
AlexYar 1851 EGP
Рейтинг канала: 13(2096) Репутация: 324 Сообщения: 31640
Зарегистрирован: 26.10.2003 |
|
z_m_a : |
Делить на 222 не нужно.
|
100% устаревшие данные, так как коэффициент 222 был в х2, в х3 же коэффициент равен 500.
Внутри скриптдвижка возвращаемое значение этой командой уже делится на 500, значит результат в метрах, как ты и сказал
|
|
|
z_m_a 105 EGP
Рейтинг канала: 7(635) Репутация: 20 Сообщения: 264 Откуда: Подмосковье Зарегистрирован: 23.07.2007 |
|
AlexYar : |
100% устаревшие данные
|
С похожими командами( get max speed) аналогично?
ЗЫЖ Тут слегка ввел в заблуждение. По имени пилота можно узнать что нейтральный корабль брошен, а вот заблокировать захват(по Claim, кстати, имя отличное от No Pilot, на игрока не меняет) нет. Насчет скорости сказать не могу. В скафандре не угонишься.
Последний раз редактировалось: z_m_a (00:56 30-07-2008), всего редактировалось 3 раз(а) |
|
|
Арманкессилон 1725 EGP
Рейтинг канала: 9(1184) Репутация: 342 Сообщения: 13054 Откуда: Ставрополь Зарегистрирован: 16.08.2007 |
|
И здесь:
Код: |
@ <RetVar/IF><RefObj> move to position: x=<Var/Number> y=<Var/Number> z=<Var/Number> with precision <Var/Number> m |
Цитата: |
Эту удаленность (точность) требуется указывать именно в игровых юнитах, а не метрах, не смотря на наличие m после этого параметра. Т.е. желаемую удаленность требуется сначала умножить на 222, а потом подставлять в данную команду
|
На самом деле в метрах значения.
Я еще когда shields takeoff писал, хотел упомянуть об этом, но забыл.
_________________ Все астероиды не пересчитать! |
|
|
X3-Protector 180 EGP
Рейтинг канала: 5(166) Репутация: 20 Сообщения: 634 Откуда: Новосибирск Зарегистрирован: 26.07.2008 |
|
Как меня достал тормозной боевой интелект!
Я двое суток без перерывов на поесть добивался того что бы мой "Эклипс" (Main:on 8xAHEPT и Turrets:off 2xAHEPT) смог наконец-то стабильно воевать против трёх "Ксенон L" и одного "Ксенон LX" одновременно(Бездна Тина).
Всё дело в том, что команда "@ <RetVar/IF><RefObj> defensive move: type=<Var/Number>, intensity=<Var/Number>, timeout=<Var/Number>ms, avoid object=<Value>" работает так неуклюже и безтолково, что от неё у меня были только проблемы в сучаях гогда действительно нужно уворачиваться от выстрелов.
Может показаться странным, но для уворачивания от вражеских выстрелов лучше всего использовать другую команду, а именно "@ <RetVar/IF><RefObj> attack run on target <Value> : timeout=<Var/Number> ms", только предварительно вычислив кто атакует и указать атакующего для выполнения подготовки - для того что бы атакующий временно перестал атаковать, по завершении маневра проверьте что атакующий в радиусе поражения орудий и сделайте хотя бы один выстрел наверняка, если попадёт то у атакующего сработает прерывание атаки.
Суть вообще в этом посту заключается в том, что первая команда почти не изменяет положения происходящего, даже если интенсивность поставить 100...
...
Кстати, справочник реально учит - всем новичкам настоятельно рекомендую справочник по командам X3:Reunion от DragonP...
...
Данные по приоритетам не верны:
0 Все скрипты по умолчанию
50 Бегство после обработки SIGNAL_ATTACKED
99 Вооруженное сопротивление после обработки SIGNAL_ATTACKED
100 SIGNAL_ATTACKED
150 SIGNAL_LEADERNEEDSHELP
^^^ SIGNAL_FOLLOWERNEEDSHELP
200 SIGNAL_FORMATIONLEADERCHANGED
300 SIGNAL_CAPTURED
10000 SIGNAL_KILLED
-------------------------------------------------------------
Я поставил приоритет на 10 стэк = 1000, и при каждом уничтожении врага игра стала зависать. Соответственно, если приоритет моего скрипта всего 1000 а приоритет системного скрипта 10000 зависает или что там с ним происходит, то получается что вышеупомянутые данные или устарели, или вообще далеки от истины.
Я вообще поставил приоритет 1000 для того что бы в процесс моей атаки не вмешивались всякие там левые скрипты по типу 100,99,50 и им подобным.
Подскажите если знаете точно, какой приоритет нужно поставить что бы процесс боя не прерывался?
Пока что я попробую поставить 100, но уже при 99 бывали зависания, так что я в заблуждении...
_________________ Я давно уже не в форме, я уже совсем не тот, но не стоит делать вызов, я прославленный пилот...
Последний раз редактировалось: X3-Protector (14:19 07-08-2008), всего редактировалось 3 раз(а) |
|
|
Арманкессилон 1725 EGP
Рейтинг канала: 9(1184) Репутация: 342 Сообщения: 13054 Откуда: Ставрополь Зарегистрирован: 16.08.2007 |
|
Дополнение к команде
Код: |
send incoming question <Var/String> to player: callback=<Script Name> |
Цитата: |
Скрипт-обработчик <Script Name> запускается глобально, а не с объекта, с которого его вызвала команда. Поэтому учитывайте это, используя [THIS]-указатель в скрипте-обработчике. [THIS] вернет значение null.
|
И для команды
Код: |
<RetVar> = register hotkey <Var/String> to call script <Script Name>
|
Цитата: |
При вызове скрипта-обработчика с клавиатуры, скрипn-обработчик <Script Name> запускается глобально
|
Проверено опытным путем
_________________ Все астероиды не пересчитать!
Последний раз редактировалось: Арманкессилон (09:43 14-08-2008), всего редактировалось 2 раз(а) |
|
|
AlexYar 1851 EGP
Рейтинг канала: 13(2096) Репутация: 324 Сообщения: 31640
Зарегистрирован: 26.10.2003 |
|
Арманкессилон : |
запускается глобально, а не с объекта
|
Т.е. если поставить wait 60000, к примеру, в этом скрипте, то его можно увидеть в списке глобальных скриптов?
|
|
|
Арманкессилон 1725 EGP
Рейтинг канала: 9(1184) Репутация: 342 Сообщения: 13054 Откуда: Ставрополь Зарегистрирован: 16.08.2007 |
|
Не знаю, не пробовал. Но THIS возвращает null. Я скрипт специально тестовый написал.
Кстати, скрипт, вызываемый по горячей клавише, тоже возвращает null при использовании THIS-указателя.
_________________ Все астероиды не пересчитать! |
|
|
Арманкессилон 1725 EGP
Рейтинг канала: 9(1184) Репутация: 342 Сообщения: 13054 Откуда: Ставрополь Зарегистрирован: 16.08.2007 |
|
Проверил. Скрипт появляется в списке глобальных.
_________________ Все астероиды не пересчитать! |
|
|
X3-Protector 180 EGP
Рейтинг канала: 5(166) Репутация: 20 Сообщения: 634 Откуда: Новосибирск Зарегистрирован: 26.07.2008 |
|
Чёта я совсем не въезжаю, какой флаг должен вернуть скрипт запущенный командой set script command upgrade: command=<Object Command/Signal> upgrade=<Var/Ware> script=<Script Name>Хочу чтоо бы были высокие требования к апгрэйдам на корабле, а чё за флаг должен вернуться не могу сообразить. 1, [TRUE], CmdConCheck.Available - ни чего не срабатывает, как только не крутил вертел толку нет.
Какой нужен флаг???
_________________ Я давно уже не в форме, я уже совсем не тот, но не стоит делать вызов, я прославленный пилот... |
|
|
AlexYar 1851 EGP
Рейтинг канала: 13(2096) Репутация: 324 Сообщения: 31640
Зарегистрирован: 26.10.2003 |
|
X3-Protector : |
Хочу чтоо бы были высокие требования к апгрэйдам на корабле
|
В графу "upgrade" поставь TRUE (типа для всех апгрейдов), а в проверочном скрипте проверяй наличие необходимых апгрейдов.
Вернуть должен CmdConCheck.Available, чтобы команда была активна в консоли.
|
|
|
X3-Protector 180 EGP
Рейтинг канала: 5(166) Репутация: 20 Сообщения: 634 Откуда: Новосибирск Зарегистрирован: 26.07.2008 |
|
Ага, а я ставил наименование апгрэйда - думал что один апгрэйд обязательный. Если я во время игры выброшу один из апгрэйдов, то команда исчезнет? А как сделать что бы команда отображалась но была недоступно? Я так думаю это связанно с типом корабля на который эти команды вообще должны ставиться. Заранее спасибо, проверять пока не буду - устал с работы и просто хочу фильм посмотреть...
_________________ Я давно уже не в форме, я уже совсем не тот, но не стоит делать вызов, я прославленный пилот... |
|
|
AlexYar 1851 EGP
Рейтинг канала: 13(2096) Репутация: 324 Сообщения: 31640
Зарегистрирован: 26.10.2003 |
|
X3-Protector : |
А как сделать что бы команда отображалась но была недоступно?
|
CmdConCheck.Disable
|
|
|
ULiX 320 EGP
Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005 |
|
Арманкессилон : |
И для команды
Код:
global script map: set: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>, script=<Script Name>, prio=<Var/Number>
Цитата:
При вызове скрипта-обработчика с клавиатуры, скрипn-обработчик <Script Name> запускается глобально
|
Где-то здесь логика нарушена. Назначение скрипт-команды какое? Задать соответствие команды-сигнала, срабатывающим на объекте указанного класса и указанной расы, с определенным скриптом, который обработает сигнал.
В данном контексте подразумеваются события и команды конкретных объектов, а следовательно и скрипт обработчик должен запускаться на этих объектах, а не глобально. Либо же глобально, но получать в качестве одного из аргументов ссылку на объект. В реальном случае, скрипт всё таки запускается на объекте. Другой разговор какая комада-сигнал используется. Есть команды, которые запускают скрипты в нулевом стеке объекта, к ним относятся навигационные, торговые, специальные, пиратство... Есть, которые запускаются в слотах дополнительных команд - дополнительные команды кораблей и станций. Есть команды для туррелей, для них тоже свои выделенные стеки... Но во всех этих случаях ключевое слово [THIS], если этот скрипт действительно был запущен по сигналу или команде, указывает на объект. Для задания обработчика глобальных событий, существует другая скрип-команда.
AlexYar : |
Т.е. если поставить wait 60000, к примеру, в этом скрипте, то его можно увидеть в списке глобальных скриптов?
|
Он явно что-то не договаривает. Не может сразу после выполнения команды:
global script map: set: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>, script=<Script Name>, prio=<Var/Number>
запуститься обработчик сигнала, да ещё и глобально.
to X3-Protector
Для того, чтоб команда появилась в консоле нужно провести серию команда:
Как раз одной из команд является та, о которой я обсуждал выше. Она нужна для задания скрипт обработчика твоей команды. А вторая уже:
set script command upgrade: command=<Object Command/Signal> upgrade=<Var/Ware> script=<Script Name>
или
set script command upgrade: command=<Object Command/Signal> upgrade=<Var/Ware>
Если задан upgrade, то его отсутствие на люъекте будет обозначать отсутсвие и команды в консоле. Но можно поставить вместо значения девайса единицу или TRUE, тогда проверка будет вестись только скриптом.
На счет флагов. Флаги имеют бинарную структуру и как следствие могут передаваться вместе. Для объединения флагов необходимо использовать логическую связку "ИЛИ" т.е. скрипт команду "|".
Напрммер, чтобы сделать пункт меню видимым в консоле, но его нельзя было бы выбрать нужно объединить флаг доступности Available с флагом запрета Disable. Мы увидим в консоле серый пункт меню, на который можно будет навестись только при условии, что имеется хелп к этой команде, о чем свидетельствует буква "i" справа от имени команды и с лева от короткого имени команды.
Код: |
$ret = CmdConCheck.Available | CmdConCheck.Disabled
return $ret |
В целом, если я не ошибаюсь, это тоже самое, что:
_________________ Новое ещё не значит лучшее |
|
|
Арманкессилон 1725 EGP
Рейтинг канала: 9(1184) Репутация: 342 Сообщения: 13054 Откуда: Ставрополь Зарегистрирован: 16.08.2007 |
|
ULiX : |
Где-то здесь логика нарушена. Назначение скрипт-команды какое? Задать соответствие команды-сигнала, срабатывающим на объекте указанного класса и указанной расы, с определенным скриптом, который обработает сигнал.
|
Ой, прошу прощения, я не ту команду скопипастил Конечно же, я о команде:
Код: |
<RetVar> = register hotkey <Var/String> to call script <Script Name> |
добавлено спустя 1 минуту:
Хорошо, что заметил
_________________ Все астероиды не пересчитать!
Последний раз редактировалось: Арманкессилон (09:47 14-08-2008), всего редактировалось 1 раз |
|
|
X3-Protector 180 EGP
Рейтинг канала: 5(166) Репутация: 20 Сообщения: 634 Откуда: Новосибирск Зарегистрирован: 26.07.2008 |
|
AlexYar : |
CmdConCheck.Disable
|
Спасибо за [TRUE], с остальным я сам уже разобрался...
_________________ Я давно уже не в форме, я уже совсем не тот, но не стоит делать вызов, я прославленный пилот... |
|
|
RAMI 330 EGP
Рейтинг канала: 5(241) Репутация: 82 Сообщения: 2538 Откуда: Центральная Россия Зарегистрирован: 16.11.2005 |
|
данной комманды нет в справочнике:
set safe position of sector object <RefObj> : x= <Var/Number> y= <Var/Number> z= <Var/Number>
конечно из слова safe можно предположить, что она означает, но конкретные условия и действия не ясны.
_________________ В действительности всё иначе, чем на самом деле... |
|
|
|
|
|
Канал X3: Reunion ->
Модовый и скриптовый отсек X3: Reunion: «Справочник по скриптовым командам (X3)|v. 0.3.54|05.07.2008» |
|