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

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

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

Попробуйте реализовать сами и, если появятся конкретные вопросы, написать их!
В ответ пользователю }{0TT@6bI4
1 год назад
Пока что мне удалось  реализовать данную идею только в ограниченных масштабах, на примере самых нужных существ. Поскольку я плохо разбираюсь в кодинге, мне часто приходится обходить циклы и таблицы стороной, здесь же объем данных таков, что без обхода элементов таблицы циклом не обойтись. Вот что мне не понятно:
1. Помимо составления таблицы для кричей, нужно составить таблицу стоимости преобразования, куда входят золото и другие ресурсы. Как сделать так, чтобы значения из первой таблицы соответствовали значениям из второй таблицы, и объединить это все в рамках цикла? Или есть функция, которая возвращает необходимые ресурсы для покупки кричи? 
2. Как реализовать возможность выбора существа, которое будет получено в результате  преобразования? Была мысль воспользоваться функцией GetObjectArmySlotCreature, но, как потом выяснилось, она не работает на моем exe. 
Словом, мне бы хотелось увидеть работу данного скрипта на примере нескольких существ.
Аватар пользователя
1 год назад
Во второй таблице ключом будет выступать айди существа, а полями — стоимость преобразования. После выяснения по первой таблице, в какое существо нужно преобразовать (получаем его айди), мы по этому айди находим стоимость преобразования во второй таблице

Если у вас не работает и окно с несколькими вариантами ответа (см. ЧаВо от Jack_of_Shadows), то адекватно реализовать выбор между несколькими вариантами не выйдет
В ответ пользователю }{0TT@6bI4
1 год назад
Спасибо за помощь, кое-как разобрался. Возможность выбора существ пришлось реализовать через проверку наличия определенных существ в гарнизоне. Костыль, но работает.
Аватар пользователя
9 месяцев назад
Привет! С сегодняшнего дня начал делать специализации для своего мода. Реализовал три:
 1. Валерия - получает +1 защиту за каждые два уровня
2. Бертран - ежедневно получает 1 ревнителя веры
3. Дункан - получает артефакты из набора львиная отвага за 6, 10, 16 уровни, а боевой дух существ всегда равен 5.

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

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

но не работает (
Аватар пользователя
9 месяцев назад
temnyrizar, ну так как триггера на получение спеллов нет, очевидно нужно крутить функцию в цикле в отдельном потоке, со всякими там проверками что герой есть, что выдаётся только один раз. То есть обвес функции гораздо сложнее самой функции и может быть реализован кучей разных способов (например крутить отдельный поток всегда, или только когда данный герой появляется у игрока).
Аватар пользователя
9 месяцев назад
Нужно написать цикл, который с некоторой периодичностью проверяет наличие заклинания и выдаёт соответствующее:
function AlaricSpec()
while 1 do
if ... then

end
sleep(1)
end
end
В ответ пользователю }{0TT@6bI4
Аватар пользователя
9 месяцев назад
}{0TT@6bI4
Нужно написать цикл, который с некоторой периодичностью проверяет наличие заклинания и выдаёт соответствующее:
function AlaricSpec()
while 1 do
if ... then

end
sleep(1)
end
end

таак, прогресс пошел... теперь в консоли пишет "Trigger not found", а до этого просто писало, что герой без армии
Аватар пользователя
9 месяцев назад
Код, пожалуйста. А то непонятно, как вы написали триггер и причём здесь армия при выдаче заклинаний 😅
В ответ пользователю }{0TT@6bI4
Аватар пользователя
9 месяцев назад
}{0TT@6bI4
Код, пожалуйста. А то непонятно, как вы написали триггер и причём здесь армия при выдаче заклинаний ?

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

а в код я просто добавил то, что вы написали...
when i do
мой код
end
sleep (1)
Аватар пользователя
9 месяцев назад
Ну, это не ошибка, а предупреждение, которое можно игнорировать.

А по поводу "Trigger not found" — приведите код целиком, пожалуйста. Явно же ошибка связана с триггерами, которых в примере нет.
В ответ пользователю }{0TT@6bI4
Аватар пользователя
9 месяцев назад
}{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
В ответ пользователю temnyrizar
Аватар пользователя
9 месяцев назад
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
Аватар пользователя
9 месяцев назад
}{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" в консоли к этому коду отношения не имеет. Вероятно, у вас ошибка в триггере где-то ранее, что прерывает дальнейшее выполнение скрипта - в том числе и спецы аларика. Ищите, где вы ошиблись в названии триггера!



Ошибка появлялась именно тогда, когда в коде была Специализация Аларика! После удаления из кода ошибки не стало. Проверю чуть позже 
В ответ пользователю temnyrizar
8 месяцев назад
Привет, скажите пожалуйста а можно ли скриптами заблокировать возможность получить определенный навык или два при взятии навыка?

Статистика

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