Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#1528
Старый 25.07.2013, 23:04
  #1528
^
AkaR
 
Аватар для AkaR
📖
Регистрация: 25.08.2011
Сообщения: 29
Регистрация: 25.08.2011
Сообщения: 29
По умолчанию
Re: Скрипты

HeroistЯ думаю, тут ничего сложного. Значит, так. Получение задания у Вас висит на функции, так?

Тогда:

	n = 0 (пишем это вне всех ф-ий)

--Ваша функция--
....
Получение задания (требуемого)
n = 1 -- теперь мы сделали n равным одному
--конец функции--

Теперь, через триггер нового дня (Trigger(NEW_DAY_TRIGGER , 'day')) (пример), вызываем выполнение ф-ии.

--функция нового дня--
если n > 0, тогда
n = n + 1 -- если n > 0, что в нашем случае означает, что задание уже стало активным, мы увеличиваем n на 1.
--конец функции нового дня--

Таким образом, мы каждый день прибавляем + 1 к n, начиная со следующего после получения задания дня.
Теперь, осталось лишь дописать проверочную ф-ию (её можно дописать прямо внутри ф-ии нового дня)

--функция нового дня--
--то, что написано выше--
если n == 11 и задание уже выполнено, тогда
Ваши действия
Иначе, если n == 11, тогда (это уже означает, что по истечение этого срока задание не выполнено)
Ваши прочие действия
"Для красивости, если не нужно, чтобы счетчик крутился дальше, делаем n = 0"
--конец ф-ии нового дня--

Если "Ваши действия" уже записаны в другой ф-ии, не беда. Вместо это пишем startThread (название_функции_с_действиями). Вот, вроде, и все.


Теперь, немного справочного материала:

Trigger(NEW_DAY_TRIGGER , 'day') -- триггер нового дня
SetObjectiveState ('objname' , OBJECTIVE_ACTIVE) -- активировать задание, вместо первого параметра - имя Вашего задания
SetObjectiveState ('objname' , OBJECTIVE_COMPLETED/FAILED) -- выполнить задание, или провалить его.
n = 0 -- и тп (переменная)
Trigger(TRIGGER_NAME, nil) -- обнуление триггера.


Таким образом, вот полный скрипт: (вместо красного Вы подставляете Ваши значения):


	n = 0

function xxx
...
SetObjectiveState ('obj1' , OBJECTIVE_ACTIVE)
n = 1
end

Trigger(NEW_DAY_TRIGGER , 'day')

function day
if n > 0 then
n = n + 1
end
if n == 11 and GetObjectiveState ('obj1') == OBJECTIVE_COMPLETED then
...
elseif n == 11 then
...
end
end

Вроде, больше ничего сложного я не написал. ;)

Спасибо вам огромное :) Внятно и доходчиво объяснили. Буду теперь знать :)
__________________
Создаётся карта "Забытый Авангард (готовность 80%)
Создаётся карта "Забытый Авангард (готовность 80%)
AkaR вне форума
Ответить с цитированием