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

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

Аватар пользователя
#4056
Напишите в лс, договоримся)
Подскажу основные части скрипта:
1. Сообщение, выводимое MessageBox с коллбэком - вашей функцией преобразования.
2. Сама функция преобразования состоит из:
- таблицы с соответствиями существ
- удаления существ при помощи RemoveObjectCreatures
- добавления соответствующих существ при помощи AddObjectCreatures.

Попробуйте реализовать сами и, если появятся конкретные вопросы, написать их!
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
#4057
Пока что мне удалось  реализовать данную идею только в ограниченных масштабах, на примере самых нужных существ. Поскольку я плохо разбираюсь в кодинге, мне часто приходится обходить циклы и таблицы стороной, здесь же объем данных таков, что без обхода элементов таблицы циклом не обойтись. Вот что мне не понятно:
1. Помимо составления таблицы для кричей, нужно составить таблицу стоимости преобразования, куда входят золото и другие ресурсы. Как сделать так, чтобы значения из первой таблицы соответствовали значениям из второй таблицы, и объединить это все в рамках цикла? Или есть функция, которая возвращает необходимые ресурсы для покупки кричи? 
2. Как реализовать возможность выбора существа, которое будет получено в результате  преобразования? Была мысль воспользоваться функцией GetObjectArmySlotCreature, но, как потом выяснилось, она не работает на моем exe. 
Словом, мне бы хотелось увидеть работу данного скрипта на примере нескольких существ.
Аватар пользователя
#4058
Во второй таблице ключом будет выступать айди существа, а полями — стоимость преобразования. После выяснения по первой таблице, в какое существо нужно преобразовать (получаем его айди), мы по этому айди находим стоимость преобразования во второй таблице

Если у вас не работает и окно с несколькими вариантами ответа (см. ЧаВо от Jack_of_Shadows), то адекватно реализовать выбор между несколькими вариантами не выйдет
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
#4059
Спасибо за помощь, кое-как разобрался. Возможность выбора существ пришлось реализовать через проверку наличия определенных существ в гарнизоне. Костыль, но работает.
Аватар пользователя
#4060
Привет! С сегодняшнего дня начал делать специализации для своего мода. Реализовал три:
 1. Валерия - получает +1 защиту за каждые два уровня
2. Бертран - ежедневно получает 1 ревнителя веры
3. Дункан - получает артефакты из набора львиная отвага за 6, 10, 16 уровни, а боевой дух существ всегда равен 5.

Хотел сделать Аларика - когда герой учит заклинанме света, получает аналог в магии тьмы, но тщетно...

function AlaricSpec()
if KnownHeroSpell("Alaric", SPELL_HASTE) then
TeachHeroSpell("Alaric", SPELL_SLOW)
end
end 

но не работает (
Модификация "New Era": 2%
Аватар пользователя
#4061
temnyrizar, ну так как триггера на получение спеллов нет, очевидно нужно крутить функцию в цикле в отдельном потоке, со всякими там проверками что герой есть, что выдаётся только один раз. То есть обвес функции гораздо сложнее самой функции и может быть реализован кучей разных способов (например крутить отдельный поток всегда, или только когда данный герой появляется у игрока).
РПГ-сценарий для HoMM5: Путь героя
ЧаВо по созданию карт для HoMM5: ЧаВо
Аватар пользователя
#4062
Нужно написать цикл, который с некоторой периодичностью проверяет наличие заклинания и выдаёт соответствующее:
function AlaricSpec()
while 1 do
if ... then

end
sleep(1)
end
end
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#4063
}{0TT@6bI4
Нужно написать цикл, который с некоторой периодичностью проверяет наличие заклинания и выдаёт соответствующее:
function AlaricSpec()
while 1 do
if ... then

end
sleep(1)
end
end

таак, прогресс пошел... теперь в консоли пишет "Trigger not found", а до этого просто писало, что герой без армии
Модификация "New Era": 2%
Аватар пользователя
#4064
Код, пожалуйста. А то непонятно, как вы написали триггер и причём здесь армия при выдаче заклинаний 😅
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#4066
}{0TT@6bI4
Код, пожалуйста. А то непонятно, как вы написали триггер и причём здесь армия при выдаче заклинаний 😅

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

а в код я просто добавил то, что вы написали...
when i do
мой код
end
sleep (1)
Модификация "New Era": 2%
Аватар пользователя
#4067
Ну, это не ошибка, а предупреждение, которое можно игнорировать.

А по поводу "Trigger not found" — приведите код целиком, пожалуйста. Явно же ошибка связана с триггерами, которых в примере нет.
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#4068
}{0TT@6bI4
Ну, это не ошибка, а предупреждение, которое можно игнорировать.

А по поводу "Trigger not found" — приведите код целиком, пожалуйста. Явно же ошибка связана с триггерами, которых в примере нет.

function AlaricSpec()
  while 1 do
    if KnownHeroSpell("Alaric", SPELL_HASTE) then
TeachHeroSpell("Alaric", SPELL_SLOW)
    end
  sleep(1)
  end
end
Модификация "New Era": 2%
В ответ пользователю temnyrizar
Аватар пользователя
#4069
temnyrizar

function AlaricSpec()
  while 1 do
    if KnownHeroSpell("Alaric", SPELL_HASTE) then
TeachHeroSpell("Alaric", SPELL_SLOW)
    end
  sleep(1)
  end
end

Функция KnowHeroSpell, не Known. Следующий код работает, проверил:
function AlaricSpec()
while 1 do
if KnowHeroSpell("Alaric", SPELL_HASTE) then
TeachHeroSpell("Alaric", SPELL_SLOW)
end
sleep(1)
end
end

startThread(AlaricSpec)

Ошибка "Trigger not found" в консоли к этому коду отношения не имеет. Вероятно, у вас ошибка в триггере где-то ранее, что прерывает дальнейшее выполнение скрипта - в том числе и спецы аларика. Ищите, где вы ошиблись в названии триггера!

С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#4070
}{0TT@6bI4
Функция KnowHeroSpell, не Known. Следующий код работает, проверил:
function AlaricSpec()
while 1 do
if KnowHeroSpell("Alaric", SPELL_HASTE) then
TeachHeroSpell("Alaric", SPELL_SLOW)
end
sleep(1)
end
end

startThread(AlaricSpec)

Ошибка "Trigger not found" в консоли к этому коду отношения не имеет. Вероятно, у вас ошибка в триггере где-то ранее, что прерывает дальнейшее выполнение скрипта - в том числе и спецы аларика. Ищите, где вы ошиблись в названии триггера!



Ошибка появлялась именно тогда, когда в коде была Специализация Аларика! После удаления из кода ошибки не стало. Проверю чуть позже 
Модификация "New Era": 2%
В ответ пользователю temnyrizar
#4071
Привет, скажите пожалуйста а можно ли скриптами заблокировать возможность получить определенный навык или два при взятии навыка?