AGFC
Страница 8 из 65 12345678 91011121314151858 Последняя »

AGFC (http://agfc.ru/index.php)
-   AGFC: Valley of Gothic (http://agfc.ru/forumdisplay.php?f=46)
-   -   М: Скриптинг в Готике (http://agfc.ru/showthread.php?t=1105030050)

PA 17.04.2005 14:41

Re: Скриптинг в Готике
 
2Vam: <br><br>Не знаю насколько актуально и не приведет ли это к задержкам в Уроках.<br>Но стали появляться гибридные МОД-ы - к Готике 1m но с уроном и учиничеством от Аддона...<br>Пожалуй первый из них lp_balance_v1.02beta (и 1.00 и 1.01)<br>Не декомпилиться ни как Г1 и просто не идет в Г2...<br>Если заинтересует, то уже скинул на Яндекс.<br><br>

18.04.2005 14:32

Re: Скриптинг в Готике
 
2Pa:<br>
Цитата:

Не декомпилиться ни как Г1 и просто не идет в Г2...
<br><br>В этом датнике есть ошибка, она приводит к вылету декомпилятора, в ближайшее время сделаю обработчик таких ошибок, вылета не будет.<br>PS: Это мод только для первой Готики, с опцией -zgame:1 декомпилироваться не будет.<br><br>Добавление от 04/18/05, в 14:52:50 <hr class="hr_agfc">2Pa:<br>При подробном анализе было выявлено, что ошибка не датнике, а в декомпиляторе.<br>Скоро выложу исправленную версию.

PA 18.04.2005 16:12

Re: Скриптинг в Готике
 
2Vam:<br>
Цитата:

В этом датнике есть ошибка,
<br><br>В датнике ошибка все равно есть - не работает заявленная система прокачки...<br>До 29 прокачав любой аттрибут - и за 1 LP качаешь и следующие +5 и сразу не выходя и последующие за 1 LP &nbsp;+5 к аттрибуту...<br>Но выходишь и в LP полная чехарда - порядка 41 лимона пойнтов - но использовать их уже нет возможности...<br>Пытался разными офф путями преодолеть этот глюк - но видимо надо ждать следующую бету.<br>

18.04.2005 20:34

Re: Скриптинг в Готике
 
2Vam: <br>При выполнении каеста с кровавыми чашами проглючивает место, где чашу надо взять нажав на лампу. Не подскажете, где этот кусок кода поискать (хоть приблизительно)?

PA 19.04.2005 06:01

Re: Скриптинг в Готике
 
2Ipse San:<br>
Цитата:

При выполнении каеста с кровавыми чашами проглючивает место, где чашу надо взять нажав на лампу. Не подскажете, где этот кусок кода поискать (хоть приблизительно)?
<br><br>В скриптах нет ни какого глюка!<br>Просто при прорисовке вай пойнт сместился (видимо) и место откуда срабатывает эта лампа - находится в шаге-полутора от нее.<br><br>

19.04.2005 07:08

Re: Скриптинг в Готике
 
2Pa: <br>А резюм какой? Глюк плавающий и может появиться, а может и не появиться? И вылечить никак?

20.04.2005 01:54

Re: Скриптинг в Готике
 
1)Может кто подсказать как написать такой диалог, чтобы непись-охранник не выпускал из пещеры(стоянка Фаета) пока не добудешь ему 10 кусков руды. Я писал на основе скриптов ментов, но у меня чето не получилось :(<br><br>2)Надо ли для рутины TA_SmallTalk задавать какие либо параметры Ваупоинту, а то у меня неписи вместо того чтобы базарить стоят друг к другу спинами.<br><br>3)Посмотрел х-ки allround_testmodell и нашел интересный параметр &quot;Мастер огня&quot;. У других НПС я такого не видел(хотя,может просто плохо смотрел :) ) и хотелось бы узнать че этот Мастер означает ?<br><br>Заранее спасибо!

20.04.2005 09:18

Re: Скриптинг в Готике
 
2Galhan:<br>
Цитата:

2)Надо ли для рутины TA_SmallTalk задавать какие либо параметры Ваупоинту, а то у меня неписи вместо того чтобы базарить стоят друг к другу спинами.
<br><br>При вызове этой функции обязательно должен быть задан вайпоинт в котором должен состояться мини-диалог.

21.04.2005 17:48

Re: Скриптинг в Готике
 
2VamДык я прописываю Ta_SmallTalk(21, 00, 23, 00, &quot;Ow_NewMine_06&quot;); одному и второму. А что еще надо??? ::)

21.04.2005 23:30

Re: Скриптинг в Готике
 
2Galhan:
Цитата:

Дык я прописываю Ta_SmallTalk(21, 00, 23, 00, &quot;Ow_NewMine_06&quot;); одному и второму. А что еще надо???
<br>Разговор может происходить только на фрипоинте, название которого начинается на FP_SMALLTALK_<br>Если рядом с НПС такого фрипоинта нету, то ничего этот НПС делать не будет.

22.04.2005 09:42

Re: Скриптинг в Готике
 
2finch
Цитата:

...название которого начинается на FP_SMALLTALK_<br>Если рядом с НПС такого фрипоинта нету, то ничего этот НПС делать не будет
<br>Скрипты SLD_827_Soeldner и SLD_802_Buster(те, что стоят и базарят возле фермы Ерола). У них Ваупоинты для Smalltalk называется соответсвенно<br>NW_BIGFARM_ALLEE_HUT и NW_BIGFARM_HUT_01.<br>Что то я не заметил у них FP_SMALLTALK_ ::)

22.04.2005 11:12

Re: Скриптинг в Готике
 
2Galhan:<br>
Цитата:

Скрипты SLD_827_Soeldner и SLD_802_Buster(те, что стоят и базарят возле фермы Ерола). У них Ваупоинты для Smalltalk называется соответсвенно<br>NW_BIGFARM_ALLEE_HUT и NW_BIGFARM_HUT_01.<br>Что то я не заметил у них FP_SMALLTALK_
<br><br>Не надо путать вайпоинты и фрипоинты, это разные вещи, вайпоинт в скриптах задается полным именем, а фрипоинт сокращенным, для перемещения на эти точки используются разные функции. Фрипоинт представляет локальную точку на расстоянии до 20 метров от другой точки (фрипоинта или вайпоинта), а вайпоинт - глобальная точка в пределах мира Готики. Вайпоинт всегда есть (если, конечно, он определен), в него можно переместиться из любой точки, а для того, чтобы переместиться на фрипоинт, сначала необходимо проверить, существует ли он в непосредственной близости от НПС, и если да, то перейти на него. Вайпоинт НПС прописывается в его классе (инстанции) в переменной WP, фрипоинт же нигде (кроме карты) не прописывается.<br>В твоем случае посмотри пример организации мини-диалога в файле ZS_SmallTalk.d<br>

22.04.2005 13:57

Re: Скриптинг в Готике
 
Предисловие:<br><br>Необходимые файлы:<br>_decompiled\_Intern\constants.d<br><br>_ decompiled\AI\Prototypes\Npc_Default.d<br><br>_dec ompiled\AI\AI_Intern\Balancing.d<br><br>_decompile d\Story\B\b_giveskill.d<br><br><br>В данный момент я занимаюсь разработкой мода &quot;StrongHand&quot; для Gothic 1, подробности в одноименной теме.<br>Мне удалось сделать в модификацию боевую систему наносимых повреждений как в Gothic 2 - т.е. чем больше умение владения мечом, тем больше шанс нанести удар в полную силу, остальные удары проходят поверхностно.<br><br>Принцип действия системы:<br>Как известно в оригинальной Gothic 1, все повреждения наносятся в полную силу +5% - 10% шанс нанести критический удар в два раза сильнее.<br>Критический удар описывается в файле &quot;constants.d&quot;, пересенной &quot;const int DAM_CRITICAL_MULTIPLIER = 2;&quot;<br><br>По умолчанию игрок начинает с 0 уровнем меча - т.е. шанс нанести критический удар 0%, это прописано в файле Прототипа для всех персонажей &quot;Npc_Default.d&quot;.<br>&quot;Npc_SetTalentV alue(self,NPC_TALENT_1H,0);&quot; - для одноручника.<br>&quot;Npc_SetTalentValue(self,NPC_ TALENT_2H,0);&quot; - для двуручника.<br>Когда игрок изучает оружие, он добавляет соответсвенно 5% и 10%.<br><br>Немного поразмыслив, я установил значение &quot;const int DAM_CRITICAL_MULTIPLIER = 0;&quot;, из чего выйдет, что урон от всех ударов будет умножаться на &quot;0&quot; и будет касательным, т.е. будет наносится минимальное повреждение описываемое в файле &quot;Balancing.d&quot;, переменной &quot;const int NPC_MINIMAL_DAMAGE = 10;&quot;, что соответствует 10 ед. урона.<br>Итак, что мы имеем...<br>С такими параметрами &quot;Npc_Default.d&quot;<br>&quot;Npc_SetTalentVa lue(self,NPC_TALENT_1H,0);&quot;<br>&quot;Npc_SetT alentValue(self,NPC_TALENT_2H,0);&quot;<br>Естеств енно ранее &quot;критические&quot;, а теперь &quot;касательные&quot; удары вообще не будут происходить, так как вроятность &quot;0&quot;.<br>Нужно же, чтобы эти удары на нулевом уровне меча происходили довольно часто, чтобы это изменить, я изменил значения &quot;0&quot; - на &quot;90&quot;<br>&quot;Npc_SetTalentValue(self,NP C_TALENT_1H,90);&quot;<br>&quot;Npc_SetTalentValue (self,NPC_TALENT_2H,90);&quot;<br>Теперь, с вероятностью 90% будут наносится касательные удары, отсюда следуют что удары в полную силу будут наносится с вероятностью 10%. Значит чем меньше будет значение переменной, тем больше будет вероятность, что удары пройдут в полную силу.<br>Впринципе вот эта и есть система Г2 :)<br><br>Но, раньше при обучении, к переменным:<br>&quot;Npc_SetTalentValue(self,NPC_T ALENT_1H,90);&quot;<br>&quot;Npc_SetTalentValue(se lf,NPC_TALENT_2H,90);&quot;<br>Прибавлялось 5 и 10, теперь же для обучения нужно убавлять, это изменяется в файле &quot;b_giveskill.d&quot;<br><br>Npc_SetTalentValu e(typ,NPC_TALENT_1H,Npc_GetTalentValue(typ,NPC_TAL ENT_1H) - 40);<br>Npc_SetTalentValue(typ,NPC_TALENT_2H,Npc_G etTalentValue(typ,NPC_TALENT_2H) - 40);<br><br>С каждым уровнем обучения от 90 отнимается число 40.<br><br>Одноручник\Двуручник:<br>0 - 90% вероятность провала - 10% успешная атака.<br>1 - 50% вероятность провала - 50% успешная атака.<br>2 - 10% вероятность провала - 90% успешная атака.<br><br>Эти переменные в файле &quot;Story_Globals.d&quot; отвечали за количество LP за обучение.<br>const int LPCOST_TALENT_1H_1 = 10;<br>const int LPCOST_TALENT_1H_2 = 20;<br>const int LPCOST_TALENT_2H_1 = 50;<br>const int LPCOST_TALENT_2H_2 = 70;<br><br>Но потом мне удалось сделать вот такую системы<br><br>--- Нет комбы ---<br>0 - не обучен &nbsp; &nbsp;10% успешная атака.<br>--- Комбо 1 ---<br>1 - новичок &nbsp; &nbsp; &nbsp;20% успешная атака.<br>2 - драчун &nbsp; &nbsp; &nbsp; 30% успешная атака.<br>3 - лесоруб &nbsp; &nbsp; &nbsp;40% успешная атака.<br>4 - боец &nbsp; &nbsp; &nbsp; &nbsp; 50% успешная атака.<br>--- Комбо 2 ---<br>5 - воин &nbsp; &nbsp; &nbsp; &nbsp; 60% успешная атака.<br>6 - вояка &nbsp; &nbsp; &nbsp; &nbsp;70% успешная атака.<br>7 - инквизитор &nbsp; 80% успешная атака.<br>8 - мастер &nbsp; &nbsp; &nbsp; 90% успешная атака.<br><br>Для этого пришлось добавить несколько переменный в файл &quot;Story_Globals.d&quot;.<br><br>const int LPCOST_TALENT_1H_1 = 10;<br>const int LPCOST_TALENT_1H_2 = 10;<br>const int LPCOST_TALENT_1H_3 = 10;<br>const int LPCOST_TALENT_1H_4 = 10;<br>const int LPCOST_TALENT_1H_5 = 15;<br>const int LPCOST_TALENT_1H_6 = 15;<br>const int LPCOST_TALENT_1H_7 = 15;<br>const int LPCOST_TALENT_1H_8 = 15;<br><br>const int LPCOST_TALENT_2H_1 = 10;<br>const int LPCOST_TALENT_2H_2 = 10;<br>const int LPCOST_TALENT_2H_3 = 10;<br>const int LPCOST_TALENT_2H_4 = 10;<br>const int LPCOST_TALENT_2H_5 = 15;<br>const int LPCOST_TALENT_2H_6 = 15;<br>const int LPCOST_TALENT_2H_7 = 15;<br>const int LPCOST_TALENT_2H_8 = 15;<br><br>Итак новая система с более плавным обучением заработала, но стойки бойца остались прежними, а для новых переменных вообще сбросились.<br>const int LPCOST_TALENT_2H_1 = 10; - стойка обычного бойца.<br>const int LPCOST_TALENT_2H_2 = 10; - стойка мастера.<br>const int LPCOST_TALENT_2H_3 = 10; - стойка &quot;необученного&quot;!<br>const int LPCOST_TALENT_2H_4 = 10; - стойка &quot;необученного&quot;!<br>и т. д.<br><br>Так вот -где можно найти в скриптах описание бойцлвских стоек для каждого уровня TALENT_1H_x.

22.04.2005 15:07

Re: Скриптинг в Готике
 
2Ukur:<br>
Цитата:

Так вот -где можно найти в скриптах описание бойцлвских стоек для каждого уровня TALENT_1H_x.
<br><br>Такого в скриптах для gothic.dat вообще нет. &nbsp;:( &nbsp;Посмотри скрипты для fight.dat, файл fight.d и директория ..\FAI, может быть найдешь что-нибудь полезное. Но, вообще-то связка между талантом и моделями движений золожена в самом движке.

PA 22.04.2005 16:43

Re: Скриптинг в Готике
 
2Vam:<br>
Цитата:

Но, вообще-то связка между талантом и моделями движений золожена в самом движке.
<br><br>Не только талант учитывается, а и выбор позиции - в пройгрышной позиции и талант не поможет.<br>Если загнать противника в воду или затормозить на краю ступени (где тому не замахнуться) - то у ГГ включаются такие удары, что и мастер позавидует!!!<br>Очень бы хотелось узнать, что есть на эту тему в экзешнике!<br><br>

23.04.2005 01:13

Re: Скриптинг в Готике
 
2Vam:
Цитата:

Такого в скриптах для gothic.dat вообще нет. &nbsp; &nbsp;Посмотри скрипты для fight.dat, файл fight.d и директория ..\FAI, может быть найдешь что-нибудь полезное. Но, вообще-то связка между талантом и моделями движений золожена в самом движке.
<br><br>Боевая система в моде StrongHand. Продолжение.<br><br>Итак, поиски боевых стоек ни к чему не привели...<br><br>Но, все же я решил проблему. Для развития характеристик меча я использовал два типа переменных.<br><br><br>&quot;Переменная A&quot; - B_GiveSkill(hero,NPC_TALENT_dH,x,LPCOST_TALENT_dH_ j); - переменная отвечающая за боевые стойки, где &quot;d&quot; - тип оружия (1 или 2), &quot;x&quot; уровень владения мечом - боевая стойка (1 или 2), &quot;j&quot; - количество LP за обучение.<br><br>&quot;Переменная B&quot; - Npc_SetTalentValue(hero,NPC_TALENT_dH,F) - переменная собсно увеличивающая шанс повреждения. &quot;F&quot; - указывает число вероятности неудачной атаки.<br><br>Итак вставляя переменные в нужные места, я добился нормальной боевой системы аля Г2, с плавной прокачкой. Ессесно она будет в моде.<br><br>На данный момент система такая.<br><br>Одноручники\двуручники<br><br>--- Нет комбы ---<br>0 - Не обучен &nbsp; &nbsp;10% успешная атака. - 10 LP<br>1 - Не обучен &nbsp; &nbsp;20% успешная атака. - 10 LP<br><br>&quot;Переменная A + 1&quot;<br><br>2 - Боец &nbsp; &nbsp; &nbsp; &nbsp; 30% успешная атака. - 10 LP<br>3 - Боец &nbsp; &nbsp; &nbsp; &nbsp; 40% успешная атака. - 10 LP<br>4 - Боец &nbsp; &nbsp; &nbsp; &nbsp; 50% успешная атака. - 10 LP<br><br>&quot;Переменная A + 2&quot;<br><br>5 - Мастер &nbsp; &nbsp; &nbsp; 60% успешная атака. - 15 LP<br>6 - Мастер &nbsp; &nbsp; &nbsp; 70% успешная атака. - 15 LP<br>7 - Мастер &nbsp; &nbsp; &nbsp; 80% успешная атака. - 15 LP<br>8 - Мастер &nbsp; &nbsp; &nbsp; 90% успешная атака. - 15 LP<br><br>Система была протестирована и оказалась полностью работоспособной!!!

23.04.2005 05:56

Re: Скриптинг в Готике
 
2Ukur: <br>Ого, 110 LP. Как я понимаю, суть этого нововведения - искуственно не дать игроку быстро(?) прокачать другие характеристики, отобрав все очки обучения на прокачку боевых скиллов (или не качать оружие)? ;)

24.04.2005 09:42

Re: Скриптинг в Готике
 
1)Как убрать дефултные диалоги у НПС? Я создал нового НПС(мента), поставил его на стоянке Фаета и прописал ему диалог. Но у него вместе с моим диалогом появляется куча диалогов типа &quot;Was gibt Neues&quot; и &quot;Kannst du mir helfen...&quot;<br>2)Как менять скрипт ГГ? Я меняю в скрипте PC_HERO.d его внешний вид. Захожу в игру - &nbsp;вроде все нормально. Но некоторые мужики не хотят с ним базарить. Когда я начинаю разговор, он просто стоит и махает руками, но режим диалога не начинается. При этом, когда я вставляю PC_L10 и вселяюсь в него, то все со мной говорят. &nbsp;:o Я предпологаю, что моего PC_HERO просто не определяет как self.

TycoooN 24.04.2005 11:56

Re: Скриптинг в Готике
 
2Galhan: <br>
Цитата:

1)Как убрать дефултные диалоги у НПС? Я создал нового НПС(мента), поставил его на стоянке Фаета и прописал ему диалог. Но у него вместе с моим диалогом появляется куча диалогов типа &quot;Was gibt Neues&quot; и &quot;Kannst du mir helfen...&quot;
<br>Поставь npcType не NPCTYPE_AMBIENT, a NPCTYPE_MAIN ::)

26.04.2005 02:35

Re: Скриптинг в Готике
 
Вот я не потеме можноли читом или скриптами стать орком в Готике ? &nbsp;::)Извените что не по теме :'(

26.04.2005 08:39

Re: Скриптинг в Готике
 
Вот скрипт диалога охранника, который по-идее должен не пускать. Может кто подсказать, что в скрипте не правильно:<br><br>INSTANCE Mil_018_Migel_Exit (C_INFO)<br>{<br> &nbsp; &nbsp; npc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Mil_018_Migel;<br> &nbsp; &nbsp; nr &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = 999;<br> &nbsp; &nbsp; condition &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Mil_018_Migel_Exit_Condition;<br> &nbsp; &nbsp; information &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Mil_018_Migel_Exit_Info;<br> &nbsp; &nbsp; permanent &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 1;<br> &nbsp; &nbsp; description &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= DIALOG_ENDE;<br>}; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br><br>FUNC INT Mil_018_Migel_Exit_Condition()<br>{<br> &nbsp; &nbsp; return 1;<br>};<br><br>FUNC VOID Mil_018_Migel_Exit_Info()<br>{<br> &nbsp; &nbsp; AI_StopProcessInfos &nbsp; &nbsp; &nbsp;( self );<br>};<br><br>//************************************************** ***************************<br><br> &nbsp; &nbsp; &nbsp;const string Mil_018_CheckPoint &nbsp; &nbsp; &nbsp;= &quot;Ow_NewMine_01_B&quot;; &nbsp; &nbsp; &nbsp;<br>//************************************************** ***************************<br><br>instance Mil_018_Migel_FirstWarn (C_INFO)<br>{<br> &nbsp; &nbsp; &nbsp;npc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Mil_018_Migel;<br> &nbsp; &nbsp; &nbsp;nr &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 1;<br> &nbsp; &nbsp; &nbsp;condition &nbsp; &nbsp; &nbsp;= Mil_018_Migel_FirstWarn_Condition;<br> &nbsp; &nbsp; &nbsp;information &nbsp; &nbsp; &nbsp;= Mil_018_Migel_FirstWarn_Info;<br> &nbsp; &nbsp; &nbsp;permanent &nbsp; &nbsp; &nbsp;= TRUE;<br> &nbsp; &nbsp; &nbsp;important &nbsp; &nbsp; &nbsp;= TRUE;<br>}; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br><br>func int Mil_018_Migel_FirstWarn_Condition()<br>{<br> &nbsp; &nbsp; &nbsp;if (Npc_GetDistToWP(other, Mil_018_CheckPoint) &lt;= 700) <br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Npc_SetRefuseTalk(self,5);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return FALSE;<br> &nbsp; &nbsp; &nbsp;};<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;if ((self.aivar[AIV_Guardpassage_Status] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== GP_NONE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; &nbsp;(self.aivar[AIV_PASSGATE] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== FALSE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; &nbsp; &nbsp; &nbsp;(Hlp_StrCmp(Npc_GetNearestWP(self),self.w p) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== TRUE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; &nbsp;(Npc_RefuseTalk(self) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== FALSE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; &nbsp; &nbsp; &nbsp;(Nugget_150_Done &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;))<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return TRUE;<br> &nbsp; &nbsp; &nbsp;};<br>};<br><br>func void Mil_018_Migel_FirstWarn_Info()<br>{<br> &nbsp; &nbsp; &nbsp;other.aivar[AIV_LastDistToWP] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Npc_GetDistToWP(other,Mil_018_CheckPoint);<br> &nbsp; &nbsp; &nbsp;self.aivar[AIV_Guardpassage_Status] &nbsp; &nbsp; &nbsp;= GP_FirstWarnGiven;<br> &nbsp; &nbsp; &nbsp;self.aivar[AIV_PASSGATE] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= FALSE;<br> &nbsp; &nbsp; &nbsp;AI_Output (self, other,&quot;Mil_018_Migel_FirstWarn_12_00&quot;); //Стой! Ты куда это собрался, а?<br> &nbsp; &nbsp; &nbsp;AI_Output (self, other,&quot;Mil_018_Migel_FirstWarn_12_01&quot;); //Возвращайся к работе, пока я не снес тебе башку!<br> &nbsp; &nbsp; &nbsp;AI_StopProcessInfos (self);<br>};<br><br>// ************************************************** *************************<br>// ************************************************** *************************<br>// ************************************************** *************************<br><br>INSTANCE Mil_018_Migel_SecondWarn (C_INFO)<br>{<br> &nbsp; &nbsp; &nbsp;npc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Mil_018_Migel;<br> &nbsp; &nbsp; &nbsp;nr &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 2;<br> &nbsp; &nbsp; &nbsp;condition &nbsp; &nbsp; &nbsp;= Mil_018_Migel_SecondWarn_Condition;<br> &nbsp; &nbsp; &nbsp;information &nbsp; &nbsp; &nbsp;= Mil_018_Migel_SecondWarn_Info;<br> &nbsp; &nbsp; &nbsp;permanent &nbsp; &nbsp; &nbsp;= TRUE;<br> &nbsp; &nbsp; &nbsp;important &nbsp; &nbsp; &nbsp;= TRUE;<br>}; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br><br>FUNC INT Mil_018_Migel_SecondWarn_Condition()<br>{<br> &nbsp; &nbsp; &nbsp;if ((self.aivar[AIV_Guardpassage_Status] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== GP_FirstWarnGiven &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; &nbsp;(self.aivar[AIV_PASSGATE] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== FALSE &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;&amp;&amp; &nbsp; &nbsp; &nbsp;(Hlp_StrCmp(Npc_GetNearestWP(self),self.w p) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== TRUE &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;&amp;&amp; &nbsp;(Npc_GetDistToWP(other,Mil_018_CheckPoint ) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;= &nbsp;(other.aivar[AIV_LastDistToWP]-175) &nbsp; &nbsp; &nbsp;)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; &nbsp; &nbsp; &nbsp;(Nugget_150_Done &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;))<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return TRUE;<br> &nbsp; &nbsp; &nbsp;};<br>};<br><br>func void Mil_018_Migel_SecondWarn_Info()<br>{<br> &nbsp; &nbsp; &nbsp;AI_Output (self, other,&quot;Mil_018_Migel_SecondWarn_12_00&quot;); //Ты что оглох? Я сказал возвращайся!!!<br><br> &nbsp; &nbsp; &nbsp;other.aivar[AIV_LastDistToWP] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Npc_GetDistToWP (other,Mil_018_CheckPoint);<br> &nbsp; &nbsp; &nbsp;other.aivar[AIV_Guardpassage_Status] &nbsp; &nbsp; &nbsp;= GP_SecondWarnGiven; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;AI_StopProcessInfos &nbsp; &nbsp; &nbsp;(self);<br>};<br><br>// ************************************************** *************************<br>// ************************************************** *************************<br>// ************************************************** *************************<br><br>INSTANCE Mil_018_Migel_Attack (C_INFO)<br>{<br> &nbsp; &nbsp; &nbsp;npc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Mil_018_Migel;<br> &nbsp; &nbsp; &nbsp;nr &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 3;<br> &nbsp; &nbsp; &nbsp;condition &nbsp; &nbsp; &nbsp;= Mil_018_Migel_Attack_Condition;<br> &nbsp; &nbsp; &nbsp;information &nbsp; &nbsp; &nbsp;= Mil_018_Migel_Attack_Info;<br> &nbsp; &nbsp; &nbsp;permanent &nbsp; &nbsp; &nbsp;= TRUE;<br> &nbsp; &nbsp; &nbsp;important &nbsp; &nbsp; &nbsp;= TRUE;<br>}; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br><br>FUNC INT Mil_018_Migel_Attack_Condition()<br>{<br> &nbsp; &nbsp; &nbsp;if ((self.aivar[AIV_Guardpassage_Status] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== GP_SecondWarnGiven &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; &nbsp;(self.aivar[AIV_PASSGATE] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== FALSE &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;&amp;&amp; &nbsp; &nbsp; &nbsp;(Hlp_StrCmp(Npc_GetNearestWP(self),self.w p) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== TRUE &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;&amp;&amp; &nbsp;(Npc_GetDistToWP(other,Mil_018_CheckPoint ) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt; &nbsp;(other.aivar[AIV_LastDistToWP]-175) &nbsp; &nbsp; &nbsp;))<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return TRUE;<br> &nbsp; &nbsp; &nbsp;};<br>};<br><br>func void Mil_018_Migel_Attack_Info()<br>{<br> &nbsp; &nbsp; &nbsp;other.aivar[AIV_LastDistToWP] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 0;<br> &nbsp; &nbsp; &nbsp;other.aivar[AIV_Guardpassage_Status] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= GP_NONE; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;AI_Output (self, other,&quot;Mil_018_Migel_Attack_12_00&quot;); //Ты сам напросился!<br> &nbsp; &nbsp; &nbsp;AI_StopProcessInfos &nbsp; &nbsp; &nbsp;(self); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;B_Attack (self, other, AR_GuardStopsIntruder, 0); <br>};<br><br>// ************************************************** *************************<br>// ************************************************** *************************<br>// ************************************************** *************************<br><br>INSTANCE Mil_018_Migel_NuggetControl_Yes (C_INFO)<br>{<br> &nbsp; &nbsp; &nbsp;npc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Mil_018_Migel;<br> &nbsp; &nbsp; &nbsp;nr &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 4;<br> &nbsp; &nbsp; &nbsp;condition &nbsp; &nbsp; &nbsp;= Mil_018_Migel_NuggetControl_Yes_Condition;<br> &nbsp; &nbsp; &nbsp;information &nbsp; &nbsp; &nbsp;= Mil_018_Migel_NuggetControl_Yes_Info;<br> &nbsp; &nbsp; &nbsp;permanent &nbsp; &nbsp; &nbsp;= 1;<br> &nbsp; &nbsp; &nbsp;important &nbsp; &nbsp; &nbsp;= 0;<br> &nbsp; &nbsp; &nbsp;description = &quot;Я уже нароботал дневную норму!&quot;;<br>};<br><br>FUNC INT Mil_018_Migel_NuggetControl_Yes_Condition()<br>{ &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;if ((Npc_HasItems(other, ItMi_Nugget) &gt;= 150)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; (Nugget_150_Done &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== 0 ))<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return TRUE;<br> &nbsp; &nbsp; &nbsp;};<br>};<br><br>FUNC VOID Mil_018_Migel_NuggetControl_Yes_Info()<br>{<br> &nbsp; &nbsp; &nbsp;AI_Output (other, self,&quot;Mil_018_Migel_NuggetControl_Yes_12_00&q uot;); //Эй, я уже нароботал дневную норму.<br> &nbsp; &nbsp; &nbsp;AI_Output (self, other,&quot;Mil_018_Migel_NuggetControl_Yes_12_01& quot;); //Парень, а ты не такой уж бездельник, как я думал!<br> &nbsp; &nbsp; &nbsp;AI_Output (self, other,&quot;Mil_018_Migel_NuggetControl_Yes_12_02& quot;); //Ладно, проходи, только не вздумай препрятать себе хоть кусок руды, а то тебя по всей стоянке не соберут, усек?<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;self.aivar[AIV_PASSGATE] = TRUE;<br> &nbsp; &nbsp; &nbsp;Nugget_150_Done &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 1;<br> &nbsp; &nbsp; &nbsp;B_CheckLog();<br> &nbsp; &nbsp; &nbsp;AI_StopProcessInfos &nbsp; &nbsp; &nbsp;(self);<br>};<br><br>// ************************************************** *************************<br>// ************************************************** *************************<br>// ************************************************** *************************<br><br>INSTANCE Mil_018_Migel_NuggetControl_No (C_INFO)<br>{<br> &nbsp; &nbsp; &nbsp;npc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= Mil_018_Migel;<br> &nbsp; &nbsp; &nbsp;nr &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 5;<br> &nbsp; &nbsp; &nbsp;condition &nbsp; &nbsp; &nbsp;= Mil_018_Migel_NuggetControl_No_Condition;<br> &nbsp; &nbsp; &nbsp;information &nbsp; &nbsp; &nbsp;= Mil_018_Migel_NuggetControl_No_Info;<br> &nbsp; &nbsp; &nbsp;permanent &nbsp; &nbsp; &nbsp;= 1;<br> &nbsp; &nbsp; &nbsp;important &nbsp; &nbsp; &nbsp;= 0;<br> &nbsp; &nbsp; &nbsp;description = &quot;Я уже нароботал дневную норму!&quot;;<br>};<br><br>FUNC INT Mil_018_Migel_NuggetControl_No_Condition()<br>{ &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;if ((Npc_HasItems(other, ItMi_Nugget) &lt; 150)<br> &nbsp; &nbsp; &nbsp;&amp;&amp; (Nugget_150_Done &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;== 0 ))<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return TRUE;<br> &nbsp; &nbsp; &nbsp;};<br>};<br><br>FUNC VOID Mil_018_Migel_NuggetControl_No_Info()<br>{<br> &nbsp; &nbsp; &nbsp;AI_Output (other, self,&quot;Mil_018_Migel_NuggetControl_No_12_00&qu ot;); //Эй, я уже нароботал дневную норму.<br> &nbsp; &nbsp; &nbsp;AI_Output (self, other,&quot;Mil_018_Migel_NuggetControl_No_12_01&q uot;); //Знаешь, мне кажеться ты меня обманываешь- здесь нет 150 кусков! А я не люблю, когда меня обманывают!<br> &nbsp; &nbsp; &nbsp;AI_Output (self, other,&quot;Mil_018_Migel_NuggetControl_No_12_02&q uot;); //А ну быстро работать, а то счас шкуру спущу!<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;self.aivar[AIV_PASSGATE] = FALSE;<br> &nbsp; &nbsp; &nbsp;Nugget_150_Done &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= 0;<br> &nbsp; &nbsp; &nbsp;AI_StopProcessInfos &nbsp; &nbsp; &nbsp;(self);<br>};<br><br><br>З.Ы.Где лежат скрипты писем, книжек и т.д.?

26.04.2005 09:17

Re: Скриптинг в Готике
 
2Galhan:<br>
Цитата:

Где лежат скрипты писем, книжек и т.д.?
<br><br>Для любой Готики - директория скриптов ..\Items, файлы IT_Written.d или Written.d<br><br>PS: Мог бы и написать, что в твоем скрипте не работает.

27.04.2005 08:26

Re: Скриптинг в Готике
 
В моем скрипте работает все кроме главного - чтобы он не выпускал ГГ оттуда. То есть при попытке вырваться, он говорит только &quot;Стой! Ты куда это собрался, а? Возвращайся к работе, пока я не снес тебе башку!&quot;(FirstWarn), а SecondWarn и Attack - уже никак, проходи, сколько хочеш :(<br>З.Ы. Почему при изминении гильдии и внешности ГГ, многие НПС перестают с ним говорить? ::)

27.04.2005 09:40

Re: Скриптинг в Готике
 
2Galhan:<br>
Цитата:

SecondWarn и Attack - уже никак, проходи, сколько хочеш
<br><br>В твоем скрипте напутано, переменная aivar[AIV_Guardpassage_Status] при втором предупреждении и атаке должна относиться не к other (ГГ), а к self (охранник).

TycoooN 27.04.2005 21:52

Re: Скриптинг в Готике
 
2TeMnI MaG: <br>
Цитата:

Вот я не потеме можноли читом или скриптами стать орком в Готике ?
<br>В каком смысле стать? Если просто побегать, то можно читами вселиться в любого орка:<br>войти в режим Марвина, подойти к орку и нажать 'o'.

28.04.2005 10:02

Re: Скриптинг в Готике
 
2Galhan:<br>
Цитата:

Почему при изминении гильдии и внешности ГГ, многие НПС перестают с ним говорить?
<br><br>Посмотри описание функции B_AssessTalk() в Уроках скриптологии, там все варианты подробно рассмотрены.<br>

PA 28.04.2005 12:09

Re: Скриптинг в Готике
 
2Vam: и 2All:<br><br>Конверт DDS в TEX и обратно от Нико Бендлина<br>http://www.bendlins.de/nico/gothic2/ztextools.zip<br>Пишу об этом здесь, так как еще раз хочу, что-бы обратили внимание на сайт Нико<br>http://www.bendlins.de/nico/<br><br>

29.04.2005 08:34

Re: Скриптинг в Готике
 
А можно ли как-то зделать, чтобы после определенных действий, на карте появлялся ВОБ.<br>Пример: чел просит ГГ принести ему трубку, колбу и табак, когда приносишь, он ставит кальян.

30.04.2005 19:58

Re: Скриптинг в Готике
 
Не нужно что бы она лежала там все время.Ведь нпс теряет до того,как говорит ГГ.

01.05.2005 01:40

Re: Скриптинг в Готике
 
Цитата:

Сообщение от francisc link=board=gothic&amp;t=1105030050&amp;start=300#3 08 date=04/30/05, в 19:58:07
<br>Не нужно что бы она лежала там все время.Ведь нпс теряет до того,как говорит ГГ.<br>

<br><br>Что-то я не понял, что ты такое написал. А вот эта функция:<br><br>Wld_InsertItem (int itemInstance, string spawnPoint); - разместить в мире один предмет, где itemInstance – ссылка на предмет, spawnPoint – имя точки размещения (может быть как WP, так и FP).<br><br>Можно попробовать...

01.05.2005 04:25

Re: Скриптинг в Готике
 
Цитата:

Сообщение от Vam link=board=gothic&amp;t=1105030050&amp;start=300#3 03
<br>В твоем скрипте напутано, переменная aivar[AIV_Guardpassage_Status] при втором предупреждении и атаке должна относиться не к other (ГГ), а к self (охранник). <br>

<br>Вроде бы и так, но все равно - *не помагает! :(

TycoooN 01.05.2005 12:38

Re: Скриптинг в Готике
 
2Galhan: <br>В принципе, у тебя там вроде бы все сделано точно так же, как у Таламона в Монастыре, так что ума не приложу, почему не работает... *::)<br><br>А вот по поводу других скриптов, у тебя там не очень рационально сделано.<br>Я бы на твоем месте сделал так:<br><br><br>instance Mil_018_Migel_NuggetControl_Yes(c_info)<br>{<br> * * *npc = Mil_018_Migel;<br> * * *nr = 4;<br> * * *condition = Mil_018_Migel_NuggetControl_Yes_Condition;<br> * * *information = Mil_018_Migel_NuggetControl_Yes_Info;<br> * * *permanent = TRUE;<br> * * *description = &quot;Я уже нароботал дневную норму!&quot;;<br>};<br><br>func int Mil_018_Migel_NuggetControl_Yes_Condition()<br>{ <br> * * *if(!Nugget_150_Done)<br> * * *{<br> * * * * * *return TRUE;<br> * * *};<br>};<br><br>func void Mil_018_Migel_NuggetControl_Yes_Info()<br>{<br> * * *AI_Output(other,self,&quot;Mil_018_Migel_NuggetCo ntrol_Yes_12_00&quot;); //Эй, я уже нароботал дневную норму.<br> * * *<br> * * *if(Npc_HasItems(other,ItMi_Nugget) &gt;= 150)<br> * * *{<br> * * * * * *AI_Output(self,other,&quot;Mil_018_Migel_NuggetCo ntrol_Yes_12_01&quot;); //Парень, а ты не такой уж бездельник, как я думал!<br> * * * * * *AI_Output(self,other,&quot;Mil_018_Migel_NuggetCo ntrol_Yes_12_02&quot;); //Ладно, проходи, только не вздумай препрятать себе хоть кусок руды, а то тебя по всей стоянке не соберут, усек?<br><br> * * * * * *Nugget_150_Done = TRUE;<br> * * * * * *B_CheckLog(); //Не совсем понятно, зачем тут эта функция. Она обычно применяется после скажем MIS_Nugget_150_Done = LOG_SUCCESS<br> * * *}<br> * * *else<br> * * *{<br> * * * * * *AI_Output (self, other,&quot;Mil_018_Migel_NuggetControl_No_12_01&q uot;); //Знаешь, мне кажеться ты меня обманываешь- здесь нет 150 кусков! А я не люблю, когда меня обманывают!<br> * * * * * *AI_Output (self, other,&quot;Mil_018_Migel_NuggetControl_No_12_02&q uot;); //А ну быстро работать, а то счас шкуру спущу!<br> * * *};<br>};<br><br>

06.05.2005 23:22

Re: Скриптинг в Готике
 
Значица так...<br><br>Я попытался вставить в свой мод для Г1 &quot;StrongHand&quot; пояса из Г2, пояса отлично заработали, но есть кое-какие странности.<br><br>В описании пояса стоит такой флаг:<br>mainflag = ITEM_KAT_MAGIC;<br><br>С данным флагом пояс появляется в инвентаре с магическими предметами. При этом можно одеть ВСЕ пояса сразу. А это НЕ ЕСТЬ хорошо.<br><br>Глючноватое решение проблемы:<br>Если флаг &quot;mainflag = ITEM_KAT_MAGIC;&quot; изменить на &quot;mainflag = ITEM_KAT_ARMOR;&quot; и добавить флаг &quot;wear = WEAR_HEAD;&quot; (одеть пояс на голову, так как больше некуда одеть...) пояса начинают работать более правильно. Т.е. одевается только один пояс и один доспех... <br><br>Все было бы отлично, если бы через голову не проходила .3ds модель одетого пояса, взятая из строки: Например: &quot;visual = &quot;ItMI_Belt_06.3ds&quot;;. Хотя строки описывающей визуальные изменения &quot;visual_change = ... &quot; в описании амулетов вообще НЕТ!<br><br>Так вот, вопрос...<br>Где в скриптах можно найти описание количества одеваемых одновременно предметов, ИЛИ как полностью отключить общую визуализацию &quot;visual_change = ... &quot;, но чтобы при этом его было видно в инвентаре: &quot;visual = &quot;ItMI_Belt_06.3ds&quot;.

07.05.2005 12:40

Re: Скриптинг в Готике
 
2Ukur:<br>
Цитата:

Где в скриптах можно найти описание количества одеваемых одновременно предметов
<br><br>Насколько мне известно, такого в скриптах нет, данный параметр определяется экзешником (движком) в зависимости от флага предмета flags при попытке одеть предмет.

07.05.2005 21:09

Re: Скриптинг в Готике
 
Где нужно в Globals и в Startup прописывать своего NPC,чтобы он появился в игре !!!!Помогите плиззззззззззз!!

07.05.2005 21:30

Re: Скриптинг в Готике
 
Кхм... Возник такой вопрос:<br><br>Как сделать монстра, чтобы он не нападал на npc а вёл<br>себя как человек - говорил с ГГ, вёл его куда-нибуть, шёл<br>за ним?

07.05.2005 22:07

Re: Скриптинг в Готике
 
2Beliar@Alexey:<br>
Цитата:

Как сделать монстра, чтобы он не нападал на npc а вёл<br>себя как человек
<br><br>Посмотри скрипт Ищущего Огонька, ведь он же монстр от рождения, а по поведению - можно и поменять.

07.05.2005 22:26

Re: Скриптинг в Готике
 
2Vam: <br>Обычный огонёк нашел, а где то, что в аддоне из амулета появляется или это он же?<br><br>Добавление от 05/07/05, в 22:29:05 <hr class="hr_agfc">P.S: И как написать диалог для любого npc?<br><br>Добавление от 05/07/05, в 22:31:16 <hr class="hr_agfc">
Цитата:

а где то, что в аддоне из амулета появляется или это он же?
<br>И его нашел в том же файле instance Wisp_Detector(Mst_Default_Wisp)

TycoooN 07.05.2005 23:55

Re: Скриптинг в Готике
 
2Beliar@Alexey: <br>
Цитата:

как написать диалог для любого npc?
<br>См. папку story\dialoge<br><br>Ищущий огонёк - это тот, которого в Аддоне Ватрас даёт ::)

08.05.2005 00:02

Re: Скриптинг в Готике
 
Дык я пишу - нашел обычный в папке story\npc\monster/MST_Wisp.d<br>В нем instance Wisp_Detector(Mst_Default_Wisp)<br>это и есть ищущий огонек?<br>
Цитата:

как написать диалог для любого npc?<br>См. папку story\dialoge
<br>Yee/// Там я смотрел, а как сделать диалог, например, для<br>нового npc &quot;none_077_NewNPC&quot;, что-бы он хотя бы говорил мне привет,<br>рассказал что-нить... и т.п.


Текущее время: 19:43. Часовой пояс GMT +4.
Страница 8 из 65 12345678 91011121314151858 Последняя »

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot

AGFC: Valley of Gothic © 2004-2022