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

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

Аватар пользователя
6 лет назад
в общем, проблема тут описана /topic/at/1162432/. Там же есть и фикс, но он немного костыльный и "заметный" для игрока
В ответ пользователю Долгий
Аватар пользователя
6 лет назад
Столкнулся с такой проблемой: при выводе TalkBox'а с переменными внутри и менее, чем 5 ответами
TalkBoxForPlayers(PLAYER_1, icon, nil, {text, var1=variable_1, var2=variable_2, var3=variable_3}, nil, nil, 0, title, GetMapDataPath().."ChooseAnswer.txt", 0, GetMapDataPath().."OK.txt");
игра сама добавляет 1 вариант ответа с текстом из основного текста (параметр text).

БЕЗ ПЕРЕМЕННЫХ:



С ПЕРЕМЕННЫМИ:



Если у кого-то есть идеи, как это исправить и отчего сиё произошло, очень был бы рад вас выслушать.
Аватар пользователя
6 лет назад
Добрый день, подскажите пожалуйста, столкнулся с проблемой в данном участке скрипта.

function fb1 ()
RemoveHeroCreatures("RedHeavenHero03",8,20);
sleep(1);
RemoveHeroCreatures("Biara",20,1*D);
sleep(1);
StartDialogScene("/Maps/SingleMissions/Warprolog/StartScene2/DialogScene.xdb#xpointer(/DialogScene)");
sleep(1);
MoveHeroRealTime("Biara", 88, 59, GROUND);
sleep(1);
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "stfb1", "fb1",nil);
end;

Trigger(REGION_ENTER_AND_STOP_TRIGGER, "stfb1", "fb1");

Дело в том, что после того как Биара делает ход, эта самая катсцена StartScene2 играет второй раз, именно в рамках этого триггера. Больше никаких её упоминаний нет. Кто разбирается, подскажите пожалуйста, в чём может быть дело. Всю голову уже сломал.
Аватар пользователя
6 лет назад
Подозреваю, что Биара у вас тоже попадает в регион и запускает триггер по второй, а отключить вы его не успели, так как sleep. Попробуйте так:

function fb1 ()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "stfb1", "fb1",nil);
RemoveHeroCreatures("RedHeavenHero03",8,20);
sleep(1);
RemoveHeroCreatures("Biara",20,1*D);
sleep(1);
StartDialogScene("/Maps/SingleMissions/Warprolog/StartScene2/DialogScene.xdb#xpointer(/DialogScene)");
sleep(1);
MoveHeroRealTime("Biara", 88, 59, GROUND);
sleep(1);
end;

Trigger(REGION_ENTER_AND_STOP_TRIGGER, "stfb1", "fb1");
В ответ пользователю Рыцарь Бездны
Аватар пользователя
6 лет назад
Рыцарь Бездны
Добрый день, подскажите пожалуйста, столкнулся с проблемой в данном участке скрипта.

function fb1 ()
RemoveHeroCreatures("RedHeavenHero03",8,20);
sleep(1);
RemoveHeroCreatures("Biara",20,1*D);
sleep(1);
StartDialogScene("/Maps/SingleMissions/Warprolog/StartScene2/DialogScene.xdb#xpointer(/DialogScene)");
sleep(1);
MoveHeroRealTime("Biara", 88, 59, GROUND);
sleep(1);
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "stfb1","fb1",nil);
end;

Trigger(REGION_ENTER_AND_STOP_TRIGGER, "stfb1", "fb1");

Дело в том, что после того как Биара делает ход, эта самая катсцена StartScene2 играет второй раз, именно в рамках этого триггера. Больше никаких её упоминаний нет. Кто разбирается, подскажите пожалуйста, в чём может быть дело. Всю голову уже сломал.

Как минимум выделенный красным участок кусок кода не нужен. И зануление триггера лучше производить перед другими операциями.
Аватар пользователя
6 лет назад
Спасибо! Удалось разобраться с проблемой, но теперь возникла новая. Пытаюсь сделать смену освещения каждый игровой день.

function Sutki()

if GetDate(DAY_OF_WEEK)==1 then
SetAmbientLight(0,"d1",true, 5);
end;
if GetDate(DAY_OF_WEEK)==2 then
SetAmbientLight(0,"d2",true, 5);
end;
if GetDate(DAY_OF_WEEK)==3 then
SetAmbientLight(0,"d3",true, 5);
end;
if GetDate(DAY_OF_WEEK)==4 then
SetAmbientLight(0,"d4",true, 5);
end;
if GetDate(DAY_OF_WEEK)==5 then
SetAmbientLight(0,"d5",true, 5);
end;
if GetDate(DAY_OF_WEEK)==6 then
SetAmbientLight(0,"d6",true, 5);
end;
if GetDate(DAY_OF_WEEK)==7 then
SetAmbientLight(0,"d7",true, 5);
end;
end;


Trigger(NEW_DAY_TRIGGER, "Sutki");

И дело в том, что игра никак не реагирует на это всё, освещение как было в первый день, таким и остаётся всю неделю. Причём консоль молчит, вообще никаких признаков ошибки, а ничего не происходит. Изначально делал всё по примеру товарища Хоттабыча, который был несколько страниц выше, но тогда консоль ругалась на неправильное значение аргумента 1, потом я пошёл посмотреть как это сделали разработчики в пятой мисии за Арантира. Там обнаружил что перед названием освящения у них стоит 0, поставил его и себе. Консоль перестала ругаться но ничего так и не заработало. Уже не знаю как быть. True поставил по примеру разработчиков, заменить его на GROUND по примеру Хоттабыча пробовал, никакой разницы, консоль молчит в обоих случаях. InterlalName освещений указан верно, сами освещения продублировались в файлы карты.Но всё как не работало так и не хочет. Подскажите пожалуйста в чём может быть причина.
Аватар пользователя
6 лет назад
Поищите в скрипте моей карты "Руны в хорошие руки" строчки SetAmbientLight, у меня работало
В ответ пользователю }{0TT@6bI4
Аватар пользователя
6 лет назад
}{0TT@6bI4
Поищите в скрипте моей карты "Руны в хорошие руки" строчки SetAmbientLight, у меня работало

Что странно, делаю как у Вас а все равно ничего не происходит, и консоль всё так же молчит. Прямо таки не знаю что думать :o Даже просто одиночный SetAmbietLight вне триггера не меняет ситуацию. Надо будет на отдельной карте ещё попробовать, может тут чего испортил) В любом случае огромное Вам спасибо за совет!
Аватар пользователя
6 лет назад
Кстати, забыл сказать: эта подсветка должна быть в списке Ground/UnderGroundAmbientLights в Map Properties Tree. В Рунах строчка SetAmbientLight(GROUND, "NecromancyFog", true, 3) работала, значит дело в пункте выше.
В ответ пользователю }{0TT@6bI4
Аватар пользователя
6 лет назад
}{0TT@6bI4
Кстати, забыл сказать: эта подсветка должна быть в списке Ground/UnderGroundAmbientLights в Map Properties Tree. В Рунах строчка SetAmbientLight(GROUND, "NecromancyFog", true, 3) работала, значит дело в пункте выше.

Заработало! Вы были правы, добавил несколько дополнительных строчек в GroundAmbientLight, прописал в них все желаемые подсветки и всё стало работать. Немного проседает фпс на время смены подсветки, но дело стоит того, локация прям играет новыми красками со всем этим делом)
Аватар пользователя
6 лет назад
Обращайтесь) Кстати, если 3 параметр поменяете с true на false, то проседание по фпс должно упасть до минимума
Аватар пользователя
6 лет назад
Спасибо, обязательно сделаю это) А ещё такой вопрос, не мог ли бы кто-нибудь скинуть пример скрипта StartCombat, где в противниках к примеру условный стек ополченцев и ещё один стек лучников, каждый по 10 бойцов А то StartCombat на существо одного типа получается написать, а полноценную армию из разных юнитов не могу добавить, не понимаю какие переменные следует писать для второго стека, а на живом примере было бы проще понять) Заранее спасибо.
В ответ пользователю Рыцарь Бездны
Аватар пользователя
6 лет назад
Рыцарь Бездны
Спасибо, обязательно сделаю это) А ещё такой вопрос, не мог ли бы кто-нибудь скинуть пример скрипта StartCombat, где в противниках к примеру условный стек ополченцев и ещё один стек лучников, каждый по 10 бойцов А то StartCombat на существо одного типа получается написать, а полноценную армию из разных юнитов не могу добавить, не понимаю какие переменные следует писать для второго стека, а на живом примере было бы проще понять) Заранее спасибо.

число стеков задается третьим параметром в StartCombat, после него следуют пары [id_существа - число существ в стеке], число этих пар соответственно равно числу стеков. Т.е. для описанного случая функция будет примерно такой:
StartCombat('имя_героя', nil, 2, CREATURE_MILITIAMAN, 10, CREATURE_ARCHER, 10)
В ответ пользователю Gerter
Аватар пользователя
5 лет назад
Добрый день, консоль пишет (Script) ERROR: "="expected
Сам скрипт выглядит так:

* Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'mavzolei', 'grobniza');
function grobniza(hero)
if GetObjectOwner(hero)==PLAYER_1 and hero=="Brem" then
MessageBox(path.."mavzolei-boi.txt");
sleep (5);
StartCombat("Brem", nil, 5, 4, 40, 12, 4, 10, 1, 12, 4, 4, 40, nil);
sleep (5);
MessageBox(path.."mavzolei-poisk.txt");
void GiveArtefact("Brem", 13, nBindToHero=0);
Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'mavzolei', nil);
end;
end;

В чем здесь ошибка?

Статистика

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

Сейчас на сайте 9 пользователей 1304 гостей