установка:
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"reg_1","Question");
удаление:
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"reg_1",nil);
Аналогичная ошибка в твоем первом примере с мессадж боксом
Впервые здесь? Я Роха — провести быструю экскурсию?
Рыцарь Бездны, почитай, если есть, скриптовое руководство. Последний параметр триггеров - это название функции, которая должна быть вызвана при срабатывании триггера. Чтобы его обнулить, нужно вместо названия вставить nil:
установка:
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"reg_1","Question");
удаление:
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"reg_1",nil);
Аналогичная ошибка в твоем первом примере с мессадж боксом
Пользуй консоль, попробуй просто в ней набрать до захода в регион
@Trigger(REGION_ENTER_AND_STOP_TRIGGER,"reg_1",nil);
и проверить, что триггер не срабатывает. Возможно вылезет какая-нибудь ошибка, скажем из-за опечатки.
-- таблица, хранящая имена регионов и флаги посещения
region_table =
{
{name = 'НАЗВАНИЕ_ПЕРВОГО_РЕГИОНА', visited = 0},
{name = 'НАЗВАНИЕ_ВТОРОГО_РЕГИОНА', visited = 0},
...
};
-- функция инициализации
function RegionInit()
for i, region in region_table do
Trigger(REGION_ENTER_AND_STOP_TRIGGER, region.name, 'RegionVisit');
end
end
-- единая функция посещения
function RegionVisit(hero)
-- проверям в каком мы регионе
for i, region in region_table do
if(IsObjectInRegion(hero, region.name)) then
Trigger(REGION_ENTER_AND_STOP_TRIGGER, region.name, nil);
region.visited = 1;
-- здесь можно сделать что нужно, в зависимости от номера региона (переменная i - номер в таблице region_table)
end
end
end
-- возвращает true, если регион с именем name посещен
function IsRegionVisited(name)
for i, region in region_table do
if((region.name == name) and (region.visited == 1)) then
return true
end
end
return nil
end
Рыцарь Бездны, через дополнительные флаги. У себя я делал подобные вещи так (код не готовый, но позволяющий понять принцип):-- таблица, хранящая имена регионов и флаги посещения
region_table =
{
{name = 'НАЗВАНИЕ_ПЕРВОГО_РЕГИОНА', visited = 0},
{name = 'НАЗВАНИЕ_ВТОРОГО_РЕГИОНА', visited = 0},
...
};
-- функция инициализации
function RegionInit()
for i, region in region_table do
Trigger(REGION_ENTER_AND_STOP_TRIGGER, region.name, 'RegionVisit');
end
end
-- единая функция посещения
function RegionVisit(hero)
-- проверям в каком мы регионе
for i, region in region_table do
if(IsObjectInRegion(hero, region.name)) then
Trigger(REGION_ENTER_AND_STOP_TRIGGER, region.name, nil);
region.visited = 1;
-- здесь можно сделать что нужно, в зависимости от номера региона (переменная i - номер в таблице region_table)
end
end
end
-- возвращает true, если регион с именем name посещен
function IsRegionVisited(name)
for i, region in region_table do
if((region.name == name) and (region.visited == 1)) then
return true
end
end
return nil
end
region_visit_cnt = 0;инкрементировать и проверять ее после строчки region.visited = 1;region_visit_cnt = region_visit_cnt + 1;
if(region_visit_cnt >= 5) then
SetObjectiveState(ИМЯ_КВЕСТА, OBJECTIVE_COMPLETED);
end
Добрый день! Я совсем новичок, вообще не понимаю в скриптах ничего, по этому хотел бы узнать... Как сделать так, чтобы враги автоматически нападали на город? То есть, чтобы не брали ресурсы, не воевали с мобами и тд, а сразу шли на город.
mod(GetDate(), 14) == 1
function CheckMana()
while GetHeroStat("имя_героя", STAT_MANA_POINTS) >= 10 do
sleep(5)
end
Loose()
end
startThread(CheckMana)2) Можно посмотреть в самой карте. Там используются функции GetObjectNamesByType и SetObjectOwner.function change_all_owners()
local types = {'BUILDING', 'TOWN', 'HERO', 'DWELLING'}
for i, type in types do
for j, object in GetObjectNamesByType(type) do
if GetObjectOwner(object) == СТАРЫЙ_ВЛАДЕЛЕЦ then
SetObjectOwner(object, НОВЫЙ_ВЛАДЕЛЕЦ)
end
end
end
end
1)function CheckMana()
while GetHeroStat("имя_героя", STAT_MANA_POINTS) >= 10 do
sleep(5)
end
Loose()
end
startThread(CheckMana)