Уроки танцев на СКРИПТАХ от MistR (От чайника для чайника)
X3 Terran Conflict / X3 Земной конфликт
 
X3 Terran conflict  
 

На сайте онлайн (человек): 55



 



Уроки танцев на СКРИПТАХ от MistR (От чайника для чайника)

Форумы: Terran Conflict (X3TC) / X3 Земной конфликт / Скрипты и моды для X3 Terran Conflict / Уроки танцев на СКРИПТАХ от MistR (От чайника для чайника)Войти
Количество: 369
«<910111213141516171819>»
Уроки танцев на СКРИПТАХ от MistR (От чайника для чайника)
08.08.2013 12:09:15
Andreilogvin

Репутация: 0
Сообщений: 3
Регистрация: 01.08.2013
 Malstrime писал(а):
Как обычно.
 Код:
  1. skip if not get global variable: name=shipcreateonence
  2.    return null
  3. set global variable: name=shipcreateonence value=1
  4. <сколько угодно нужных команд (создание корабля и т.д.)>
  5. ...
  6. ...
  7. ...
 

И еще не забудьте подредактировать скрипт вне игры, как в 5 части указанного выше поста.
 


А можно по подробней пример  (с начала названия скрипта и до окончания) Пожалуйста!!!!!!

Редактировалось 1 раз (а). Последний раз 08.08.2013 12:11:31.

08.08.2013 23:47:58
Ugarich

Репутация: 0
Сообщений: 16
Регистрация: 05.02.2011
Помогите разобраться с раздачей команд турелям. Нужна скриптовая команда или несколько команд, которые будут раздавать турелям команды так, как будто их раздал игрок из меню приказов (Навроде Носовая турель>Сбивать ракеты, Кормовая турель>Атаковать всех врагов, Команда всем турелям>Защищать корабль). Да, и желательно это реализовать на версии скриптового движка из X3 R (конкретно Xtended mod).

Я себе всю голову сломал, как это сделать.

Вот это заставляет корабль лететь и атаковать ближайшего врага, при этом в консоли появляется:

Команда: Атаковать ближайшего врага Крайт   [Атак.Ближ] (Летаю на Крайте, без arg1= [PLAYERSHIP]-> не работает)

001    START  [PLAYERSHIP]->  command  COMMAND_ATTACK_NEAREST  : arg1= [PLAYERSHIP]-> , arg2=  null , arg3= null , arg4=  null 
002    return  null 

А вот это не работает, турели молчат, в консоли ничего не меняется:

001    START  [PLAYERSHIP]->  command  COMMAND_TURRET_KILL_ENEMIES  : arg1= [PLAYERSHIP]-> , arg2= 1 , arg3= null , arg4=  null 
002    return  null 
14.08.2013 06:18:25
Ugarich

Репутация: 0
Сообщений: 16
Регистрация: 05.02.2011
Куда все подевались? Мне тут одному грустно в космосе...

Редактировалось 1 раз (а). Последний раз 14.08.2013 15:08:31.

25.09.2013 03:14:14
DeN4iK_26RUS

Репутация: 0
Сообщений: 8
Регистрация: 16.09.2013
доброго времени суток. вопрос по первому уроку. как надо написать скрипт, чтобы на верфь добавлялся не один, а несколько кораблей одновременно?
08.10.2013 22:53:59
ki4444

Репутация: 15
Сообщений: 160
Регистрация: 21.11.2012
 DeN4iK_26RUS писал(а):
доброго времени суток. вопрос по первому уроку. как надо написать скрипт, чтобы на верфь добавлялся не один, а несколько кораблей одновременно?
 
я так сделал:
11.10.2013 13:00:43
DeN4iK_26RUS

Репутация: 0
Сообщений: 8
Регистрация: 16.09.2013
Так да, вот только я для каждого корабля выбирал станцию.
12.10.2013 11:25:14
Destroyerm

Репутация: 433
Сообщений: 958
Регистрация: 09.08.2011
 Ugarich писал(а):
А вот это не работает, турели молчат, в консоли ничего не меняется:001    START  [PLAYERSHIP]->  command  COMMAND_TURRET_KILL_ENEMIES  : arg1= [PLAYERSHIP]-> , arg2= 1 , arg3= null , arg4=  null 
002    return  null 
 

корабль игрока атакует своими же турелями самого себя? *facepalm*
либо я чтото не понял
а может быть и потому что это команда приказы на определённые единицы, а вы приказали атаковать всех врагов.. мб поэтому... хоть насчёт "атакует своими же турелями самого себя" я чот не понимаю...

Редактировалось 3 раз (а). Последний раз 12.10.2013 11:30:38.

12.10.2013 12:04:56
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
 Destroyerm писал(а):
я чот не понимаю...
 

Зачем гадать? Посмотри там где эта команда назначается (в дефолте !init.ship.globalscriptmap.std.xml), а потом сам обработчик и его аргументы.
15.10.2013 20:22:28
MiB2k

Репутация: 0
Сообщений: 8
Регистрация: 07.10.2013
Подскажите пожалуйста, какой командой (если такая вообще существует) следует воспользоваться для того, чтобы сохранить информацию (допустим, список всех кораблей расы Аргон) во внешний файл?
15.10.2013 20:35:31
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
 MiB2k писал(а):
Подскажите пожалуйста, какой командой (если такая вообще существует) следует воспользоваться для того, чтобы сохранить информацию (допустим, список всех кораблей расы Аргон) во внешний файл?
 

Весь список нельзя, только построчно. Для этого существуют три команды в "Командах бортжурнала" вида write to log file.
Различаются аргументами. Файл создается в директории игры (... \Документы\Egosoft)

 Код:
  1. write to log file <Число> append=<TRUE/FALSE> value=<Текст>
 

Аргументы:

1. Число, с которым назовется файл, с добавлением ведущих нулей, напр. 00068.log при 68.
2. Добавлять ли строку в конец файла или начинать сначала.
3. Строка текста

 Код:
  1. write to log file <Число> append=<TRUE/FALSE> printf:fmt=<Текст шаблона>, <Значение>, <Значение>, <Значение>, <Значение>, <Значение>
 

3. Строка шаблона, "%s" в ней будут последовательно заменяться на следующие аргументы.

 Код:
  1. write to log file <Число> append=<TRUE/FALSE> pageid=<Число> textid=<Число>, <Значение>, <Значение>, <Значение>, <Значение>, <Значение>
 

3, 4. То же, что и в предыдущей команде, но строка шаблона берется из page/id текстовой страницы.

Редактировалось 1 раз (а). Последний раз 15.10.2013 21:03:52.

15.10.2013 21:17:02
MiB2k

Репутация: 0
Сообщений: 8
Регистрация: 07.10.2013
 boojum писал(а):
Весь список нельзя, только построчно. Для этого существуют три команды в "Командах бортжурнала" вида write to log file.
Различаются аргументами. Файл создается в директории игры (... \Документы\Egosoft)
...
 


Спасибо огромное

Тогда еще 1 вопрос: есть у нас волшебная строчка
 Код:
  1. $shipsArray = get ship array: of race {Argon} class/type = null
 

как я могу из этого массива получить только уникальные значения по типу/классу корабля? Например, мне нужны только М3 аргона, но не в том виде, как они содержатся в массиве, а что-то вроде того, как мы видим на верфях. Это реально сделать, или проще работать с уже готовым дампом?
15.10.2013 21:31:01
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
 MiB2k писал(а):
как я могу из этого массива получить только уникальные значения по типу/классу корабля? Например, мне нужны только М3 аргона, но не в том виде, как они содержатся в массиве, а что-то вроде того, как мы видим на верфях. Это реально сделать, или проще работать с уже готовым дампом?
 

Можно, конечно, включить в фильтр и M3 как класс и получить все экземпляры M3 аргона, потом в цикле убрать неуникальные.
Но есть еще команда get ship type array: maker race=<Var/Race> class=<Value> которая, вроде бы, должна выдавать именно типы, а не корабли, ибо в списке того, что можно купить на верфи, мы видим именно типы.

Редактировалось 1 раз (а). Последний раз 15.10.2013 21:44:23.

15.10.2013 21:51:10
MiB2k

Репутация: 0
Сообщений: 8
Регистрация: 07.10.2013
 boojum писал(а):
Можно, конечно, включить в фильтр и M3 как класс и получить все экземпляры M3 аргона, потом в цикле убрать неуникальные.
Но есть еще команда get ship type array: maker race=<Var/Race> class=<Value> которая, вроде бы, должна выдавать именно типы, а не корабли, ибо в списке того, что можно купить на верфи, мы видим именно типы.
 


Вот! Это уже ближе к тому, что я хотел видеть)) Еще раз огромное спасибо)) А есть какая-то возможность узнать, что в себе содержат объекты этого массива? Какие их свойства можно вызывать, а какие - без толку?
15.10.2013 22:02:43
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
 MiB2k писал(а):
А есть какая-то возможность узнать, что в себе содержат объекты этого массива? Какие их свойства можно вызывать, а какие - без толку?
 
Логично предположить, что, раз это ссылка на тип, а не инстанс, то с ней нельзя работать стандартными объектными командами, то бишь свойств напрямую не получить. Возможно, существуют какие-то сакральные способы, но мне они неизвестны. При попытке какого-либо вывода как строки тип тупо выдаст свое имя.

Редактировалось 1 раз (а). Последний раз 15.10.2013 22:05:10.

15.10.2013 22:14:07
MiB2k

Репутация: 0
Сообщений: 8
Регистрация: 07.10.2013
 boojum писал(а):
Логично предположить, что, раз это ссылка на тип, а не инстанс, то с ней нельзя работать стандартными объектными командами, то бишь свойств напрямую не получить. Возможно, существуют какие-то сакральные способы, но мне они неизвестны. При попытке какого-либо вывода как строки тип тупо выдаст свое имя.
 


А вот это обидно... и не могу найти никаких мануалов по этому поводу. Остается только научный метод :(
Как вариант, конечно, можно попробовать сделать выборку из двух списков одновременно - эдакий весьма своеобразный select и join
15.10.2013 22:26:05
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
 MiB2k писал(а):
А вот это обидно... и не могу найти никаких мануалов по этому поводу. Остается только научный метод :(
Как вариант, конечно, можно попробовать сделать выборку из двух списков одновременно - эдакий весьма своеобразный select и join
 
С некоторыми свойствами типа все же можно как-то работать, но если нужны именно подробности, то действительно логично использовать именно экземпляры кораблей. Зависит от задачи все же.
Если цель выдрать характеристики всех кораблей, которые только могут быть, то имхо лучше не заморачиваться со скриптами, а парсить непосредственно ресурсы игры, TShips, в частности.

 MiB2k писал(а):
Цель - выдрать все характеристики всех кораблей и на основе этой инфы сделать возможность сравнения/сортировки по нескольким параметрам одновременно.
 
Конечно, отпарся TShips и переведя данные в SQL, например, можно черта лысого навертеть, как заблагорассудится.

Редактировалось 1 раз (а). Последний раз 15.10.2013 22:37:37.

15.10.2013 22:32:02
MiB2k

Репутация: 0
Сообщений: 8
Регистрация: 07.10.2013
 boojum писал(а):
С некоторыми свойствами типа все же можно как-то работать, но если нужны именно подробности, то действительно логично использовать именно экземпляры кораблей. Зависит от задачи все же.
Если цель выдрать характеристики всех кораблей, которые только могут быть, то имхо лучше не заморачиваться со скриптами, а парсить непосредственно ресурсы игры, TShips, в частности.
 


Цель - выдрать все характеристики всех кораблей и на основе этой инфы сделать возможность сравнения/сортировки по нескольким параметрам одновременно. Похожие сервисы есть, в частности на этом сайте, но нигде я не встречал возможности включения сразу нескольких фильтров.
15.10.2013 22:53:57
MiB2k

Репутация: 0
Сообщений: 8
Регистрация: 07.10.2013
 boojum писал(а):

Конечно, отпарся TShips и переведя данные в SQL, например, можно черта лысого навертеть, как заблагорассудится.
 


А где можно найти какие-нить мануалы по формату?
15.10.2013 23:02:53
boojum

Репутация: 2505
Сообщений: 1626
Регистрация: 20.08.2013
 MiB2k писал(а):
А где можно найти какие-нить мануалы по формату?
 
Признаться, не задавался целью, хоть и мысль такая была. Поищите, должно быть. Имхо, даже эмпирический подбор значений по X3Editor вполне реален, хоть и кропотлив.
15.10.2013 23:03:45
MiB2k

Репутация: 0
Сообщений: 8
Регистрация: 07.10.2013
 boojum писал(а):
Признаться, не задавался целью, хоть и мысль такая была. Поищите, должно быть. Имхо, даже эмпирический подбор значений по X3Editor вполне реален, хоть и кропотлив.
 


Нашел исходники X3Editor. Теперь все немного проще
«<910111213141516171819>»
Список игр