Все второй тутор закончен.




Constant int Wonderland_Captured

 

Последнее что нужно сделать - это создать раздел с триггером, о котором говорил в начале. Этот новый раздел должен быть написан после раздела Run After Cinematics. По сути, в самом конце скрипта.

Для начала пример раздела.

////////////////////////////////////////////////////////////

// Wonderland Captured

////////////////////////////////////////////////////////////

RULE ruleWonderland_Captured ONESHOT

if (GetOwningPlayerForTerritory("Wonderland") == 1)

then actionWonderland_Captured END_RULE

 

ACTION actionWonderland_Captured

SCRIPT WORLD

DoDelay(2);

STEP

WinScenario();

 

END_SCRIPT

END_ACTION

Пояснение:

RULE – определяет название триггера, важно чтобы оно совпадало с названием цели. К примеру название цели Wonderland_Captured (OBJECTIVE Wonderland_Captured), название триггера ruleWonderland_Captured (RULE ruleWonderland_Captured). Слово "Oneshot" означает, что триггер действует только один раз, если условие сбудется. Если вы хотите, чтобы это триггер действовал каждый раз, когда выполняется условие, то просто уберите "Oneshot".

if определяет условие, все известные условия можно найти в скриптовой библии (ее я переведу в будущем).

Пример условия:

запись if (GetOwningPlayerForTerritory("Wonderland") == 1) означает условие: игрок 1 (по умолчанию 1 игрок всегда человек) захватывает территорию Wonderland.

Важно!!! Нужно прописать в редакторе карт название территории Wonderland. Название нужно прописать в поле Script Name.

Также не забудьте поставить в редакторе карт условие победы согласно сценарию!

 

then определяет действие (action) которое должно совершится, если выполнено условие, здесь прописывается название действия

END_RULE конец триггера

 

ACTION actionWonderland_Capture – Название действия, оно должно совпадать с названием написанным в блоке триггера, в строке then actionWonderland_Captured

SCRIPT WORLD нчало отдельного скрипта

DoDelay(2); - указываются различные параметры действия, в частности DoDelay(2) означает задержку действия на 2 секунды после выполнения условия. Другие значения смотреть в скриптовой библии.

STEP

WinScenario(); собственно вид действия. WinScenario() – означает выигрыш сценария. Другие значения смотреть в скриптовой библии.

END_SCRIPT конец отдельного скрипта

END_ACTION конец действия

Дополнительно поясню работу триггера:

if можно перевести как предлог если, а then как предлог то. Тогда становится понятна логическая операция

Если …, то … (если игрок 1 захватил территорию Wonderland, то он выиграл сценарий)

if …, then … (if (GetOwningPlayerForTerritory("Wonderland") == 1),

then actionWonderland_Captured)

actionWonderland_Captured –отправляет к действию WinScenario – выигрыш сценария.

 

Вот в принципе и все основы создания целей. Самые различные цели можно создать использую скриптовую библию.

 

ПРИМЕРЫ:

Для набора опыта привожу полностью пример 2 целей

Изначально вы уже должны создать файл ies согласно 1-му туториалу, в нем должны быть все основные разделы.

 

1. главная цель – захватить территорию Wonderland. Если захватите, то выиграете сценарий. Важно! в редакторе карт дайте скриптовое название одной из ваших территорий Wonderland.

 

В разделе RULES FOR WORLD пишите следующие строки:

OBJECTIVE Wonderland_Captured

name = "Zahvat territorii"

desc = "Zahvat territorii"

type = kScenarioObjectiveType_Primary

targetlocation1x= 40

targetlocation1y= 40

starthidden = 0

END_OBJECTIVE

 

 

В разделе DEFINITIONS пишите следующие строки:

constant int Wonderland_Captured

 

Создайте в конце скрипта следующий раздел:

 

RULE ruleWonderland_Captured ONESHOT

if (GetOwningPlayerForTerritory("Wonderland") == 1)

then actionWonderland_Captured END_RULE

 

ACTION actionWonderland_Captured

SCRIPT WORLD

DoDelay(2);

STEP

WinScenario();

 

END_SCRIPT

END_ACTION

 

2. Второстепенная цель. Постройте Парфенон и получите 4000 золотом.

В разделе RULES FOR WORLD пишите следующие строки:

 

OBJECTIVE rulePathenon_Captured

name = "4000 gold "

desc = "4000 gold"

type = kScenarioObjectiveType_Primary

starthidden = 0

END_OBJECTIVE

 

В разделе DEFINITIONS пишите следующие строки:

 

constant int Pathenon_Captured

 

Создайте в конце скрипта следующий раздел:

 

RULE rulePathenon_Captured ONESHOT

if (AddUnitsByTypeToGroup("groupPathenon", "WonderWestern_01", HUMAN_PLAYER, kPlayerMode_Self, NULL)

&& (NumUnitsInGroup("groupPathenon") >= 1))

then actionPathenon_Captured

END_RULE

 

ACTION actionPathenon_Captured

SCRIPT WORLD

AddPlayerResource(1, kResourceType_Gold, 4000);

 

END_SCRIPT

END_ACTION

 

Все второй тутор закончен.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-13 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: