Kapitan_Greg
Воин Инноса
- Регистрация
- 19 Окт 2007
- Сообщения
- 351
- Репутация
- 0
Почему не по модему?но не по модему же все это качать
Руссификация занимает не много (если ты об этом)
Почему не по модему?но не по модему же все это качать
На сколько я знаю это все функции используемые в скриптах Готики 1 и 2.Функции, представленные в файле IntFuncGothic2_ru.d программы GothicSourcerV3_14 - это все возможные функции?
Да игру нужно начинать заново.Например, после добавления простейшего квеста какому-нибудь НПСу нужно начинать заново?
Нет ничего не измениться, количество гильдия зашито в двигу игры.1) Как сказал DEDROIT, новую гильдию создать нельзя. Можно заменить ту с именем EMPTY в файле Constants.d
А если изменить значение GUILD_MAX с 66 на 100, что от этого изменится? Можно ли добавить еще гильдий?
В туторе Vam'a об этом подробно описано ;)Также что будет если НПСу присвоить гильдию нечеловеческую, а например GIL_SCAVENGER - к нему будет отношение как к падальщику?
И еще в файле guilds.d у меня матрица из чисел. Где в ней устанавливаются взаимоотношения между гильдиями?
Я так понимаю тутор на WoG'е находится?В туторе Vam'a об этом подробно описано
/* Условие выхода с диалога*/
instance DIA_MyPers_Fox_EXIT(C_Info)
{
npc = NONE_66613_Fox;
nr = 999;
condition = DIA_MyPers_Fox_EXIT_Condition;
information = DIA_MyPers_Fox_EXIT_Info;
permanent = FALSE;
description = Dialog_Ende;
};
func int DIA_MyPers_Fox_EXIT_Condition()
{
return TRUE;
};
func void DIA_MyPers_Fox_EXIT_Info()
{
AI_StopProcessInfos(self);
};
/* Теперь диалог ну и квест заодно*/
instance DIA_MyPers_Fox(C_Info)
{
npc = NONE_66613_Fox;
nr = 1;
condition = DIA_MyPers_Fox_Condition;
information = DIA_MyPers_Fox_Info;
permanent = FALSE;
important = TRUE; /* НПС сам обратится к ГГ*/
};
/* Ниже идет функция условия, то есть в каком случае произойдет диалог.
* Диалог произойдет только в том случае если глава еще не третяя, и ГГ в
* гильдии Наёмников или без гильдии*/
func int DIA_MyPers_Fox_Condition()
{
if(((hero.guild == GIL_NONE) || (hero.guild == GIL_SLD)) && (Kapitel < 3))
{
return TRUE;
};
};
/* Теперь, собственно, начинается сам диалог!*/
func void DIA_MyPers_Fox_Info()
{
/* Так теперь проверяем в какой гильдии наш ГГ.*/
/* Если ГГ без гильдии*/
if (hero.guild == GIL_NONE)
{
AI_Output(self,other,"DIA_MyPers_Fox_pers_00"); //Стой!!! Ага дворняга...Слушай у меня есть для тебя предложение!.
AI_Output(other,self,"DIA_MyPers_Fox_gg_01"); //(громко) ...я не дворняга!
AI_Output(self,other,"DIA_MyPers_Fox_pers_02"); //Заткнись и слушай, судя по твоей одежке, тебе не помешают лишние копейки!
AI_Output(self,other,"DIA_MyPers_Fox_pers_03"); //Так вот, у меня сейчас нет времени, сходи и принеси мне пива, кусок хлеба и окорок.
AI_Output(self,other,"DIA_MyPers_Fox_pers_04"); //Я тебе за это заплачу, только побыстрее, а то я умираю с голода!
}
/* Если ГГ Наёмник, то произойдет вот этот диалог!*/
else if (hero.guild == GIL_SLD)
{
AI_Output(self,other,"DIA_MyPers_Fox_pers_05"); //О...стой, ты Наёмник, да? Послушай хочешь заработать, а? У меня есть для тебя работенка по плечу.
AI_Output(other,self,"DIA_MyPers_Fox_gg_02"); //Я слушаю!
AI_Output(self,other,"DIA_MyPers_Fox_pers_06"); //Есть один человек, который мне мешает, разберись с ним и я тебе хорошо заплачу!
};
/* Теперь я думаю будет уместно дать право ГГ выбирать, что собственно сейчас и сделаю*/
Info_ClearChoices(DIA_MyPers_Fox);
Info_AddChoice(DIA_MyPers_Fox,"Хорошо я сделаю это с удовольствием!",DIA_MyPers_Fox_OK);
Info_AddChoice(DIA_MyPers_Fox,"Ты вообще кто такой проваливай, нечего мне делать больше...",DIA_MyPers_Fox_FUCKOFF);
Info_AddChoice(DIA_MyPers_Fox,"Нет, я спешу!",DIA_MyPers_Fox_NO);
};
/* Теперь пишем что собственно произойдет когда ГГ выберет один из вариантов ответа*/
/* Если ГГ согласился, то есть первый вариант*/
func void DIA_MyPers_Fox_OK()
{
/* Снова делаем проверку на принадлежность к гильдии*/
if (hero.guild == GIL_NONE)
{
AI_Output(other,self,"DIA_MyPers_Fox_OK_gg_00"); //Хорошо,я принесу тебе все что ты хочешь.
AI_Output(self,other,"DIA_MyPers_Fox_OK_pers_01"); //Давай - давай, только побыстрей!
/* Теперь открываем новую миссию и записываем все в дневник!*/
Find_Food = LOG_Running; /*Find_Food надо будет прописать в файл Story_Globals.d в таком виде - var int Find_Food; */
Log_CreateTopic(TOPIC_Food,LOG_MISSION);
Log_SetTopicStatus(TOPIC_Food,LOG_Running);
B_LogEntry(TOPIC_Food,"Я должен принести Фоксу один кусок хлеба, один кусок окорока и пляшку пива!");/* То что будет написано в дневнике.*/
/*Выходим с диалога*/
AI_StopProcessInfos(self);
}
/* Если ГГ Наёмник тогда этот диалог*/
else if (hero.guild == GIL_SLD)
{
AI_Output(other,self,"DIA_MyPers_Fox_OK_gg_01"); //Хорошо, с кем мне нужно "поговорить"?
AI_Output(self,other,"DIA_MyPers_Fox_OK_pers_02"); //Его зовут Пабло, он в городе, патрулирует окресности.
/* Теперь для интереса проверим, знает ли ГГ кто такой Пабло.*/
/* сделать это очень просто, мы проверим общался ли ГГ с ним.*/
/* Если ГГ знает Пабло, то этот диалог*/
if(Npc_KnowsInfo(other,DIA_Pablo_WANTED))
{
AI_Output(other,self,"DIA_MyPers_Fox_OK_gg_02"); //Аааа...это тот мент, да уж он меня тоже хотел поймать...Ладно я разберусь с ним!
}
/* Если нет то отобразится вот этот диалог*/
else
{
AI_Output(other,self,"DIA_MyPers_Fox_OK_gg_03"); //Пабло!?... Кто это...хм...первый раз о нем слышу.Посмотрим что я смогу сделать!
};
/* Как обычно пишем все в дневник и запускаем миссию */
Kill_Pablo = LOG_Running;/*Kill_Pablo надо будет прописать в файл Story_Globals.d в таком виде - var int Kill_Pablo; */
Log_CreateTopic(TOPIC_KillPablo,LOG_MISSION);
Log_SetTopicStatus(TOPIC_KillPablo,LOG_Running);
B_LogEntry(TOPIC_KillPablo,"Я должен разобраться с типом по имени Пабло!");/* То что будет написано в дневнике.*/
/*Выходим с диалога*/
AI_StopProcessInfos(self);
};
};
/* Если ГГ выбрал второй вариант ответа, то есть послал куда подальше этого Фокса=)*/
func void DIA_MyPers_Fox_FUCKOFF()
{
AI_Output(other,self,"DIA_MyPers_Fox_FUCKOFF_gg_00"); //Ты вообще кто такой, проваливай, пока еще не поздно!
/* Снова делаем проверку на принадлежность ГГ к гильдии
* я это делаю ради того, что-бы проверить стоит ли Фоксу проучить ГГ
* за свой длинный язык!*/
/** Так вот если ГГ не в гильдии, тогда...*/
if (hero.guild == GIL_NONE)
{
AI_Output(self,other,"DIA_MyPers_Fox_FUCKOFF_pers_01"); //Ах ты щенок, а иди сюда сейчас я тебе покажу!!!
/* Выходим из диалога*/
AI_StopProcessInfos(self);
/* Фокс атакует ГГ */
B_Attack(self,other,AR_NONE,1);
}
/* Но что если ГГ наёмник?*/
else if (hero.guild == GIL_SLD)
{
/* Проверим насколько хорош ГГ =)*/
/* Здесь я проверяю насколько сильный и ловкий ГГ. Если сила и ловкость ГГ больше-равна 40
* тогда Фокс его не атакует, а если меньше 40 то ГГ попал.*/
if ((hero.attribute[ATR_STRENGTH] >= 40) && (hero.attribute[ATR_DEXTERITY] >= 40))
{
AI_Output(self,other,"DIA_MyPers_Fox_FUCKOFF_pers_02"); //Хм...я вижу ты молодец, не слушаешь кого попало. Так держать!
AI_StopProcessInfos(self);
}
else
{
AI_Output(self,other,"DIA_MyPers_Fox_FUCKOFF_pers_03"); //Ты думаешь что одев доспехи наёмника ты стал сильнее? А может ты их украл?
AI_Output(self,other,"DIA_MyPers_Fox_FUCKOFF_pers_04"); //Хотя нет, такой слабак не мог этого сделать, сейчас я тебя проучу!!!
/* Выходим из диалога*/
AI_StopProcessInfos(self);
/* Фокс атакует ГГ */
B_Attack(self,other,AR_NONE,1);
};
};
};
/* Если ГГ выбрал третий вариант*/
func void DIA_MyPers_Fox_NO()
{
AI_Output(other,self,"DIA_MyPers_Fox_NO_gg_00"); //Нет, у меня просто на это нет времени!
/* Снова проверка*/
if (hero.guild == GIL_NONE)
{
AI_Output(self,other,"DIA_MyPers_Fox_NO_pers_01"); //Тогда ПРОВАЛИВАЙ щенок и не мешай мне!!!
}
else if (hero.guild == GIL_SLD)
{
AI_Output(self,other,"DIA_MyPers_Fox_NO_pers_02"); //Жаль, а мы могли потом сотрудничать.
};
AI_StopProcessInfos(self);
};
/* Далее старанно выполняем возложеную на нас миссию и когда будет все готово приходим к Фоксу*/
instance DIA_MyPers_Fox_Done(C_Info)
{
npc = NONE_66613_Fox;
nr = 2;
condition = DIA_MyPers_Fox_Done_Condition;
information = DIA_MyPers_Fox_Done_Info;
permanent = FALSE;
description = "Вот, я зделал то что ты просил!";
};
func int DIA_MyPers_Fox_Done_Condition()
{
/* Проверяем условие начала диалога, то есть если условия будут выполнены то ГГ сможет
* обратиться к Фоксу, а если нет,...то понятно=)*/
/* Делаем это просто, проверяем взялся ли ГГ выполнять одну из миссий*/
/* Здесь важная деталь я проверяю какая миссия запущена и + выполнено ли условие миссии.
* Npc_IsDead(Pablo) проверка жив ли Пабло. Переменная Pablo описана в файле Npc_Globals.d.
* Еда и другие предметы хранятся в папке Items.*/
if(((Kill_Pablo == LOG_Running) && Npc_IsDead(Pablo)) || ((Find_Food == LOG_Running) && Npc_HasItems(other,ItFo_Bacon) && Npc_HasItems(other,ItFo_Bread) && Npc_HasItems(other,ItFo_Beer)))
{
return TRUE;
};
};
func void DIA_MyPers_Fox_Done_Info()
{
/* Теперь проверяем какую именно миссию дали ГГ */
if (Kill_Pablo == LOG_Running)
{
AI_Output(other,self,"DIA_MyPers_Fox_Done_gg_00"); //Я позаботился о Пабло. Больше он нас не потревожит!
AI_Output(self,other,"DIA_MyPers_Fox_Done_pers_02"); //Очень хорошо, держи свое вознаграждение!
/* Начисляем опыт ГГ*/
B_GivePlayerXP(500);
/* Даем ГГ золото*/
B_GiveInvItems(self,other,ItMi_Gold,300);
/* Записываем в дневник*/
B_LogEntry(TOPIC_KillPablo,"Я разобрался с Пабло, теперь он больше никого не потревожит.");
/* Закрываем топик*/
Log_SetTopicStatus(TOPIC_KillPablo,LOG_SUCCESS);
}
else if (Find_Food == LOG_Running)
{
AI_Output(other,self,"DIA_MyPers_Fox_Done_gg_01"); //Я принес все что ты просил.
AI_Output(self,other,"DIA_MyPers_Fox_Done_pers_03"); //Отлично давай сюда, давно пора.
/* Отдаем Фоксу еду*/
B_GiveInvItems(other,self,ItFo_Beer,1);
B_GiveInvItems(other,self,ItFo_Bread,1);
B_GiveInvItems(other,self,ItFo_Bacon,1);
/* Начисляем опыт ГГ*/
B_GivePlayerXP(150);
/* Даем ГГ золото*/
B_GiveInvItems(self,other,ItMi_Gold,35);
/* Записываем в дневник*/
B_LogEntry(TOPIC_Food,"Я принес все что просил Фокс.");
/* Закрываем топик*/
Log_SetTopicStatus(TOPIC_Food,LOG_SUCCESS);
};
};
/* ТЕПЕРЬ НЕКОТОРЫЕ ПРИМЕЧАНИЯ. Итак для полного счастья нужно в файл LOG_Constants_Yoly.d
* который находится в папке Log_Entries дописать следующее:
* const string TOPIC_Food = "Вещи для Фокса";
* const string TOPIC_KillPablo = "Убить Пабло";
* это заголовки тем в дневнике.
* Ну и конечно самое главное, это добавить такого НПС как Фокс, то есть создать
* файл с именем NONE_66613_Fox.d и написать нашего НПС. Потом следует прописать
* нашего НПС и файл диалога куда нужно и скомпилить.Вот в принципе и все.
* Желаю Удачи.*/
А можно конкретные примеры привести...?- Есть также функции ехе-шника игры, но там они не представлены т.к. не работают со скриптами напрямую.