|
|
19.05.2005, 17:51
|
#363
|
|
Re: Скриптинг в Готике
2Zaraza123:
Вопро такой:когда создаёшь миссию для другого NPC например "Принеси Андре бутылку грога",где и что нужно дописывать в папке Story_Globals.d
|
В последних уроках скриптологии эти файлы подробно разобраны. В Story_Globals.d записываются целочисленные глобальные константы и переменные, которые нужны для диалогов и используются в нескольких разных файлах диалогов, если же ты содаешь свои диалоги в одном файле, то логичнее объявить эти переменные в том же файле. Все строковые константы скриптов размещены в файле Text.d, туда и желательно записывать новые (в твоем примере - это const string GunthersSword). А вообще, неважно где ты всё это разместишь, в новом файле или в любом другом (если объявлено правильно - всё будет работать), просто надо следовать здравому смыслу и логике.
|
|
|
19.05.2005, 18:41
|
#364
|
|
Re: Скриптинг в Готике
Вот мой диалог: instance None_668_Finch_AskForSword (C_INFO) { npc = None_668_Finch; condition = None_668_Finch_AskForSword_Condition; information = None_668_Finch_AskForSword_Info; important = TRUE; permanent = FALSE; description = ""; };
FUNC int None_668_Finch_AskForSword_Condition() { if (hero.level >= 0) { return TRUE; }; return FALSE; };
func void None_668_Finch_AskForSword_Info() { AI_Output ( self, other, "None_668_Finch_AskForSword_Info_8_01"); // Эй, ты занят ?
Info_ClearChoices (None_668_Finch_AskForSword); Info_AddChoice (None_668_Finch_AskForSword, "Нет, а что?", None_668_Finch_AskForSword_Yes); Info_AddChoice (None_668_Finch_AskForSword, "Боюсь, что да", None_668_Finch_AskForSword_No); };
Func void None_668_Finch_AskForSword_No () { AI_Output(other,self, "None_668_Finch_AskForSword_Info_8_02"); // Я занят... AI_Output(self,other, "None_668_Finch_AskForSword_Info_8_03"); //(Перебивает)Ну и вали отсюда... AI_StopProcessInfos (self); }; func void None_666_Zaraza_AskForSword_Yes () { AI_Output(other,self,"None_668_Finch_AskForSword_I nfo_8_04"); // Да,вроде,нет. AI_Output(self,other,"None_668_Finch_AskForSword_I nfo_8_05"); // Тогда принеси мне 'Вино',после я тебя отблагодарю.
Log_CreateTopic (GunthersSword,LOG_MISSION); Log_SetTopicStatus (GunthersSword,LOG_SUCCESS); B_LogEntry(GunthersSword, "Финч попросил меня,достать 'Вино' "); AI_StopProcessInfos (self); };
// ************************ EXIT ************************** instance None_668_Finch_AskForSword_Exit (C_INFO) { npc = None_668_Finch; condition = None_668_Finch_AskForSword_Exit_Condition; information = None_668_Finch_AskForSword_Exit_Info; important = 0; permanent = 1; description = "конец"; };
FUNC int None_668_Finch_AskForSword_Exit_Condition() { return 1; };
FUNC VOID None_668_Finch_AskForSword_Exit_Info() { AI_StopProcessInfos ( self ); };
instance None_668_Finch_BringSword (C_INFO) { npc = None_668_Finch; condition = None_668_Finch_bringSword_Condition; information = None_668_Finch_bringSword_Info; important = FALSE; permanent = TRUE;
description = "Вот, бери его?"; };
FUNC int None_668_Finch_bringSword_Condition() {
if (Npc_KnowsInfo ( hero, None_668_Finch_AskForSword) &! int_GotSword && Npc_HasItems (other, ItFo_Wine) >= 1) { return TRUE; }; return FALSE; };
func void None_668_Finch_bringSword_Info()
{ Info_ClearChoices (None_668_Finch_bringSword);
Info_AddChoice *(None_668_Finch_bringSword, "Я достал Вино, но ты его не получишь", None_668_Finch_bringSword_Yes); Info_AddChoice *(None_668_Finch_bringSword, "Вот он, держи.", None_668_Finch_bringSword_No); }; *
func void None_668_Finch_bringSword_Yes () { AI_Output( other, self, "None_668_Finch_bringSword_Info_8_06"); //Я так не думаю. AI_Output( self, other, "None_668_Finch_bringSword_Info_8_07"); // Тогда получи!?! AI_StopProcessInfos (self); AI_StartState( self, ZS_Attack, 0, ""); };
func void None_668_Finch_bringSword_No () { AI_Output ( other, self, "None_668_Finch_bringSword_Info_8_08"); // Вот, держи. AI_Output ( self, other, "None_668_Finch_bringSword_Info_8_09"); // Великолепно, а это мой подарок тебе - Яблоко.(смеется)
B_LogEntry (GunthersSword, "Отдать Вино");
other.exp = other.exp + 100; other.lp = other.lp + 2; b_giveinvitems(other,self, ItFo_Wine,1); b_giveinvitems(self,other,ItFo_Apple,1); AI_StopProcessInfos (self); После я *прописал в папке Story_Globals следующее: const string GunthersSword = "Принести Финчу ' Вино '"; var int int_GotSword; Где у меня не правильно ,а то спайсер выдаёт ошибку: U:PAR:Redefined identifien:GUNTHERSSWORD(line 26)
|
|
|
19.05.2005, 18:54
|
#366
|
|
Re: Скриптинг в Готике
2Zaraza123:
Где у меня не правильно ,а то спайсер выдаёт ошибку: UAR:Redefined identifien:GUNTHERSSWORD(line 26)
|
У тебя в скриптах два раза объявлено имя GUNTHERSSWORD, просто поищи это имя во всех скриптах и удали ненужную декларацию, если же это имя использовалось ещё до тебя, то поменяй имя своей константы. Декларация имени в скриптах должна быть только одна, надеюсь, это понятно.
|
|
|
19.05.2005, 19:39
|
#368
|
|
Re: Скриптинг в Готике
2ХуулРех:
func void None_666_Zaraza_AskForSword_Yes () - вот здесь исправь 666 на 668,а Zaraza на finch.Вроде все
|
Этот ответ совсем не в тему, компилятор выдает конкретную ошибку: Переопределенный идентификатор:GUNTHERSSWORD, хотя указанная тобой ошибка тоже имеется.
|
|
|
20.05.2005, 18:19
|
#373
|
|
Re: Скриптинг в Готике
2Zaraza123:
Кто-нибудь может привести примеры функций,отвечающие за распорядок дня NPC
|
В Уроках скриптологии подробно рассмотрены все функции распорядка дня НПС, только читай!
|
|
|
20.05.2005, 22:28
|
#375
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2Zaraza123:
как это нужно записть в папке Dialoge и в папке Story_Globals.d?
|
Вовсе не обязательно прописывать миссии именно в папке Dialoge, а переменные для них - в файле Story_Globals.d, так что вопрос не вполне корректен. А вообще, миссия "принести предмет" отличается от миссии "поговорить с Лео" только несколькими функциями, всё остальное делается так же: так же создаётся опция диалога instance *** (c_info) и прочее. Если ты этого не понимаешь, то имхо и объяснение тебе не поможет, т.к. на данный момент, насколько я понял, ты просто можешь копировать чужие скрипты и правильно их компилировать, не шибко понимая как всё это дело работает ::)
|
|
|
23.05.2005, 19:14
|
#378
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Скриптинг в Готике
2Zaraza123: Мой тебе совет, забей ты на это дело. Если не хочешь забивать, то не спрашивай, чем отличается, как, что... 1. Почитай Уроки Vam`а 2. Посмотри оригинальные скрипты, поучись в качестве примера ими. 3. Придумать миссию и пытайся ее реализовать, САМ! Если уж что то совсем нереально, то спроси тут.
Но как ты делаешь, это совсем не то. Смысл, что ты все расспращиваешь у нас, а сам ничего не хочешь учить? Советую или бросить это, или прикладывать хоть какие-нибудь усилия со своей стороны.
|
|
|
24.05.2005, 09:52
|
#382
|
|
Re: Скриптинг в Готике
2TSYLin:
Когда болтают два НПС они всячески жестикулируют руками, это закладывается в скриптах или это стандартные автоматические вещи?
|
В скриптах это нигде не прописывается, является особенностью движка.
|
|
|
24.05.2005, 22:48
|
#385
|
|
Re: Скриптинг в Готике
2francisc:
А время разговора от чего зависит?Как его уменьшить?
|
Не понял, что такое время разговора? Если имеешь в виду время произношения одной фразы, то оно определяется временем воспроизведения файла озвучки.
|
|
|
25.05.2005, 00:57
|
#386
|
|
|
|
|
Регистрация: 15.04.2004
Адрес: Санкт-Петербург
Сообщений: 372
|
|
|
|
|
|
Re: Скриптинг в Готике
2Vam:
Если имеешь в виду время произношения одной фразы, то оно определяется временем воспроизведения файла озвучки.
|
А если его нет, то значением константы VIEW_TIME_PER_CHAR, не так ли? ::)
|
|
|
25.05.2005, 09:50
|
#388
|
|
Re: Скриптинг в Готике
2TycoooN:
А если его нет, то значением константы VIEW_TIME_PER_CHAR, не так ли?
|
Почти верно, VIEW_TIME_PER_CHAR определяет время, требуемое на одну букву субтитров, если они включены, т.е. время вывода на экран текста субтитров. Это время никак не связано с временем произношения, часто наблюдается в игре, субтитров нет или они короткие и окно диалога закрыто, а речь (т.е. сам диалог) продолжается. Вот поэтому я и переспросил, какое же время имеется в виду, первоначальный вопрос francisc'а не совсем корректен. 2Ukur:
void Wld_InsertObject (string name, string point); - разместить в мире визуальный объект name в точке с именем point (может быть как WP, так и FP).***
|
По этой функции я знаю не больше твоего, *** в конце описания говорят, что эта функция не документирована в зарубежных источниках. Как я понимаю, в функцию через параметр name должно передаваться имя Визуального объекта (VOB). VOBы создаются в Спейсере и не являются файлом (это моё предположение, Спейсер практически не знаю). Нужно экспериментировать.
|
|
|
26.05.2005, 12:45
|
#391
|
|
Re: Скриптинг в Готике
2francisc:
Я имел ввиду,время произношения субтитров,в каком файле прописывается VIEW_TIME_PER_CHAR и можно ли ее изменить для конкретного диалога?
|
Файл Constants.d (поиском легко находится), для конкретного диалога изменить нельзя, только для всех сразу.
|
|
|
26.05.2005, 19:41
|
#393
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Скриптинг в Готике
2ХуулРех: Полагаю, что нужно сделать так: 1. В названии текстурки написать вместо visual_skin = 0; сделать visual_skin = 1; 2. Точно название текстурки не помню, но смысл в том, что назвать твою вместо тeкстурку вместо HUM_EBRM2_ARMOR_V0-C.TEX а нужно HUM_EBRM2_ARMOR_V1-C.TEX
|
|
|
27.05.2005, 14:53
|
#395
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Скриптинг в Готике
2ХуулРех: Получается что так. Но я в работе не проверял. Помню на Вики читал кажется.
Добавление от 05/27/05, в 14:13:13 2Vam: Такой к тебе вопрос:
instance *DIA_Mod_Raoul_FightWin(C_Info) { *npc * * * * * * * * *= *Sld_822_Raoul; *nr * * * * * * * * * *= *1; *condition * * *= *DIA_Mod_Raoul_FightWin_Condition; *information *= *DIA_Mod_Raoul_FightWin_Info; *important * * *= *TRUE; };
func *int *DIA_Mod_Raoul_FightWin_Condition() { *if(self.aivar[AIV_LastFightAgainstPlayer] *== *FIGHT_WON) *{ * *return *TRUE; *}; };
func *void *DIA_Mod_Raoul_FightWin_Info() { *AI_Output(self,other,"DIA_Mod_Raoul_FightWin_01_0 0"); *//Ну *как *тебе *мой *меч? * };
Но после боя, диалог не срабатывает, хотя должен. Есть такой же когда НПС проиграл, но все равно ничего не говорит. Может есть какие нибудь предположения?
|
|
|
27.05.2005, 16:12
|
#396
|
|
Re: Скриптинг в Готике
2Killer-XXX:
Но после боя, диалог не срабатывает, хотя должен. Есть такой же когда НПС проиграл, но все равно ничего не говорит. Может есть какие нибудь предположения?
|
Посмотри диалог DIA_Alrik_AfterFight и его функции, там все подробно расписано и достаточно просто, поймешь.
|
|
|
28.05.2005, 18:20
|
#398
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Скриптинг в Готике
2Zaraza123: Как ты ставил своего НПС? Через Спэйсер или через скрипт? Если через Спэйсер, то читай эту тему от начала до конца, найдешь как поставить через скрипт.
2Vam: 1:1 копирую все у Альрика, все равно не говорит. :(
|
|
|
28.05.2005, 23:06
|
#400
|
|
|
|
|
Регистрация: 19.06.2004
Адрес: г. Белая Калитва.
Сообщений: 204
|
|
|
|
|
|
Re: Скриптинг в Готике
2Zaraza123: Для этого нужно скачать на World of Gothic в разделе Editing для Готики 2 архивы с asc броньками для Готики 1, потом прописать их в скриптах брони, и игра откомпилирует asc файл в готический формат, и ты без проблем сможешь использовать их. З.Ы. Попробуй вставить на старый ВП. И проверь, ты правильно его вставил.
|
|
|
Здесь присутствуют: 5 (пользователей: 0 , гостей: 5)
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
|
|
|
Текущее время: 23:35. Часовой пояс GMT +4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|