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

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

В ответ пользователю Vladislav A-V
Аватар пользователя
5 лет назад
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). Триггер после функции должен вешаться, а в теле функции обнуляться. У вас все наоборот.
Аватар пользователя
5 лет назад
Всё,сделал как вы оба и советовали,скрипт работает как швейцарские часы:чётко и без сбоев,спасибо большое Хоттабыч и МАстер
В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
}{0TT@6bI4
Какую-нибудь переменную (R) в рандом (random(n)+1, где n — количество вариантов сообщений), ещё нужен массив messages с n элементами — путями к разным сообщениям, а в мессаджбоксе вместо пути к тексту простая конструкция messages[R].
Спасибо)
Аватар пользователя
5 лет назад
Добрый день. Подскажите пожалуйста, хочу реализовать расходы на содержание армии но не знаю как. Не могли бы Вы пожалуйста подсказать, как к примеру сделать чтобы каждый день проверялось колличество крестьян в армии героя и после этого вычиталось по одной монете за каждого. Заранее спасибо.
В ответ пользователю Casesuro
Аватар пользователя
5 лет назад
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")
Однако отобранная за каждого крестьянина монетка будет лишь нивелировать умение Налогоплательщик. Да и в конце хода игрок может сгружать крестьян в лесопилку или куда-то ещй и не платить. Очень хорошо ситсема оплаты войск реализована в Наёмниках, рекомендую посмотреть скрипт этой карты.
Аватар пользователя
5 лет назад
Мне понравился вопрос, так как сам давно мечтаю склепать тру стратегическую карту с зонами контроля, расходами на армию и всем таким (но делать что-то кроме скрипта жутко лень).
В ответ пользователю Ment
Аватар пользователя
5 лет назад
Ment
Мне понравился вопрос, так как сам давно мечтаю склепать тру стратегическую карту с зонами контроля, расходами на армию и всем таким (но делать что-то кроме скрипта жутко лень).

Удачи в любых начинаниях)
Аватар пользователя
5 лет назад
Работал с функцией GetHeroCreaturesType, по идее она должна возвращать таблицу айдишников существ в армии героя, а по факту записывает их в 1 число (например, вместо 138, 72, 73, 0, 0, 0, 0 - 138727300). Переприсваивание в другую переменную возвращаемый пресловутой ф-ей результат, конечно же, не дал результатов, стерев всё число до первого значения (138). В связи с этим вопрос: как мне вычленять эти айдишники?? Заранее спасибо.
В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
}{0TT@6bI4
Работал с функцией GetHeroCreaturesType, по идее она должна возвращать таблицу айдишников существ в армии героя, а по факту записывает их в 1 число (например, вместо 138, 72, 73, 0, 0, 0, 0 - 138727300). Переприсваивание в другую переменную возвращаемый пресловутой ф-ей результат, конечно же, не дал результатов, стерев всё число до первого значения (138). В связи с этим вопрос: как мне вычленять эти айдишники?? Заранее спасибо.

можешь попробовать как-то так:
function pack(...)
return arg
end

id_table = pack(GetHeroCreaturesTypes(hero))
Аватар пользователя
5 лет назад
Спасибо, попробую
В ответ пользователю Gerter
Аватар пользователя
5 лет назад
Gerter

можешь попробовать как-то так:
function pack(...)
return arg
end

id_table = pack(GetHeroCreaturesTypes(hero))
Не помогло...
В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
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, тоже, к слову, должен работать. Если с ним код не функционирует, то ошибка кроется в чем-то другом.
Аватар пользователя
5 лет назад
Спасибо большое. Постоянно забываю про эти функции с возвращаемыми "массивами"... Насчёт скрипта Gerter'a, протестирую ещё раз. Но воспользуюсь Вашим способом)
Аватар пользователя
5 лет назад
где-то в другом месте ошибочка у тебя. Самый банальный тест вполне себе табличку в консоль выводит
function pack(...)
return arg
end

print(pack(GetHeroCreaturesTypes(GetPlayerHeroes(PLAYER_1)[0])))
Аватар пользователя
5 лет назад
Да, уже подтвердил. Не хватает 1 точки в скобках, возможно дело в этом... В любом случае, спасибо и тебе, и RedHeavenHero за помощь. Как обычно я напортачил!

Статистика

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

Сейчас на сайте 8 пользователей 1385 гостей