|
|
|
Канал X2: The Threat: «FAQ: Скриптописание» |
|
|
Usharik 125 EGP
Репутация: 9 Сообщения: 102 Откуда: IL Зарегистрирован: 14.05.2004 |
|
001 load text: id=6
002 $station = find station in galaxy: startsector=Сейзвел class or type=Теладианский док оборудования race=Телади flags=null refobj=null serial=null max.jumps=0
003
004 $station -> add product to factory or dock: вaкуумнaя xлебoрезкa
005 $station -> set price of ware вaкуумнaя xлебoрезкa to 2000 Cr
006
007 skip if $station -> get amount of ware вaкуумнaя xлебoрезкa in cargo bay
008 $dummy = $station -> add 1 units of вaкуумнaя xлебoрезкa
009
010 $cmd = COMMAND_TYPE_SPECIAL_23
011 global ship map: set: key=$cmd, class=Тяжелый истребитель 'M3', race=Player, script='load.asteroid.scaner', prio=0
012 set ship command upgrade: command=$cmd upgrade=вaкуумнaя xлебoрезкa
Пoчему-тo ценa не изменяется .Тaк и oстaётся 10002560 Cr.
A я тoвaр свoй купить не мoгу чтoбы тестирoвaть
_________________ А что будет,если два раза испугаться до полусмерти?! |
|
|
Warlock 88 EGP
Репутация: 13 Сообщения: 305 Откуда: Москва Зарегистрирован: 23.07.2001 |
|
2XenonTomb
а где он находится этот редактор скриптов и как его запустить? сорр господа пилоты, но я ничего про это не знаю
_________________ Продаю EGP, курс 1:1 :) |
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
2Warlock
Читаем тему "Как открыть редактор скриптов", там все подробно описано.
http://www.elite-games.ru/conference/viewtopic.php?t=17145
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
2Usharik
1. Команда add product to factory or dock: вaкуумнaя xлебoрезкa добавит только строку с продуктом, но его будет 0. Поэтому после этого надо добавить
skip if $station -> get amount of ware вaкуумнaя xлебoрезкa in cargo bay
$retval = $station -> add 1 units of вaкуумнaя xлебoрезкa
2. Команда set price of ware в данном случае не катит, она используется для своих станций. Девайсы и цены на них задаются в строках файла TWareT.txt (бывший .pck). Например, в случае инкубатора космомух:
28;0;0;0;0;59;5753;1;12497;3;5;4;SS_WARE_SPACEFLYINCUBATOR;
12497 - это цена (девятый параметр). В кредитах это примерно будет [это число]*28. Неиспользуемые в игре девайсы - это строки с идентификатором SS_WARE_SW_NEWхх в конце файла, их можно смело курочить.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
Варсик 545 EGP
Репутация: 117 Сообщения: 4039 Откуда: Москва Зарегистрирован: 22.12.2002 |
|
Вопрос: Как перечислить корабли в станции? То есть: вот станция, в ней пару М3 пару TS, для примера, надо перечислить, или получить массив с Var/Ship, только не надо перебирать все корабли в секторе и спрашивать а ты в этой станции...
_________________ WARNING: By reading this post you accept that this post is genius. |
|
|
akm 470 EGP
Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002 |
|
В версии 1.4 появилась такая команда!
<RetVar>= <RefObj> get ship array from sector/ship/station
Находится в разделе Universe and Sector Commands в самом низу списка.
Т.е. в твоем случае:
Массив = Станция->get ship array from sector/ship/station
Gward : |
Коммандеры, как можно в тело рабочего скрипта передать указание на прерывание? То есть как скрипт может реагировать на внешние раздражители в виде доп. данных?
|
По идее, для этого предназначена команда send signal. Но лично мне так и не удалось заставить скрипт реагировать на SIGNAL_CUSTOM. Пока что я пользуюсь глобальными/локальными переменными для передачи доп. данных между скриптами.
|
|
|
akm 470 EGP
Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002 |
|
Полный список новых команд в 1.4
General Commands
<RefObj> start task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value>
<RefObj> interrupt task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value>
al engine: register script= <Script Name>
al engine: unregister script= <Script Name>
al engine: set plugin <Var/String> description to <Var/String>
al engine: set plugin <Var/String> timer interval to <Var/Number> s
<RetVar> = get script version
<RetVar> = get script name
<RetVar/IF> is plot <Var/Number> state flag <Var/Number>
<RetVar> = get random name: race= <Var/Race>
<RetVar> = get Khaak aggression level
set Khaak aggression level to <Var/Number>
Audio Commands
<RetVar/IF/START> speak text: page= <Var/Number> id= <Var/Number> priority= <Var/Number>
Fly Commands
<RetVar/IF><RefObj> add big ship <Var/Ship>
<RetVar/IF><RefObj> has a free big ship dock slot
<RetVar/IF><RefObj> can be controlled by race logic
<RefObj> set race logic control enabled to <Var/Number>
<RetVar/IF><RefObj> can execute StartAction
<RefObj> set StartAction enabled to <Var/Number>
<RefObj> set as player wingman: <Var/Number>
<RetVar/IF><RefObj> is player wingman
Trade Commands for Stations
<RetVar>= <RefObj> get tradeable ware array from station
General Object Commands
<RefObj> set serial name of station to <Var/Stations Serial>
<RefObj> station send defend squad against ship <Var/Ship/Station>
<RetVar>= <RefObj> get name
<RefObj> set name to <Var/String>
<RefObj> set owner race to <Var/Race>
<RetVar/IF><RefObj> find ship: class or type= <Value> race= <Var/Race> flags= <Var/Number> refobj= <Value> maxnum= <Var/Number> with homebase= <Value>
<RetVar/IF> find station in galaxy: startsector= <Var/Sector> class or type= <Value> race= <Var/Race> flags= <Var/Number> refobj= <Value> serial= <Var/Stations Serial> max.jumps= <Var/Number> num= <Var/Number>
<RetVar>= <RefObj> get ID code
<RetVar>= <RefObj> get pilot name
<RefObj> set pilot name to <Var/String>
<RefObj> set pilot speaker: voice= <Value>, face= <Value>, Pirate subrace= <Value>, Argon female= <Value>
Universe and Sector Commands
<RetVar>= <RefObj> get ship array from sector/ship/station
<RetVar>= <RefObj> get station array from sector
<RetVar>= <RefObj> get factory array from sector
<RetVar>= <RefObj> get dock array from sector
<RetVar>= <RefObj> get player owned ship array from sector
<RetVar>= <RefObj> get player owned station array from sector
<RetVar>= <RefObj> get asteroid array from sector
Т.е. 40 новых команд. Ни одной старой команды не убрали. Структура меню команд тоже осталась прежней, а большинство новых команд (но не все) добавились именно внизу списков.
А вот здесь можно посмотреть полный список всех команд в.1.4.
|
|
|
Gward 310 EGP
Рейтинг канала: 2(21) Репутация: 75 Сообщения: 1307 Откуда: Ставрополь Зарегистрирован: 11.06.2004 |
|
akm : |
По идее, для этого предназначена команда send signal. Но лично мне так и не удалось заставить скрипт реагировать на SIGNAL_CUSTOM. Пока что я пользуюсь глобальными/локальными переменными для передачи доп. данных между скриптами.
|
Хм. Хоть с 1.4 и не актуально, но глобально объявленная переменная, является глобальной для ВСЕХ скриптов, или только для последующих по вызову?
И как ить к станции скрипт привязать.
Осень нада!!!
|
|
|
akm 470 EGP
Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002 |
|
Цитата: |
глобально объявленная переменная, является глобальной для ВСЕХ скриптов, или только для последующих по вызову?
|
Для всех!
Речь идет о глоб. переменных, создаваемых командой:
set global variable: name=<Var/String> value=<Value>
Прочитать ее можно командой
<RetVar/IF> get global variable: name=<Var/String>
И есть еще команды get/set local variable. Не смотря на название команды, они работают тоже с глобальными переменными. Но если первые "global" доступны абсолютно любому скрипту, то через "local" переменную могут обмениваться данными только скрипты, запущенные на одном и том же объекте.
Цитата: |
И как ить к станции скрипт привязать
|
Так просто запускаешь его
@= Станция-> call script <Script Name>:<Parameter>
или
START Станция->command <Object Command> (находится в меню Fly Commands)
Первый вариант отличается тем, что скрипт, из которого был произведен запуск приостановит свое выполнение на команде call script пока из нее не будет выход. Чтобы работал второй вариант, Object Command должен быть залинкован на скрипт в init-файле командой global ship map: set key. И в этом случае имя команды скорее всего появится в одном из слотов в Command Console фабрики. Не проверял еще как с этим обстоит у фабрик.
И у меня есть вопросик (повышенной сложности )
как назначить команду на турель? Т.е. из скрипта дать турели например стандартуную команду Missile Difence? Т.е. мне нужно получить турель корабля как объект.
|
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
Ух ты, а я думаю нафига это get/set local variable ? Спасибо за науку.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
Grey Wolf 500 EGP
Рейтинг канала: 2(17) Репутация: 115 Сообщения: 1677 Откуда: Ростов-на-Дону Зарегистрирован: 31.03.2003 |
|
akm : |
Структура меню команд тоже осталась прежней
|
в некоторых командах типа Create, Аdd теперь появилась возможность использовать no return available.
|
|
|
Narlit 100 EGP
Репутация: 4 Сообщения: 133 Откуда: Санкт-Петербург Зарегистрирован: 03.04.2004 |
|
Теоретически можно команды все неоходимые вроде есть сам таких миссий не писал и о прецедентах о таких не слышал
|
|
|
KKK
|
|
Ув. гуру, а не разобрался ли кто как подключать скрипты в слоты кораблей/станций. И какова будет последовательность исполнения команд если заняты несколько слотов?
|
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
2ККК
Кажись akm разобрался, где-то писал, а где - не помню. Ты у него прямо через приват спроси, поделишься потом опытом .
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
akm 470 EGP
Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002 |
|
KKK : |
Ув. гуру, а не разобрался ли кто как подключать скрипты в слоты кораблей/станций. И какова будет последовательность исполнения команд если заняты несколько слотов?
|
Скрипты, запущенные в каждом из слотов, выполняются параллельно и независимо друг от друга и от иных скриптов, запущенных на этом же корабле (основная команда корабля, и команда турели). Если быть более точным, то на самом деле никакой многозадачности в ScE Х2 нет, выполняется подряд пачка команд только 1 скрипта пока не встертится команда со значком @. Далее идет анализ приоритетов и движек ScE берется за другой скрипт с макс приоритетом и опять пока не встретит @. Поэтому не экономьте на командах @ wait в своих скриптах в противном случае можно запросто подвесить игру, особенно если слабый проц.
Пример скрипта, реально использующего слот доп. команд корабля, смотрите здесь.
Допустим у нас есть некий скрипт "НашСкрипт", который нужно оформить в виде команды для доп. слотов корабля. Последовательность действий:
1. Создаем файл "441222.xml" следующего содержания:
<?xml version="1.0" encoding="UTF-8" ?>
<language id="44">
<page id="2010" title="Commands" descr="">
<t id="1222">Наименование команды</t>
</page>
<page id="2011" title="Commands" descr="">
<t id="1222">Сокращ.Команда</t>
</page>
</language>
Четыре последние цифры в имени файла 441222.xml - произвольные. Это ТекстID.
22 в теле файла означает, что мы собираемя подвесить свою команду на "COMMAND_TYPE_SHIP_22". Всего их 30: COMMAND_TYPE_SHIP_0 - COMMAND_TYPE_SHIP_29. Поэтому важно, чтобы наши скрипты не накладывались друг на друга.
2. Создаем скрипт "setup.plugin.Имя" следующего содержания:
001 load text: id=1222
002 global script map: set: key=COMMAND_TYPE_SHIP_22, class=Ship, race=Player, script='НашСкрипт', prio=0
003 set script command upgrade: command=COMMAND_TYPE_SHIP_22 upgrade=Fight Command Software MK2
004 return null
prio=0 - приоритет, с которым запустится наш скрипт.
Fight Command Software MK2 - апгрейд, наличие которого необходимо на корабле, чтобы наша команда появилась в меню команд для слота. Можно просто указать [TRUE] и тогда команда будет всегда доступна.
Сразу после создания этого setup.plugin-скрипта в меню естественно ничего не появится. Сделайте Load сэйва или начните новую игру для проверки. В меню доступных команд слота должна появиться ваша команда вида:
Наименование команды [Сокращ.Команда]
Если игрок ее выберет, будет запущен скрипт 'НашСкрипт'. Первой строкой в нем должна быть команда:
001 set script command: COMMAND_TYPE_SHIP_22
Иначе скрипт то запустится, но его имя не появится напротив слота. Типично такой скрипт содержит бесконечный цикл, тогда он будет болтаться в слоте до тех пор пока игрок не даст любую другую команду для этого же слота и скрипт будет остановлен принудительно.
Все то же самое распространяется и на станции, только команды нужно назначать на COMMAND_TYPE_STATION_0 - COMMAND_TYPE_STATION_29, а в файле "44****.xml" наименование команд вписывать в
<t id="1100"> для COMMAND_TYPE_STATION_0
...
<t id="1129"> для COMMAND_TYPE_STATION_29
|
|
|
serg - 314159
|
|
akm : |
И у меня есть вопросик (повышенной сложности )
как назначить команду на турель? Т.е. из скрипта дать турели например стандартуную команду Missile Difence? Т.е. мне нужно получить турель корабля как объект.
|
турель как объект получать не нужно - турели определяются идентификаторами(0,1,2...)
скрипты на турель назначал в ПРО для турели (сказать не могу как - не помню,а тачка чужая ), посмотри там http://serg-Ссылки на narod.ru запрещены! Используйте пожалуйста другие, более нормальные хостинги.
|
|
|
akm 470 EGP
Рейтинг канала: 1(4) Репутация: 173 Сообщения: 1638 Откуда: Паразит Прайм Зарегистрирован: 23.10.2002 |
|
serg - 314159 : |
akm : |
И у меня есть вопросик (повышенной сложности )
как назначить команду на турель? Т.е. из скрипта дать турели например стандартуную команду Missile Difence? Т.е. мне нужно получить турель корабля как объект.
|
турель как объект получать не нужно - турели определяются идентификаторами(0,1,2...)
скрипты на турель назначал в ПРО для турели (сказать не могу как - не помню,а тачка чужая ), посмотри там http://serg-Ссылки на narod.ru запрещены! Используйте пожалуйста другие, более нормальные хостинги.
|
Спасибо, но я наверное не совсем понятно выразился. Как назначить скрипт-обработчик на ту или иную команду с помощью global ship map: set: key я в курсе
Мне требуется дать эту команду турели из другого скрипта (т.е. алалог действиям игрока в командной консоли по назначению команды турели), но программно и чтобы эта команда появилась напротив турели в командной консоли корабля.
|
|
|
Пассажир
|
|
http://www.elite-games.ru/downloads/x2/scriptswrite.rar
Если кто не видел тама много чиво описано про скрипты в X2.
|
|
|
dark_j 135 EGP
Рейтинг канала: 1(3) Репутация: 7 Сообщения: 121 Откуда: Москва Зарегистрирован: 03.06.2004 |
|
Вопрос
Подскажите какие page id свободны для использования
(в смысле предназначенны для пользовательских скриптов)
|
|
|
XenonTomb 250 EGP
Рейтинг канала: 2(16) Репутация: 66 Сообщения: 867 Откуда: Николаев, Украина Зарегистрирован: 17.03.2004 |
|
Ну ты спросил, кто ж такой список составит? Берешь 440001.xml или 70001.xml и внимательно смотришь. Ищешь близкие тебе по смыслу разделы, в них свободные номера - и вперед! Например page id="17" - это станции, товары, девайсы, корабли (названия и описания) и т.д. Можно воспользоваться поиском в текстовом редакторе/просмотрщике для выяснения есть ли номер/страница и для поиска нужных страниц.
_________________ Будут предложения - присылайте на расчетный счет :) |
|
|
|
|
|
Канал X2: The Threat: «FAQ: Скриптописание» |
|