PDA

Просмотр полной версии : М: Скриптинг в Готике


Страницы : [1] 2 3 4 5 6 7 8 9 10 11

BORISOFF
06.01.2005, 20:47
Создаю тему для обсуждения скриптов в играх любимой нами серии Gothic. Собственно создаю эту тему по следующим причинам:<br>1. актуальность темы в связи с широким распространением декомпилятора Vam`а;<br>2. в данный момент многие из форумцев изучают скрипты (Я, francisc, Alexus_G, Killer-XXX и д.р.), и я думаю - тема очень даже пригодится;<br>3. невозможность обсуждения в других темах;<br><br>Мой вопрос состоит вот в чем. Я создал скрипт по котрому непись показывает дорогу в СЛ. Вот он:<br><br>instance GOTO_PAL_OC(C_Info)<br>{<br> * * *npc = pal_5000_agafon;<br> * * *nr = 2;<br> * * *condition = goto_pal_oc_condition;<br> * * *information = goto_pal_oc_info;<br> * * *important = 0;<br> * * *permanent = 0;<br> * * *description = &quot;Ты можешь отвести меня в Старый лагерь?&quot;;<br>};<br><br><br>func int goto_pal_oc_condition()<br>{<br> * * * * *if(Npc_KnowsInfo(hero,info_pal_info))<br> * * *{<br> * * * * * *self.flags = 0;<br> * * * * * *return 1;<br> * * *};<br>};<br><br>func void goto_pal_oc_info()<br>{<br> * * *AI_Output(hero,self,&quot;goto_pal_oc1&quot;); * * *//Ты можешь показать мне дорогу в Старый лагерь?<br> * * *AI_Output(self,hero,&quot;goto_pal_oc2&quot;); * * *//Конечно! Идем.<br> * * *AI_StopProcessInfos(self);<br> * * *Npc_SetPermAttitude(self,ATT_FRIENDLY);<br> * * *Npc_ExchangeRoutine(self,&quot;GUIDE&quot;);<br>};<br><br><br>instance GOTO_PAL_INOC(C_Info)<br>{<br> * * *npc = pal_5000_agafon;<br> * * *condition = goto_pal_inoc_condition;<br> * * *information = goto_pal_inoc_info;<br> * * *important = 1;<br> * * *permanent = 0;<br>};<br><br><br>func int goto_pal_inoc_condition()<br>{<br> * * *if(Npc_KnowsInfo(hero,goto_pal_oc) &amp;&amp; Hlp_StrCmp(Npc_GetNearestWP(self),&quot;OC1&quot;))<br> * * *{<br> * * * * * *self.flags = 0;<br> * * * * * *return 1;<br> * * *};<br>};<br><br>func void goto_pal_inoc_info()<br>{<br> * * * *AI_Output(self,hero,&quot;goto_pal_inoc_1&quot;); * * *//Ну, вот мы и пришли. прямо перед тобой находится старый лагерь. Впечатляет?<br> * * *AI_Output(hero,self,&quot;goto_pal_inoc_10&quot;); * * *//Еще бы!<br> * * *AI_Output(self,hero,&quot;goto_pal_inoc_2&quot;); * * *//Ну так заходи, но будь осторожен!<br> * * *AI_Output(hero,self,&quot;goto_pal_inoc_3&quot;); * * *//Что мне нужно знать?<br> * * *AI_Output(self,hero,&quot;goto_pal_inoc_grd&quot;); * * *//Если сдешняя стража скажет тебе заплатить за защиту, лучше подчиниться, потом будешь рад, что заплатил<br> * * *AI_Output(hero,self,&quot;goto_pal_inoc_grd2&quot;); * * *//Спасибо за совет!<br> * * *AI_Output(self,hero,&quot;goto_pal_inoc_end&quot;); * * *//Удачи! Я возвращаюсь к метсу обмена. Если тебе что-нибудь понадобится, ты можешь найти меня там.<br> * * *AI_StopProcessInfos(self);<br> * * *Npc_ExchangeRoutine(self,&quot;PRESTART&quot;);<br>};<br><br><br>Непись как и нужно, отправляется в СЛ, ждет ГГ, если тот отстал. но есть одна поблема - экспа за убитых им зверей не начисляется. я сравнивал со скриптами Мордрага - вроде все также. Так как прописать, чтобы начислялась экспа?

Killer-XXX
06.01.2005, 22:27
2Borisoff:<br>Наверна, тогда тебя еще не было на форуме, но тема то уже поднималась,вот (http://forums.gothic.ag/showthread.php?&amp;s=25&amp;t=1098161614).<br>А вообще, мне кажется, что эту тему бы неплохо было прикрепить.

finch
07.01.2005, 00:12
2Borisoff: Так как прописать, чтобы начислялась экспа?<br>pal_5000_agafon.aivar[AIV_PARTYMEMBER] = TRUE;

dftool
07.01.2005, 14:42
Какой признак отвечает за то кто враг, а кто друг. Если я хочу двух НПСов рядом поставить, и чтоб они начали сражаться когда я с кемнибудь из них поговорю.<br>А еще как в скриптах написано, появление монстров в разных главах.<br>

TycoooN
07.01.2005, 15:09
2dftool: <br>Какой признак отвечает за то кто враг, а кто друг<br>Гильдия.<br><br>А еще как в скриптах написано, появление монстров в разных главах.<br>В папке SCRIPTS/CONTENT/STORY/B_STORY/<br>файлы B_Enter_AddonWorld.d, B_Enter_DragonIsland.d, B_Enter_NewWorld.d и B_Enter_OldWorld.d<br>Кажется, так ::)

Alexus_G
07.01.2005, 19:08
Некоторым я уже задавал этот вопрос в приват, но если кто знает, ответьте пожалуйста:<br>NPC, которого я хочу вставить в игру, ни в какую не хочет появляться на карте сам. Если вставлять через консоль, то все нормально. В файлах Story NPC_Globals.d и Startup.d все прописано. Waypoint, на котором должен появляться персонаж тоже существует.

TycoooN
07.01.2005, 19:27
2Alexus_G: <br>Странно... покажи файлы НПС, что ли... ::)

Alexus_G
07.01.2005, 20:55
2TycoooN: Вот, еще раз все проверил, и все равно сам не появляется: <br>Файл none_668_Alexus.d:<br><br>instance none_668_Alexus (Npc_Default)<br>{<br> &nbsp; &nbsp; &nbsp;// ------ NSC ------<br> &nbsp; &nbsp; &nbsp;name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= &quot;Alexus&quot;;<br> &nbsp; &nbsp; &nbsp;guild &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= GIL_none;<br> &nbsp; &nbsp; &nbsp;id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 668;<br> &nbsp; &nbsp; &nbsp;voice &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 13;<br> &nbsp; &nbsp; &nbsp;flags &nbsp; &nbsp; &nbsp; = 0;<br> &nbsp; &nbsp; &nbsp;npctype &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= NPCTYPE_MAIN;<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;// ------ Attribute ------<br> &nbsp; &nbsp; &nbsp;B_SetAttributesToChapter (self, 1);<br><br> &nbsp; &nbsp; &nbsp;// ------ Kampf-Taktik ------<br> &nbsp; &nbsp; &nbsp;fight_tactic &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FAI_HUMAN_NORMAL;<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;// ------ Equippte Waffen ------ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;EquipItem &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(self, ItMw_1h_Sld_Axe);<br> &nbsp; &nbsp; &nbsp;EquipItem &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(self, ItRw_Sld_Bow);<br> &nbsp; &nbsp; &nbsp;CreateInvItems &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(self, ItRw_Arrow, 10);<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;// ------ Inventory ------<br> &nbsp; &nbsp; &nbsp;B_CreateAmbientInv &nbsp; &nbsp; &nbsp;(self);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;// ------ visuals ------ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;B_SetNpcVisual &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(self, MALE, &quot;Hum_Head_FatBald&quot;, Face_N_Drax, BodyTex_N, ITAR_SLD_L); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;Mdl_SetModelFatness &nbsp; &nbsp; &nbsp;(self, 0);<br> &nbsp; &nbsp; &nbsp;Mdl_ApplyOverlayMds &nbsp; &nbsp; &nbsp;(self, &quot;Humans_Relaxed.mds&quot;);<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;// ------ NSC-relevante Talente vergeben ------<br> &nbsp; &nbsp; &nbsp;B_GiveNpcTalents (self);<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;// ------ Kampf-Talente ------ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;B_SetFightSkills (self, 30);<br><br> &nbsp; &nbsp; &nbsp;// ------ TA anmelden ------<br> &nbsp; &nbsp; &nbsp;daily_routine &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Rtn_Start_668;<br>};<br><br>FUNC VOID Rtn_Start_668 ()<br>{<br> &nbsp; &nbsp; &nbsp;TA_Stand_Eating &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(07,00,21,00,&quot;NW_BIGFARM_HUT_02&quot;);//оба Waypoint'а существуют, связаны Waynet'ом<br> &nbsp; &nbsp; &nbsp;TA_Stand_ArmsCrossed &nbsp; &nbsp; &nbsp;(21,00,07,00,&quot;NW_BIGFARM_HUT_05&quot;);//и находятся недалеко друг от друга: рядом с Бастером<br>};<br><br>В файле Story NPC_Globals.d:<br>var C_NPC Alexus;<br>Alexus &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= hlp_GetNpc (none_668_Alexus);<br><br>В файле Startup.d:<br>Wld_InsertNpc &nbsp; &nbsp; &nbsp;(none_668_Alexus, &nbsp; &nbsp; &nbsp;&quot;BIGFARM&quot;);<br><br>Каждая строчка в последних двух файлах прописана после соответствующей строчки Бастера.<br><br>Кстати, забыл написать: Такая проблема у меня тогда, когда пытаешься вставить кого-то на уже готовую карту (Newworld, в моем случае). Если же я вставляю персонажа в свою собственную карту, то, как ни странно, все работает.

finch
08.01.2005, 00:23
2Alexus_G: Попробуй в файле startup.d вместо <br>Wld_InsertNpc &nbsp; &nbsp; &nbsp;(none_668_Alexus, &nbsp; &nbsp; &nbsp;&quot;BIGFARM&quot;);<br> <br>прописать строку <br>Wld_InsertNpc &nbsp; &nbsp; &nbsp;(none_668_Alexus, &quot;NW_BIGFARM_HUT_02&quot;);<br><br><br>По идее, должно сработать, т.к. ошибок в скриптах я, например, не вижу.

TycoooN
08.01.2005, 00:28
Wld_InsertNpc * * *(none_668_Alexus, &quot;NW_BIGFARM_HUT_02&quot;);<br>Можно и <br>Wld_InsertNpc * * *(Alexus, &quot;NW_BIGFARM_HUT_02&quot;); <br>раз уж ты прописал, что var C_NPC Alexus;<br>Alexus * * * * * * * * *= hlp_GetNpc (none_668_Alexus);

Alexus_G
08.01.2005, 01:02
2TycoooN: 2finch: Попробовал вместо Bigfarm прописать полное имя waypoint'а. Все равно не появляется. Я, кстати, и раньше пробовал так делать.<br>Я уверен, что дела в какой-нибудь мелочи, о которой даже упоминать-то не стоит, но которую я по своей невнимательности пропустил.<br>А что вы думаете по поводу того, что на созданной мной карте все работает как надо? Чем она отличается от готовой?

francisc
08.01.2005, 10:51
У меня такая же проблема.НПС не появляется на созданном мной вуапоинте,а появляется толко на уже сушествуюшим в игре.<br>Объясните как создавать вуапоинты,может я чего не так делаю.

TycoooN
10.01.2005, 13:06
2Fatalick: <br>Отвечаю в этой теме.<br><br>Да, я хотел сказать как сделать отдельный запуск через GothicStarter?<br>Что там с ini-файлами делать?<br>Заходишь в папку игры system/ и видишь там файл GothicGame.ini, создаешь его копию и переименовываешь её из GothicGame.ini в Mymod.ini (например). Далее, открываешь этот файл Mymod.ini и меняешь в нем строку VDF=GothicGame.mod на vdf=&lt;mod-файлы твоего мода&gt;. *Они должны лежать в папке игры data/modvdf.<br>Можно также изменить графы Title=, Version=, Authors=, Webpage=, Description=, Icon=, но это по желанию - это всё отвечает за текст, который будет отображаться при выборе мода в GothicStarter'e<br><br>Если что не понятно - спрашивай ещё :)

francisc
10.01.2005, 17:19
Такой вопрос,у меня в моем моде не появляются диалоги.<br>При начале диалога есть только тема,когда ее нажиаешь,диалога не происходит,пресы не говорят,потом показывается меню с надписью енд.<br>Это для г2.<br>

Alexus_G
10.01.2005, 19:49
2francisc: Скорее всего твои диалоги не заносятся в файл OU.csl. Об этом уже писали ранее. Я лично делал так:<br>1. Компилирую Gothic.dat. Все новые диалоги при этом заносятся в файл Ouinfo.inf<br>2. Открываю панель Output-Units и нажимаю Update. Затем Save.<br>И у меня все работало.<br><br>Вопрос ко всем:<br>За то, чтобы персонажи появлялись в игре отвечает файл Startup.d?<br>Если удалить из него кого-либо, то он в игре не должен появляться?<br>А у меня все равно появляется! Так же, и когда добавляешь в него что-то. Такое ощущение, что игра не видит этот файл. Подскажите, пожалуйста, кто знает, в чем дело.

francisc
10.01.2005, 20:25
2Alexus_G: <br>Его видит спайсер когда компилирует датинк.Ты попробуй удалить датник и компилировать новый.А ты НПС_глобл удалил записи?

finch
11.01.2005, 00:32
2francisc: А ты НПС_глобл удалил записи?<br><br>NPC_Global не отвечает за появление НПС!<br><br>Подскажите, пожалуйста, кто знает, в чем дело.<br><br>Попробуй удалить всех НПС из Стартапа. Если все равно НПС будут появляться, значит, у тебя спейсер перестал компилировать..

PA
11.01.2005, 01:53
2finch:<br>Попробуй удалить всех НПС из Стартапа. Если все равно НПС будут появляться, значит, у тебя спейсер перестал компилировать..<br><br>Самое интересное, что сперва можно и не компилировать, а оставить все в исходниках. Кто установил полный Кит меня поймет и изменеиия вступают в силу после того как удалишь файл VDFS.DMP - игра при запуске построит новый VDFS.DMP с учетом твоих исправлений - типа добавленных неписей и т.д.<br>А когда все скрипты отладишь, только тогда и компилируй...<br>

TycoooN
11.01.2005, 11:16
2Pa: <br>Самое интересное, что сперва можно и не компилировать, а оставить все в исходниках. Кто установил полный Кит меня поймет и изменеиия вступают в силу после того как удалишь файл VDFS.DMP - игра при запуске построит новый VDFS.DMP с учетом твоих исправлений - типа добавленных неписей и т.д.<br>А когда все скрипты отладишь, только тогда и компилируй...<br>Имхо скрипты надо компилировать прогой от Vam'a. С ней уж точно не будет никаких проблем - сунул новые gothic.dat и ou.bin - и всё работает :D :D :D

Fatalick
11.01.2005, 17:54
2TycoooN: <br>А чем открыть/создать .mod файл?

BORISOFF
11.01.2005, 17:56
2Fatalick: прошу в World of Gothic FAQ. там все основные проги расписаны, найдешь ;)

Alexus_G
11.01.2005, 18:50
2finch: Пробовал удалять из Startup'а всех, точнее многих. Все равно появляются. А Spacer компилирует! Я когда созданный им Gothic.dat декомпилирую прогой Vam'а, там все так, как и должно быть. Такое ощущение, что игра вообще не смотрит именно на Startup, а берет информацию о вставке из какого-то другого места.<br><br>2Pa: Что-то я не очень понял, что ты имеешь в виду. Как это не надо компилировать. VDFS.dmp по-моему за другое отвечает. Но в любом случае, я пробовал его удалять.

Mitrich
11.01.2005, 20:31
2Pa: Кто установил полный Кит меня поймет Я установил, но не понял. :) Т.е. ты предлагешь не компилировать скрипты в Спейсере, а просто прописывать НПС во всех нужных файлах и удалять VDFS.DMP? За что же, интересно, тогда отвечает этот файл?

Mitrich
11.01.2005, 20:37
2Alexus_G: Я когда созданный им Gothic.dat декомпилирую прогой Vam'а, там все так, как и должно быть. Не совсем понятно, что должно быть &quot;как и&quot;. По идее, если Спейсер перестал компилировать, у тебя все остается неизменным, как было в исходной версии, изменения в которую ты вносишь. Старые неписи остануться, новые не появятся. Попробуй скомпилировать прогой Vam'а датник со своими изменениями.

francisc
11.01.2005, 22:26
У меня такая проблема диалоги не появляются в игре.<br>Хотя в меню появляется то что написанно в дескрипшонс,когда нажиаешь<br>ничего не происходит неписи не говорят,появляется окно с надписью енд.<br>Ou обновлял.Апдейт,а потом сохранить.<br>Если у кого есть идеи пожалуйста ответьте.

Alexus_G
11.01.2005, 22:35
2Mitrich: Не совсем понятно, что должно быть &quot;как и&quot;.Я имел в виду следующее: например я добавляю в Startup своего персонажа, компилирую Spacer'ом, затем декомпилирую обратно прогой Vam'а. И в получившемся после декомпиляции Startup'е есть строчка, добавляющая моего непися. Это и есть то, что должно быть, но игра ведет себя так, как будто ей пофиг, что написано в Startup'е и как будто берет данные откуда-то еще.<br>Попробуй скомпилировать прогой Vam'а датник со своими изменениями.<br>при компилировании прогой Vam'а у меня вылазит ошибка. Я уже написал в соответствующую тему. Жду ответа.

TycoooN
11.01.2005, 23:32
2francisc: <br>У меня такая проблема диалоги не появляются в игре.<br>Хотя в меню появляется то что написанно в дескрипшонс,когда нажиаешь<br>ничего не происходит неписи не говорят,появляется окно с надписью енд.<br>Ou обновлял.Апдейт,а потом сохранить.<br>Если у кого есть идеи пожалуйста ответьте.<br>Попробуй руками открыть OU.BIN и поискать, добавились ли туда фразы, которые ты прописал в скриптах. Если да - то не знаю что и посоветовать ::)

Alexus_G
11.01.2005, 23:42
2TycoooN: Спасибо. Поменял slf на self. Скомпилировал прогой Vam'а без ошибок. Но проблемы это не решило, как я и предпологал.<br>Кто как думает, почему моя Готика не смотрит в Startup, а ваши смотрят? :)

finch
12.01.2005, 01:47
2Alexus_G: Кто как думает, почему моя Готика не смотрит в Startup, а ваши смотрят?<br>1. Попробуй удалить ВСЕ файлы из папки Gothic II\Data\modvdf.<br><br>2. После этого открой ИНИ-файл, через который ты запускаешь мод (возможно, что у тебя это GothicGame.ini).Файл находится в директории system. Только не спутай его с Gothic.ini Найди в этом файлике строчку, которая начинается на VDF=<br>После VDF= не должно стоять НИЧЕГО. Если после = стоит названия МОД-файла, удали его. Сохрани ИНИ-файл и запусти игру. Если это не сработает, то больше идей у меня нету.

francisc
12.01.2005, 13:32
2TycoooN: <br>Я открывал...но не могу найти свои диалоги...нверное они почему то не заносятся в ou.<br>Вот сам скрипт ,файл называется dia_none_fortuna<br>&quot;INSTANCE DIA_Fortuna_EXIT &nbsp; (C_INFO)<br>{<br> &nbsp; &nbsp; &nbsp;npc &nbsp; &nbsp; &nbsp; &nbsp; = None_1986_Fortuna;<br> &nbsp; &nbsp; &nbsp;nr &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 999;<br> &nbsp; &nbsp; &nbsp;condition &nbsp; = DIA_Fortuna_EXIT_Condition;<br> &nbsp; &nbsp; &nbsp;information = DIA_Fortuna_EXIT_Info;<br> &nbsp; &nbsp; &nbsp;permanent &nbsp; = TRUE;<br> &nbsp; &nbsp; &nbsp;description = DIALOG_ENDE;<br>};<br>FUNC INT DIA_Fortuna_EXIT_Condition()<br>{ &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return TRUE;<br>};<br>FUNC VOID DIA_Fortuna_EXIT_Info()<br>{<br> &nbsp; &nbsp; &nbsp;AI_StopProcessInfos (self);<br>};<br><br>INSTANCE DIA_Fortuna_HI (C_INFO)<br>{<br> &nbsp; &nbsp; &nbsp;npc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= None_1986_Fortuna ;<br> &nbsp; &nbsp; &nbsp;nr &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 1;<br> &nbsp; &nbsp; &nbsp;condition &nbsp; &nbsp; &nbsp;= DIA_Fortuna_HI_Condition;<br> &nbsp; &nbsp; &nbsp;information &nbsp; &nbsp; &nbsp;= DIA_Fortuna_HI_Info;<br> &nbsp; &nbsp; &nbsp;permanent &nbsp; &nbsp; &nbsp;= FALSE;<br> &nbsp; &nbsp; &nbsp;important &nbsp; &nbsp; &nbsp; = False; <br> &nbsp; &nbsp; &nbsp;description &nbsp; &nbsp; &nbsp;= &quot;Привет&quot;; <br>}; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br><br>FUNC INT DIA_Fortuna_HI_Condition()<br>{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return TRUE;<br><br>};<br><br>FUNC VOID DIA_Fortuna_HI_Info() <br><br>{<br> &nbsp; &nbsp; &nbsp;AI_Output (other, self, &quot;DIA_Fortuna_HI_1_00&quot;);//Привет<br> &nbsp; &nbsp; &nbsp;AI_Output (self, other, &quot;DIA_Fortuna_HI_01_01&quot;);//ТЫ!Это в самом деле ты!<br> &nbsp; &nbsp; &nbsp;AI_Output (other, self, &quot;DIA_Fortuna_HI_01_02&quot;);//Да,это я.<br> &nbsp; &nbsp; &nbsp;AI_Output (other, self, &quot;DIA_Fortuna_HI_01_03&quot;);//Ты Фортуно?<br> &nbsp; &nbsp; &nbsp;AI_Output (self, other, &quot;DIA_Fortuna_HI_01_04&quot;);//Да,а ты меня не забыл.<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp;};&quot;

Fatalick
12.01.2005, 17:13
2TycoooN: <br>Где в startup.d (если вообще там) прописывается начальное положенние ГГ?

finch
13.01.2005, 00:11
2Fatalick: Где в startup.d (если вообще там) прописывается начальное положенние ГГ?<br>Нигде. Начальное положение ГГ задается при помощи специального вэйпоинта.

Alexus_G
13.01.2005, 16:34
2finch: Даже не знаю, с чего начать. Спасибо за подсказку, которая решила мою проблему. Я раньше запускал Готику не как мод, а как игру, и она, видимо, действительно смотрела на какой-то другой файл (возможно как раз на GothicGame), только непонятно, почему? По умолчанию она ведь вроде не должна этого делать. Я запокавал свой датник в VDF, написал для него ini-файл и запустил как мод: все работает! Из-за такой ерунды столько мучений. Спасибо еще раз!

finch
14.01.2005, 00:11
2Alexus_G: Всегда пожалуйста! &nbsp;;D<br><br>Я раньше запускал Готику не как мод, а как игру, и она, видимо, действительно смотрела на какой-то другой файл (возможно как раз на GothicGame), только непонятно, почему?<br>Ты запускал игру через GothicStarter, а он &quot;видит&quot; только ИНИ-файлы модов. Если бы ты запускал через gothic.exe или lr.exe, этих проблем бы не возникло.

dftool
14.01.2005, 00:20
Вот проблемка: Декомпелировал я gothic.dat вместе c ou.bin,создалось много там всяких папок и файлов, нажимаю компилировать декомпилированный gothic.dat все нормально.<br>Но вот попытался в Г1 добавить своего НПСа, создал файл, прописал в &nbsp;Startup.d, пытаюсь компилировать это декомпилятором, но он выдает ошибку что проблема именно в моем неписе.<br>Поэтому у меня парочку вопросов возникло, могут конечно показаться глупыми но всеже:<br>Все вопросы для Г1:<br>1) При распаковке worlds.VDF спейсер1 выдает сообщение какоето и никак нехочет загружаться?<br>2) Как создать в Спейсере свой вейпоинт?<br>3) Как созданного НПСа в самой готике вызвать через insert (как написать название НПСа)?<br>4) Для чего нужен файл FIGHT.DAT, menu.DAT и другие файлы из папки _compiled, придекомпиляции их ведь не создается?<br>5) Для чего нужен gothic.src?<br>6) Где надо прописовать своего НПСа кроме &nbsp;Startup.d, и после этого чем компилировать Спейсером или декомпилятором, чтобы язык остался русский?<br>При компиляции gothic.src или при компиляции декомпилированного gothic.dat такое сообщение об ошибке:<br>PAR: STORY/STARTUP.D: Unknown identifier: EBR_1001_ARTUR<br>Заранее спасибо!!!<br> &nbsp;

francisc
14.01.2005, 00:48
2dftool: но он выдает ошибку что проблема именно в моем неписе.<br>Что именно пишет?При распаковке worlds.VDF спейсер1 выдает сообщение какоето и никак нехочет загружаться?<br>Какое?У меня были проблемы,он не мог найти 3ds файлы вроде.Но не при распаковке ,а при загрузке зена.<br>А распоковывал я VDFS`ом.<br>Как создать в Спейсере свой вейпоинт?<br>Шелкаешь на W при этом показываются пути,потом найди на горизонтальной понели ногу,нажми ее потом правой кнопкой на экран ,потом там должно быть наиписанно инсерт вуапоинт(или типа того),потом в окне вводишь имя вуапринта.А не забудь вначале счелкнуть на какой -нибудь вуапоинт.<br> Как созданного НПСа в самой готике вызвать через insert (как написать название НПСа)?<br>insert название гильдии_идентификационный номер_имя.<br>Для чего нужен gothic.src?<br>Для обновления скриптов...<br>Где надо прописовать своего НПСа кроме &nbsp;Startup.d, и после этого чем компилировать Спейсером или декомпилятором, чтобы язык остался русский?<br>Компилировать прогой от VAM`a<br>такое сообщение об ошибке:<br>PAR: STORY/STARTUP.D: Unknown identifier: EBR_1001_ARTUR<br>Скорее всего ты либо не положил скрипт нпс в папку NPC ,или там прописанно другое имя,или оно прписанно неверно.<br>Заранее спасибо!!!<br>Всегда пожалуйста.<br>PS просьба в меня помидорами не бросать,я в принципе мог что то пропустить.

dftool
14.01.2005, 01:23
Спасибо francisc: <br>Уточняю:<br>1)Про распаковку worlds.VDF верно, распаковывается все нормально, а вот в Спейсере1 при открытии *.Zen файла выдает сообщение об ошибке, но не про 3ds а про другое (непонятное, вылезает менюшка там выбрать Cancle, Complite и какието еще настройки). <br>2) При добавлении НПС в самой игре: вроде в Г1 нельзя писать символ &quot;_&quot; может ты написал про Г2 (в Г2 все нормально получалось).<br>

finch
14.01.2005, 01:41
2dftool: 1)Про распаковку worlds.VDF верно, распаковывается все нормально, а вот в Спейсере1 при открытии *.Zen файла выдает сообщение об ошибке, но не про 3ds а про другое (непонятное, вылезает менюшка там выбрать Cancle, Complite и какието еще настройки). <br>Знаешь, когда я только начинал разбираться в этом, мне на такие вопросы никто не отвечал... Лично я в теме Русская дока по спейсеру (http://forums.gothic.ag/showthread.php?&amp;s=0&amp;t=1078004330) раза три писал, как &quot;вылечить&quot; эту ошибку! Слабо перелопатить? А самому с этой ошибкой разобраться?<br>Понимаешь, если начать подробно отвечать на все твои вопросы, то не хватит ни времени, ни ограничения на сообщение в 25Кб!<br>Если ты хочешь со всем разобраться, то обязательно разберешься! Проверено на своем опыте! Если будет что-то не получаться, то тебе всегда посоветуют, но вот список таких вопросов, половина из которых уже обсуждалось, вывешивать не надо!<br>

dftool
14.01.2005, 02:52
finch: <br>Что верно то верно, с этим я разобрался просто переустановил Г1 и все нормально (просто я до этого очень много всего в готике поизменял).<br>Проверил декомпилятор версии 1.8. то же все работает - это Good!!!<br><br>Про вопросы верно буду стараться поменьше задавать, но кто хочет отвечайте, а кто не хочет того я же не заставляю!!! <br>

TycoooN
14.01.2005, 08:14
2dftool: <br>При добавлении НПС в самой игре: вроде в Г1 нельзя писать символ &quot;_&quot;<br>Можно. В Г1 надо нажать shift+&quot;кнопка ? чуть левее правого shift'a&quot;

Alexus_G
14.01.2005, 11:09
2finch: Ты запускал игру через GothicStarter, а он &quot;видит&quot; только ИНИ-файлы модов. Если бы ты запускал через gothic.exe или lr.exe, этих проблем бы не возникло.<br>Нет! Я запускал именно через Gothic.exe.<br>Я только сейчас понял, что моя проблема была даже не в том, что я писал. Все гораздо проще... Я взял и сохранил игру около Бастера, а потом, когда добавлял в скрипты что-то новое, просто загружал этот сейв, и удивлялся, почему ничего не появлялось :) А когда я создавал свою карту, то естественно каждый раз начинал игру заново, поэтому там появлялось все, что нужно.<br>Мне даже стыдно, что я мог допустить такую ошибку... Надеюсь другие примут к сведению, что когда вносишь в скрипты что-то новое, в частности, новых персонажей, нельзя пользоваться сейвами!

francisc
14.01.2005, 11:20
2dftool: Судя по всему надо просто компилировать мир.хотя у меня в г1 такой проблемы не возникало.<br>Можно. В Г1 надо нажать shift+&quot;кнопка ? чуть левее правого shift'a&quot;<br>В г1 вроде клавиатура немецкая.<br>Про вопросы верно буду стараться поменьше задавать, но кто хочет отвечайте<br>Да не задавай,если смогу объясню...

dftool
14.01.2005, 20:40
francisc: <br>При загрузки Zen файла требует 3ds файлы, влияет ли она на что-то, как ты это вылечил?<br><br>С помощью декомпилятора декомпилирую Gothic.dat и ou.bin, в получившихся файлах создаю своего НПСа, прописываю его в Startup.d Почемуто не хочет компилироваться декомпилированный gothic.dat в декомпиляторе и в Спейсере2 также не получается обновить скрипты?<br>Пишет ошибку именно про моего непися, но не пишет строчку в где ошибка, т.е. ошибка не в орфографии, а что-то я не так делаю.<br><br><br><br>

TycoooN
14.01.2005, 20:49
2dftool: <br>Пишет ошибку именно про моего непися, но не пишет строчку в где ошибка, т.е. ошибка не в орфографии, а что-то я не так делаю.<br>Покажи тогда сам скрипт НПС ::)

Vam
14.01.2005, 20:50
dftool:<br>С помощью декомпилятора декомпилирую Gothic.dat и ou.bin, в получившихся файлах создаю своего НПСа, прописываю его в Startup.d Почемуто не хочет компилироваться декомпилированный gothic.dat в декомпиляторе и в Спейсере2 также не получается обновить скрипты?<br>Пишет ошибку именно про моего непися, но не пишет строчку в где ошибка, т.е. ошибка не в орфографии, а что-то я не так делаю<br><br>Приведи сообщение с ошибкой и получишь подробный ответ.

dftool
14.01.2005, 20:54
Сообщение следующее:<br>PAR: STORY/STARTUP.D: Unknown identifier: GRD_300_MY... &lt;zParser.cpp,#599&gt;<br><br>Насчет самого скрипта НПСа, просто копирую любой заменяю имя, id, ну и вэйпоинт.<br>Интересно если на одном вейпоинте прописать двух НПСов то один из них наверное даже не появиться?<br><br>Может ли на это влиять фомат ou.bin?

francisc
14.01.2005, 21:06
Интересно если на одном вейпоинте прописать двух НПСов то один из них наверное даже не появиться?<br>Как правило появится ошибка,что вуапоинт уже занят.<br>ообщение следующее:<br>PAR: STORY/STARTUP.D: Unknown identifier: GRD_300_MY... &lt;zParser.cpp,#599&gt;<br>Судя по всему,в STARTUP.D указано не верное имя,скорее всего в скрипте нпс ты указал другое имя.А вообше,Id 300 неудачное число.<br>Если это г1 то оно уже занято.Я для г1 использовал число ок 1000.<br>

TycoooN
14.01.2005, 21:07
2dftool: <br>Пропиши файл своего НПС в gothic.src, рядом с другими НПС.

Vam
14.01.2005, 21:12
dftool:<br>PAR: STORY/STARTUP.D: Unknown identifier: GRD_300_MY... &lt;zParser.cpp,#599&gt;<br>Это сообщение выдается при компиляции, оно у тебя похоже выдается линковщиком (просьба не путать: процесс создания датника состоит из двух процессов - компиляции и линковки).<br>При компиляции выявляются ошибки синтаксиса, выдается имя файла и номер строки с ошибкой, при линковке выявляются ошибки деклараций (объявлений), если какое-то имя в скриптах используется, но не декларировано - имеем ошибку. В твоем случае в файле STARTUP.D встретилось линковщику имя GRD_300_MY... (полностью не приведено), но оно нигде не объявлено (т.е. линковщик не знает что это за переменная: int, string, instance, class и т.д.). Надеюсь, объяснил хоть немного понятно. &nbsp;:)

dftool
14.01.2005, 21:47
Всем спасибо: в принципе я понял ошибку поэксперементировав с gothic.dat и gothic.scr.<br>Вроде все получилось: делал я так<br>1) Декомпилировал gothic.dat вместе с ou.bin (режим в декомпиляторе 0,0)<br>2) Создал своего непися и прописал его в Startup.d<br>3) С помощью декомпилятора выбрал режим компилировать gothic.src (режим 1,0), при этом в папке создался новый gothic.dat и ou.bin<br>Ошибка скорей всего была в том, что я пользовался только папкой _decompiled, а когда произвел изменения в папке content, то все получилось, насчет id = 300, заменил его на 3300, а то насчет этого ругался декомпилятор.<br>Осталось закрепить это еше раз и все будет ок!!!<br>

Vam
14.01.2005, 23:58
dftool:<br>3) С помощью декомпилятора выбрал режим компилировать gothic.src (режим 1,0), при этом в папке создался новый gothic.dat и ou.bin<br>Ошибка скорей всего была в том, что я пользовался только папкой _decompiled, а когда произвел изменения в папке content, то все получилось, насчет id = 300, заменил его на 3300, а то насчет этого ругался декомпилятор.<br>Осталось закрепить это еше раз и все будет ок!!!<br>Режим 1,0 применяется для компиляции оригинальных скриптов, которые находятся в папке Content, а режим 1,1 применяется для компиляции декомпилированных скриптов, которые находятся в папке _decompiled. Смотря что правим (или дописываем), то и компилируем! &nbsp;:)

dftool
15.01.2005, 01:44
Vam.<br>Полезную вещь ты токо что написал, а то в Readme не так все понятно, вот и путался я в &quot;трех соснах&quot;.<br>Получилось и непися добавить, и русский язык сохранить. <br>Так, что теперь буду двигаться дальше!!!

dftool
15.01.2005, 18:56
Может кто подкинет инфу как создавать waypoint в Спейсере1 для Г1.<br>Прочитал все инфу на форуме связанную с этим и &nbsp;ничего не получается.<br><br>К примеру:<br>Если вы в Spacer'е первый раз, то вы будете передвигаться медленно. Зайдите в Settings/Generals и там будет movement-speed. Настройте. В окошке Objects нажмите zCVOB, затем oCVOB (abstract), потом oCNPC и в списке выберите любого NPC. Похлопайте на радостях в ладоши... =))). &nbsp;Нажмите в том же окошке zCVOBWaypoint и напишите имя вашему в waypoint'у. Назовите (!) его NPC_STAND_HERE, и создайте еще один (!) NPC_STAND_HERE2. Все, сохраните (сохранять будет долго!!!).<br><br>У меня никакого НПСа вообще не выбирается.<br><br>Или так:<br><br>Шелкаешь на W при этом показываются пути,потом найди на горизонтальной понели ногу,нажми ее потом правой кнопкой на экран ,потом там должно быть наиписанно инсерт вуапоинт(или типа того),потом в окне вводишь имя вуапринта.А не забудь вначале счелкнуть на какой -нибудь вуапоинт.<br><br>Вуапоинт создаю пишу ему имя, он вопервых несоединен путями как другие вуапоинты, ну это ладно,<br>потом сохраняю World.Zen. При дальнейше попытке открыть этот сохраненный World.Zen выдается ошибка и вылет автоматический.<br><br>Может ошибка в том, что не просто надо сохранять zen файл, нужноли обновлять скрипты, если да то где прописывается сам ваупоинт. И чем кроме готики можно создать ваупоинт (может GoMan'ом)?<br><br><br>

francisc
15.01.2005, 20:54
И чем кроме готики можно создать ваупоинт (может GoMan'ом)?<br>Не....гоманн для просмотра текстурам и изображениям.<br>Вуапоинт создаю пишу ему имя, он вопервых несоединен путями как другие<br>Надо нажать w потом переключится в &quot;виденье глазами&quot;,ну что бы мышки не было видно,это &nbsp;кнопка f3, направить взгляд на один вуапоинт,счелкнуть на левую кнопку мыши,потом держа shift так же счелкнуть на другой вуапоинт.После этого должна загорется кнопка на вертикальной панели,нажимаете f3 и счелкаете на загоревшуюся кнопку.<br>После надо сохраниться.<br>Вот тут у меня проблема,тк мои неписи не хотят вставать на мой вуапоинт.Так что если кто знает в чем ошибка просьба сообшить.

B_Wolf
15.01.2005, 21:10
Ответьте пожалуйста кто знает:<br>1. Как можно сделать амулет регенерации жизни или маны?<br>2. Как можно добавить особенность регенерации жизни персонажу (как у дракона в аддоне)?<br>Если можно, с примерами...

PA
15.01.2005, 21:23
2B Wolf:<br>Ответьте пожалуйста кто знает:<br>1. Как можно сделать амулет регенерации жизни или маны?<br>2. Как можно добавить особенность регенерации жизни персонажу (как у дракона в аддоне)?<br>Если можно, с примерами...<br><br>Я уже писал об этом - в МОД-е МанаРелод все по полочкам разложено http://www.worldofgothic.de/dl/index.php?go=downloads&amp;release_id=112<br><br>

dftool
15.01.2005, 22:30
francisc. Как ты избавился от того, что Спейсер при открытии Zen файла требует 3ds файлы?<br><br>finch. Я как-то спрашивал почему при открытии Zen файла Спейсер выдает ошибку (Сomplit? Cancel и т.д.), то ли ты имел в виду, но вродебы это из-за того что я менял дерикторию расположения Zen файлов.<br><br>francisc. А у тебя НПСы появляются ли в игре если ты не на самим созданный вэйпоинт ставишь НПСа, а на уже созданный по игре. Если на уже созданный по игре вэйпоинт появляется НПС, то значит ошибка в самом создании Вэйпоинта. <br>Или еше может надо в спейсере обновить скрипты &quot;Word-&gt;Reparse Scripfiles&quot; или еше на форме Output-Units &quot;Update-&gt;Save&quot;<br>

finch
16.01.2005, 00:06
2dftool: finch. Я как-то спрашивал почему при открытии Zen файла Спейсер выдает ошибку (Сomplit? Cancel и т.д.), то ли ты имел в виду, но вродебы это из-за того что я менял дерикторию расположения Zen файлов.<br>Ну вот видишь... Стоит задаться целью - проблема сразу решится! :)

Killer-XXX
16.01.2005, 00:41
Подскажите люди добрые...<br>Как мне зациклить действие? Вот если допустим регенерация, у разрабов Mana Reload стоит:<br>if (Npc_GetStateTime(self) &gt; 3); <br>Но это вроде как проверка, на то, произодит ли действие определенное кол-во секунд...<br>тогда вопрос, где же тут зацикленность, тут то оно должно повторятся?<br>Может это return LOOP_CONTINUE;?<br>Если нет, то зачем эта функция стоит в конце каждого ZS_*.d файла? :'(

francisc
16.01.2005, 01:06
2dftool: <br>На уже сушествуюших появляются...

PA
16.01.2005, 01:28
2Killer-XXX:<br>Как мне зациклить действие? Вот если допустим регенерация, у разрабов <br><br>Действие не зацикливается.<br>Просто включены тики (вроде 100 и 300) и после проверки условий по регнерации, по тикам начинает по отмерянным порцайкам (вроде 10 и 20) течь жизнь и мана.<br>А если же проц в цикле игры это будет делать...<br>То будет такой зависон...<br><br>ЗЫ: В свое время занимался системами реального времени...<br><br>

dftool
16.01.2005, 01:59
francisc.<br>На уже существующих у меня тоже появляются. <br>Ты сейчас работаешь над Г1?<br>Если я неошебаюсь то создание Вейпоинтов, приведет к тому что надо будет создавать свой файл .mod. Простой компиляцией с помощью декомпилятора здесь уже необойтись.<br><br>all.<br>Только одно непойму куда спейсер записывает после компиляции новые текстуры и покакому принципу.<br>Вроде где-то читал что переводят туториал по скриптингу или модмейкерству, если да то как продвигаются дела, а то уж очень много вопросов.<br><br><br><br>

BORISOFF
16.01.2005, 06:56
2dftool: Как ты избавился от того, что Спейсер при открытии Zen файла требует 3ds файлы? я просто запихал в директорию игры эти 3ds файлы (из ГМДК взятые) ;D

Alexus_G
16.01.2005, 12:06
2dftool: Простой компиляцией с помощью декомпилятора здесь уже необойтись. Обойтись.<br>куда спейсер записывает после компиляции новые текстуры А куда он их должен записывать? Он их по-моему вообще не должен трогать. Как они лежали, так и лежат, или ты что-то другое имеешь в виду?

dftool
16.01.2005, 13:42
Alexus_G. Простой компиляцией с помощью декомпилятора здесь уже необойтись. Обойтись. <br>Конечно хотелось бы поконкретнее услышать что-то.<br><br>Вэйпоинты записываются ли в zen файл (как например текстуры), или просто дочтаточно обновить скрипты с спейсере?<br> <br>

Vam
16.01.2005, 15:14
dftool:<br>Вэйпоинты записываются ли в zen файл (как например текстуры), или просто дочтаточно обновить скрипты с спейсере?<br><br>В тексты скриптов никакие программы ничего не записывают, ни компилятор, ни Спейсер, скрипты правятся только ручками, а следовательно в датнике есть только информация из файлов скриптов и ниоткуда более.<br>

B_Wolf
16.01.2005, 15:29
По поводу регенерации жизни...<br><br>На основе сорцов из мода &quot;Mana Reload&quot; попытался добавить в мод Bumshak амулет, который регенерирует жизнь...<br><br>Немного подправил файл ZS_Recharger.d из оригинального &quot;Mana Reload&quot;, т.е. вырезал зависимость от обученности к регенерации.<br><br>...Содержимое файла ZS_Recharger.d...<br><br>func void ZS_Recharger()<br>{<br> &nbsp; &nbsp; &nbsp;//Perception_Set_Normal();<br> &nbsp; &nbsp; &nbsp;B_ResetAll (self);<br> &nbsp; &nbsp; &nbsp;B_ClearPerceptions (self);<br>};<br><br>func int ZS_Recharger_loop()<br>{<br> &nbsp; &nbsp; &nbsp;if (Npc_GetStateTime(self) &gt; 3)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Npc_SetStateTime (self, 4);<br><br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (hero.attribute[ATR_HITPOINTS] &lt; hero.attribute[ATR_HITPOINTS_MAX])<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hero.attribute[ATR_HITPOINTS]=hero.attribute[ATR_HITPOINTS]+10;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;};<br><br> &nbsp; &nbsp; &nbsp;return LOOP_CONTINUE;<br>};<br><br>func void ZS_Recharger_end()<br>{<br>};<br><br>...<br><br>Прописал путь ZS_Recharger.d в gothic.src<br><br>...<br><br>Потом вставил эту функцию &quot; AI_StartState(self,ZS_Recharger,0,&quot;&quot;); &quot; для амулета:<br><br>...<br><br>var int herousingspecam;<br><br>instance ITMI_GLUECKSBRINGER(C_Item)<br>{<br> &nbsp; &nbsp; &nbsp;name = &quot;Вестник удачи&quot;;<br> &nbsp; &nbsp; &nbsp;mainflag = ITEM_KAT_MAGIC;<br> &nbsp; &nbsp; &nbsp;flags = ITEM_MISSION | ITEM_AMULET;<br> &nbsp; &nbsp; &nbsp;value = 0;<br> &nbsp; &nbsp; &nbsp;visual = &quot;ItAm_Prot_Fire_01.3ds&quot;;<br> &nbsp; &nbsp; &nbsp;material = MAT_STONE;<br> &nbsp; &nbsp; &nbsp;on_equip = equip_itmi_gluecksbringer;<br> &nbsp; &nbsp; &nbsp;on_unequip = unequip_itmi_gluecksbringer;<br> &nbsp; &nbsp; &nbsp;wear = WEAR_EFFECT;<br> &nbsp; &nbsp; &nbsp;effect = &quot;SPELLFX_ITEMGLIMMER&quot;;<br> &nbsp; &nbsp; &nbsp;description = name;<br> &nbsp; &nbsp; &nbsp;text[0] = &quot;Обладатель этого Вестника удачи&quot;;<br> &nbsp; &nbsp; &nbsp;text[1] = &quot;никогда не будет малодушным&quot;;<br> &nbsp; &nbsp; &nbsp;text[2] = &quot;в бою.&quot;;<br> &nbsp; &nbsp; &nbsp;inv_zbias = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br><br>func void equip_itmi_gluecksbringer()<br>{<br> &nbsp; &nbsp; &nbsp;HEROUSINGSPECAM = TRUE;<br> &nbsp; &nbsp; &nbsp;AI_StartState(self,ZS_Recharger,0,&quot;&quot;);<br>}; &nbsp; &nbsp; &nbsp;<br><br>func void unequip_itmi_gluecksbringer()<br>{<br> &nbsp; &nbsp; &nbsp;HEROUSINGSPECAM = FALSE;<br>};<br><br>...<br><br>Скомпилировал, проверил... Амулет не работает :( Пожалуйста помогите подправить ошибки...<br>Хм.. можно ли как-то вставить функцию регенерации непосредственно в скрипт амулета, а не описывать функцию в отдельном файле?

dftool
16.01.2005, 15:38
Vam. (Для Г1) Тогда что происходит с вейпоинтом когда его в спейсере создаешь? Нужно ли его где-то в скриптах ручками прописывать? Если я добовляю вейпоинты, то значит ли это, что мне прейдется создавать свой файл mod. &nbsp; <br><br>Просто такие глупы вопросы потому что, пока я непойму принцип что куда и откуда, буду просто тыкаться во все файлы &nbsp;и ни к чему хорошему не прийду? &nbsp; <br><br>

BORISOFF
16.01.2005, 15:51
2dftool: Нужно ли его где-то в скриптах ручками прописывать? чтобы вайпоинт работал нигде в скриптах его прописывать не нужно.<br>Если я добовляю вейпоинты, то значит ли это, что мне прейдется создавать свой файл mod. если ты создал свой вайпоинт, то соответственно ты изменил игровой мир, - а значит, тебе нужно сохранить ЗЕН-файл, а затем запаковать его в VDF-том и поместить в папку DATA, а запускать с экзешника gothic.exe . VDF файл делается простым переименованием расширения созданного в GothicVDFS MOD-файла.

finch
16.01.2005, 15:52
2B Wolf: В файле TA.d необходимо прописать такую строчку:<br>func void TA_Recharger (var int start_h, var int start_m, var int stop_h, var int stop_m, VAR string waypoint){TA_Min(self,start_h,start_m, stop_h, stop_m, ZS_Recharger,waypoint);};<br>

francisc
16.01.2005, 16:42
2Borisoff: <br>Я пробовал твоим способом,но не получилось.

B_Wolf
16.01.2005, 16:43
2finch: 2B Wolf: В файле TA.d необходимо прописать такую строчку:<br>func void TA_Recharger (var int start_h, var int start_m, var int stop_h, var int stop_m, VAR string waypoint){TA_Min(self,start_h,start_m, stop_h, stop_m, ZS_Recharger,waypoint);};<br>Пробовал... Все равно амулет не работает...

finch
16.01.2005, 17:02
2B Wolf: Эта строка в любом случае обязательна. Ща попробую сделать такой амулет, исходя из собственных соображений. Через пару часов сообщу результат.

BORISOFF
16.01.2005, 17:47
2francisc: Я пробовал твоим способом,но не получилось. уж даже не знаю, что тебе предложить... у меня-то все работает! а ты точно в VDF-томе правильную иерархию сделал? _work/data/worlds/world.zen? точно через gothic.exe запускаещь?

Alexus_G
16.01.2005, 19:04
У меня вопрос: в Готике 2 у меня почему-то не работает функция Practice_Magic. NPC просто стоит и ничего не делает. При этом Practice_Sword работает нормально. Кто знает, подскажите, плиз...

PA
16.01.2005, 19:14
2B Wolf:<br>По поводу регенерации жизни...<br><br>А стоит ли с амулетом заморачиваться - перекинь в учителя шамана, который стоит рядом с местом под юнитор - все равно сачек...<br><br>

dftool
16.01.2005, 19:29
Borisoff:<br>Спасибо огромное все получилось!!!<br> <br>francisc:<br>Навсякий случай кину ссылку как работать с GothicVDFS 2.6. К примеру я ею пользовался и для Г1. http://www.travel.ag.ru/gothic/mods/GothicVDFS.shtml<br><br>Когда ты создал в спейсере метку, появилась ли у тебя запись о ней в форме Output-units (зелененьким цветом). А на панели Objects ты нажимал Modify -&gt; Apply, перед тем как сохранить в zen файл. Я так навсякий случай говорю, как сам делал.<br><br>И еще попробу написать туториал по модмейкерству для Г1, хотя для Г2 неособо отличаться будут, думаю &nbsp;что пригодиться.<br><br>

BORISOFF
16.01.2005, 19:37
2dftool: Спасибо огромное все получилось!!! пожалуйста :)<br><br>И еще попробу написать туториал по модмейкерству для Г1 имхо, лучше помоги Irwin1138 переводить уже существующий хэлп на немецком языке. Ирвин уже перевел хэлп ПРОМТом, осталось только привести все в нормальный вид, а за одно можешь добавить что-нибудь свое ;)<br>Вот ссылка на тему:<br>http://forums.gothic.ag/showthread.php?&amp;s=25&amp;t=1102275156

B_Wolf
16.01.2005, 23:35
2Pa: 2B Wolf:<br>По поводу регенерации жизни...<br><br>А стоит ли с амулетом заморачиваться - перекинь в учителя шамана, который стоит рядом с местом под юнитор - все равно сачек...<br>Нет, я ничего не хочу менять в авторском сюжете Бумшака, мне нужен именно рабочий амулет регенерации жизни. А мод Бумшак был использован в качестве примера...

PA
16.01.2005, 23:48
2B Wolf:<br>Нет, я ничего не хочу менять в авторском сюжете Бумшака, мне нужен именно рабочий амулет регенерации жизни. А мод Бумшак был использован в качестве примера...<br><br>Тогда завяжи проверку условия обучения на наличие амулета - все равно свойство регенерации это умение ГГ и в меню это явно видно - обучен или нет.<br><br>Я еще более смешную вещь готовлю к 1.04...<br>

Killer-XXX
17.01.2005, 00:23
2Pa:<br>Я еще более смешную вещь готовлю к 1.04...<br>Интересно, интересно... может намекнешь хотя бы? :)

B_Wolf
17.01.2005, 02:12
2Pa: Тогда завяжи проверку условия обучения на наличие амулета - все равно свойство регенерации это умение ГГ и в меню это явно видно - обучен или нет.<br>ИМХО, не совсем верно!<br>То что видно в меню - это Умение. Если ГГ не обучен, умение равно 0.<br>Умение ГГ - это лишь зависимость устанавливающая количество прибавляемой жизни в ед. времени. А я эту зависимость вырезал начисто из функции описывающей регенерацию, определив явным образом количество прибавляемой жизни (урезанная версия скрипта приведена в пред. постах), отсюда следует, что ГГ даже с 0-евым умением т.е. необученный к регенерации в данном случае должен регенерировать жизнь при исп. амулета.<br>И функция описывающая регенерацию забита именно на амулет, а не на НПС.

Vam
17.01.2005, 09:59
B Wolf:<br>И функция описывающая регенерацию забита именно на амулет, а не на НПС.<br><br>Предлагаю функцию регенерации повесить на npc, а активировать ее только тогда, когда одет амулет, должно сработать. &nbsp;:)

Mitrich
17.01.2005, 16:46
Кто-нибудь может что-то подсказать по погодным явлениям? Как отследить наступление дождя, например? Похоже, что эффект вшит в движок, но есть безумная мысль попытаться отловить его через регистрацию проигрывания звука дождя.

finch
18.01.2005, 04:28
Ура, товарищи! &nbsp;;D<br>Два дня &quot;битья&quot; над регенерацией не прошли даром!<br>Пробовал создать амулет регенерации разными способами, но в конце концов получилось только при использовании исходников мода Mana Reload.<br><br>Короче, описываю алгоритм действий для создания амулета регенерации маны, который будет прибавлять +1 к мане каждую секунду.<br><br><br>В папке AI\Human\TA_Human создаем файл ZS_Recharger.d<br><br>Вот его содержимое(взято из Mana Reload и немного подправлено):<br><br><br>func void ZS_Recharger()<br>{<br> &nbsp; &nbsp; &nbsp;B_ResetAll (self);<br> &nbsp; &nbsp; &nbsp;B_ClearPerceptions (self);<br>};<br><br>func int ZS_Recharger_loop()<br>{<br> &nbsp; &nbsp; &nbsp;if (Npc_GetStateTime(self) &gt; 3)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Npc_SetStateTime (self, 0);<br><br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (hero.attribute[ATR_MANA] &lt; hero.attribute[ATR_MANA_MAX])<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hero.attribute[ATR_MANA]=hero.attribute[ATR_MANA]+1;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br><br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Teleport (self, Npc_GetNearestWP (hero));<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;};<br><br> &nbsp; &nbsp; &nbsp;return LOOP_CONTINUE;<br>};<br><br>func void ZS_Recharger_end()<br>{<br> &nbsp; &nbsp; &nbsp;AI_PlayAni (self,&quot;T_LGUARD_2_STAND&quot;); &nbsp; &nbsp; &nbsp;<br>};<br><br><br><br>Далее в файле TA.d дописываем следующую строчку:<br><br><br>func void TA_Recharger &nbsp; &nbsp; &nbsp;(var int start_h, var int start_m, var int stop_h, var int stop_m, VAR string waypoint) &nbsp; &nbsp; &nbsp;{TA_Min &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(self, &nbsp; &nbsp; &nbsp;start_h,start_m, stop_h, stop_m, ZS_Recharger, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;waypoint);};<br><br><br>Теперь создаем НПС, который будет отвечать за нашу регенерацию.<br><br>В папку Story\NPC вставляем файл None_999_Recharger.d, следующего содержания:<br><br><br>instance None_999_Recharger (Npc_Default) &nbsp;<br>{<br> &nbsp;name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = &quot;&quot;;<br> &nbsp;guild &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= GIL_NONE;<br> &nbsp;npctype &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= NPCTYPE_AMBIENT;<br> &nbsp;flags &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= NPC_FLAG_IMMORTAL|NPC_FLAG_GHOST;<br> &nbsp;level &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 999;<br> &nbsp;voice &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 0;<br> &nbsp;id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = 999;<br> &nbsp;noFocus &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 1;<br> &nbsp;bodyStateInterruptableOverride &nbsp; &nbsp; &nbsp; = 1;<br><br> &nbsp;damagetype &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= DAM_EDGE;<br> &nbsp;damage [DAM_INDEX_EDGE] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 0;<br><br><br> &nbsp;//-------- visuals --------<br> &nbsp;B_SetNpcVisual (self, MALE, &quot;Hum_Head_Fatbald&quot;, 0, 0, ITAR_MIL_M); <br> &nbsp;Mdl_SetModelScale (self, 0.01, 0.01, 0.01);<br><br><br> &nbsp;//-------- talents --------<br> &nbsp;B_SetFightSkills (self, 0); &nbsp;<br><br><br> &nbsp;//------------- ai -------------<br> &nbsp;fight_tactic &nbsp; &nbsp;= FAI_HUMAN_COWARD;<br><br><br> &nbsp;daily_routine &nbsp; &nbsp;= Rtn_start_999;<br>};<br><br><br>func void Rtn_Regeneration_999 ()<br>{<br> &nbsp; TA_Recharger (0,00,13,00, Npc_GetNearestWP (hero));<br> &nbsp; TA_Recharger (13,00,0,00, Npc_GetNearestWP (hero));<br>};<br><br>func void Rtn_start_999 ()<br>{<br> &nbsp; TA_Stand_WP (0,00,13,00, Npc_GetNearestWP (hero));<br> &nbsp; TA_Stand_WP (13,00,0,00, Npc_GetNearestWP (hero));<br>};<br><br><br><br>Обратите внимание, что НПС почти невидим!<br><br>Прописываем нового НПС в стартапе:<br><br><br>Wld_InsertNpc &nbsp; &nbsp; &nbsp;(None_999_Recharger,Npc_GetNearestWP (hero)); <br><br><br><br><br>Ну и в конце-концов вставляем в файле It_Amulette.d следующее:<br><br><br> &nbsp; &nbsp; &nbsp;INSTANCE &nbsp;ItAm_Mana_Regener(C_Item)<br>{<br> &nbsp; &nbsp; &nbsp;name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = &nbsp; &nbsp; &nbsp;NAME_Amulett;<br><br> &nbsp; &nbsp; &nbsp;mainflag &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = &nbsp; &nbsp; &nbsp;ITEM_KAT_MAGIC;<br> &nbsp; &nbsp; &nbsp;flags &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = &nbsp; &nbsp; &nbsp;ITEM_AMULET;<br><br> &nbsp; &nbsp; &nbsp;value &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = &nbsp; &nbsp; &nbsp;Value_Mana_Regener;<br><br> &nbsp; &nbsp; &nbsp;visual &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = &nbsp; &nbsp; &nbsp;&quot;ItAm_Strg_01.3ds&quot;;<br><br> &nbsp; &nbsp; &nbsp;visual_skin &nbsp; &nbsp; &nbsp; = &nbsp; &nbsp; &nbsp;0;<br> &nbsp; &nbsp; &nbsp;material &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = &nbsp; &nbsp; &nbsp;MAT_METAL;<br> &nbsp; &nbsp; &nbsp;on_equip &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= &nbsp; &nbsp; &nbsp;Equip_ItAm_Mana_Regener;<br> &nbsp; &nbsp; &nbsp;on_unequip &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= &nbsp; &nbsp; &nbsp;UnEquip_ItAm_Mana_Regener;<br><br> &nbsp; &nbsp; &nbsp;wear &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= &nbsp; &nbsp; &nbsp; WEAR_EFFECT;<br> &nbsp; &nbsp; &nbsp;effect &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= &nbsp; &nbsp; &nbsp;&quot;SPELLFX_ITEMGLIMMER&quot;; <br><br> &nbsp; &nbsp; &nbsp;description &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= &quot;Амулет регенерации маны&quot;;<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;TEXT[5] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= NAME_Value;<br> &nbsp; &nbsp; &nbsp;COUNT[5] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= value;<br><br> &nbsp; &nbsp; &nbsp;INV_ZBIAS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= INVCAM_ENTF_AMULETTE_STANDARD;<br> &nbsp; &nbsp; &nbsp;<br>};<br><br>FUNC VOID Equip_ItAm_Mana_Regener()<br>{<br> &nbsp; &nbsp; &nbsp;Npc_ExchangeRoutine &nbsp; &nbsp; &nbsp;(None_999_Recharger,&quot;Regeneration&quot;);<br>};<br><br>FUNC VOID UnEquip_ItAm_Mana_Regener()<br>{<br> &nbsp; &nbsp; &nbsp;Npc_ExchangeRoutine &nbsp; &nbsp; &nbsp;(None_999_Recharger,&quot;Start&quot;);<br>};<br><br><br><br><br>Вот, собственно говоря и все. Амулет работает. Единственное, если пользоваться F8 для перелетов на большие расстояния, амулет перестает работать. Чтобы он снова заработал, его надо снять и снова одеть. Этот баг появляется из-за того, что наш речаджер не успевает за нами, т.к. не умеет пользоваться &quot;марвином&quot;! :D<br>Но, в принципе, тем кто пользуется F8 регенерация маны ни к чему! &nbsp;:lol:<br><br>2Dagot_Ur: Если будешь читать этот топик, расскажи, плз, свой способ создания предмета с регенерирующими способностями.

B_Wolf
18.01.2005, 05:15
2Vam: Предлагаю функцию регенерации повесить на npc, а активировать ее только тогда, когда одет амулет, должно сработать. &nbsp;<br>2Pa: Тогда завяжи проверку условия обучения на наличие амулета - все равно свойство регенерации это умение ГГ и в меню это явно видно - обучен или нет.<br>Одно и тоже, только разными словами... Ээээ... немножко топорно, амулет получается именной и на других действовать не будет, если у всех остальных НПС это не прописывать... :)<br><br>2finch: Ура, товарищи! &nbsp;<br>Два дня &quot;битья&quot; над регенерацией не прошли даром!<br>Пробовал создать амулет регенерации разными способами, но в конце концов получилось только при использовании исходников мода Mana Reload.<br><br>Короче, описываю алгоритм действий для создания амулета регенерации маны, который будет прибавлять +1 к мане каждую секунду.<br><br><br>В папке AI\Human\TA_Human создаем файл ZS_Recharger.d<br><br>Вот его содержимое(взято из Mana Reload и немного подправлено):<br>Ну а эта... уже реальная тема. finch, большое спасибо за оперативное решение и полное разъяснение работы скрипта.<br>Хы... намано придумали... Летающий подзарядник, активирующийся при одетом амулете :))))

finch
18.01.2005, 05:44
2B Wolf: Нема за цо! ;D<br><br>закралась ошибка...<br>амулета регенерации маны, который будет прибавлять +1 к мане каждую секунду.<br>Не каждую секунду, а каждые три секунды... Очепятался... &nbsp;;D

B_Wolf
18.01.2005, 05:59
2finch: закралась ошибка...<br>амулета регенерации маны, который будет прибавлять +1 к мане каждую секунду.<br>Не каждую секунду, а каждые три секунды... Очепятался... &nbsp;<br>Как я понял, это можно установить здесь: if (Npc_GetStateTime(self) &gt; 3)

finch
18.01.2005, 09:39
2B Wolf: Как я понял, это можно установить здесь: if (Npc_GetStateTime(self) &gt; 3) Да. <br><br>hero.attribute[ATR_MANA]=hero.attribute[ATR_MANA]+1;<br>А здесь, сколько маны будет прибавляться в этот промежуток времени...<br><br>Ну да это и так понятно...

TycoooN
18.01.2005, 11:26
2finch: <br>AI_Teleport (self, Npc_GetNearestWP (hero));<br>А это зачем? ::)<br><br>Способ у тебя, конечно, хитрый, но не оптимальный...<br>Надо будет тоже попробовать :)

finch
19.01.2005, 00:31
2TycoooN: А это зачем?<br>Чтобы речарджер постоянно &quot;догонял&quot; ГГ. Эту строчку можно было бы не прописывать, если бы ГГ во время регенерации постоянно стоял на месте.<br><br>Надо будет тоже попробовать<br>А вот это ОБЯЗАТЕЛЬНО! :)

B_Wolf
19.01.2005, 01:16
Пару слов об амулете восстановления...<br><br>Попробовал я таки ввести ентот амулет в модификацию Бумшака.<br>Заметил несколько особенностей:<br><br>Хорошие:<br>1) Амулет работает :)<br><br>Нехорошие:<br>1) Иногда орки, звери и пр. существа начинают нападать на невидимку-реченджера (нужно гильдии смотреть).<br>2) Иногда невидимка-реченджер получает от меня оружием во время боя, т.к. все время путается под ногами.<br><br>А вообщем неплохо :)

Vam
19.01.2005, 09:25
2B Wolf:<br>А разве нельзя сделать регенерацию аналогично драконьей, только сначала проверять на наличие амулета, и никаких невидимок не надо?<br>

francisc
19.01.2005, 13:05
При создании миссий,надо ли что-нибудь писать в файл Story globals?<br>И вообше что содердится в этом файле? &nbsp;

Vam
19.01.2005, 13:27
2francisc:<br>При создании миссий,надо ли что-нибудь писать в файл Story globals?<br>И вообше что содердится в этом файле? &nbsp;<br><br>Файл содержит объявления нескольких констант и кучи переменных для скриптов папки globals.<br>А писать, или не писать - все зависит от тебя; будешь заводить переменные или нет; запишешь их в файл миссий или нет; обязательного в этом файле ничего нет!<br>

aleks999
19.01.2005, 19:26
Как сделать так, чтобы после разговора с НПС у другого НПС добавлялась новая тема типа &quot;Кто-то говорил...&quot; ??? :-/

TycoooN
19.01.2005, 19:51
2Vam: <br>Файл содержит объявления нескольких констант и кучи переменных для скриптов папки globals.<br>Не знаю такой папки. Может, ты имел в виду папку dialoge?<br><br>2francisc: <br>Я туда прописывал только переменыые MIS_*** для новых миссий ::)<br><br><br>2aleks999: <br>Как сделать так, чтобы после разговора с НПС у другого НПС добавлялась новая тема типа &quot;Кто-то говорил...&quot; ???<br>Для этого нужно прописать в Condition второго диалога условие. Например, <br><br>if (Npc_KnowsInfo (other, &lt;твой C_Info&gt;))<br>

Vam
19.01.2005, 20:37
2TycoooN:<br>Не знаю такой папки. Может, ты имел в виду папку dialoge?<br>Пардон, я имел в виду папку Story. &nbsp;:-[

Mitrich
19.01.2005, 22:42
Вопрос: какая функция создает в инвентаре НПС предмет?

TycoooN
19.01.2005, 22:51
2Mitrich: <br>Вопрос: какая функция создает в инвентаре НПС предмет?<br>Из туторов Vam'a:<br><br>void CreateInvItem(c_npc n0,int n1); - создает в инвентаре npc n0 предмет с ID n1.<br>void CreateInvItems(c_npc n0,int n1,int n2); - создает в инвентаре npc n0 предметы с ID n1 количеством n2.<br><br>Пример: CreateInvItems (self, ItMi_Gold, 10);<br>

francisc
19.01.2005, 23:21
void CreateInvItem(c_npc n0,int n1); - создает в инвентаре npc n0 предмет с ID n1.<br>void CreateInvItems(c_npc n0,int n1,int n2); - создает в инвентаре npc n0 предметы с ID n1 количеством n2.<br>А еще есть что игра сама в произвольном порядке создает предметы.<br>Вопрос,как сделать,что бы после передачи предмета,оружия неписю,он его одевал на себя?

TycoooN
20.01.2005, 00:14
2francisc: <br>Вопрос,как сделать,что бы после передачи предмета,оружия неписю,он его одевал на себя?<br>Для этого есть такая функция:<br><br>void EquipItem(c_npc n0,int n1); - экипировать npc n0 предметом с ID n1.<br><br>Пример: EquipItem(self,ItMw_1h_Bau_Axe);

Mitrich
20.01.2005, 01:02
Хмм... Тогда попробуем зайти с другого конца. Это код ТА &quot;пилить&quot;<br>// ****************************<br>// NSC benutzt Sдge Mobsi <br>// ****************************<br><br>FUNC VOID ZS_Saw ()<br>{<br> &nbsp; &nbsp; &nbsp;Perception_Set_Normal();<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;B_ResetAll (self);<br><br> &nbsp; &nbsp; &nbsp;AI_SetWalkmode &nbsp; &nbsp; &nbsp;(self, NPC_WALK); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;if (Hlp_StrCmp (Npc_GetNearestWP(self), self.wp) == FALSE)<br> &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_GotoWP &nbsp; &nbsp; &nbsp;(self, self.wp);<br> &nbsp; &nbsp; &nbsp;};<br>};<br><br>FUNC int ZS_Saw_Loop ()<br>{<br> &nbsp; &nbsp; &nbsp;// ------ Saegen ------<br> &nbsp; &nbsp; &nbsp;if (!C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT))<br> &nbsp; &nbsp; &nbsp;&amp;&amp; (Wld_IsMobAvailable(self,&quot;BAUMSAEGE&quot;))<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_UseMob (self, &quot;BAUMSAEGE&quot;, 1);<br> &nbsp; &nbsp; &nbsp;};<br><br> &nbsp; &nbsp; &nbsp;// ------ Random-Ani beim Hдmmern ------<br> &nbsp; &nbsp; &nbsp;if (Npc_GetStateTime(self) &gt; 15)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; (C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT))<br> &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp;Npc_SetStateTime (self, 0);<br> &nbsp; &nbsp;};<br><br> &nbsp; &nbsp; &nbsp;return LOOP_CONTINUE;<br>};<br><br>FUNC VOID ZS_Saw_End ()<br>{<br> &nbsp; &nbsp; &nbsp;AI_UseMob (self, &quot;BAUMSAEGE&quot;, -1);<br>};<br><br>Что выполняет данный блок?<br>// ------ Random-Ani beim Hдmmern ------<br> &nbsp; &nbsp; &nbsp;if (Npc_GetStateTime(self) &gt; 15)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; (C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT))<br> &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp;Npc_SetStateTime (self, 0);<br> &nbsp; &nbsp;};<br><br>Особенно интересует /C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT/ в условии. Что это?

francisc
20.01.2005, 01:05
2TycoooN: <br>Это в скрипте нпс надо писать,как я понял.Или в тексте миссии нужно?<br>Вот следуюшй вопрос,как сделать так что бы нпс бежал на какое-то место с оружеем и нападал на кого-нибудь?(бандитов например)

Mitrich
20.01.2005, 08:58
2francisc: Вот следуюшй вопрос,как сделать так что бы нпс бежал на какое-то место с оружеем и нападал на кого-нибудь?(<br>Из темы &quot;уроки скриптологии&quot;:<br> void AI_SetWalkmode(c_npc n,int n0); - установить режим передвижения n0 для npc n. Определены следующие режимы: NPC_RUN – бег, NPC_WALK – ходьба шагом, NPC_SNEAK – подкрадывание, NPC_RUN_WEAPON – бег с оружием, NPC_WALK_WEAPON – ходьба с оружием, NPC_SNEAK_WEAPON – подкрадывание с оружием.<br><br>void AI_Attack(c_npc self); - npc self начинает сражение (эта функция должна вызываться внутри ZS_Attack_Loop). Атакуется внутренняя цель, которая была задана функцией Npc_SetTarget или Npc_GetNextTarget. <br><br> int Wld_IsRaining(); – возвращает 1, если идет дождь, иначе – 0.<br>Ура! Я ее нашел в дополнительных функциях второй Готики! :) Vam, ты гений, только об этом пока не догадываешься. (отпирался, что не знает) ;)

Mitrich
20.01.2005, 09:27
По-моему я неудачно зашел с другого конца. Предлагаю рассмотреть ТА ZS_Saw с моими комментариями в качестве примера. Передо мной стоит задача добавлять НПС при пилении каждые 15 секунд некий контрольный предмет. Но некоторые вещи мне непонятны. Кто сможет что-то разьяснить или поправить, буду очень благодарен.<br>Зеленым понятные вещи, красным неясности.<br><br>// ****************************<br>// NSC benutzt Sдge Mobsi <br>// ****************************<br><br>FUNC VOID ZS_Saw () //Объявление функции<br>{<br> * * *Perception_Set_Normal(); //Установка восприятия на нормальный уровень * * *<br> * * *B_ResetAll (self); //Сбрасывание какого-то паретра(ов)???<br> * * *AI_SetWalkmode ** * *(self, NPC_WALK); * * //Перевод НПС в режим ходьбы шагом * * * * * *<br> * * *if (Hlp_StrCmp (Npc_GetNearestWP(self), self.wp) == FALSE)<br> * *{<br> * * * * * *AI_GotoWP * * *(self, self.wp); // npc n0 перемещается в указанную WP s0.<br><br> * * *};<br>};<br><br>FUNC int ZS_Saw_Loop () * *//Начало функции использования МОВ{ * * *<br><br>// ------ Saegen ------<br> * * *if (!C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT)) //поверка на использование МОВ другим &quot;телом&quot;??? <br>* * *<br>&amp;&amp; (Wld_IsMobAvailable(self,&quot;BAUMSAEGE&quot;)) //подозреваю, что это условие непосредственной близости НПС с МОВ с именем &quot;BAUMSAEGE&quot; *<br> * *{<br> * * * * * *AI_UseMob (self, &quot;BAUMSAEGE&quot;, 1); ** * *//см сноску*<br> * * *};<br><br> * * *// ------ Random-Ani beim Hдmmern ------<br> * * *if (Npc_GetStateTime(self) &gt; 15) //если НПС находится в таком состоянии более 15 секунд * * *&amp;&amp; (C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT)) //и ??? непонятное условие<br> * *{<br> * * * <br> * * *CreatInvItems (self, ItPo_Mana_01, 1); // ----Суть задачи всего примера: Добавление контрольного предмета каждые 15 сек---<br><br> * * *Npc_SetStateTime (self, 0); ** * * //обнулить время нахождения НПС в данном состоянии. Если убрать это действие НПС <br>}; * * * * * * * * * * * * * * *//будет дергаться возле бревна, но пилить так и не начнет. <br><br> * * *return LOOP_CONTINUE; //возврат к началу функции<br>};<br><br>FUNC VOID ZS_Saw_End () //функция завершения действия для НПС self над МОВ &quot;BAUMSAEGE&quot; <br>{<br> * * *AI_UseMob (self, &quot;BAUMSAEGE&quot;, -1); //прекратить использовать МОВ (установка флага функции AI_UseMob в -1<br><br>}; <br><br><br>//* *int AI_UseMob(c_npc self,string schemeName,int targetState); - npc self использует MOB с именем schemeName до указанного состояния targetState.<br>Если указанное состояние у MOBа уже имеется, npc self приближается к нему, но ничего не делает.<br>На мой взгляд, здесь требуется уточнение - 1 это флаг начала использования МОВ, а -1 окончание использования, а не проверка состояния МОВ.

Vam
20.01.2005, 09:28
2Mitrich: Что выполняет данный блок?<br>// ------ Random-Ani beim Hдmmern ------<br> &nbsp; &nbsp; if (Npc_GetStateTime(self) &gt; 15)<br> &nbsp; &nbsp; &amp;&amp; (C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT))<br> &nbsp; {<br> &nbsp; &nbsp; Npc_SetStateTime (self, 0);<br> &nbsp; };<br>Если прошло &gt; 15 секунд и состояние тела (положение) НПС self соответствует BS_MOBINTERACT_INTERRUPT (какая-то фаза выполняемых действий с MOBом (MoveObject) завершена [в моем понимании анимационная фаза движения]), то время сбрасывается в 0 (начинается новый цикл работы в LOOP функции или работа заканчивается в END функции).<br>

Mitrich
20.01.2005, 10:05
2Mitrich: <br>хммм... вот смотри что получается - получаетя сначала идет проверка &quot;если НЕ завершена фаза анимации (в твоем варианте) и достигнута непосредственная близость&quot;:<br>// ------ Saegen ------<br> &nbsp; &nbsp; if (!C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT)) &nbsp; &nbsp; &nbsp;<br>&amp;&amp; (Wld_IsMobAvailable(self,&quot;BAUMSAEGE&quot;)) &nbsp;<br><br>а во втором случае &quot;если находится в состоянии &gt; 15 сек и фаза анимации закончилась&quot;:<br>if (Npc_GetStateTime(self) &gt; 15) //если НПС находится в таком состоянии более 15 секунд &nbsp; &nbsp; &nbsp;&amp;&amp; (C_BodyStateContains(self, BS_MOBINTERACT_INTERRUPT)) //и ??? непонятное условие<br>На мой взгляд в первом случае логика немного странная. Может все-таки тут что-то иное?

Vam
20.01.2005, 10:11
2Mitrich: На мой взгляд в первом случае логика немного странная. Может все-таки тут что-то иное?<br>Необходимо функцию C_BodyStateContains рассмотреть подробно, там проверяются и другие параметры а не только аргумент &quot;состояние тела&quot;.

PA
20.01.2005, 15:00
2Mitrich:<br>По-моему я неудачно зашел с другого конца. Предлагаю рассмотреть ТА ZS_Saw с моими комментариями в качестве примера. Передо мной стоит задача добавлять НПС при пилении каждые 15 секунд некий контрольный предмет. Но некоторые вещи мне непонятны.<br><br>Очень советую тебе и всем вскрыть МОД Dunkle Brut Demo v0.73 <br>http://www.worldofgothic.de/dl/index.php?go=downloads&amp;release_id=107<br>Там много новых умений разложено по полочкам (правда заточено на Г1).<br>Еще раз спрашиваю - Нет ли желающих его перевести - очень интересный МОД!<br><br>

aleks999
20.01.2005, 15:57
Можно ли сделать так, что при убийстве каждого стажника начислялось 1 очко(как при поступлении в лагеря в Г1), а при наборе определенного кол-ва что-нибудь происходило?

francisc
20.01.2005, 16:50
2Pa: <br>Это пока демо-мод,там всего прару НПС.Переводить,ну можно,если у кого жедание будет.<br>2aleks999:<br>Можно миссию написать с условием ,что бы она срабатывала при определенном уровне. А что вообше теребуется?

aleks999
20.01.2005, 18:00
2francisc: <br><br>Ну нужно мочить стражников, за убийство каждого дают +1 очко.<br>Когда набирается определенное кол-во этих очков, срабатывает скрипт... наподобие такого...<br><br>func void Info_Diego_JoinAnalyze_Info()<br>{<br> &nbsp; &nbsp; &nbsp;AI_Output(hero,self,&quot;Info_Diego_JoinAnalyze_15_00 &quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_11_01 &quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;AI_Output(hero,self,&quot;Info_Diego_JoinAnalyze_15_02 &quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;Points_OC = 0;<br> &nbsp; &nbsp; &nbsp;if(Scatty_ChargeKirgo == LOG_SUCCESS)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Scatt y_11_01&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC + 2;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Scatty_ChargeKirgo == LOG_FAILED)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Scatt y_11_02&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC - 1;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Scatty_ChargeKirgo == LOG_RUNNING)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Scatt y_11_03&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;if(Scatty_ChargeKharim == LOG_FAILED)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Scatt y_11_04&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC + 2;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Scatty_ChargeKharim == LOG_SUCCESS)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Scatt y_11_05&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC + 5;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Scatty_ChargeKharim == LOG_RUNNING)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Scatt y_11_06&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;if(Whistler_BuyMySword == LOG_SUCCESS)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Whist ler_11_01&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC + 3;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if((Whistler_BuyMySword == LOG_FAILED) || ((Whistler_BuyMySword == LOG_RUNNING) &amp;&amp; (Whistler_BuyMySword_Day &lt;= (Wld_GetDay() - 2))))<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Whist ler_11_02&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC + 2;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Whistler_BuyMySword == LOG_RUNNING)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Whist ler_11_03&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;if(Sly_LostNek == LOG_SUCCESS)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Sly_1 1_01&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC + 4;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Sly_LostNek == LOG_RUNNING)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Sly_1 1_02&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;if(Fingers_Learnt == LOG_RUNNING)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Finge rs_11_01&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Fingers_Learnt == LOG_SUCCESS)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Finge rs_11_02&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC + 3;<br> &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;if(Dexter_GetKalomsRecipe == LOG_RUNNING)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Dexte r_11_01&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Dexte r_11_02&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Dexter_GetKalomsRecipe == LOG_SUCCESS)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Dexte r_11_03&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC + 5;<br> &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;if(Thorus_MordragKo == LOG_RUNNING)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Thoru s_11_01&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Thorus_MordragKo == LOG_SUCCESS)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Thoru s_11_02&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC + 5;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(Thorus_MordragKo == LOG_FAILED)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Thoru s_11_03&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC - 5;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(Fisk_GetNewHehler == LOG_SUCCESS)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Fisk_ 11_01&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Points_OC = Points_OC + 5;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else if((MordragKO_HauAb == TRUE) || (MordragKO_StayAtNC == TRUE))<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_JoinAnalyze_Fisk_ 11_02&quot;); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;if(Points_OC &gt; 15)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_Points_11_00&quot; ); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(hero.level &gt;= 5)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(Diego_BringList == LOG_SUCCESS)<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_Points_11_01&quot; ); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Diego_GomezAudience = TRUE;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Log_SetTopicStatus(CH1_JoinOC,LOG_SUCCESS);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B_LogEntry(CH1_JoinOC,&quot;Диего сказал, что я могу встретиться с Гомезом. Теперь я смогу стать одним из людей Гомеза и войти в замок. Нужно лишь поговорить с Торусом.&quot;);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_Points_11_02&quot; ); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B_PrintGuildCondition(5);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Points_OC &gt; 10)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_Points_11_10&quot; ); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if(Points_OC &gt;= 0)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_Output(self,hero,&quot;Info_Diego_Points_11_20&quot; ); &nbsp; &nbsp; &nbsp;//<br> &nbsp; &nbsp; &nbsp;};<br>};<br><br><br>Только надо с убийством стражников сделать. Я пробовал, че то не получается...

aleks999
20.01.2005, 18:10
2Pa: <br>Очень советую тебе и всем вскрыть МОД Dunkle Brut Demo v0.73 <br>http://www.worldofgothic.de/dl/index.php?go=downloads&amp;release_id=107<br>Там много новых умений разложено по полочкам (правда заточено на Г1).<br>Еще раз спрашиваю - Нет ли желающих его перевести - очень интересный МОД!<br><br>Сейчас докачаю, посмотрю, а там и переведу... &nbsp;:)

TycoooN
20.01.2005, 18:20
2aleks999: <br>Можно ли сделать так, что при убийстве каждого стажника начислялось 1 очко(как при поступлении в лагеря в Г1), а при наборе определенного кол-ва что-нибудь происходило?<br>Можно. Для этого в файле AI/Human/ZS_Human/ZS_Dead.d пропиши такое условие:<br><br>if (self.guild == GIL_GRD) &amp;&amp; (Npc_IsPlayer(other))<br>{<br> *grd_counter += 1;<br>};<br><br>Соответственно, нужно прописать где-нибудь эту переменную:<br><br>var int grd_counter;<br><br>Ну и сделать миссию на основе этого счётчика :)<br>

aleks999
20.01.2005, 18:34
2TycoooN: <br>В Г1 файл ZS_Dead.d находится здесь: AI\ZS_Human *:) Еле нашел :)<br><br>if (self.guild == GIL_GRD) &amp;&amp; (Npc_IsPlayer(other))<br>{<br> grd_counter += 1; - я делаю мод для Г1, а там счетчик начисляется по-другому: grd_counter = grd_counter + 1;<br>};

aleks999
20.01.2005, 20:05
Идея для игры.<br>Вот то, что пока готово:<br><br>- Графические изменения<br> *- Интерфейс игры<br> *- Текстуры животных<br> * *- Мракорис<br> * *- Огненный ящер<br> * *- Ледяной голем<br> * *- Шныг<br> * *- Мясной жук<br> * *- Кротокрыс<br> * *- Орк-воин<br> * *- Падальщик<br> * *- Ящер<br> * *- ...<br> *- Текстуры людей<br> *- Текстуры брони (Легкие, средние, тяжелые)<br> * *- Стражник<br> * *- Маг огня<br> * *- Маг воды<br> * *- Послушник<br> * *- Вор<br> * *- Рудокоп<br> * *- Наемник<br> * *- Призрак<br> * *- Страж<br> *- Прочие текстуры<br> * *- Еда<br> * *- Некоторые предметы<br> * *- Оружие<br> * *- ...<br>- Игровой баланс<br> *- Действия<br> * *- Делать болотник<br> * *- Рубить деревья<br> * *- Добывать руду<br> * *- Готовить<br> * *- Ковать новое оружие<br> * *- ...<br> *- Руда подорожала, в обороте золото<br>- Новые предметы, оружие...<br>- И многое другое... (пока не знаю, что именно :) )

Vam
20.01.2005, 21:26
2aleks999:<br> grd_counter += 1; - я делаю мод для Г1, а там счетчик начисляется по-другому: grd_counter = grd_counter + 1;<br>Для любых Готик оба варианта приемлемы и работают одинаково. &nbsp;:)

finch
21.01.2005, 02:19
2Vam: Обращаюсь в первую очередь к тебе, но может быть, кто-нить еще знает.<br>В журнале миссий слева внизу указан сегодняшний день и время. Также время регистрируется при сейвах. Отсюда вопрос: каким образом игра узнает настоящее время? &nbsp;Может есть какая-нить функция?

Vam
21.01.2005, 09:39
2finch:<br>В журнале миссий слева внизу указан сегодняшний день и время. Также время регистрируется при сейвах. Отсюда вопрос: каким образом игра узнает настоящее время? *Может есть какая-нить функция?<br>Не понял вопроса - настоящее время это какое: игровое, или в котором мы живем? (Не помню что в журнале миссий указывается). В принципе без разницы, настоящее время берется с компа, а игровое время считается экзешником с начала новой игры, при сейвах оно сохраняется, при загрузке восстанавливается. *:)<br><br>Вот функции, оперирующие игровым временем:<br>int Wld_GetDay(); - получить текущий день, отсчет дней идет от дня старта (Gamestart) *= 0.<br>int Wld_IsTime(int hour1,int min1,int hour2,int min2); - возвращает 1, если текущее время находится между границами (hour1, min1 – нижняя граница, hour2, min2 – верхняя граница в часах и минутах), иначе возвращает 0.<br>void Wld_SetTime(int hour,int min); - установить текущее время в часах hour и минутах min. ***<br>

Vam
21.01.2005, 17:01
Может кто-нибудь истолковать перевод слова Wusel по отношению к животным. В словарях ничего похожего не нашел. &nbsp;:(

TycoooN
21.01.2005, 17:09
2Vam: <br>Может кто-нибудь истолковать перевод слова Wusel по отношению к животным. В словарях ничего похожего не нашел. &nbsp;<br>Хм... вот, что нашёл:<br><br>wuseln<br>1) бодро [проворно, живо] двигаться <br>2) кишеть (чем-л)<br><br>wuselig<br>1) живой, проворный <br>2) кишащий (чем-л) <br>3) приятный

aleks999
21.01.2005, 17:20
2Vam: <br>Wusel отвечает за преследование монстром игрока.

aleks999
21.01.2005, 20:56
Сразу извиняюсь, если вопрос не по теме.<br>В папке _work\DATA\ANIMS\MDS_MOBSI лежат СКРИПТОВЫЕ файлы анимации MOBов, которые также отвечают за визуализацию моделей в игре и Спэйсере.<br>Но в этой папке НЕТ кровати, стула, руды... Что делать?<br>Можно ли где-то скачать эти скрипты или надо их прописывать в ручную?

Vam
21.01.2005, 21:37
2aleks999:<br>Сразу извиняюсь, если вопрос не по теме.<br>В папке _work\DATA\ANIMS\MDS_MOBSI лежат СКРИПТОВЫЕ файлы анимации MOBов, которые также отвечают за визуализацию моделей в игре и Спэйсере.<br>Но в этой папке НЕТ кровати, стула, руды... Что делать?<br>Можно ли где-то скачать эти скрипты или надо их прописывать в ручную?<br>Непонятно, какую анимацию ты хочешь видеть от кровати и стула? &nbsp; :o Файлы моделей этих предметов находятся в папке ..\work\Data\Meshes\Mobs.

finch
22.01.2005, 00:32
2Vam: Не понял вопроса - настоящее время это какое: игровое, или в котором мы живем?<br>Игровое.int Wld_GetDay(); - получить текущий день, отсчет дней идет от дня старта (Gamestart) &nbsp;= 0.<br>int Wld_IsTime(int hour1,int min1,int hour2,int min2); - возвращает 1, если текущее время находится между границами (hour1, min1 – нижняя граница, hour2, min2 – верхняя граница в часах и минутах), иначе возвращает 0.<br>void Wld_SetTime(int hour,int min); - установить текущее время в часах hour и минутах min. ***<br>Ни одна из этих функций не выдает точное игровое время, а мне необходимо именно оно...

aleks999
22.01.2005, 20:57
2Vam: <br>Ну в Спейсере в MOBах нужно указать в поле visual .mds-файл, который будет отображать модель и анимацию взаимодействия с ним, к примеру, кузнечная печь, которая есть в mds и ее можно туда вставить, а кровати и стула там нет!

aleks999
23.01.2005, 00:49
2Vam: <br>Вот скрин. Вот про что именно я говорю (MDS)<br><br>http://www.abosoft.nm.ru/data/1.JPG

B_Wolf
28.01.2005, 00:17
Vam, еще раз великий респект тебе, за &quot;Уроки скриптологии&quot;, в особенности за статью &quot;Уроки скриптологии (Ответ #115)&quot; - Тема первая: Глобальные константы.<br><br>Итак просмотрев данный урок, я заметил очень интересные...<br>// Индексы атрибутов НПС<br>const int ATR_HITPOINTS * * * * * * * * *= 0; //Текущая жизнь<br>const int ATR_HITPOINTS_MAX * * * * * *= 1; //Макс. жизнь<br>const int ATR_MANA * * * * * * * * * * * *= 2; //Текущая мана<br>const int ATR_MANA_MAX * * * * * * * * *= 3; //Макс. мана<br>const int ATR_STRENGTH * * * * * * * * *= 4; //Сила<br>const int ATR_DEXTERITY * * * * * * * * *= 5; //Ловкость<br>const int ATR_REGENERATEHP * * * * * *= 6; //Регенерация жизни в секунду<br>const int ATR_REGENERATEMANA * * *= 7; //Регенерация маны в секунду<br><br>И тут на меня нашло озарение! Оказывается все совершенное просто!<br><br>Через пол часа я изготовил следующий предмет:<br><br>instance ITAM_HEALTHBRINGER(C_Item)<br>{<br> * * *name = &quot;Милость Аданоса&quot;;<br> * * *mainflag = ITEM_KAT_MAGIC;<br> * * *flags = ITEM_MISSION | ITEM_AMULET;<br> * * *value = 0;<br> * * *visual = &quot;ItAm_Hp_01.3ds&quot;;<br> * * *material = MAT_STONE;<br> * * *<br> * * *on_equip * * *= * * *Equip_ITMI_HEALTHBRINGER;<br> * * *on_unequip * * *= * * *UnEquip_ITMI_HEALTHBRINGER; * * *<br> * * *wear = WEAR_EFFECT;<br> * * *effect = &quot;SPELLFX_ITEMGLIMMER&quot;;<br> * * *description = name;<br> * * *text[0] = &quot;Милость Аданоса&quot;;<br> * * *text[1] = &quot;будет оберегать тебя в бою.&quot;;<br> * * *inv_zbias = INVCAM_ENTF_AMULETTE_STANDARD;<br>};<br><br>func void Equip_ITMI_HEALTHBRINGER ()<br>{<br> * * *self.attribute[ATR_REGENERATEHP] = 1;<br>};<br><br>func void UnEquip_ITMI_HEALTHBRINGER ()<br>{<br> * * *self.attribute[ATR_REGENERATEHP] = 0;<br>};<br><br>Амулет регенерации жизни...<br>И не нужно никаких громоздкий скриптов с летающим подзарядником, или проверки присутствия амулета у НПЦ (http://forums.gothic.ag/showthread.php?&amp;s=35&amp;t=1105030050&amp;start=75) :)<br><br>Амулет просто работает :)<br><br>Далее вставляем код амулета в IT_Amulette.d, компилируем...<br>И вызываем любыми доступными средствами, например через MARVIN.<br>Insert ITAM_HEALTHBRINGER

finch
28.01.2005, 00:33
Нда... Все гениальное просто...<br>Блин, а я два дня возился...<br>ПоставьтеB Wolf'у плюс кто-нибудь что ли... :)

Mitrich
28.01.2005, 15:15
Если теперь кто-нибудь найдет встроенные в НПС часы (функцию получения текущего времени), на площади Хориниса рядом с Vam`ом появится вторая статуя. :)

aleks999
28.01.2005, 17:26
2B Wolf: <br>ОШИБОЧКА ВЫШЛА! Жизненная сила регенерируется, а вот магическая сила при ношении этого амулета - БЕСКОНЕЧНА!

aleks999
28.01.2005, 17:35
2Mitrich: <br>Только так:<br><br>instance MENU_ITEM_TIME(C_MENU_ITEM_DEF)<br>{<br> * * *text[0] = &quot;XX:XX&quot;;<br> * * *posx = 2200;<br> * * *posy = 6300;<br> * * *fontname = LOG_FONT_DATETIME;<br> * * *flags = flags &amp; ~IT_SELECTABLE;<br>};

finch
29.01.2005, 00:11
2aleks999: И что это нам дает???

aleks999
29.01.2005, 14:07
2finch: <br>Если изменить некоторые параметры, время можно вставить куда угодно :). К примеру, этот код взят из окна заданий. Таким же образом можно вставить его в любое другое окно. И сделать условие, что по времени XX:XX что-нибудь происходит, вот :D

francisc
29.01.2005, 17:01
Люди,как сделать так что бы бандиты не умирали когда у них кончается жизнь,а теряли сознание.Какой скрипт за это отвечает?

aleks999
29.01.2005, 18:25
2francisc: <br>за это отвечает гильдия персонажа. Если у него стоит гильдия типа ZOMBIE, то он умрет. Другими словами, они умирают, если название гильдии имеет значение монстра. Если же нет - он не умирает а падает. Вот. :)

BORISOFF
29.01.2005, 18:49
2aleks999: хм... спрошу для общего развития :) а &nbsp;нельзя ли изменить параметры самой гильдии? и если да, то как?

francisc
29.01.2005, 18:56
2Borisoff: <br>Я собственно и имел ввиду это.

aleks999
29.01.2005, 20:22
2Borisoff: <br>В каком-то файле, помоему в guilds.d прописано все... только в числовом формате :)<br><br>Вот декомпилированный вариант:<br><br>const int TAB_ANZAHL = 256;<br><br>const int GIL_ATTITUDES[256] =<br>{<br> * * *2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,<br> * * *2,3,3,3,3,3,1,1,1,1,1,2,2,2,2,2,<br> * * *2,3,3,3,3,3,1,1,1,1,1,2,2,2,2,2,<br> * * *2,3,3,3,3,3,1,1,1,1,1,2,2,2,2,2,<br> * * *2,3,3,3,3,3,3,1,1,1,1,1,1,1,3,2,<br> * * *2,3,3,3,3,3,1,1,1,1,1,2,2,2,2,2,<br> * * *2,2,2,2,3,2,3,3,2,2,2,2,2,2,3,2,<br> * * *2,1,1,1,1,1,3,3,2,3,3,2,2,2,2,2,<br> * * *2,1,1,1,1,1,2,2,3,3,3,2,2,2,2,2,<br> * * *2,1,1,1,1,1,3,3,3,3,3,2,2,2,2,2,<br> * * *2,1,1,1,1,1,3,3,3,3,3,2,2,2,2,2,<br> * * *2,2,2,2,1,2,1,2,2,2,2,3,3,3,2,2,<br> * * *2,2,2,2,1,2,1,2,2,2,2,3,3,3,2,2,<br> * * *2,2,2,2,1,2,1,2,2,2,2,3,3,3,2,2,<br> * * *2,2,2,2,2,2,2,2,2,2,3,2,2,2,3,2,<br> * * *2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3<br>};<br><br>const int GIL_ATTITUDES_FMTAKEN[256] =<br>{<br> * * *2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,<br> * * *0,3,3,3,0,3,0,0,0,0,0,0,0,0,0,2,<br> * * *0,3,3,3,0,3,0,0,0,0,0,0,0,0,0,2,<br> * * *0,3,2,3,0,2,0,0,0,0,0,0,0,0,0,2,<br> * * *3,0,0,0,3,2,3,3,3,3,3,3,3,3,3,2,<br> * * *0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,2,<br> * * *3,0,0,0,3,0,3,3,2,2,2,3,3,3,3,3,<br> * * *3,0,0,0,3,0,3,3,2,3,3,3,3,3,3,3,<br> * * *3,0,0,0,3,0,2,2,3,3,3,3,3,3,3,3,<br> * * *3,0,0,0,3,0,3,3,3,3,3,2,2,2,2,2,<br> * * *3,0,0,0,3,0,3,3,3,3,3,2,2,2,2,2,<br> * * *3,0,0,0,3,2,1,2,2,2,2,3,3,3,2,2,<br> * * *3,0,0,0,3,2,1,2,2,2,2,3,3,3,2,2,<br> * * *3,0,0,0,3,2,3,3,3,3,3,3,3,3,2,2,<br> * * *2,2,2,2,2,2,2,2,2,2,3,2,2,2,3,2,<br> * * *2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3<br>};<br><br>const int GIL_ATTITUDES_ORCASSAULT[256] =<br>{<br> * * *2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,<br> * * *2,3,2,2,2,2,1,1,1,1,1,2,2,2,2,2,<br> * * *2,2,3,2,2,2,1,1,1,1,1,2,2,2,2,2,<br> * * *2,2,2,3,2,2,1,1,1,1,1,2,2,2,2,2,<br> * * *2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,<br> * * *2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,<br> * * *2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,<br> * * *2,1,1,1,2,2,2,3,2,2,2,2,2,2,2,2,<br> * * *2,1,1,1,2,2,2,2,3,2,2,2,2,2,2,2,<br> * * *2,1,1,1,2,2,2,2,2,3,2,2,2,2,2,2,<br> * * *2,1,1,1,2,2,2,2,2,2,3,2,2,2,2,2,<br> * * *2,1,1,1,1,1,1,1,2,2,1,3,2,2,2,2,<br> * * *2,1,1,1,1,1,2,1,2,2,1,2,3,2,2,2,<br> * * *2,1,1,1,1,1,2,1,2,2,1,2,2,3,2,2,<br> * * *2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,<br> * * *2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3<br>};<br><br>const int GIL_ATTITUDES_NEMESIS[256] =<br>{<br> * * *1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,<br> * * *1,2,2,1,2,1,1,1,1,1,1,1,1,1,2,2,<br> * * *1,2,2,1,2,1,1,1,1,1,1,1,1,1,2,2,<br> * * *1,1,1,2,1,1,1,1,1,1,1,1,1,1,2,2,<br> * * *1,2,1,1,2,1,2,1,1,1,1,1,1,1,2,2,<br> * * *1,1,1,1,2,2,1,1,1,1,1,1,1,1,2,2,<br> * * *1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,2,<br> * * *1,0,0,0,0,0,1,2,1,1,1,1,1,1,2,2,<br> * * *1,0,0,0,0,0,1,1,2,1,1,1,1,1,2,2,<br> * * *1,0,0,0,0,0,1,1,1,2,1,1,1,1,2,2,<br> * * *1,0,0,0,0,0,1,1,1,1,2,1,1,1,2,2,<br> * * *1,0,0,0,1,0,1,1,1,1,1,2,1,1,2,2,<br> * * *1,0,0,0,1,0,1,1,1,1,1,1,2,1,2,2,<br> * * *1,0,0,0,1,0,1,1,1,1,1,1,1,2,2,2,<br> * * *1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,<br> * * *1,2,2,2,2,2,1,1,1,1,1,1,1,1,2,3<br>};<br><br>Вот оригинальные исходники:<br><br><br>////////////////////////////////////////////////////////////////////////////////<br>///////////<br>// Gilden<br>// Aufnahmebedingungen<br>// Lernprogramme<br>////////////////////////////////////////////////////////////////////////////////<br>///////////<br><br>// ************************************************** ******************************<br>************************************<br>// Gruppenattitьden <br>// ************************************************** ******************************<br>************************************<br><br>CONST INT TAB_ANZAHL = 16 * 16;<br><br>CONST INT GIL_ATTITUDES [TAB_ANZAHL] = * * *// AL und *NL verдrgert (Magier zueinander freundlich) ST neutral zu AL und NL (Magier verдrgert zu ST)<br>{<br>// * * * * * *None * * * * * * * * *EBr * * * * * * * * * * * *Grd * * * * * * * * * * * *Stt * * * * * * * * * * * *KdF * * * * * * * * * * * *Vlk ** * * * * * * * * * * * * * *KdW ** * * * * * * * *Sld * * * * * * * * * * * *Org ** * * * * * * * *Bau ** * * * * * * * *SfB ** * * * * * * * * * * * * * *Gur ** * * * * * * * *Nov ** * * * * * * * *Tpl ** * * * * * * * * * * * * * *Dдm ** * * * * * * * *Bab * * * * * *<br>/*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Ebr*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Ebr*/ * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * */*Ebr*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Ebr*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Grd*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Grd*/ * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * */*Grd*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Grd*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Stt*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Stt*/ * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * */*Stt*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Stt*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Kdf*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Kdf*/ * * *ATT_FRIENDLY, * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * */*Kdf*/ * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * */*Kdf*/ * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *<br>/*Vlk*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Vlk*/ * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * */*Vlk*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Vlk*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Kdw*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * */*Kdw*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Kdw*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Kdw*/ * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *<br>/*Sld*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * */*Sld*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Sld*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Sld*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Org*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * */*Org*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Org*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Org*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Bau*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * */*Bau*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Bau*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Bau*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Sfb*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * *ATT_ANGRY, * * * * * */*Sfb*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Sfb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Sfb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Gur*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * * * * *ATT_NEUTRAL, * * */*Gur*/ * * *ATT_ANGRY, * * * * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Gur*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Gur*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Nov*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * * * * *ATT_NEUTRAL, * * */*Nov*/ * * *ATT_ANGRY, * * * * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Nov*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Nov*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Tpl*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * * * * *ATT_NEUTRAL, * * */*Tpl*/ * * *ATT_ANGRY, * * * * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Tpl*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Tpl*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Dmb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Dmb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * */*Dmb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Dmb*/ * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *<br>/*Bab*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Mst*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Mst*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Mst*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY * * *<br><br>};<br><br>CONST INT GIL_ATTITUDES_FMTAKEN [TAB_ANZAHL] = * * *// AL und NL feindlich<br>{ * * * * * *<br>// * * * * * *None * * * * * * * * *EBr * * * * * * * * * * * *Grd * * * * * * * * * * * *Stt * * * * * * * * * * * *KdF * * * * * * * * * * * *Vlk ** * * * * * * * * * * * * * *KdW ** * * * * * * * *Sld * * * * * * * * * * * *Org ** * * * * * * * *Bau ** * * * * * * * *SfB ** * * * * * * * * * * * * * *Gur ** * * * * * * * *Nov ** * * * * * * * *Tpl ** * * * * * * * * * * * * * *Dдm ** * * * * * * * *Bab * * * * * *<br>/*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Ebr*/ * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * */*Ebr*/ * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Ebr*/ * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Ebr*/ * * *ATT_HOSTILE, * * *ATT_NEUTRAL, * * *<br>/*Grd*/ * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * */*Grd*/ * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Grd*/ * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Grd*/ * * *ATT_HOSTILE, * * *ATT_NEUTRAL, * * *<br>/*Stt*/ * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_NEUTRAL, * * */*Stt*/ * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Stt*/ * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Stt*/ * * *ATT_HOSTILE, * * *ATT_NEUTRAL, * * *<br>/*Kdf*/ * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * */*Kdf*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Kdf*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Kdf*/ * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *<br>/*Vlk*/ * * *ATT_HOSTILE, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Vlk*/ * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Vlk*/ * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Vlk*/ * * *ATT_HOSTILE, * * *ATT_NEUTRAL, * * *<br><br>/*Kdw*/ * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * */*Kdw*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Kdw*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Kdw*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *<br>/*Sld*/ * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * */*Sld*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Sld*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Sld*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *<br>/*Org*/ * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * */*Org*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Org*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Org*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *<br>/*Bau*/ * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * */*Bau*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Bau*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Bau*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Sfb*/ * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * */*Sfb*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Sfb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Sfb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Gur*/ * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * */*Gur*/ * * *ATT_ANGRY, * * * * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Gur*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Gur*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Nov*/ * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * */*Nov*/ * * *ATT_ANGRY, * * * * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Nov*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Nov*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Tpl*/ * * *ATT_FRIENDLY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * */*Tpl*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Tpl*/ * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * *ATT_FRIENDLY, * * */*Tpl*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Dmb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Dmb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * */*Dmb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Dmb*/ * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *<br>/*Bab*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Mst*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Mst*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Mst*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY * * *<br><br>};<br>.................................................. .....

aleks999
29.01.2005, 20:23
..................................................<br>//#################################<br>//<br>// * * *SN 09.01.01: Alter Kram<br>//<br>//#################################<br><br>CONST INT GIL_ATTITUDES_ORCASSAULT [TAB_ANZAHL] = * * * * * * * * *// von Steffen (so gelassen)<br>{<br>// * * *None * * * * * *EBr * * * * * *Grd * * * * * *Stt * * * * * *KdF * * * * * *Vlk &nbsp;* * * * * * * * *KdW &nbsp;* * * * * *Sld * * * * * *Org &nbsp;* * * * * *Bau &nbsp;* * * * * *SfB &nbsp;* * * * * * * * *Gur &nbsp;* * * * * *Nov &nbsp;* * * * * *Tpl &nbsp;* * * * * * * * *Dдm &nbsp;* * * * * *Mst * * * * * *<br>/*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Ebr*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Ebr*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Ebr*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Ebr*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Grd*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Grd*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Grd*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Grd*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Stt*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Stt*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Stt*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Stt*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Kdf*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * */*Kdf*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Kdf*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Kdf*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Vlk*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * */*Vlk*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Vlk*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Vlk*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Kdw*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Kdw*/ * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Kdw*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Kdw*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Sld*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Sld*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Sld*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Sld*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Org*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Org*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Org*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Org*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Bau*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Bau*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * */*Bau*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Bau*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Sfb*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Sfb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * */*Sfb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Sfb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Gur*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Gur*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * */*Gur*/ * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Gur*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Nov*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Nov*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * */*Nov*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * */*Nov*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Tpl*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Tpl*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * */*Tpl*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_FRIENDLY, * * */*Tpl*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Dmb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Dmb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Dmb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Dmb*/ * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *<br>/*Mst*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Mst*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Mst*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Mst*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY * * *<br>};<br><br>CONST INT GIL_ATTITUDES_NEMESIS [TAB_ANZAHL] = * * * * * * * * * * * *// von Steffen (so gelassen)<br>{<br>// * * *None * * * * * *EBr * * * * * *Grd * * * * * *Stt * * * * * *KdF * * * * * *Vlk &nbsp;* * * * * * * * *KdW &nbsp;* * * * * *Sld * * * * * *Org &nbsp;* * * * * *Bau &nbsp;* * * * * *SfB &nbsp;* * * * * * * * *Gur &nbsp;* * * * * *Nov &nbsp;* * * * * *Tpl &nbsp;* * * * * * * * *Dдm &nbsp;* * * * * *Mst * * * * * *<br>/*Non*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Non*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Non*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Non*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Ebr*/ * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * */*Ebr*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Ebr*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Ebr*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Grd*/ * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * */*Grd*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Grd*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Grd*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Stt*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Stt*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Stt*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Stt*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Kdf*/ * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * */*Kdf*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Kdf*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Kdf*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Vlk*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Vlk*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Vlk*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Vlk*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Kdw*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Kdw*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Kdw*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Kdw*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Sld*/ * * *ATT_ANGRY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Sld*/ * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Sld*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Sld*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Org*/ * * *ATT_ANGRY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Org*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Org*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Org*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Bau*/ * * *ATT_ANGRY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Bau*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * */*Bau*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Bau*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Sfb*/ * * *ATT_ANGRY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * */*Sfb*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * */*Sfb*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Sfb*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Gur*/ * * *ATT_ANGRY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_ANGRY, * * *ATT_HOSTILE, * * */*Gur*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Gur*/ * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Gur*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Nov*/ * * *ATT_ANGRY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_ANGRY, * * *ATT_HOSTILE, * * */*Nov*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Nov*/ * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_ANGRY, * * */*Nov*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br>/*Tpl*/ * * *ATT_ANGRY, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_HOSTILE, * * *ATT_ANGRY, * * *ATT_HOSTILE, * * */*Tpl*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Tpl*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * */*Tpl*/ * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *<br><br>/*Dmb*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Dmb*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Dmb*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Dmb*/ * * *ATT_FRIENDLY, * * *ATT_NEUTRAL, * * *<br>/*Mst*/ * * *ATT_ANGRY, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * *ATT_NEUTRAL, * * */*Mst*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Mst*/ * * *ATT_ANGRY, * * *ATT_ANGRY, * * *ATT_ANGRY, * * */*Mst*/ * * *ATT_NEUTRAL, * * *ATT_FRIENDLY * * *<br>};<br><br><br>Вот тут и изменять

BORISOFF
29.01.2005, 20:32
2aleks999: const int TAB_ANZAHL = 256;<br><br>const int GIL_ATTITUDES[256] =<br>{<br> &nbsp; &nbsp; 2,2,2,2,2,2,2... всю эту чешую я находил, но как изменять-то ее?<br><br>Вот оригинальные исходники: всмысле? каким путем они получены, и где лежат? :)

aleks999
29.01.2005, 21:48
2Borisoff: <br>GMDK\_work\data\Scripts\content\Story\Guilds.d

francisc
30.01.2005, 12:55
Если в мисии при определенном условии и диалоге прописать это<br>self.guild = GIL_DJG; будет ли меняться гильдия у нпс?Если нет,то как сделать что бы менялась?

aleks999
30.01.2005, 13:21
2francisc: <br>Не-а, нужно еще кое-что приписать.<br>Вот так:<br>Npc_SetTrueGuild(hero,GIL_DJG);<br>hero.guild = GIL_DJG;

Alexus_G
30.01.2005, 14:13
А пробовал кто-нибудь делать переход из Newworld'a на какую-нибудь свою карту. У меня такая проблема: карта грузится, но после загрузки - темнота, и ничего и никого нет. Кто знает, подскажите, плиз, где/что нужно прописать?

francisc
30.01.2005, 14:28
2aleks999: <br>А в какой-нибудь миссии это можно посмотреть,было ли что-нибудь похожее?Знаю у бандита,который рядом с Ковалорном стоит было это прописанно :<br>B_SetAttitude(self,ATT_FRIENDLY);<br> &nbsp; &nbsp; &nbsp;self.npcType = NPCTYPE_FRIEND;<br> &nbsp; &nbsp; &nbsp;self.aivar[AIV_EnemyOverride] = FALSE;<br>Это не изменение гильдии,это изменение отношения<br>

BORISOFF
30.01.2005, 16:12
какой скрипт отвечает за то, когда будет крутиться мельница? или такого скрипта вообще нет?

francisc
30.01.2005, 16:54
Мельница это объект.А зачем тебе это?

BORISOFF
30.01.2005, 17:00
2francisc: Мельница это объект но она же по ночам останавливается! (или я что-то перепутал?) А зачем тебе это? для общего развития опять. можно было к примеру сделать квест со сломанной мельницей :)

TycoooN
30.01.2005, 18:32
2Mitrich: <br>Если теперь кто-нибудь найдет встроенные в НПС часы (функцию получения текущего времени), на площади Хориниса рядом с Vam`ом появится вторая статуя.<br>Я знаю способ, как сделать переменную, скажем, time, которая всегда будет равна количеству реальных секунд, прошедших с начала игры. Но способ слегка громоздкий :)

finch
30.01.2005, 19:49
2TycoooN: Я знаю способ, как сделать переменную, скажем, time, которая всегда будет равна количеству реальных секунд, прошедших с начала игры. Но способ слегка громоздкий<br>Ну так выкладывай!! :)

aleks999
30.01.2005, 21:00
2francisc: <br>По поводу изменения гильдий посмотри в диалогах у тех, кто ее меняет (Лорд Андре, лорд Хаген, Ли...)

TycoooN
30.01.2005, 21:59
2finch: <br>Делаем где-нить мини-НПС, где его никто никогда не видит и не услышит (кк вариант - в горах).<br>Далее прописываем ему в расписание дня такую функцию:<br><br>func void ZS_Time()<br>{<br> &nbsp; &nbsp; &nbsp;B_ResetAll(self);<br>};<br><br>func int ZS_Time_loop()<br>{<br> &nbsp; &nbsp; &nbsp;if (Npc_GetStateTime(self) &gt;= 2)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;time += 1;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Npc_SetStateTime(MiniMan,1);<br> &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;return LOOP_CONTINUE;<br>};<br><br>func void ZS_Time_end()<br>{<br>};<br><br><br>После этого переменная time должна быть равна кол-ву секунд, но я еще такой вариант не тестил ::)

finch
30.01.2005, 22:03
C изменением гильдии никаких проблем нет...<br>Чтобы изменить гильдию ГГ, например, на послушника, вставляем<br><br> &nbsp; &nbsp; &nbsp;NPC_SetTrueGuild(hero,GIL_NOV);<br> &nbsp; &nbsp; &nbsp;hero.guild = GIL_NOV;<br><br>Чтобы изменить гильдию любого другого НПС, hero заменяем на имя этого НПС.<br><br><br>2TycoooN: Делаем где-нить мини-НПС, где его никто никогда не видит и не услышит (кк вариант - в горах).<br>Так точно не прокатит... Если мини-НПС будет находиться вне пределов видимости ГГ, то он не будет выполнять свой ТА...<br>Возможно, этот код будет работать при условии, что мини-НПС будет постоянно летать за ГГ, как &quot;речаджер&quot; из скрипта амулета регенерации.

aleks999
31.01.2005, 16:09
А можно сделать такой амулет, чтоб после смерти мы оживали, как при нажатии F8?

Dagot_Ur
31.01.2005, 21:41
2aleks999: А зачем? Лучше сразу бессмертие и вперед с песнями! :)

aleks999
31.01.2005, 22:20
2Dagot_Ur: <br>Ну нужен такой амулет, чтоб он действовал только один раз, как Глаз Инноса, и когда мы умирали - один раз оживали.

Dagot_Ur
03.02.2005, 06:48
Народ, давайте поговорим о роликах на движке игры (движение камеры). Как их можно создавать, каким способом. Я, если честно, до сих пор так и не разобрался с подобным вопросом. Может где-то у немцев и написано про это, но я ихнего языка не знаю и поэтому ничего не понимаю... :( :)

francisc
03.02.2005, 11:13
2Dagot_Ur: <br>К несчастью я сам этого е знаю.<br>Где надо прописывать :<br>MIS_Rafael_problem = LOG_RUNNING;<br>и <br>MIS_Rafael_problem &nbsp;= LOG_SUCCESS; ?<br>Как сделать, что бы начислялась экспа?В каких файлах надо писать?<br>Я точно знаю что експа это b_giveplayerxp(XP_VINOWEIN);<br>А вот только где прописывать XP_VINOWEIN?<br>

Mitrich
03.02.2005, 12:11
2Dagot_Ur: finch определенно имеет опыт в этом деле - он мне объяснил в двух словах, но лучше он сам более подробно расскажет при желании.<br><br>Раз уж ты объявился, не подскажешь, тебе что-нибудь известно про прямую функцию получения текущего времени? И второе - сейчас AI поизводит рассчет ТА НПС в очень маленьком радиусе вокруг игрока - мне нужно его существенно увеличить. Как это сделать, есть мысли?

Vam
03.02.2005, 12:37
2Mitrich:<br>И второе - сейчас AI поизводит рассчет ТА НПС в очень маленьком радиусе вокруг игрока - мне нужно его существенно увеличить. Как это сделать, есть мысли?<br>Что ты понимаешь под расчетом распорядка дня вокруг ГГ? &nbsp;::)<br>А такую переменную не пробовал менять?<br>const int TA_DIST_SELFWP_MAX &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 500; &nbsp;//Дистанция до объекта, на которой начинают выполняться функции распорядка дня

Mitrich
03.02.2005, 13:15
2Vam: Что ты понимаешь под расчетом распорядка дня вокруг ГГ? ТА НПС начинают рассчитываться только при определенном приближении к ним игрока, т.е. фактически в некоем радиусе. Поэтому и вокруг. :)<br><br>А такую переменную не пробовал менять?<br>Если она была в уроках, то я ее пропустил. :( А где она находится?

Vam
03.02.2005, 13:31
2Mitrich:<br>Если она была в уроках, то я ее пропустил. *А где она находится?<br>Пост №141 уроков.<br>ТА НПС начинают рассчитываться только при определенном приближении к ним игрока, т.е. фактически в некоем радиусе. Поэтому и вокруг.<br>Но ведь многие НПС идут выполнять свои функции, а это и есть распорядок дня, в разные точки, в независимости от того, был ли рядом с ними ГГ или нет.

aleks999
03.02.2005, 14:56
Кто-нибудь скажет, как сделать, чтобы амулет один раз возрождал после смерти?<br><br>И кто-нибудь исправит ошибку в амулете регенерации?

TycoooN
03.02.2005, 15:21
2francisc: Где надо прописывать :<br>MIS_Rafael_problem = LOG_RUNNING;<br>и <br>MIS_Rafael_problem &nbsp;= LOG_SUCCESS; ?<br>В скрипте самого диалога<br><br>XP_VINOWEIN<br>Можно в файле XP_Constants.d, а можно просто написать<br>B_GivePlayerXP(100) , и ГГ получит 100 экспы ::)

PA
03.02.2005, 16:20
2Dagot_Ur:<br>Народ, давайте поговорим о роликах на движке игры (движение камеры). Как их можно создавать, каким способом. Я, если честно, до сих пор так и не разобрался с подобным вопросом. Может где-то у немцев и написано про это, но я ихнего языка не знаю и поэтому ничего не понимаю... <br><br>Отвязываешь камеру от ГГ (но можно этого и не делать) включаешь грабилку (как правило fraps) и проигрываешь сюжетик (ну ГГ прыгает и дерется... или какой ладшафт облетаем).<br>После этого полученный мувик обрабатываешь - проще загнать в флэшку и УСЕ.<br><br>

Mitrich
03.02.2005, 16:51
2Pa: включаешь грабилку (как правило fraps) <br>Звук она захватывать умеет?

ZXZX
03.02.2005, 17:36
2Mitrich:<br>Звук она захватывать умеет?<br>Sorry, что вмешиваюсь.<br>Можно воспользоваться &quot;HyperCam&quot;-я с её помощью видеокараоке делал-захватывает окно плейера с картинкой, а звук пишет с master volume в wav-e.<br>Только, наверное, проще звук потом наложить.<br>

francisc
03.02.2005, 19:47
2TycoooN: <br><br>2francisc: Где надо прописывать :<br>MIS_Rafael_problem = LOG_RUNNING;<br>и<br>MIS_Rafael_problem &nbsp;= LOG_SUCCESS; ?<br>В скрипте самого диалога<br><br>Нет,при компиляции мне пишет ошибку unknown indentifer MIS_Rafael_problem

aleks999
03.02.2005, 20:09
2francisc: <br>нужно еще в Story_globals.d прописать что значат твои MIS_Rafael_problem = &quot;Проблема Рафаеля&quot;

Mitrich
03.02.2005, 20:18
2ZXZX: Sorry, что вмешиваюсь.<br>Да какое уж тут &quot;сорри&quot;, спасибо, что вмешиваешься. :) <br><br>Тут не много крутых перцев из мира аудио/видеозахвата, поэтому будет крайне удачно, если ты поделишься своим опытом в более доступной и развернутой форме. Наложить звук потом можно, но в том то и вся прелесть, чтобы использовать не только видео, но и звук, создаваемый движком. Для этого, как я понимаю, было бы идеальным вариантом снимать не только картинку с экрана (зачем нам вообще плеер?), но и звук с выхода. А уж как потом все это вместе сводить, AdobePremier сам разберется. :)

WSA
03.02.2005, 20:22
2Dagot_Ur: Данные ролики делаются в Спейсере с помощью объекта zCCSCamera. Для этого объекта набираются фреймы zCCamTrj_KeyFrame. Вызывается ролик командой Wld_SendTrigger(&quot;&quot;); скриптово. Я к сожалению пока такие ролики не делал и не исключено, что там куча вопросов при реализации возникнет.<br>2Mitrich, Vam: Расчет всех TA нерационален. Самое главное - расчет таких TA, как RunToWP и подобных, тем самым можно убрать эффект телепортирования НПСов при переходе на заданный вейпойнт. У меня пока нет идей, как это сделать.

TycoooN
03.02.2005, 21:10
2aleks999: <br>нужно еще в Story_globals.d прописать что значат твои MIS_Rafael_problem = &quot;Проблема Рафаеля&quot;<br>Вообще-то это не строковая, а целочисленная переменная, и ей не може быть присвоено значение &quot;Проблема Рафаеля&quot;. Переменные вроде MIS_*** просто вводят как var int MIS_*** в файле Story_globals.d

aleks999
03.02.2005, 21:46
2francisc: 2TycoooN: <br>Вот все, что нужно где-нибудь прописать:<br>const string MIS_Rafael_problem = &quot;Проблема Рафаэля&quot;;<br>var int MIS_END_Rafael_problem;<br>B_CloseTopic(MIS_Rafael_problem,0,MIS_END_Rafael_p roblem,6);<br><br>И в самом диалоге:<br>При получении миссии:<br>Log_CreateTopic(MIS_Rafael_problem,LOG_MISSION);<br>Log_SetTopicStatus(MIS_Rafael_problem,LOG_Running) ;<br>B_LogEntry(MIS_Rafael_problem,&quot;Тут нужно написать то, что будет в журнале.&quot;);<br>И при завершении миссии:<br>MIS_END_Rafael_problem = TRUE;

Mitrich
03.02.2005, 22:01
2WSA: Расчет всех TA нерационален. Самое главное - расчет таких TA, как RunToWP и подобных, тем самым можно убрать эффект телепортирования НПСов при переходе на заданный вейпойнт. А я планировал сегодня закончить свои эксперименты, чтобы уже аргументированно подойти к ответу. Но для их чистоты мне нужно было адекватны полигон создать, а я не успел. :(<br><br>2Vam: Но ведь многие НПС идут выполнять свои функции, а это и есть распорядок дня, в разные точки, в независимости от того, был ли рядом с ними ГГ или нет.<br>Как совершенно правильно заметил WSA, за пределами радиуса просчета происходит не выполнение ТА и всех внутренних его функций, а проверяется только точка выполнения (но не само выполнение). Т.е. если НПС за пределами радуиса просчета, а вейпойнт в ТА изменился, НПС будет мгновенно туда перенесен, но делать он там ничего не будет, пока игрок не приблизится. Проверялся спектакль зашитой в ТА функцией, которая добавляет единицу N-контрольного предмета за каждые время t выполнения ТА. Если 5 минут стоять рядом с НПС, он честно получит в инвентарь Nхt. Если от него удалиться, количество полученных предметов явно меньше.<br>Второй вариант (исторически первый) - запуск Готик 2 через GothicStarter с ZSpy. Выходим из башни Ксардаса, следим за сообщениями ZSpy. Где-то в районе пенька (прямо перед башней) выдается сообщение &quot;02.30 Info 2U NPC:AI Insert NPC Goblin YGOBBO_GREEN &lt;oNpc.cpp, #9188&gt;&quot; Насколько я понимаю, это начался рассчет гоблина, который слева у озера. Если назад отойти вместо Insert будет Removed.

ZXZX
03.02.2005, 22:23
2Mitrich:<br>снимать не только картинку с экрана (зачем нам вообще плеер?), но и звук с выхода<br>Плеер это для примера.:)<br> *HyperCam (есть и другие подобные проги),захватывает и графику и звук.<br>Игра запускается в оконном режиме, выставляется оптимальное разрешение и битность цвета.<br>Alt-tab перемещаемся между окном игры и окном HyperCam.<br><br> *В HyperCam выбираются параметры захвата и сохранения видео и звука,затем -область захвата(окно целиком или произвольную).Горячими клавишами или мышой запускаем захват.Переключаемся на окно игры и запускаем нужный фрагмент.При захвате вокруг окна начинает мигать рамка.<br><br>По-окончании, вновь Alt-tab на HyperCam , останавливаем захват потом ставим игру на паузу.<br>Можно сразу просмотреть, что и как получилось, щелкнув на play в HyperCam.<br><br>Далее, вырезаем из получившейся avi-шки нужное(можно использовать VirtualDub) и в RADVideo<br>Tools конвертим в стандартный .bik. <br><br> Я сейчас пробовал.Все работает, но на Athlon 2800/512/FX5200 игра подтормаживает во время захвата1024X768 в 32-битном цвете. Надо тыкаться-может проц разгружать, память..<br><br><br>

francisc
03.02.2005, 23:52
const string MIS_Rafael_problem = &quot;Проблема Рафаэля&quot;;<br>var int MIS_END_Rafael_problem;<br>B_CloseTopic(MIS_Rafael_problem,0,MIS_END_Rafael_p roblem,6<br><br>Это как я поянл нужно в Story_globals.d.

TycoooN
03.02.2005, 23:56
2francisc: <br>Нет.<br>B_CloseTopic нужно прописать в Log_Entries\B_CloseTopics_***.d<br>const string MIS_Rafael_problem - в Log_Entries\LOG_Constants_***.d<br><br><br>

finch
04.02.2005, 01:07
2Dagot_Ur: Народ, давайте поговорим о роликах на движке игры (движение камеры). Как их можно создавать, каким способом.<br><br>finch определенно имеет опыт в этом деле - он мне объяснил в двух словах, но лучше он сам более подробно расскажет при желании.<br><br>Все зависит от того, как ты собираешься использовать этот ролик...<br>В принципа, здесь уже почти все сказали, но попытаюсь немного обощить...<br><br>1. ЕСли тебе нужен ролик на движке для заставки (например, в начале игры), то тогда, конечно, лучше всего использовать названные выше программы. Я лично использую fraps, а потом при помощи radvideo можно конвертануть ролик в *.bik<br><br>2. Если ты хочешь, чтобы ролик запускался в самой игре, при наступлении какого-нибудь события (пример, движение камеры в самом начале Диккурика), то здесь все немного сложнее...<br>Для начала необходимо в Спейсере вставить эту камеру, задать кейфреймы.<br>чтобы разобраться,как это работает, зайди в спейсер, на вертикальном тулбаре нажми кнопку с камерой. В соседнем окошке появится список доступных камер, сверху кнопка INSERT. Выбираешь любую камеру, жмешь инсерт - камера вставлена в игровой мир. Чтобы посмотреть, как она работает, можно нажать кнопку PLAY.<br>теперь о кейфреймах...<br>выбери в меню veiw/../toggle cams<br>должны появиться зеленые и белые линии.<br>белые линии - траектория движения камеры<br>зеленые - траектория, на которую камера &quot;смотрит&quot;<br>если удалить все кейфреймы, которые составляют зеленую линию, то камера будет смотреть просто перед собой.<br><br>чтобы запустить камеру в игре, используется функция Wld_SendTrigger(&quot;&quot;);. В кавычках название камеры.<br>Например, эту функцию можно запустить через триггер или диалог.<br>Через диалог не советую, т.к. если камера находится дальше тридцати метров от ГГ, который ведет диалог - диалог автоматически пропадает.<br>Короче, главное начать, а там уже разобраться будет не так и сложно! :)<br><br>З.Ы. Сорри, если все вышенаписанное выглядит невнятно или имеет неточности... Только что пришел с работы, писал все по памяти! :)

Dagot_Ur
04.02.2005, 03:25
2finch: Я как раз и имел в виду камеру в самой игре, а не видео-ролик &quot;через fraps&quot;. Можно ли прогон камеры создавать через скрипты, не затрагивая спейсер? А вообще спасибо, теперь все вошло в свое русло. :)

Dagot_Ur
04.02.2005, 06:48
Я тут почитал идеи регенерации с ренжачрком - это ж надо до такого додуматься. :lol: И вот что хочу спросить: где это вы откопали эту фунцию цикла в моде ManaReload? Сейчас скачал посмотреть - там точно такого нет!<br>

Vam
04.02.2005, 10:00
2Mitrich:<br>Как совершенно правильно заметил WSA, за пределами радиуса просчета происходит не выполнение ТА и всех внутренних его функций, а проверяется только точка выполнения (но не само выполнение). Т.е. если НПС за пределами радуиса просчета, а вейпойнт в ТА изменился, НПС будет мгновенно туда перенесен, но делать он там ничего не будет, пока игрок не приблизится. Проверялся спектакль зашитой в ТА функцией, которая добавляет единицу N-контрольного предмета за каждые время t выполнения ТА. Если 5 минут стоять рядом с НПС, он честно получит в инвентарь Nхt. Если от него удалиться, количество полученных предметов явно меньше.<br><br>Это же игра, а не мультизадачная система реального времени. То, что находится за зоной видимости ГГ вообще не должно волновать, как будто, да и в реальности, ничего нет, но когда объект попадает в зону видимости он должен адекватно отображаться в заданном состоянии. Если НПС заставили пилить дрова и сами ушли, то подойдя по истечении определенного времени просто должны увидеть результат (N = время * производительность). То же относится к перемещению, расстояние от НПС до точки путешествия известно, траектория задана, и через скорость получаем время прибытия НПС в конечную точку, если мы встанем где-то у него на пути, он должен прошлепать мимо.<br>Как я понимаю, для реализации всего этого не хватает одного параметра - фактического времени.<br><br>Теперь вопрос - кто-нибудь пробовал менять значение константы именно на стадии работы скриптов, а не до компиляции. Работает ли такая вещь? Или можно менять значение только у VAR переменной?

Mitrich
04.02.2005, 12:41
2Vam: Это же игра, а не мультизадачная система реального времени Согласен - анимацию можно не воспроизводить, но рассчитывать результаты действий НПС за пределами видимости надо (задача такая).<br><br>Как я понимаю, для реализации всего этого не хватает одного параметра - фактического времени. Именно. Не обнаружив такого элементарного инструмента, мне приходится думать о варианте честного расчета, т.е. о системе реального времени. Но не только поэтому.<br><br>Если НПС заставили пилить дрова и сами ушли, то подойдя по истечении определенного времени просто должны увидеть результат (N = время * производительность). <br>Верно. Но если НПС заставить напасть на другого НПС? Как рассчитывать результат? Фиксировать время стычки и прикидывать значения атака/защита данных НПС? Сейчас в Готике расчет стычки начинается когда игрок подойдет, а до этого момента все мирно курят.<br><br>То же относится к перемещению, расстояние от НПС до точки путешествия известно, траектория задана, и через скорость получаем время прибытия НПС в конечную точку, если мы встанем где-то у него на пути, он должен прошлепать мимо. Я думаю, надо определить какие промежуточные вейпойнты находятся на траектории и рассчитать время достижения ближайшей, т.к. по дороге (по идее) может случиться некоторое событие, которые путь прервет - драка например.<br><br> 2ZXZX: Я сейчас пробовал.Все работает, но на Athlon 2800/512/FX5200 игра подтормаживает во время захвата1024X768 в 32-битном цвете. Надо тыкаться-может проц разгружать, память.. А по диспетчеру не удалось отследить загрузку процессора и использование памяти? Третью составляющую (видеокарту) можно было бы тогда элементарно вычелить методом исключения.

ZXZX
04.02.2005, 14:27
2Mitrich: <br>не удалось отследить<br>Да, собственно,специально не проверял.<br>ИМХО, может с этим перейти в тему &quot;Die Nacht des Raben 2.8 (МОД)&quot;,а то к скриптам она имеет отдаленное отношение ;)

WSA
04.02.2005, 20:31
2finch: Обобщил хорошо.<br>Интересует такая вещь: как правильно писать тригер ocTriggerChangeLevel или ocTriggerScript через событие OnTouch. У меня получилось только из zcTriggerа, да и то точечного.<br>2Mitrich: Я думаю, надо определить какие промежуточные вейпойнты находятся на траектории и рассчитать время достижения ближайшей, т.к. по дороге (по идее) может случиться некоторое событие, которые путь прервет - драка например. Я об этом тоже думал. Попробую сделать упрощенный вариант.

finch
05.02.2005, 00:12
2Dagot_Ur: Можно ли прогон камеры создавать через скрипты, не затрагивая спейсер?<br>ИМХО, нет...<br><br>2WSA: Интересует такая вещь: как правильно писать тригер ocTriggerChangeLevel или ocTriggerScript через событие OnTouch. У меня получилось только из zcTriggerа, да и то точечного.<br>Не понял вопроса...<br>На ОнТач реагирует и ocTriggerChangeLevel, и ocTriggerScript...<br><br>да и то точечного.<br>размеры &quot;точки&quot; можно менять...

finch
05.02.2005, 00:46
Сорри за два поста подряд! Больше не буду! :)<br><br>2Dagot_Ur: Я тут почитал идеи регенерации с ренжачрком - это ж надо до такого додуматься. И вот что хочу спросить: где это вы откопали эту фунцию цикла в моде ManaReload? Сейчас скачал посмотреть - там точно такого нет!<br>Там точно такое есть! ;D<br>Сама идея регенерации лежит в файле ZS_Recharger.d<br>Мне оставалось только приделать ее к амулету... С этим проблем не возникло...<br>А вообще, в этой теме я тебя уже спрашивал, как ты сделал регенерацию...<br>Если не сложно - опиши, плз, хотя бы общий принцип!

Dagot_Ur
05.02.2005, 05:45
2finch: Да чего тут описывать-то? :) ATR_REGENERATEHP и ATR_REGENERATEMANA. Думаю, что из этого все понятно. Только есть одна проблемка - при регенерации одной жизни - мана моментально восстанавливается. Лечится добавлением Npc_ChangeAttribute(self,ATR_REGENERATEMANA,9999); .<br>Делал также через цикл - через любой готовый LOOP, например, MagicSleep. Но с этим мороки больше, да и ни к чему это... :)<br><br>2Mitrich: Точное время получить, наверное, нельзя. Можно оперировать лишь функцией Wld_IsTime(хх,хх,хх,хх);. Если вставить ее в цикл и проверять значение меняющихся переменных хх, то возможно это сделать. Или без цикла, но с проверкой каждой минуты часа, но тогда слишком громоздко получится. Пока мне надобности в этом не возникало, поэтому большего сказать не могу. Вообще-то этим ядро занимается, а доступа к нему у нас, к сожелению - нет. :)

WSA
05.02.2005, 10:32
2finch: Уточняю вопрос.<br>Ни один из тригеров не работает после того как я меняю размеры &quot;точки&quot;. Точка работает, прямоугольник нет.<br>

finch
06.02.2005, 00:16
2WSA: Ни один из тригеров не работает после того как я меняю размеры &quot;точки&quot;. Точка работает, прямоугольник нет.<br>Хм.. Странно...<br>У меня все работает... Я использую для запуска камеры ocTriggerScript и функцию, в которой прописываю Wld_SendTrigger(&quot;&quot;);... ну, и другие необходимые мне вещи...

Vahaber
06.02.2005, 04:57
2All:<br>Вот пытаюсь разобраться в скиптах, как, что, к чему...<br>Как я понял, все скрипты заложены в файлах Ou.bin, Gothic.dat и т.д. Меня интересует вот что: как в простейшем виде вставить NPC в игру. Вот к примеру, чтобы я начал новую игру(Gothic I) и меня встречал не только Диего, а + еще какой-то стражник стоял рядом с ним. Я так понимаю, это надо создать некий &quot;файл.d&quot;, в котором будет описан этот самый стражник. А дальше что делать с этим файлом? Или я вообще не так все понял?<br><br>P.S. Вы только поймите меня правильно, я пытаюсь разобраться что к чему. Поэтому если я что-то не так сказал, то вы уж не смейтесь ;)

finch
06.02.2005, 10:17
2Vahaber: Почитай &nbsp;эту (http://forums.gothic.ag/showthread.php?&amp;s=25&amp;t=1078004330), эту (http://forums.gothic.ag/showthread.php?&amp;s=0&amp;t=1098161614) и, собственно говря, вот эту (http://forums.gothic.ag/showthread.php?&amp;s=0&amp;t=1105030050) темы... А лучше сохрани у себя на винте!<br>Многие вопросы сразу отпадут! ;)

Vahaber
06.02.2005, 17:47
2finch:<br>Почитай *эту, эту и, собственно говря, вот эту темы... А лучше сохрани у себя на винте!<br>Многие вопросы сразу отпадут! <br><hr class="hr_agfc"><br>Что касается вот этой (http://forums.gothic.ag/showthread.php?&amp;s=0&amp;t=109816<br>1614) и этой (http://forums.gothic.ag/showthread.php?&amp;s=0&amp;t=110503<br>0050) тем, то они давно уже прочитаны и сохранены. В них я конкрентого ответа на свой вопрос не нашел. А вот что касается этой (http://forums.gothic.ag/showthread.php?&amp;s=25&amp;t=10780<br>04330) темы - ее я раньше читал, но особо не вникал. А теперь еще раз перечитал, и таки нашел ответы на свои вопросы.<br>Спасибо.

Vahaber
07.02.2005, 02:52
Ответ-то я нашел, стал пробовать что-то сделать. Вышло, но не совсем. Итак, что я делал.<br><br>1. Расспаковал файл world.vdf при помощи GothicVDFS в \Gothic\_work\data\worlds<br><br>2. Запустил Spacer и создал возле входа в СЛ вайпоинт с именем &quot;my0&quot; и соедини его с вайпоинтами, которые были рядом. Вайпоинт создавал так: F3, нажал на горизонтальной панельке на кнопку с изображением ноги, на том месте,где я хотел создать вайпоинт клацнул правой кнопкой мыши - insert(...waypoint), зажал Shift, клачнул левой кнопкой мыши на рядом &quot;стоЯщий&quot; вайпоинт(&quot;OC1&quot;), на горизонтально панельке нажал на кнопку, которая отвечает за соединение вайпоинтов. Далее, этот же вайпоинт(&quot;my0&quot;) соединил таким же образом с еще одним. Сохранил world.zen.<br><br>3. В \Gothic\_work\data\scripts\content\story\NPC создал файл NONE_3131_TIV.d Вот содержимое файла:<br><br>instance NONE_3131_Tiv (NPC_DEFAULT)<br>{<br><br> * name = * * * * * * * * * * *&quot;Tiv&quot;;<br> * npctype = * * * * * * * * * npctype_main;<br> * guild = * * * * * * * * * * *GIL_NONE;<br> * level = * * * * * * * * * * *0;<br> * voice = * * * * * * * * * * *8;<br> * id = * * * * * * * * * * * * * *3131;<br><br> * attribute[ATR_STRENGTH] = * * * 200;<br> * attribute[ATR_DEXTERITY] = * * * 200;<br> * attribute[ATR_MANA_MAX] = * * * 100;<br> * attribute[ATR_MANA] = * * * * *100;<br> * attribute[ATR_HITPOINTS_MAX] = * *900;<br> * attribute[ATR_HITPOINTS] = * * * 900;<br><br> * Mdl_SetVisual * * * (self,&quot;HUMANS.MDS&quot;);<br> * Mdl_ApplyOverlayMds * *(self,&quot;Humans_Tired.mds&quot;);<br> * Mdl_SetVisualBody (self,&quot;hum_body_Naked0&quot;,3,1,&quot;Hum_Head_Bald&quot;, 72, *4, GRD_ARMOR_H);<br><br> * B_Scale (self);<br> * Mdl_SetModelFatness (self, 0);<br><br> * self.aivar[AIV_IMPORTANT] = TRUE;<br><br> * fight_tactic * *= * *FAI_HUMAN_MASTER;<br><br><br> * Npc_SetTalentSkill (self, NPC_TALENT_1H,1);<br><br> * EquipItem (self, ItMw_2H_Sword_Heavy_03);<br> * CreateInvItem (self, ItMwPickaxe);<br> * CreateInvItem (self, ItFoLoaf);<br> * CreateInvItem (self, ItFoBeer);<br> * CreateInvItem (self, ItLsTorch);<br><br> * daily_routine = Rtn_Start_3131;<br>};<br> * func void Rtn_Start_3131 ()<br>{<br> *TA_Guard(09,00,24,00,&quot;my0&quot;);<br> *TA_Guard(24,00,09,00,&quot;my0&quot;);<br>};<br><br>4. В файле \Gothic\_work\data\scripts\content\story\Startup.d после строчки &quot;Wld_InsertNpc * * * * * *(Grd_217_Torwache,&quot;OC1&quot;);//Sьdtor&quot; прописал свою строчку:<br>Wld_InsertNpc * * * * * * * * * * *(NONE_3131_Tiv,&quot;my0&quot;);<br><br>5. Запустил Spacer, далее World -&gt; Reparse Script и укзал путь к \Gothic\_work\data\scripts\content\Gothic.src Ошибок Spacer не выдавал.<br><br>6. При помощи GothicVDFS запаковал world.zen в worlds.mod в папку \Gothic\data\ После этого удалил в этой же папке *файл WORLDS.VDF *и поменял расширение у файла worlds.mod на worlds.vdf<br><br>7. Запускаю GOTHIC.EXE -&gt; New Game -&gt; бегу к воротам СЛ - моего NPC там нет. Вот так.<br><br>P.S.<br>1. Командой insert NONE_3131_Tiv получилось вставить этого NPC.<br>2. Непонятным для меня осталось следующее:<br>Mdl_SetVisual * * * (self,&quot;HUMANS.MDS&quot;);<br>Mdl_ApplyOverlayMds * *(self,&quot;Humans_Tired.mds&quot;);<br>B_Scale (self);<br>self.aivar[AIV_IMPORTANT] = TRUE;<br><br>Внимание вопрос: :)<br>Что же не так? Почему мой NPC не появляется?<br>И в каком файле можно посмотреть Все различные занятия для неписи?

WSA
07.02.2005, 10:15
2Vahaber: В строковых названиях вейпойнтов нужно различать регистр. Попробуй написать везде &quot;MY0&quot;.

Mitrich
07.02.2005, 15:28
2Vahaber: И в каком файле можно посмотреть Все различные занятия для неписи?<br>Задай в поиске по папке _work &quot;ТА.d&quot;

francisc
07.02.2005, 16:35
Попробуй его вставить при помоши марвина.Если не появится,то значит его нет в датнике.Если появится,то игра почему то не замечает твой вуапоинт,почему я не знаю,тк сам в этом не разобрался.

Mitrich
07.02.2005, 17:07
2Vahaber: Внимание вопрос: <br>Что же не так? Почему мой NPC не появляется?<br>Весьма часто НПС не встает пока не создашь для него миссию и не пропишешь ее как надо.

Vahaber
07.02.2005, 21:13
Так-с, наконец-то получилось. Обо всем по-порядку.<br><br>2WSA:<br>В строковых названиях вейпойнтов нужно различать регистр. Попробуй написать везде &quot;MY0&quot;.<br><hr class="hr_agfc"><br>Поменял в файлах NONE_3131_TIV.d и Startup.d &quot;my0&quot; на &quot;MY0&quot; и все заработало!!! Стоит NPC там где надо. Спасибо тебе.<br><br>2Mitrich:<br>Задай в поиске по папке _work &quot;ТА.d&quot;<br><hr class="hr_agfc"><br>Я так и предполагал, что это он, решил переспросить. Спасибо.<br><br>Весьма часто НПС не встает пока не создашь для него миссию и не пропишешь ее как надо.<br><hr class="hr_agfc"><br>И все-таки появился. ;)<br><br>2francisc:<br>Попробуй его вставить при помоши марвина.<br><hr class="hr_agfc"><br>Я это уже попробовал. В предыдущем моем посте*- Командой insert NONE_3131_Tiv получилось вставить этого NPC. ;)<br>И тебе тоже спасибо.<br><br>Вопрос, который остался в силе: за что отвечают вот эти строчки?<br>Mdl_SetVisual * *(self,&quot;HUMANS.MDS&quot;);<br>Mdl_ApplyOverlayMds * (self,&quot;Humans_Tired.mds&quot;);<br>B_Scale (self);<br>self.aivar[AIV_IMPORTANT] = TRUE;

ZXZX
07.02.2005, 22:52
Господа скриптологи, помогите разобраться:<br>Вот строка из musicInst.d *<br><br>INSTANCE KHO_Day_Std *(C_MUSICTHEME_STANDARD) { file= &quot;kh_daystd.sgt&quot;; };<br><br>Я понял так: при нахождении в Хоринисе(без драки) воспроизводится файл kh_daystd.sgt.<br>Т.е.,если заменить этот файл на самодельный kh_daystd.sgt, он должен воспроизводится в игре.<br>И все...Или есть еще какие-нибудь условия?<br> *<br><br>

Vam
07.02.2005, 22:53
2Vahaber:<br>Вопрос, который остался в силе: за что отвечают вот эти строчки?<br>Mdl_SetVisual(self,&quot;HUMANS.MDS&quot;);<br>Mdl_ApplyOverlayMds(self,&quot;Humans_Tired.mds&quot;);<br><br>Эти две функции и другие описаны в &quot;Уроках скриптологии&quot;<br>void Mdl_SetVisual(c_npc self,string fileMds); - установить для npc self файл изображения с именем fileMds (формат MDS).<br>void Mdl_ApplyOverlayMds(c_npc n0,string s1); - запустить файл анимации s1 с расширением mds для npc n0.<br><br>Остальное относится только к Готике 1.<br>B_Scale(self);<br>Задает масштаб изображения НПС, чем сильнее, тем объемнее он выглядит.<br><br>self.aivar[AIV_IMPORTANT] = TRUE;<br>НПС имеет важную информацию для разговора.<br><br>2ZXZX:<br>INSTANCE KHO_Day_Std *(C_MUSICTHEME_STANDARD) { file= &quot;kh_daystd.sgt&quot;; };<br>Я понял так: при нахождении в Хоринисе(без драки) воспроизводится файл kh_daystd.sgt.<br>Т.е.,если заменить этот файл на самодельный kh_daystd.sgt, он должен воспроизводится в игре.<br>И все...Или есть еще какие-нибудь условия?<br>Да, все, других условий нет (файл только должен быть нужного формата &nbsp;;D ).

francisc
07.02.2005, 23:20
Mdl_SetVisual &nbsp; &nbsp;(self,&quot;HUMANS.MDS&quot;);<br>Mdl_ApplyOverlayMds &nbsp; (self,&quot;Humans_Tired.mds&quot;);<br>Так перый отвечает скорее всего за анимацию ,из названия видно,что это человек.<br>Так во второй стоочке это то как будет ходить нпс.Сушествуют такие типы Tired,Militia,Mage,Arrogance,Relaxed.<br><br>

ZXZX
07.02.2005, 23:26
2Vam:<br>Спасибо.<br>файл только должен быть нужного формата *<br>Работаем...http://smilies.ru-board.com/sm/1054.gif

basilio58
08.02.2005, 03:33
<br>2ZXZX: <br>Да какое уж тут &quot;сорри&quot;, спасибо, что вмешиваешься. :) <br><br><br>Тут не много крутых перцев из мира аудио/видеозахвата, поэтому будет крайне удачно, если ты поделишься своим опытом в более доступной и развернутой форме. Наложить звук потом можно, но в том то и вся прелесть, чтобы использовать не только видео, но и звук, создаваемый движком. Для этого, как я понимаю, было бы идеальным вариантом снимать не только картинку с экрана (зачем нам вообще плеер?), но и звук с выхода. А уж как потом все это вместе сводить, AdobePremier сам разберется. :)<br><br><br>Звук (любой звук, который воспроизводит зв карта) можно захватить Sound Forge. Там есть такой режим записи, когда основное окно проги скрывается, и пишутся все звуки, воспроизводимые картой. Только надо входы-выходы настроить правильно.

Vam
09.02.2005, 11:22
Может кто-нибудь подсказать, существует ли где-нибудь описание имен вайпоинтов по Готике2 + аддон?<br>Например, что за точка &quot;NW_MONASTERY_PLACE_04&quot;?<br>Очень нужно для &quot;Уроков скриптологии&quot;. &nbsp;:)<br>

Mitrich
09.02.2005, 13:03
2Vam: Может кто-нибудь подсказать, существует ли где-нибудь описание имен вайпоинтов по Готике2 + аддон?<br>Насколько я понимаю, отдельного описания нет. Я пользуюсь списком Output/Input. Открываешь Спейсер, open zen&gt;NewWorld (или любой другой нужный), в списке Output/Input, проранджированном (к счатью) по алфвиту, ищешь, пролистывая вниз, нужную тебе точку и щелкаешь на нее дважды мышкой. В окне Спейсера тебе покажут ее положение, а в свитке Objekts можно посмотреть что она из себя представляет.<br><br>P.S. Да, ответить то забыл. :) NW_MONASTERY_PLACE_04 это вейпойнт, находящийся прямо перед входом в храм монастыря, где трое главных начальников магов огня высседают. Судя по свойствам, ничего военного, но лучше посмотри сам.

--fitil--
09.02.2005, 18:37
Друзья обьясните чайнику как заменить скрипт Npc в Г2а?<br>Зделал вроде в программе NPC скриптер. а вот как его туды засовать... незнаю, в каком ф находятся эти самые скрипты?<br>Кто может помочь. пожайлуста помогите!!!<br> <br>

TycoooN
09.02.2005, 19:10
2Vam: <br>Может кто-нибудь подсказать, существует ли где-нибудь описание имен вайпоинтов по Готике2 + аддон?<br>Насколько я знаю, нет ::)

francisc
09.02.2005, 19:32
2--fitil--: <br>А что именно не понятно?Опиши ситуацию.

--fitil--
09.02.2005, 20:01
Мне непонятно куда вставлять скрипт Npc и где находятся эти скрипты?<br><br>Подскажите как мне редактировать скрипты Npc...<br><br>Мне нужно знать путь к файлу в котором находятся эти самые скрипты и какое у этого файла расширение, и чем его можно открыть? Ведь рас Npс Скриптер придумали значит можно эти скрипты вставлять в игру...<br><br>Программа Npc скриптер сохраняет скрипт в файл с расширением *D, ну открываю я этот скрипт программой Gothic File Editor например и вижу этот скрипт, теперь я бы хотел открыть файл со скриптами в игре и заменить своим созданным в программе &nbsp;Npc скриптер скрипт.<br><br>Или не такто всё просто???<br><br>Поясните чайнику Суть дела! <br><br>вож какая нить инфа подробная про это есть?<br>то &nbsp;поделитесь плиз!!!!

--fitil--
09.02.2005, 20:48
Господа, где взять прогу для раскомпиляции файла Gothic.dat ?<br>и наоборот<br>и если существует Help какой нить...

TycoooN
09.02.2005, 20:49
2--fitil--: <br>Скрипты лежат в папке игры _work/data/scripts/content<br>Представляют они из себя кучу файлов с расширением *.d, скрипты всех НПС находятся в папке _work/data/scripts/content/story/NPC<br>Но сами скрипты игрой не используются - используется полученный из них компиляцией в Спейсере файл GOTHIC.DAT (он лежит в папке _work/data/scripts/_compiled<br>То есть тебе нужно добавить скрипт твоего НПС в папку /story/NPC, а затем скомпилировать скрипты в Спейсере ::)

TycoooN
09.02.2005, 21:03
2--fitil--: <br>Господа, где взять прогу для раскомпиляции файла Gothic.dat ?<br>http://killer-xxx.nm.ru<br>Самая первая прога ::)

--fitil--
09.02.2005, 21:43
<br>2--fitil--: <br>http://killer-xxx.nm.ru<br>Самая первая прога ::)<br>Ссылка которую вы даёте неработает.<br>не моглибы дать прямую на какую нить программу для раскомпиляции *dat файла?

TycoooN
09.02.2005, 22:06
2--fitil--: <br>Декомпилятор существует всего один, его автор - камрад Vam ::)<br>А ссылка не работает, потому что nm.ru сейчас в дауне...<br>Вот ссылка на не самую свежую версию декомпилятора: http://gothic3.allgothic.ru/filezzz/GothicToolsV1_6.rar

--fitil--
09.02.2005, 22:11
<br>2--fitil--: <br>Декомпилятор существует всего один, его автор - камрад Vam ::)<br>А ссылка не работает, потому что nm.ru сейчас в дауне...<br>Вот ссылка на не самую свежую версию декомпилятора: http://gothic3.allgothic.ru/filezzz/GothicToolsV1_6.rar<br>Вот спасибки!!!

--fitil--
09.02.2005, 22:17
<br>2--fitil--: <br>Декомпилятор существует всего один, его автор - камрад Vam ::)<br>А ссылка не работает, потому что nm.ru сейчас в дауне...<br>Вот ссылка на не самую свежую версию декомпилятора: http://gothic3.allgothic.ru/filezzz/GothicToolsV1_6.rar<br>Вот &nbsp;на сайте http://diccuric2.narod.ru/MAIN.html есть графическая оболочка. а нескачивается чёто...<br>Извините за назойливость, наверно я вам надоел, но мнебы узнать как им пользоваться этим GothicToolsV1_6 ???

francisc
09.02.2005, 22:21
Как сказал 2TycoooN: <br>в _work/data/scripts/content/story/NPC надо создать скрипт нпс.<br>В файле Startup.d не забудь его прописать что бы он появился в игре.

Vam
09.02.2005, 22:41
2--fitil--:<br>Извините за назойливость, наверно я вам надоел, но мнебы узнать как им пользоваться этим GothicToolsV1_6 ???<br>Сначала за всеми ответами по декомпилятору сюда (http://forums.gothic.ag/showthread.php?&amp;s=25&amp;t=10952<br>41429) (там же можно найти и последнюю версию, лучше юзать только её), а если что-то будет глючить, то ко мне. *;)

Pindleskin
10.02.2005, 00:37
А вы можете мне помочь в создании скрипта. Как сделать скрипт чтобы я автоматически присоеденился к лагерю Наёмников (я уже вор(наверное это неважно(Ли не берёт(А стражники квест дали(Я убил матку ползунов))))). Напишите скрипт пожалуйста.

--fitil--
10.02.2005, 01:01
<br>2--fitil--:<br>Сначала за всеми ответами по декомпилятору сюда (http://forums.gothic.ag/showthread.php?&amp;s=25&amp;t=10952<br>41429) (там же можно найти и последнюю версию, лучше юзать только её), а если что-то будет глючить, то ко мне. *;)<br>v1.6 я тока Декомпилировал датник из Г1, а мне надо из Г2а, уж очень надо!!!<br>Да и вот последней версии я там к сожалению не нашёл. :'(Киньте плиз ссылочку на последнюю версию GothicTools Уж ООООООООООчень надо!!! :)

--fitil--
10.02.2005, 05:42
Уф разобрался наконец то!<br>Скачал последнюю версию GothicToolsV1_8<br>Декомпилировал и компилировал, всё получилось!<br>Прога просто рулез!!!<br>Спасибо Vam !

TycoooN
10.02.2005, 10:12
2Pindleskin: <br>Ты о какой Готике вообще? В первой разве можно было стать вором? ::)

Dagot_Ur
10.02.2005, 10:32
2TycoooN: Ты о какой Готике вообще? Разве во второй была матка ползунов? :)

--fitil--
10.02.2005, 18:27
Господа, помогите исправить ошибку!!!<br><br>[F] 00:18 Fatal:-1 U: &nbsp; PAR: STORY\DIALOGE\DIA_SLD_810_DAR.D: Unknown identifier : TRUESELF.AIVAR ( line 245 ) .... &lt;zParser.cpp,#599&gt;<br><br><br>Вот...<br><br>func int DIA_Dar_Kameradenschwein_Condition()<br>{<br> &nbsp; &nbsp; &nbsp;if(Dar_LostAgainstCipher == TRUE)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TRUEself.aivar[AIV_LastFightComment] == FALSE;<br> &nbsp; &nbsp; &nbsp;};<br>};

Vam
10.02.2005, 18:34
2--fitil--:<br>Ответ ты уже получил, зачем писать в разные темы одно и тоже. Безобразие! &nbsp;;D

--fitil--
10.02.2005, 20:50
<br>2--fitil--:<br>Ответ ты уже получил, зачем писать в разные темы одно и тоже. Безобразие! *;D<br>Прошу меня извинить я новичёк, но быстро учусь!!! ::)

--fitil--
11.02.2005, 18:58
Господа, ответте мне пожайлуста на такой вопрос:<br>Когда я декомпилирую Gothic.dat ,изменяю атрибуты имя и всё такое у Npc потом компилирую обратно,<br>вставляю в игру т.е заменяю оригинальный датник, запускаю игру, но Npc остаётся таким как и был прежде. как будто готика читает скрипты из другово файла. Подчёркиваю я изменяю скрипт, а не добавляю! Это про Г2а. А в первой готике всё получается!<br><br>Помогите разобраться с проблемой!!!

TycoooN
11.02.2005, 19:47
2--fitil--: <br>Каким образом запускаешь? Через GothicStarter? У тебя MDK установлен? ::)

--fitil--
11.02.2005, 19:56
Да установлен. но какую роль он здесь играет?

francisc
11.02.2005, 20:14
У тебя после VDF= в файле gothicgame ничего не написанно?<br>Если написанно,то удали.<br>

--fitil--
11.02.2005, 20:24
Ага... а откуда тогда игра оригинальный скрипт читает если я датник заменил с изменённым скриптом??? <br><br>Прям &quot;полтергейст&quot; какой то!!!

Vam
11.02.2005, 21:09
2--fitil--:<br> Ага... а откуда тогда игра оригинальный скрипт читает если я датник заменил с изменённым скриптом??? <br><br>Прям &quot;полтергейст&quot; какой то!!! <br>До полтергейста тут далеко, Готика2 + аддон, если ей чего-то не нравится в дат файлах запускает систему воостановления оригинальных файлов из архива, то есть виртуального диска, с которого она была установлена. Я делал так, запускал аддон без всякого МДК, после загрузки игры сразу выходил, менял датник и оушник, и запускал снова. Загрузка проходила быстро, без воостановления, и все работало. &nbsp;;)

TycoooN
11.02.2005, 22:26
2--fitil--: <br>Ага... а откуда тогда игра оригинальный скрипт читает если я датник заменил с изменённым скриптом??? <br><br>Прям &quot;полтергейст&quot; какой то!!!<br>Возможно, из GothicGame.mod ::)<br>Удали его из папки data/modvdf

--fitil--
11.02.2005, 23:13
<br>Господа, ответте мне пожайлуста на такой вопрос:<br>Когда я декомпилирую Gothic.dat ,изменяю атрибуты имя и всё такое у Npc потом компилирую обратно,<br>вставляю в игру т.е заменяю оригинальный датник, запускаю игру, но Npc остаётся таким как и был прежде. как будто готика читает скрипты из другово файла. Подчёркиваю я изменяю скрипт, а не добавляю! Это про Г2а. А в первой готике всё получается!<br>Вощем я понял если запустить через GothicStarter то игра запустится с оригинальными скриптами! А если просто запустить, то запустится с изменёнными. Но я же датник то заменил и старого то там как бы и нет... откуда ж тогда при запуске через GothicStarter оригинальные скрипты читаются??? Странно както получается...<br>мож и в правду из GothicGame.mod хотя мне кажется что нет! <br><br><br>Помогите разобраться с проблемой!!!<br>

francisc
11.02.2005, 23:21
Вощем я понял если запустить через GothicStarter то игра запустится с оригинальными скриптами! А если просто запустить, то запустится с изменёнными.<br>Я лично не вижу связи.<br>а gothicgame.mod лучше удалить,а то ты никогда не сможешь <br>увидеть свои скрипты в действии.

WSA
12.02.2005, 10:10
Господа, постараюсь помочь<br><br>Порядок загрузки через GothicStarter такой:<br>самым высоким приоритетом при загрузке обладают файлы mod, т.е. те, которые прописаны в строке vdf=, причем у последнего файла в этой строке приоритет наивысший. <br>Потом подключаются виртуальные диски в папке data, а только потом файлы _work.<br>Но для того, чтобы изменить порядок загрузки, ничего удалять не нужно, просто убираем мод-пакет, т.е. оставляем vdf= *. Откройте mod пакет GothicGame и вы увидите, что там кроме откомпилированных скриптов ничего нету - то же + исходники при установке G2MDK будет лежать в _work.<br>Виртуальный диск отключается добавлением к нему типа *.disabled, но в этом случае его содержимое должно лежать в папке _work.<br>Файлы видео и скриптов не хранятся на виртуальных дисках.<br>Для экзешника отправным является файл GothicGame.ini, поэтому теоретически изменять скрипты Готики можно вообще без G2MDK, если использовать компилятор/декомпилятор Vamа.<br>Но через GothicStarter удобнее компилировать скрипты, можно выбирать ini-файл, с которого пойдет загрузка. Например в ini-файле MyLevel.ini можно написать World=MyLevel.zen и игра начнется в другой локации. А можно это написать и в GothicGame.ini. Не спорю.<br>

--fitil--
12.02.2005, 13:15
WSA, да, да так оно иесть! Спасибо за помощ!

Lokcy
14.02.2005, 04:56
Люди Помогите ктонить Дайте Рабочую ссылку На MDK

Vam
14.02.2005, 09:31
2Lokcy:<br>Люди Помогите ктонить Дайте Рабочую ссылку На MDK<br>MDK можно скачать здес<br>ь (http://www.worldofgothic.de/dl/index.php?go=downloads&amp;ordner_id=17).

Lokcy
14.02.2005, 22:13
<br>2Lokcy:<br>MDK можно скачать здес<br>ь (http://www.worldofgothic.de/dl/index.php?go=downloads&amp;ordner_id=17).<br><br>У Меня Почему то не качает.

Vahaber
14.02.2005, 22:57
2All:<br>Такой вот вопрос.<br>1. Создал я к примеру новый скрипт ГГ и какой-то скрипт NPC. NPC прописал в Startup.d<br>2. В Spacer открыл карту Старого Лагеря, создал StarPoint для ГГ, а также WayPoint для NPC. Карту сохранил с именем MY.zen<br>3. Также в Sparec`e сделал World -&gt; Reparse Script<br>4. При помощи GothicVDFS сделал МОД-файл MY.mod, в который &quot;зашил&quot; GOTHIC.DAT, OUINFO.INF и MY.zen Пути к файлам указаны правильно в моде(т.е. к примеру _work\data\scripts\_compiled для GOTHIC.DAT и OUINFO.INF; _work\data\worlds для MY.zen).<br>5. Создал файл My.ini в котором, кроме всего прочего, также*указал world=My.zen<br>6. Запускаю свой мод - ГГ появляется там где надо, NPC не появляется. При помощи команды insert - появляется и идет к нужному WP.<br><br>Вопрос: почему не появляется NPC.<br><br>P.S. Если Старый Лагерь сохранить не с именем MY.zen, а с именем world.zen(тем самым заменив оригинальный world.zen), а также в My.ini прописать world=world.zen и проделать те же операции, то NPC появляется сразу.

Vam
15.02.2005, 09:39
2Vahaber:<br>Вопрос: почему не появляется NPC.<br><br>P.S. Если Старый Лагерь сохранить не с именем MY.zen, а с именем world.zen(тем самым заменив оригинальный world.zen), а также в My.ini прописать world=world.zen и проделать те же операции, то NPC появляется сразу.<br><br>Необходимо в startup.d прописать функции инициализации твоего мира: STARTUP_ххх и INIT_ххх, где ххх - имя вновь созданного мира. Эти функции автоматически вызываются ядром системы.<br><br>

WSA
15.02.2005, 12:44
2Vam: Так оно и есть<br>2Vahaber: Вот образец:<br>func void startup_my ()<br>{<br>Wld_InsertNpc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(npcInstance, &quot;WAYPOINT&quot;);<br>};<br>func void init_my ()<br>{<br>B_InitMonsterAttitudes ();<br>B_InitGuildAttitudes();<br>B_InitNpcGlobals ();<br>};

OverGothic
18.02.2005, 17:18
Народ хелп =)!<br>есть в скриптах доспехов и шлемов такая строчка<br>wear = WEAR_TORSO;(доспех)-ASC модель<br>wear = WEAR_HEAD;(Шлем)-3ds модель<br>А как насчет шитов?<br>wear = WEAR_??????;(Щит)-3ds модель(вроде)<br><br>И еще <br>mainflag = ITEM_KAT_ARMOR; что это обозначает? =)

Vam
18.02.2005, 17:34
2OverGothic:<br>mainflag = ITEM_KAT_ARMOR; что это обозначает?<br>Это флаг категории предмета (броня), указывает в каком месте инвентаря будет лежать этот предмет.<br><br>wear = WEAR_TORSO;(доспех)-ASC модель<br>wear = WEAR_HEAD;(Шлем)-3ds модель<br>А как насчет шитов?<br>wear = WEAR_??????;(Щит)-3ds модель(вроде)<br><br>Это флаги части тела, на которой носится (одевается) предмет, модели конкретно к флагам отношения не имеют, щитов в Готике вообще нет, да и шлемов (отдельных) тоже нет, хотя флаг остался. &nbsp;:)<br>

Mitrich
18.02.2005, 17:34
2OverGothic: mainflag = ITEM_KAT_ARMOR; что это обозначает? Это означает, что предмет будет выводиься в инвентаре в категорию ARMOR, а сама категория управляется из ini-файла путем перестановки последовательности. По умолчанию первым в инвентаре показывается оружие, потом доспех и т.д.<br><br>А как насчет шитов? Никак. Пираньи от них отказались, как и от шлемов.

OverGothic
18.02.2005, 17:38
Шлемы отдельно, сделать реально. А вот на счет щитов, пока не знаю...<br>wear = WEAR_leftarm - должно быть по идее ,но не идет =)<br>Для щитов вроде и анимация не нужна(я не имею ввиду анимацию блокировак и тд), щит просто крепиться к кости Bip01 L Forearm и весит там, также как и оружие(Bip01 R Hand). Следовательно щит должен быть статичен(3ds).

Vam
28.02.2005, 12:52
Всем, кто читает тему Уроки скриптологии:<br><br>Просьба после каждого моего поста в теме &quot;Уроки скриптологии&quot; оставлять какой-нибудь один свой пост, в противном случае я буду вынужден прекратить уроки по причине невозможности редактирования каждого нового своего поста. *:( *&gt;:( *:(