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

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

Аватар пользователя
5 месяцев назад

temnyrizar, можно вот так сделать. Перед функцией впишем переменную с числом, когда функция запустится - она проиграет сцену, выдаст msgbox, квест, а после заполнит переменную числом, с которым эта часть кода функции больше не станет срабатывать т.к. условие не выполняется:

golemhouse_scene = 0

function golemhouse()
if golemhouse_scene == 0 then
StartDialogScene("/DialogScenes/DefiantMage/S1/DialogScene.xdb#xpointer(/DialogScene)");
MessageBox(quest1);
SetObjectiveState("sec1", OBJECTIVE_ACTIVE, p1);
golemhouse_scene = 1
end
local gems = GetPlayerResource(p1, GEM)
if gremlins >= 1000 and gems >= 100 then
QuestionBox(pyramidpath, "yes", "no");
end
end
В ответ пользователю Азгалор
5 месяцев назад
Уважаемые знатоки! Очень нужна Ваша помощь. Я сейчас играю аддон 5 Героев "Трон короля". В какой-то момент я в консоли добавил умение герою командой add_skill 142. Умение "УДАЧЛИВЫЙ ЧАРОДЕЙ" появилось. Сейчас мне нужно забыть это умение и я пытался его скинуть командой unlearn_skill 142, но ничего не выходит. Консоль ругается красным цветом и пишет вот эту дичь:
     Unknown command name "unlearn_skill 142"
     Type "help" to list available commands.
Ввожу "help", выдает вообще что-то непонятное. Я профан в этом деле, но может кто сможет мне помочь разобраться с этой проблемой? Как вообще можно без ментора убрать ненужное умение или навык? Заранее спасибо.
2 месяца назад
Доброго времени!

Возможно ли как-нибудь сделать саморасширяющуюся таблицу, если я изначально не знаю кол-во строк или оно достаточно большое, чтобы объявлять ее целиком в коде строк на 100?
Например:

Table = {};   -- объявляю глобальную переменную как массив (таблицу)

for i = 1, 100 do
    Table["a"] = 'a';
    Table["b"] = i;
    ...
end;

При текущей конструкции игра намертво зависает.
То же самое происходит, если в имеющуюся таблицу попытаться добавить еще одну строку (т.е. получается, что ссылаюсь на несуществующий индекс).

В гайдах по lua присутствуют конструкции, про которые игра вообще не знает!)

Аватар пользователя
2 месяца назад
landw1rt, вестимо можно, попробуй только добавлять по одному измерению за раз, наподобие:

Table = {};

for i = 1, 100 do
    Table= {};
    Table["a"] = 'a';
    Table["b"] = i;
    ...
end
В ответ пользователю Jack_of_shadows
2 месяца назад
Jack_of_shadows
landw1rt, вестимо можно, попробуй только добавлять по одному измерению за раз, наподобие:end

От души!
1 месяц назад
Есть способ вкрыжить в собственные отлетающие от героя сообщения иконки с существами, как это сделано, например, при использовании некромантом поднятия существ после боя с помощью Темной энергии? 
Аватар пользователя
1 месяц назад
К сожалению, нет
Аватар пользователя
13 дней назад
Добрый день, не могу правильно написать скрипт.
Нужно чтобы удалялись все колдуны в армии в размере 25% от их кол-ва у красного тыркающегося игрока, если у синего есть Аларик.
Перебрал миллион вариантов (ставил условие и красному, ставил условие и синему  - код работает супер криво, работает когда только 2 разных существа 2 тира, либо когда 3 существа всех грейдо, выносил запрос на получение кол-ва существ и до if и после и ставил проверку and и проверку >=0, ну просто не хочет работать как надо.
Консоль у меня не включается, не могу проверить, из-за чего ломается.
Боевые скрипты тоже не могу попробовать, код не видит ссылку на него из главенствующего мапскрипт.луа.
Пишу с телефона а не копирую, поэтому только суть кода передам:

напишу пример для колдунов людей, но писал для всех рас

Пробовал так:
if GetObjectOwner ("Alaric") ==2 и проверку ставил >=0 и and и or
then
RemoveHeroCreatures(heroname, 10, 0.25*GetHeroCreatures(heroname, 10))
RemoveHeroCreatures(heroname, 110, 0.25*GetHeroCreatures(heroname, 110))
RemoveHeroCreatures(heroname, 112, 0.25*GetHeroCreatures(heroname, 112))
end и elseif ставил и else ставил, все мимо или криво
триггер для красного

писал триггер и для синего где проверял так:
if heroname alaric
then
for i ,hero in hero1 do
писал запрос на существ здесь и до строчек for i и после
ремув существ(hero, ид, 25% от кол-ва)

и обзывал во всех вариациях например inkviz=getherocreatures(и херонаме и хиро пробовал)

код работает либо на часть существ либо когда есть все 2-3 вида существ, короче прошу помощи.
В ответ пользователю green belly
Аватар пользователя
7 дней назад
green belly, а что у тебя с консолью? Ты пробовал по гайдам из интернета её включить, изменяя файлики в папке с параметрами профиля? И можно подробнее про попытку работать с боевым скриптом? Если, конечно же, для тебя всё это ещё актуально
В ответ пользователю Азгалор
Аватар пользователя
6 дней назад

Азгалор
green belly, а что у тебя с консолью? Ты пробовал по гайдам из интернета её включить, изменяя файлики в папке с параметрами профиля? И можно подробнее про попытку работать с боевым скриптом? Если, конечно же, для тебя всё это ещё актуально
Пробовал и консоль и боевой скрипт, ни то ни другое у меня не работает. Перечитал всевозможные и невозможные гайды и даже самые редкие туториалы, которые нашел в интернете у меня есть.
Я в итоге сделал статичные уничтожения существ, но если не сложно можете подсказать правильный код на проценты, в будущем мне и другим форумчанам точно пригодится. Я абсолютно уверен, что код на этот эффект супер легкий для тех кто шарит.
А еще есть такие вопросы может кто-нибудь знает:
1) Задумка - упрощенный драфт, выпало при старте карты 3-4 случайных героя и ими играешь. Вопрос - как сделать чтобы при старте карты игроку давалось 3-4 случайных героя (включая созданных с нуля) той расы, которую он выбрал в фойе.
Редактор такой возможности не дает, скриптов таких ни в туториалах, ни на просторах инета не нашел.
2) Задумка - спеца героя, которая дает стат герою, если у вражеского героя стат меньше. Аналогично Аларику из сообщения выше - запросить стат героев врага (он там всегда один, но случайный) и если стат моего героя выше тогда уже дальше код простой на повышение стата. Я пробовал - игра вылетает при триггере.
3) Как изменить иконки заклинаний на свои, сам использую мод, кажется, от дреднайта на массовые иконки, я делал аналогично, в том числе создавал новый объект в папке текстуры и прочее со всеми ссылками, итог один - игра не запускается.
4) Как изменить скорость анимации телепортации героя на карте приключений? дюже долгая в клиенте юниверс-мода
5) Как правильно работать с таблицами и с рандомом(). Туториалов по этому хороших нет, есть только примеры с такими буквами айтишными что и на клавиатуре не сыскать, не то что в логике разобраться.
Пример самый банальный
таблица "арты" = {ид1,ид2......ид50}
если имя героя "аларик"
тогда
обучить "аларика" случайному заклинанию из таблицы "арты"
Вот в таком духе, но я даже здесь не могу логику понять, что и куда писать и что откуда будет браться.
P.S. Я давным-давно на форуме спрашивал про скорость отлетающих сообщений в битве, типа "промах", очки крови орков, кол-во убитых существ, кол-во воскрешенных и т.д. - этот параметр в файле autoexec_a2.cfg меняется легко
Аватар пользователя
4 дня назад
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) Да была инфа по таблицам, или тут или в общих вопросах по редактору. Возможно, в группе Хоттабыча среди документов лежит) Еще вариант - вшит вместе с файлами редактора скриптов(кстати, советую им пользоваться, помогает)

Статистика

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

Сейчас на сайте 1 пользователей 1261 гостей