Сообщения от Скрипты для начинающих
Пытаюсь сделать скрипт на удвоение армии. За основу стырил скрипт из "Random Wars".
[spoiler=Вот это работает, но для одного героя]
function incom()
local day = GetDate(3)
if day == 2 then
local hero = GetPlayerHeroes(5)[0]
local types = {}
types[0], types[1], types[2], types[3], types[4], types[5],types[6] = GetHeroCreaturesTypes(hero)
for i = 0, 6 do
if HasHeroCreature(hero, types)
then
--local stack = GetCreatureById(types)
local amount = GetHeroCreatures(hero, types)
AddHeroCreatures(hero, types, amount, i)
end
end
end
end
Trigger(NEW_DAY_TRIGGER, "incom")
[/spoiler]
Жажду же я воплотить схему с несколькими героями, но не знаю как правильно это прописать.
[spoiler=Не работает]
function incom()
local day = GetDate(3)
if day == 2 then
local hero = {}
hero[0], hero[1], hero[2], hero[3] = GetPlayerHeroes(5)
for k = 0, 3 do
if IsHeroAlive(hero)
then
local types = {}
types[0], types[1], types[2], types[3], types[4], types[5],types[6] = GetHeroCreaturesTypes(hero)
for i = 0, 6 do
if HasHeroCreature(hero, types)
then
local stack = GetCreatureById(types)
local amount = GetHeroCreatures(hero, types)
AddHeroCreatures(hero, types, amount, i)
end
end
end
end
end
end
Trigger(NEW_DAY_TRIGGER, "incom")
[/spoiler]
На функции IsHeroAlive(hero) появляется неверный аргумент №1, т.е. вместо hero появляется нечто несъедобное.
Поэтому нужно в локальный массив heroes скинуть таблицу из функции GetPlayerHeroes, потом пройтись по массиву с указанными действиями и всё.
function incom()
local day = GetDate(3)
if day == 2 then
local heroes = GetPlayerHeroes(5)
for k, hero in heroes do
if IsHeroAlive(hero)
then
local types = {}
types[0], types[1], types[2], types[3], types[4], types[5],types[6] = GetHeroCreaturesTypes(hero)
for i = 0, 6 do
if HasHeroCreature(hero, types)
then
local stack = GetCreatureById(types) --Если вы копировали из RW, то, надеюсь, скопировали и функцию GetCreatureByld.
local amount = GetHeroCreatures(hero, types)
AddHeroCreatures(hero, types, amount, i)
end
end
end
end
end
end
Trigger(NEW_DAY_TRIGGER, "incom")
И да, функции есть, но local stack я аннулировал (закомментил?) за ненадобностью.
Низкий поклон Вам, Мудрейший Кудесник! Без готового скрипта я бы ничего не понял, ибо неуч.
И да, функции есть, но local stack я аннулировал (закомментил?) за ненадобностью.
В моем случае чтобы через 14 дней появилась возможность построить Титанов в Академии, при том, что ранее существ 7го уровня построить было нельзя.
P.S. прошу прощения за свой нубский вопрос, но я пересмотрела все предыдущие страницы и такого вопроса и скрипта не нашла.
function NewDay()
if GetDate(DAY) == 14 then
UpgradeTownBuilding("Город", TOWN_BUILDING_DWELLING_7, уровень) --0— не построен, 1 — отстроен, 2 — улучшен
end
end
Trigger(NEW_DAY_TRIGGER, "NewDay")
function NewDay()
if GetDate(DAY) == 14 then
UpgradeTownBuilding("Город", TOWN_BUILDING_DWELLING_7, уровень) --0— не построен, 1 — отстроен, 2 — улучшен
end
end
Trigger(NEW_DAY_TRIGGER, "NewDay")
Доброго времени суток! Может ли кто подсказать такой скрипт, чтобы при захвате города Heaven этот самый город удалялся и вместо него появлялся разрушенный город?
Есть скриптовая команда RazeTown("скриптовое имя города"). С её помощью можно по дефолту разрушать замки людей и демонов. С замками остальных рас надо чуть подшаманить.
Заранее спасибо
function CaptureTown()
RazeTown('ваше имя города')
end
Trigger(OBJECT_CAPTURE_TRIGGER, 'ваше имя города', 'CaptureTown')Все просто: даете в редакторе карт скриптовое имя городу, после в редакторе скриптов пишите что-то вроде такой функции.
Желательно с примерами, а то я мало что пойму без них.
Может ли кто разъяснить мне, как использовать скрипт SetObjectiveState? Многие говорили использовать его, когда я спрашивал, как сделать объект, дающий задание.
Желательно с примерами, а то я мало что пойму без них.
Грубо говоря, скрипт активирует задание, выполняет/проваливает его.
SetObjectiveState("prim1", OBJECTIVE_ACTIVE) -- первый параметр имя задания, второй - статус.
function PRIM3_COMPL()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, '4', nil)
if GetCurrentPlayer()==1 then
SetObjectiveState("prim3", OBJECTIVE_COMPLETED) -- тоже самое, только статус задания другой.
print("32")
end
end
Trigger(REGION_ENTER_AND_STOP_TRIGGER, '4', 'PRIM3_COMPL')
BlueHeavenHero,
OBJECTIVE_ACTIVE - сделать задание активным, т.е. задание можно выполнить и оно станет отображаться для игрока(ков)
OBJECTIVE_COMPLETED - выполнить задание
OBJECTIVE_FAILED - провалить задание
Для разных ситуаций ещё используется статус OBJECTIVE_UNKNOWN. В основном для функции GetObjectiveState, чтобы проверить не выдавалось ли ещё наше задание, иначе говоря не стоит ли у него один из ранее упомянутых статусов.
p.s. Так же могу добавить, что можно в кости "CanUncomplete" заданий поставить вариант "true", и тогда можно будет перезапускать квесты, т.е. выполненные квесты делать снова активными.