Герои Меча и Магии 5 - Картостроительство (Редактор карт)В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.
Vladislav A-VДоброго дня,подскажите,пожалуйста,как можно реализовать с помощью скрипта следующую задумку:Имеются 2 второстепенных задания (SO-1),на захват нейтрального города и отображается в задачах первоначально, и (SO-2),на контроль окрестных шахт, которое является скрытным.Цель - сделать задание SO-2 видимым сразу после захвата нейтрального города.Я попытался сделать что то похожее,но получилось-то невразумительное, и можно ли получить ликбез по данной проблеме? function detencion() if GetObjectOwner("Dwarftown")==PLAYER_1 then SetObjectiveVisible("SO-2", bVisible, "nPlayerID = 1") Trigger(OBJECT_CAPTURE_TRIGGER,"Dwarftown1", "detencion") end end Trigger(OBJECT_CAPTURE_TRIGGER, "Dwarftown1", nil)
Почему триггер вешается на объект "Dwarftown1", а на принадлежность игроку проверяется объект "Dwarftown"? И что такое "nPlayerID = 1"? Достаточно просто поставить 1 вместо "nPlayerID = 1", если карта - сингл, или PLAYER_1. Не хватает еще SetObjectiveState("SO-2", 2, 1). Триггер после функции должен вешаться, а в теле функции обнуляться. У вас все наоборот.
}{0TT@6bI4Какую-нибудь переменную (R) в рандом (random(n)+1, где n — количество вариантов сообщений), ещё нужен массив messages с n элементами — путями к разным сообщениям, а в мессаджбоксе вместо пути к тексту простая конструкция messages[R].
Добрый день. Подскажите пожалуйста, хочу реализовать расходы на содержание армии но не знаю как. Не могли бы Вы пожалуйста подсказать, как к примеру сделать чтобы каждый день проверялось колличество крестьян в армии героя и после этого вычиталось по одной монете за каждого. Заранее спасибо.
CasesuroДобрый день. Подскажите пожалуйста, хочу реализовать расходы на содержание армии но не знаю как. Не могли бы Вы пожалуйста подсказать, как к примеру сделать чтобы каждый день проверялось колличество крестьян в армии героя и после этого вычиталось по одной монете за каждого. Заранее спасибо.
function NewDay()
local peas=GetHeroCreatures(имя героя, CREATURE_PEASANT)
local cons=GetHeroCreatures(имя героя, CREATURE_CONSCRIPT)
local landl=GetHeroCreatures(имя героя, CREATURE_LANDLORD)
sleep(1)
if GetPlayerResource(1,6)>(peas+cons+landl) then
SetPlayerResource(1, GOLD, GetPlayerResource-(peas+cons+landl))
else
Ваш код на случай, если у игрока нет денег заплатить за крестьян.
end;
end;
Trigger(NEW_DAY_TRIGGER, "NewDay")
Однако отобранная за каждого крестьянина монетка будет лишь нивелировать умение Налогоплательщик. Да и в конце хода игрок может сгружать крестьян в лесопилку или куда-то ещй и не платить. Очень хорошо ситсема оплаты войск реализована в Наёмниках, рекомендую посмотреть скрипт этой карты.
Мне понравился вопрос, так как сам давно мечтаю склепать тру стратегическую карту с зонами контроля, расходами на армию и всем таким (но делать что-то кроме скрипта жутко лень).
MentМне понравился вопрос, так как сам давно мечтаю склепать тру стратегическую карту с зонами контроля, расходами на армию и всем таким (но делать что-то кроме скрипта жутко лень).
Работал с функцией GetHeroCreaturesType, по идее она должна возвращать таблицу айдишников существ в армии героя, а по факту записывает их в 1 число (например, вместо 138, 72, 73, 0, 0, 0, 0 - 138727300). Переприсваивание в другую переменную возвращаемый пресловутой ф-ей результат, конечно же, не дал результатов, стерев всё число до первого значения (138). В связи с этим вопрос: как мне вычленять эти айдишники?? Заранее спасибо.
}{0TT@6bI4Работал с функцией GetHeroCreaturesType, по идее она должна возвращать таблицу айдишников существ в армии героя, а по факту записывает их в 1 число (например, вместо 138, 72, 73, 0, 0, 0, 0 - 138727300). Переприсваивание в другую переменную возвращаемый пресловутой ф-ей результат, конечно же, не дал результатов, стерев всё число до первого значения (138). В связи с этим вопрос: как мне вычленять эти айдишники?? Заранее спасибо.
можешь попробовать как-то так:
function pack(...)
return arg
end
id_table = pack(GetHeroCreaturesTypes(hero))
GetHeroCreaturesTypes возвращает результат как 7 значений, которым нужны 7 переменных (или поля таблицы). Пример использования ниже:
-- в несколько переменных
local a, b, c, d, e, f, g = GetHeroCreaturesTypes(hero)
-- в таблицу
local t = {}
t[1], t[2], t[3], t[4], t[5], t[6], t[7] = GetHeroCreaturesTypes(hero)
Способ, названный Gerter, тоже, к слову, должен работать. Если с ним код не функционирует, то ошибка кроется в чем-то другом.
Спасибо большое. Постоянно забываю про эти функции с возвращаемыми "массивами"... Насчёт скрипта Gerter'a, протестирую ещё раз. Но воспользуюсь Вашим способом)
Да, уже подтвердил. Не хватает 1 точки в скобках, возможно дело в этом... В любом случае, спасибо и тебе, и RedHeavenHero за помощь. Как обычно я напортачил!