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 и написать нашего НПС. Потом следует прописать
* нашего НПС и файл диалога куда нужно и скомпилить.Вот в принципе и все.
* Желаю Удачи.*/
А можно конкретные примеры привести...?- Есть также функции ехе-шника игры, но там они не представлены т.к. не работают со скриптами напрямую.