Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Удачи!
Друзья, доброго времени суток!
Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря". Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных
Не ленитесь, голосуйте в этой теме за тех форумчан, которые по вашему мнению больше всех проявили себя в этом году
По желанию, аргументировать свой выбор можете в теме обсуждения голосования.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
// Ставит вызов функции funcName в AI очередь
// и при ее вызове помещает значения slf & oth
// в глобальные self & other (соотвественно)
func void AI_CallScript(var string funcName, var C_Npc slf, var C_Npc oth)
Код:
func void AI_StartState(var c_npc self, var func what, var int statebehaviour, var string wpname)
Для текста в движке Г2 есть функция AI_PrintScreen.
Если используется Юнион, то лучше, конечно, применять, предоставляемые расширителем возможности, как написали выше. Но можно костылями сделать и без Юнион. В мод-фиксе, например, в очередь AI-функций встраивается использование служебного предмета. А уже при использовании предмета вызывается связанная с ним скриптовая функция.
Да, это знаю, но мне нужна функция Wld_PlayEffect и PrintDialog.
Да и вообще пытаюсь реализовать триалог/квадралог ))
Получаться - получается, только вот текст второго/третьего непися выводится в 4й диалоговый бар(где в smalltalk выводится). Вот и пытаюсь вывести в нормальное диалоговое окно, которое через PrintDialog выводится))
И тут собсно опять вопросы:
Какой шрифт используется в диалогах?
Как сделать перенос строки, если выходит за рамки? "\n" - неканат))
Как сделать вывод в диалоговое окно сразу несколько шрифтов?
Либо все это объединить то: Как ввести второго/третьего непися в режим диалога? Ибо если второй/третий непись стоит руки-в-боки, то у него только челюсть шевелится, как и текст печатается в 4й диалоговый бар...
Кажется, в Юнион есть что-то по этому поводу. Gratt подскажет, наверное.
Думаю, тут правильным способом будет переопределение идентификатора self на того непися, который должен произносить очередную фразу диалога. В этом случае движок будет использовать стандартное окно диалогвых субтитров со стандартным цветом шрифта. И переносить длинный текст будет автоматически. Наверное.
Либо все это объединить то: Как ввести второго/третьего непися в режим диалога? Ибо если второй/третий непись стоит руки-в-боки, то у него только челюсть шевелится, как и текст печатается в 4й диалоговый бар...
instance DIA_Sentenza_test(C_Info)
{
npc = SLD_814_Sentenza;
nr = 1;
condition = DIA_Sentenza_test_Condition;
information = DIA_Sentenza_test_Info;
permanent = TRUE;
description = "asdasd";
};
func int DIA_Sentenza_test_Condition()
{
return TRUE;
};
func void DIA_Sentenza_test_Info()
{
AI_Output(other,self,"DIA_Sentenza_PERM_15_00"); //Эй, как дела?
AI_WaitTillEnd(SLD_817_Soeldner, other);
AI_Output(SLD_817_Soeldner,other,"DIA_Sentenza_PERM_09_01"); //Мало кто заходит сюда, но до последнего времени все они платили мне сбор.
AI_WaitTillEnd(self, SLD_817_Soeldner);
AI_Output(self,other,"DIA_Sentenza_PERM_09_02"); //За исключением тебя.
};
мы сейчас будем играть в слова? или проводить следственный эксперимент? давай доставим авторов в подвалы лубянки и устроим перекрёстный допрос что бы выяснить переписали ли они функцию лего под юнион, или взяли идею из лего и написали на юнион свой код, или они вообще даже не знали о существование такого аналога на лего. можно и паяльник задействовать для получения истины.
MEG@VOLT, попробовал на скриптах. как то мутно получается
Daedalus:
func void DIA_Addon_Martin_MeetingIsRunning_Info_2()
{
Hlp_PrintConsole(Str_Format("DIA_Addon_Martin_MeetingIsRunning_Info_2 self.name=%s",self.name));
AI_StopProcessInfos(self);
// корд начало
var c_npc newnpc;
newnpc = Hlp_GetNpc(SLD_805_Cord);
Npc_ClearAIQueue (newnpc);
B_ClearPerceptions (newnpc);
// вариант1
//AI_ProcessInfos(npc); // не подходит
//AI_Wait(npc,10);
// вариант2
AI_StartState (newnpc, ZS_Talk, 1, ""); //подходит
// диалог
AI_Output(newnpc,hero,"DIA_Addon_Cord_MeetingIsRunning_14_01"); //Ты должен поговорить с Ватрасом...
AI_StopProcessInfos(newnpc);
// корд конец
};
func void DIA_Addon_Martin_MeetingIsRunning_Info()
{
if(DIA_Addon_Martin_MeetingIsRunning_OneTime == FALSE)
{
AI_Output(self,other,"DIA_Addon_Cord_MeetingIsRunning_07_00"); //Итак, ты новенький? Добро пожаловать в Братство, брат по Кольцу.
DIA_Addon_Martin_MeetingIsRunning_OneTime = TRUE;
};
AI_Output(self,other,"DIA_Addon_Cord_MeetingIsRunning_07_01"); //Сначала ты должен сходить к Ватрасу. Возможно, потом у меня найдется для тебя время.
if Npc_IsInCutscene(self)
{
Hlp_PrintConsole(Str_Format("Npc_IsInCutscene [%s]",self.name));
};
AI_StartState (self, DIA_Addon_Martin_MeetingIsRunning_Info_2, 1, "");
};
Не... Это вообще криво получается.
Сначала с одним диалог, он тут же закрывается, начинается с другим диалог.
Тоже самое, как прописать обоим неписям, чтое сли есть инфа от первого, то второй тут же начинает разговор, и так по очереди передергивают друг друга. Выглядит ужасно...
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.