На сайте онлайн (человек): 84 
|  |
|
 | |
Урок 6. Врата В этом уроке я НЕ буду рисовать таблицу, т.к. я подробно... |  |
|  |
 | |
|
Terran Conflict (X3TC) / Форум / Скрипты и моды для X3 Terran Conflict / Учимся простейшим скриптам
|
Урок 6. Врата
| В этом уроке я НЕ буду рисовать таблицу, т.к. я подробно буду описывать что и как делается. |
| |
- Для начала вы должны определиться какой именно скрипт вам нужен:
- Создание врат на месте, рядом с вами и указание точки выхода (запуск и параметры - ручные) - не рассматривается, есть Хаб и "Прыжок в точку"
- Автосоздание врат в определенных точках при загрузке игры. - тогда перейдем к делу

- Мы должны определиться, что нам нужно:
- Секторы, которые будут соединены (в уроке я соединю Аргон Прайм и Королевский тупик):
- Определяем галактический индекс с помощью карты. Промежутки считать.
- По-горизонтали - X (0-21); По-вертикали - Y (0-16); Земные сектора не считаем.
- Координаты врат (в Метрах, т.е. 1000 - 1км)
- Доступность врат, время активности
- Приступим:
- Для начала сделаем автоматический одноразовый запуск, спасибо, MistR'у:
- Ищем: Общие команды -> <Возвр/IF> get global variable: name=<Перем/Текст> - оба значения пускай будут off
- Далее: Общие команды -> <Возвp/IF><Выражение> - первое значение - имя переменной, второе значение, пускай имя of, а значение 0
- Снова: Общие команды -> <Возвp/IF><Выражение> - Теперь первое уже не переменная, а оператор условного перехода, выбираем "Ввод скрипта -> if"
- Продолжаем вводить данные: троеточие красное? жмите Enter! После выбираем в переменных переменную of, потом еще раз Enter, выбираем в действиях знак "==", жмем Enter, выбираем переменную off
- Новая строка, идем сюда: Общие команды -> Управление исполнением цикла -> go to label <Метка>, вводим имя метки - end
- Идем туда же, только выбираем else
- Первая часть окончена, далее - основной скрипт.
- Запишем в переменные гал. индексы (X и Y). Чтобы каждый раз не писать числа и не запутаться. Находим в общих командах:
Выбираем переменная, вводим название (например, from.X (координата X первого сектора (Аргон Прайм), в котором стоят врата)) и значение (ввод скрипта -> <Число>), чтобы было вот так: Повторяем три раза, введя имя второй раз from.Y (координата Y первого сектора (Аргон Прайм), в котором стоят врата), третий и четверты соответственно (to.X и to.Y (координаты Королевского тупика) они равны нулям), значения переменных - координаты Х и Y соответственно.
В итоге всё должно выглядеть так:
| Код:- ...
- 006 $from.X= 1
- 007 $from.Y= 2
- 008 $to.X= 0
- 009 $to.Y= 0
- ...
|
| |
- Далее координаты:
Получим случайное число в заданном диапазоне. "Общие команды -> <Возвр/Перем> = = random value from <Перем/Число> from <Перем/Число> -1" Пускай это будет переменная xyz Пускай первое <Перем/Число> будет равно -10000, а второе +10001. Таким образом мы получим случайное число в диапазоне 20000. Если его потом использовать и как X, и как Y, и как Z, то врата создадутся в воображаемой сфере с центром, совпадающим с центром сектора и радиусом в 10 км. Итог:
| Код:- ...
- 010 $xyz= random value from -10000 to 10001
- ...
|
| |
- Нам необходимо знать в каком секторе создать врата, здесь нам и пригодятся наши переменные. Для этого:
"Команды секторов и Галактики -> <Возвр/IF> get sector from universe index: x=<Перем/Число>, y=<Перем/Число>"
Повторяем два раза. В первом случае <Возвр/IF> (далее переменная)= from.sector, x=from.X, y=from.Y Во втором случае переменная = to.sector, x=to.X, y=to.Y.
Примечание, переменные задаются сразу же после выбора команды в "Ввод скрипта -> <Переменная>", а остальные переменные уже выбираются сверху, либо создаются новые таким же образом,как и при выборе команды.
Вот, что должно получиться в шестом пункте:
| Код:- ...
- 011 $from.sector= get sector from universe index: x=from.X, y=from.Y
- 012 $to.sector= get sector from universe index: x=to.X ,y=to.Y
- ...
|
| |
- Создание врат.
Вот мы и подготовились к конкретике, а точнее к созданию врат, нам потребуется две пары врат, для их создания: Общие команды для объектов -> Создание объектов -> <ВозврПерем> = create gate: type=<Перем/Число> addto= <Перем/Сектор> gateid=<Перем/Число> dstsecx=<Перем/Число> dstsecy=<Перем/Число> dstgateid=<Перем/Число> x=<Перем/Число> y=<Перем/Число> z=<Перем/Число> Повторяем команду два раза.
Что? | Значение 1 | Значение 2 | Почему? | | <ВозврПерем> | gate1 | gate2 | Мы присваиваем переменным каждые из врат | | type= | 21 | 22 | Это тип врат. Ниже найдете типы врат. | | addto= | from.sector | to.sector | Сектора, в которых создадутся врата. | | gateid= | null | null | Типы данных врат. (Чем отличается от "type="?) | | dstsecx= | to.X | from.X | X-индекс сектора с парными данным вратами. | | dstsecy= | to.Y | from.Y | Y-индекс сектора с парными данным вратами. | | dstgateid= | null | null | Тип вторых врат. (Зачем?) | | x= | xyz | xyz | Смотри V пункт | | y= | xyz | xyz | Смотри V пункт | | z= | xyz | xyz | Смотри V пункт | | | | | | |
|
Типы врат. Тип - <Перем/Число>.Тип\Направление | N | S | W | E | | Обычные | null | 1 | 2 | 3 | | Земные | 21 | 22 | 23 | 24 | | Ускорители | 5 | 6 | 7 | 8 | | | | | | | |
|
*4 - разрушенные врата. Хаб: 9-14 - включенные, 15-20 - выключенные
ВНИМАНИЕ! Если вам нужна пара взаимосвязанных врат не используйте "Обычные" врата! Земные работают.
- Завершаем скрипт:
- Общие команды -> set global variable: name=<Перем/Текст> value=<Значение> - имя off, значение 0
- Общие команды -> Вызовы скриптов -> return <значение> - значение null
- Общие команды -> Управление исполнением цикла -> end conditional
- Общие команды -> Управление исполнением цикла -> define label <Метка> - называем ее end
- Общие команды -> Вызовы скриптов -> return <значение> - значение null
- В конечном итоге должно получиться так:
| Код:- [color=blue]001[/color] [color=green]$of=[/color] get global variable: name= [color=green]$of[/color]
- [color=blue]002[/color][color=green] $off == 1 ...[/color]
- [color=blue]003[/color] [color=green]if $off == $of ...[/color]
- [color=blue]004[/color] goto label [color=green]end[/color]
- [color=blue]005[/color] else
- [color=blue]006[/color] [color=green]$from.X= 1 ...[/color]
- [color=blue]007[/color] [color=green]$from.Y= 3 ...[/color]
- [color=blue]008[/color] [color=green]$to.X= 0 ...[/color]
- [color=blue]009[/color] [color=green]$to.Y= 0 ...[/color]
- [color=blue]010[/color] [color=green]$xyz=[/color] = random value from [color=green]-10000[/color] to [color=green]10001[/color] - 1
- [color=blue]011[/color] [color=green]$from.sector= [/color]get sector from universe index: x= [color=green]$from.X[/color] , y= [color=green]$from.Y[/color]
- [color=blue]012[/color] [color=green]to.sector= [/color]get sector from universe index: x= [color=green]$to.X[/color] , y=[color=green]&to.Y[/color]
- [color=blue]013[/color] [color=green]$gate1=[/color] create gate: type= [color=green]21[/color] addto= [color=green]$from.sector[/color] gateid= [color=green]null[/color] dstsecx= [color=green]$to.X[/color] dstsecy= [color=green]$to.Y[/color] dstgateid= [color=green]null[/color] x= [color=green]$xyz[/color] y= [color=green]$xyz[/color] z= [color=green]$xyz[/color]
- [color=blue]014[/color] [color=green]$gate2=[/color] create gate: type= [color=green]22[/color] addto= [color=green]$to.sector[/color] gateid= [color=green]null[/color] dstsecx= [color=green]$from.X[/color] dstsecy= [color=green]$from.Y[/color] dstgateid= [color=green]null[/color] x= [color=green]$xyz[/color] y= [color=green]$xyz[/color] z= [color=green]$xyz[/color]
- [color=blue]015[/color] set global variable: name= [color=green]$of[/color] value= [color=green]1[/color]
- [color=blue]016[/color] return [color=green]null[/color]
- [color=blue]017[/color] end
- [color=blue]018[/color] [color=green]end[/color]:
- [color=blue]019[/color] return [color=green]null[/color]
|
| |
Насчет автозапуска... Ну у меня не получилось, а делается это добавление префикса setup. , либо !setup (в чем разница смотри выше), а так же изменение имени скрипта в самом скрипте. Вобщем пока довольствуемся ручным запуском, однако два запуска Вы уже совершить не сможете (да и зачем?)
Вроде все, всем спасибо. Урок закончен. |
|
дерево темы → Учимся простейшим скриптам
Учимся простейшим скриптам »
Список игр
|  |
|  |
 |  |  | |
| | | |
|  |