Перейти к содержанию

Сообщения от Скрипты

Аватар пользователя
14 лет назад
Хм. Думаю, да. Можно просто посчитать их количество (за вычетом непризывных юнитов и тех призывных, что умерли). Но тут надо экспериментировать, определённо. Потому как игра может посчитать, что в конце боя все призывные существа умерли, а в этом случае придётся делать особые условия победы, чтобы сначала всё посчитать, а потом закончить бой.
14 лет назад
Вообще, можно посчитать, когда у одной из сторон не останется юнитов, тогда сделать BlockGame, посчитать призванных, разблочить игру, закончить бой.
Аватар пользователя
14 лет назад
Я думаю, в этом случае механизм подсчёта юнитов, встроенный в игру, справится со своей задачей быстрее и бой кончится раньше, чем будет вызвана команда BlockGame.
14 лет назад
Что ж, буду пытаться экспериментировать. А вообще, как узнать, какому существу присвоена какая UnitName?
С уважением.
Аватар пользователя
14 лет назад
Может, вызвать GetDefender(Attacker)Creatures и для каждого элемента массива GetCreatureType?
14 лет назад
Попробуем, спасибо.
С уважением.
В ответ пользователю djulian13
Аватар пользователя
14 лет назад
У меня возник такой вопрос. Допустим, по сюжету герой должен выбрать, например, каким путем ему идти. Если он пойдет по определенной дороге, то каждый день у него будет уменьшаться армия. Это можно сделать через New_day_trigger. Допустим, что переменной h в этом случае присваивается значение 1. Тогда
Trigger( NEW_DAY_TRIGGER, "hello" )
function hello()
if GetDate(DAY) == 2 and h==1 then
RemoveHeroCreatures(...);
elseif GetDate(DAY) == 3 and h==1 then
RemoveHeroCreatures(...);
и тд
end;
end;
но так придется прописывать на каждый день. Можно ли как-нибудь обнулить счет дней в определенный момент, чтобы не прописывать столко?
В ответ пользователю Олегарх
14 лет назад
Олегарх
У меня возник такой вопрос. Допустим, по сюжету герой должен выбрать, например, каким путем ему идти. Если он пойдет по определенной дороге, то каждый день у него будет уменьшаться армия. Это можно сделать через New_day_trigger. Допустим, что переменной h в этом случае присваивается значение 1. Тогда
Trigger( NEW_DAY_TRIGGER, "hello" )
function hello()
if GetDate(DAY) == 2 and h==1 then
RemoveHeroCreatures(...);
elseif GetDate(DAY) == 3 and h==1 then
RemoveHeroCreatures(...);
и тд
end;
end;
но так придется прописывать на каждый день. Можно ли как-нибудь обнулить счет дней в определенный момент, чтобы не прописывать столко?
ну так если у тебя переменная h=1, то он и будет удалять часть армии каждый день. и не к чему эти навороты с определением даты. как фишка будет не нужна измениш значение h на любое кроме еденицы.
В ответ пользователю JonnyP
Аватар пользователя
14 лет назад
JonnyP
ну так если у тебя переменная h=1, то он и будет удалять часть армии каждый день. и не к чему эти навороты с определением даты. как фишка будет не нужна измениш значение h на любое кроме еденицы.
:smile11: как я сам не допер))
14 лет назад
Ну да, значение переменной меняешь в определённом месте и всё. Два регион-триггера без остановки героя, меняющие значение + запуск нового потока.
Если мой ход мыслей правилен, то:
h = 0

function RemoveCreaturesStart()
h = 1
startThread(RemoveCreatureProgress)
Trigger(REGION_ENTER_WITHOUT_STOP_TRIGGER,'RC1', nil)
end;
Trigger(REGION_ENTER_WITHOUT_STOP_TRIGGER,'RC1','RemoveCreaturesStart')

function RemoveCreatureProgress()
while 1 do
if h == 1 then
RemoveObjectCreatures('Oddrema', CREATURE_CERBERI,28)
end;
sleep(1)
end;
end;

function RemoveCreatureStop()
if h == 1 then
h=2
else
if (h == 2) or (h == 0) then
h = 1
end;
Trigger(REGION_ENTER_WITHOUT_STOP_TRIGGER,'RC2',nil)
end;
Trigger(REGION_ENTER_WITHOUT_STOP_TRIGGER,'RC2','RemoveCreatureStop')
С уважением.
В ответ пользователю djulian13
Аватар пользователя
14 лет назад
нуу, приблизительно. Я вообще думаю так: повесить регион
function regf()
h=1;
Trigger(трололо, nil);
end;
Trigger(трололо);

function hello()
if h==1 then
RemoveCreatures ("Oddrema", 20, 1);
end;
end;
Trigger (NEW_DAY_TRIGGER, "hello");
В ответ пользователю Олегарх
Аватар пользователя
14 лет назад
как установить спавн только определенных существ в начале недели? И, желательно, в определенном месте?
В ответ пользователю Олегарх
Аватар пользователя
14 лет назад
как установить спавн только определенных существ в начале недели? И, желательно, в определенном месте?
Функцией
CreateMonster

--Пример
function NewDay()
if GetDate(DAY_OF_WEEK) == 1 then
CreateMonster('mob1', CREATURE_PEASANT, 50, 45, 51, GROUND);
end;
end;
Trigger(NEW_DAY_TRIGGER, "NewDay")
В ответ пользователю RedHeavenHero
Аватар пользователя
14 лет назад
RedHeavenHero
Функцией
CreateMonster

--Пример
function NewDay()
if GetDate(DAY_OF_WEEK) == 1 then
CreateMonster('mob1', CREATURE_PEASANT, 50, 45, 51, GROUND);
end;
end;
Trigger(NEW_DAY_TRIGGER, "NewDay")
Спасибо. А как тогда отключить спавн на новой неделе? Например, наступила неделя лича и никто не спавнится?
В ответ пользователю Олегарх
Аватар пользователя
14 лет назад
Спасибо. А как тогда отключить спавн на новой неделе? Например, наступила неделя лича и никто не спавнится?

Тогда придётся сделать так:
function NewDay()
if GetDate(DAY_OF_WEEK) == 1 and GetCurrentMoonWeek() < 84 then
CreateMonster('mob1', CREATURE_PEASANT, 50, 45, 51, GROUND);
end;
end;
Trigger(NEW_DAY_TRIGGER, "NewDay")

Тогда, если случится неделя какой-нибудь твари, монстр не поставиться на карту.

Статистика

Приветствуем новейшего участника: recijeb

Сейчас на сайте 1 пользователей 1265 гостей