green belly, вообще, это не та тема где подобное обсуждается(это ведь, всё-таки, тема конкретно для скриптов), но всё же: в каком плане у тебя не работают боевые скрипты(?) и консоль? Тебе система не даёт файлы игры редактировать?
Про проценты - вообще, с этим не работал, но предположу что раз у нас тут есть вычет 25%, которые не всегда будут целым числом(например, расчет выдаст 0.25, или 0.75), то желательно делать этот расчет так, чтобы всегда оставалось целое число. Например, возьмём команду ceil(n), которая возвращает ближайшее целое число с округлением вверх(чтобы можно было даже 1 юнита этим кодом удалить). Выйдет что-то типа такого:
function procent( heroName )
if heroName == "Alaric" then
RemoveHeroCreatures("Alaric", 110, ceil(0.25*GetHeroCreatures("Alaric", 110)))
RemoveHeroCreatures("Alaric", 111, ceil(0.25*GetHeroCreatures("Alaric", 111)))
RemoveHeroCreatures("Alaric", 112, ceil(0.25*GetHeroCreatures("Alaric", 112)))
end
end
Trigger( PLAYER_ADD_HERO_TRIGGER, PLAYER_2, "procent" )
Аларик каким-либо образом становится синим игроком(либо нанят, либо скриптом перевели), и у него отнимется 25% от его юнитов(если они, предварительно, уже есть в его армии. Иначе скрипт выдаст ошибку на отсутствие таковых). Но это простой код, который будет работать конкретно на этих существ если они уже есть, типа если нам нужно просто ослабить условного "босса" карты. Если тебе нужен прям список существ которых будет резать, еще и ни один раз за сценарий, то лучше сделать массив с id'шниками, который будет прогоняться через for, и там уже вычислять кого можно отнять, а кого нет. Что-то типа такого:
function procent( heroName )
if heroName == "Alaric" then
units = {106, 107, 108, 109, 110, 111, 112} --тут у нас список ID существ, которых будет проверять и удалять. Для теста вписал всех красных юнитов
procent_units = length(units)
for i = 1, procent_units do
ready_to_reduce = GetHeroCreatures( "Alaric", units)
if ready_to_reduce > 0 then
print("Отнимем ", ceil(0.25*GetHeroCreatures( "Alaric", units)) ," из существ ", units)
RemoveHeroCreatures("Alaric", units, ceil(0.25*GetHeroCreatures( "Alaric", units)))
end
sleep(2)
end
end
end
Trigger( PLAYER_ADD_HERO_TRIGGER, PLAYER_2, "procent" )
Получится так, что при даже повторном найме в синего игрока, Аларик будет терять существ. Ну это тебе так, просто для ознакомления, а там уже под себя редактируй :)
По остальному:
1) Думаю, занести всех героев(которых можно нанять в таверне) в резерв, прописать их в массив, рандомно выбрать кого из них заспавнить, а потом вывести всех из резерва. Ну, наверное так можно, правда не знаю как будет работать таверна с такими героями.
2) А что ты прописывал? Статы проверяются через GetHeroStat(heroName, STAT_)
3) Если игра не запускается, скорее всего у тебя настройка текстуры, неподходящая под движок игры. Он банально не может её обработать и падает при запуске. Открой существующую в игре, и сравни со своей. Конкретно, попробуй сохранить с другими параметрами, чтобы размер твоей текстуры стал равен, или очень близок к оригинальной
4) Попробуй поредактировать конфиги заклинания, вдруг ускорится) Только не в оригинальной ресурсной папке, а в своей, типа для мода. Оригинальную data и её пропатченные версии не трогай)
5) Да была инфа по таблицам, или тут или в общих вопросах по редактору. Возможно, в группе Хоттабыча среди документов лежит) Еще вариант - вшит вместе с файлами редактора скриптов(кстати, советую им пользоваться, помогает)