AGFC
Страница 65 из 65 « Первая 15555859606162636465

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

18.11.2012 18:55

Re: М: Скриптинг в Готике
 
2UkroLeha: Можно еще впорос? Как перекомпилировать zen с новой моделью mds? Просто у меня есть zen с предметами, вейнетом и прочим. Я обнаружил, что в mds модели в одном месте вода твердая. Исправил, и сейчас мне нужно перекомпилировать zen с новой mds'кой. Год назад я это уже делал, но за это время напрочь забыл, как это делается.<br><br><br>Более не актуально, вспомнил.<br><br>Добавление от 11/18/12, в 12:16:09 <hr class="hr_agfc">AIVAR_ отслеживаются движком, или можно в скриптах ввести свой и нормально использовать?<br><br>Добавление от 11/18/12, в 19:15:21 <hr class="hr_agfc">Есть скрипт ZS_Intercept:<br>
Cпойлер(щелкните, чтобы прочесть):
<br>func void ZS_Intercept()<br>{<br> &nbsp; &nbsp; &nbsp;Npc_PercEnable(self,PERC_ASSESSPLAYER,B_Asse ssSCMad);<br> &nbsp; &nbsp; &nbsp;Npc_PercEnable(self,PERC_ASSESSDAMAGE,B_Inte rceptMadAssessDamage);<br> &nbsp; &nbsp; &nbsp;Npc_PercEnable(self,PERC_ASSESSMAGIC,B_Inter ceptMadAssessMagic);<br> &nbsp; &nbsp; &nbsp;Npc_PercEnable(self,PERC_ASSESSCASTER,B_Asse ssSCMad);<br> &nbsp; &nbsp; &nbsp;Npc_PercEnable(self,PERC_ASSESSTHREAT,B_Asse ssSCMad);<br> &nbsp; &nbsp; &nbsp;self.senses = SENSE_HEAR | SENSE_SEE;<br> &nbsp; &nbsp; &nbsp;self.senses_range = 1300;<br> &nbsp; &nbsp; &nbsp;Npc_SetPercTime(self,0.5);<br> &nbsp; &nbsp; &nbsp;AI_Standup(self);<br> &nbsp; &nbsp; &nbsp;AI_SetWalkMode(self,NPC_WALK);<br> &nbsp; &nbsp; &nbsp;AI_GotoWP(self,self.wp);<br> &nbsp; &nbsp; &nbsp;AI_AlignToWP(self);<br>};<br><br>func int ZS_Intercept_Loop()<br>{<br> &nbsp; &nbsp; &nbsp;AI_Wait(self,1);<br> &nbsp; &nbsp; &nbsp;return LOOP_CONTINUE;<br>};<br><br>func void ZS_Intercept_End()<br>{<br>};<br><br>func void B_AssessSCMad()<br>{<br> &nbsp; &nbsp; &nbsp;if(Npc_CheckInfo(self,1))<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hero.aivar[AIV_IMPORTANT] = TRUE;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B_FullStop(self);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_StartState(self,ZS_Talk,1,&quot;&quot;);< br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;<br> &nbsp; &nbsp; &nbsp;};<br>};<br><br>func void B_InterceptMadAssessDamage()<br>{<br> &nbsp; &nbsp; &nbsp;if(Npc_CheckInfo(self,1))<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hero.aivar[AIV_IMPORTANT] = TRUE;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B_FullStop(self);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_StartState(self,ZS_Talk,1,&quot;&quot;);< br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B_FullStop(self);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_StartState(self,ZS_ReactToDamage,0,&quot; &quot;);<br> &nbsp; &nbsp; &nbsp;};<br>};<br><br>func void B_InterceptMadAssessMagic()<br>{<br> &nbsp; &nbsp; &nbsp;if(Npc_CheckInfo(self,1))<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hero.aivar[AIV_IMPORTANT] = TRUE;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B_FullStop(self);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_StartState(self,ZS_Talk,1,&quot;&quot;);< br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B_FullStop(self);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B_AssessMagic();<br> &nbsp; &nbsp; &nbsp;};<br>};<br>
<br><br>и есть файл диалога:<br>
Cпойлер(щелкните, чтобы прочесть):
<br>instance Info_HighPriest1(C_Info)<br>{<br> &nbsp; &nbsp; &nbsp;npc = ORC_Priest_1;<br> &nbsp; &nbsp; &nbsp;nr = 1;<br> &nbsp; &nbsp; &nbsp;condition = Info_HighPriest1_Condition;<br> &nbsp; &nbsp; &nbsp;information = Info_HighPriest1_Info;<br> &nbsp; &nbsp; &nbsp;permanent = 0;<br> &nbsp; &nbsp; &nbsp;important = 1;<br>};<br><br><br>func int Info_HighPriest1_Condition()<br>{<br> &nbsp; &nbsp; &nbsp;return TRUE;<br>};<br><br>func void Info_HighPriest1_Info()<br>{<br> &nbsp; &nbsp; &nbsp;B_SelectWeapon(self,other);<br> &nbsp; &nbsp; &nbsp;AI_SetWalkMode(self,NPC_WALK);<br> &nbsp; &nbsp; &nbsp;AI_GotoNpc(self,other);<br> &nbsp; &nbsp; &nbsp;AI_Output(self,other,&quot;Info_HighPriest1_ 17_01&quot;); &nbsp; &nbsp; &nbsp;//СМЕЕЕЕЕЕЕРТНЫЫЫЙ!<br> &nbsp; &nbsp; &nbsp;AI_Output(self,other,&quot;Info_HighPriest1_ 17_02&quot;); &nbsp; &nbsp; &nbsp;//КАК ОСМЕЕЕЛИЛСЯ ТЫ ПОТРЕВОЖИТЬ МЕНЯ???!!!<br> &nbsp; &nbsp; &nbsp;AI_Output(self,other,&quot;Info_HighPriest1_ 17_03&quot;); &nbsp; &nbsp; &nbsp;//ГОТОВЬСЯ УМЕРЕТЬ!<br> &nbsp; &nbsp; &nbsp;AI_Output(other,self,&quot;Info_HighPriest1_ 15_04&quot;); &nbsp; &nbsp; &nbsp;//Мы еще посмотрим, кому нужно готовиться, ты, сгнивший кусок мяса!<br> &nbsp; &nbsp; &nbsp;B_LogEntry(CH4_EnterTemple,&quot;Я стою перед Варраг-Нашором, одним из пяти орочьих шаманов, которые привели Спящего в наш мир. Я положу конец его существованию.&quot;);<br> &nbsp; &nbsp; &nbsp;AI_StopProcessInfos(self);<br> &nbsp; &nbsp; &nbsp;Npc_SetAttitude(self,ATT_HOSTILE);<br> &nbsp; &nbsp; &nbsp;Npc_SetTempAttitude(self,ATT_HOSTILE);<br > &nbsp; &nbsp; &nbsp;Npc_SetTarget(self,hero);<br> &nbsp; &nbsp; &nbsp;B_Attack(self,other,AR_NONE,1);<br>};<br>
<br><br>После разговора орк должен атаковать героя, но он тупо стоит и даже не реагирует на удары. Хотя другой НПС с таким же ZS скриптом и с такой вставкой диалоге<br>
Cпойлер(щелкните, чтобы прочесть):
Npc_SetAttitude(self,ATT_HOSTILE);<br>Npc_SetTempA ttitude(self,ATT_HOSTILE);<br>Npc_SetTarget(self,h ero);<br>B_Attack(self,other,AR_NONE,1);
<br>нормально атакует после разговора. В чем ошибка?<br><br>

06.12.2012 13:38

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

AIVAR_ отслеживаются движком, или можно в скриптах ввести свой и нормально использовать?
<br>AIVAR это обычный массив, хранящий данные об AI как можно догадаться из названия, в Г2 его размер 100, в первой 50. <br>Если речь идет о том, чтобы изменить его размеры, то да, размер отслеживается, и при правках в классе результатом будет вылет. <br>Если речь идет о том, чтобы использовать свободное его пространство — то такое делать никто не запрещает, можно как через константы, так и напрямую по ключам, Г1 свободные с 43 по 50, в Г2 не помню. Данные сохраняются вместе с персонажем.

06.12.2012 14:14

Re: М: Скриптинг в Готике
 
Дополню ответ leet it b:<br>В G2 свободны элементы массива AIVAR c 89 по 100 - смотрите скрипт AI\AI_Intern\AI_Constants.d.

13.12.2012 22:08

Re: М: Скриптинг в Готике
 
Три вопроса.<br>1) Как заставить монстра говорить? Скрипт монстра добавил, диалог создал наподобие диалога с овцой Бетти. Однако что-то не срабатывает. Нужен триггер для активации?<br>2) Нужно чтобы гарпии не нападали на ГГ, пока он не выполнит квест. В случае успеха миссии, они должны стать к нему дружественны, вне зависимости от гильдии. Мне кажется, если повесить на ГГ предмет аналогичный броне бандита (в слот для щита к примеру), он будет конфликтовать с упомянутой броней. Планируется использовать вместе и броню бандита и артефакт гарпии. Жду совета.<br>3) Совершенно не понимаю почему при добавлении новой анимации людям, начинают вылетать гарпии (те игра вылетает на этих крылатых тварях), при этом вылетает сообщение что не хватает людской анимации поворота тела! Как связаны человеческие тушки с гарпиями?

13.12.2012 22:52

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

2) Нужно чтобы гарпии не нападали на ГГ, пока он не выполнит квест. В случае успеха миссии, они должны стать к нему дружественны, вне зависимости от гильдии. Мне кажется, если повесить на ГГ предмет аналогичный броне бандита (в слот для щита к примеру), он будет конфликтовать с упомянутой броней. Планируется использовать вместе и броню бандита и артефакт гарпии. Жду совета.
<br>Можно просто при взятии квеста установить гарпиям нейтральное отношение к ГГ, а в случае успеха дружественное постоянное.

19.12.2012 04:04

Re: М: Скриптинг в Готике
 
2Лавовый:
Цитата:

1) Как заставить монстра говорить? Скрипт монстра добавил, диалог создал наподобие диалога с овцой Бетти. Однако что-то не срабатывает. Нужен триггер для активации?
<br>Если мне память не изменяет, у монстра должно быть включено &quot;восприятие&quot;, которое собственно отвечает за реакции НПЦ на происходящее (кражи, убийства, оружие, магию и диалоги)<br>Npc_PercEnable(self,PERC_ASSESSTALK,ZS _Talk);<br><br>Лучше всего создать для необходимых монстров собственные ZS расписания и добавить необходимые восприятия &nbsp;в стартовую функцию.

14.01.2013 11:53

Re: М: Скриптинг в Готике
 
В уроках скриптологии. Автор: Vam<br>Написано, что в арифметических операциях. Операция деления это всего-то простое деление.<br>/ - простое деление (результат целая часть)<br><br>Не уже ли скриптинг готики 2 не позволяет вычислять:<br>1. Нормальное деление, т.е получения вещественного результата?<br>2. Корень числа и логарифм?<br>

14.01.2013 12:16

Re: М: Скриптинг в Готике
 
2budunovmv:<br>В реализации для G1 и G2 языка Daedalus есть константы и переменные типа float, но нет арифметических операций для этого типа данных. И в нём практически отсутствуют функции, работающие с типом float. Частичная реализация 32-битной арифметики с плавающей точкой (стандарт IEEE 754) есть только в скриптпакете Ikarus:<br>
Cпойлер(щелкните, чтобы прочесть):
mkf &nbsp; &nbsp;= make float<br>truncf = truncate float<br>roundf = round float<br>addf &nbsp; = add floats<br>subf &nbsp; = subtract floats<br>negf &nbsp; = negate float<br>mulf &nbsp; = multiply floats<br>divf &nbsp; = divide floats<br>invf &nbsp; = inverse float<br>gf &nbsp; &nbsp; = greater<br>gef &nbsp; &nbsp;= greater or equal<br>lf &nbsp; &nbsp; = lower<br>lef &nbsp; &nbsp;= lower or equal<br>sqrtf &nbsp;= square root of float<br>printf = print float
<br>

15.01.2013 04:57

Re: М: Скриптинг в Готике
 
Какое максимальное значение целого, т.е. int=2147483646 или другое?

15.01.2013 06:09

Re: М: Скриптинг в Готике
 
2budunovmv:<br>int = 255

15.01.2013 08:02

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

Сообщение от budunovmv link=board=gothic&amp;t=1105030050&amp;goto=716351 0 date=01/15/13, в 04:57:31
<br>Какое максимальное значение целого, т.е. int=2147483646 или другое?<br>

<br><br>Да, так, только 7 на конце.<br><br>
Цитата:

Сообщение от luciano link=board=gothic&amp;t=1105030050&amp;goto=716351 5 date=01/15/13, в 06:09:59
<br>2budunovmv:<br>int = 255<br>

<br><br>Это максимальный размер массива в готике, насколько мне не изменяет память.

16.01.2013 10:31

Re: М: Скриптинг в Готике
 
А как сделать перебор массива?

16.01.2013 10:43

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

Сообщение от budunovmv link=board=gothic&amp;t=1105030050&amp;goto=716424 1 date=01/16/13, в 10:31:14
<br>А как сделать перебор массива?<br>

<br>Пример рекурсии есть здесь

16.01.2013 11:47

Re: М: Скриптинг в Готике
 
Будет какая-нибудь задержка, например при ударе меча, если выполнить выборку из массива размерность 600 (разбитый на 3 части)?<br><br>Добавление от 01/16/13, в 12:07:06 <hr class="hr_agfc">Или если выполнять сравнивание &nbsp;2000 раз, например при ударе меча? <br><br>Код<br>if(rnd &lt;= 25) { return 1; } <br>else if (rnd &lt;= 50) { return 2; } <br>else if (rnd &lt;= 75) { return 3; } <br>else if (rnd &lt;= 99) { return 4; } <br>повторяеться 2000 раз

17.01.2013 08:08

Re: М: Скриптинг в Готике
 
2budunovmv: Я думаю, чтобы получить ответ на этот вопрос - надо ПОПРОБОВАТЬ самому.

19.01.2013 11:04

Re: М: Скриптинг в Готике
 
Чем можно скомпилировать скриптпакет Ikarus и LeGo_2_0_1.7, в GothicSourcer V3.14 не компилируется выдает кучу ошибок, таких как return +ter; //но эта часть кода правильная

19.01.2013 13:55

Re: М: Скриптинг в Готике
 
2budunovmv: <br>Движком игры через GothicStarter_Mod

29.01.2013 02:57

Re: М: Скриптинг в Готике
 
Как исправить следующию ошибку ? //Ошибка нельзя преобразовать тип int в instance в int<br>Компилирую в GothicSource 3.14<br><br>class MEMINT_HelperClass {};<br>var MEMINT_HelperClass MEMINT_AssignPredecessor;<br>var int inte;<br>inte = MEMINT_AssignPredecessor + 1; //Ошибка нельзя преобразовать тип int в instance<br><br>
Cпойлер(щелкните, чтобы прочесть):
//* функция из скрипт пакета ikarus<br>func void MEMINT_PrepareAssignments() {<br> &nbsp; &nbsp;/* sorgt dafьr, dass MEMINT_Assign und MEMINT_StrAssign<br> &nbsp; &nbsp; * genau die Funktion von zPAR_OP_IS bzw. zPAR_TOK_ASSIGNSTR<br> &nbsp; &nbsp; * erfьllen.<br> &nbsp; &nbsp; * Diese Funktion wird nach Start von Gothic genau einmal aufgerufen. */<br><br> &nbsp; &nbsp;var int symTab; var int MEMINT_Assign_Sym; var int MEMINT_Assign_StackPos; var int stackStart;<br><br> &nbsp; &nbsp;//Navigation zum Code dieser Funktionen:<br> &nbsp; &nbsp;symTab &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= MEM_ReadInt (ContentParserAddress + zCParser_symtab_table_array_offset);<br> &nbsp; &nbsp;stackStart &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= MEM_ReadInt (ContentParserAddress + zCParser_stack_offset);<br> &nbsp; &nbsp;MEMINT_Assign_Sym &nbsp; &nbsp; &nbsp; = MEM_ReadInt (symTab + 4 * (MEMINT_AssignPredecessor + 1));<br> &nbsp; &nbsp;MEMINT_Assign_StackPos &nbsp;= MEM_ReadInt (MEMINT_Assign_Sym + zCParSymbol_content_offset);<br><br> &nbsp; &nbsp;//alte Lesemethode braucht Npc<br> &nbsp; &nbsp;MEMINT_GetMemHelper();<br> &nbsp; &nbsp;var C_NPC othBak;<br> &nbsp; &nbsp;othBak = Hlp_GetNpc (other);<br><br> &nbsp; &nbsp;//Code ьberschreiben. Vorsicht: Der erste Aufruf soll auch klappen!<br> &nbsp; &nbsp;MEMINT_OldWriteInt (stackStart + MEMINT_Assign_StackPos &nbsp; &nbsp; , (zPAR_OP_IS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;&lt; 0) | (zPAR_TOK_RET &nbsp; &nbsp; &nbsp; &lt;&lt; 8) | (zPAR_TOK_RET &lt;&lt; 16) | (zPAR_TOK_RET &lt;&lt; 24));<br> &nbsp; &nbsp;MEMINT_OldWriteInt (stackStart + MEMINT_Assign_StackPos + &nbsp;4, (zPAR_TOK_RET &nbsp; &nbsp; &nbsp; &nbsp;&lt;&lt; 0) | (zPAR_OP_IS &nbsp; &nbsp; &nbsp; &nbsp; &lt;&lt; 8) | (zPAR_TOK_RET &lt;&lt; 16) | (zPAR_TOK_RET &lt;&lt; 24));<br> &nbsp; &nbsp;MEMINT_OldWriteInt (stackStart + MEMINT_Assign_StackPos + &nbsp;8, (zPAR_TOK_ASSIGNSTR &nbsp;&lt;&lt; 0) | (zPAR_TOK_RET &nbsp; &nbsp; &nbsp; &lt;&lt; 8) | (zPAR_TOK_RET &lt;&lt; 16) | (zPAR_TOK_RET &lt;&lt; 24));<br> &nbsp; &nbsp;MEMINT_OldWriteInt (stackStart + MEMINT_Assign_StackPos + 12, (zPAR_TOK_RET &nbsp; &nbsp; &nbsp; &nbsp;&lt;&lt; 0) | (zPAR_TOK_ASSIGNSTR &lt;&lt; 8) | (zPAR_TOK_RET &lt;&lt; 16) | (zPAR_TOK_RET &lt;&lt; 24));<br><br> &nbsp; &nbsp;//alte Lesemethode muss aufrдumen<br> &nbsp; &nbsp;MEM_Helper.enemy = 0;<br> &nbsp; &nbsp;other = Hlp_GetNpc (othBak);<br>};<br><br>var MEMINT_HelperClass MEMINT_AssignPredecessor;<br>*/
<br><br>Добавление от 01/29/13, в 03:17:56 <hr class="hr_agfc">
Цитата:

Сообщение от budunovmv link=board=gothic&amp;t=1105030050&amp;goto=716427 1 date=01/16/13, в 11:47:06
<br>Будет какая-нибудь задержка, например при ударе меча, если выполнить выборку из массива размерность 600 (разбитый на 3 части)?

<br><br><br>
Цитата:

Добавление от 01/16/13, в 12:07:06 <hr class="hr_agfc">Или если выполнять сравнивание *2000 раз, например при ударе меча?
<br><br><br>
Цитата:

Код<br>if(rnd &lt;= 25) { return 1; } <br>else if (rnd &lt;= 50) { return 2; } <br>else if (rnd &lt;= 75) { return 3; } <br>else if (rnd &lt;= 99) { return 4; } <br>повторяеться 2000 раз<br>
<br><br>Проверил, нет ни какой задержки?

29.11.2013 12:56

Re: М: Скриптинг в Готике
 
GIL_DMT значит и ищущие, и чёрные маги, правильно?

29.11.2013 13:20

Re: М: Скриптинг в Готике
 
2Cubic:<br>Ты же изучал скрипты игры. Хотя скорее всего чёрного мага приписали к GIL_DMT из-за того, что ради одного NPC создавать новую гильдию - непозволительная роскошь, т.к. есть ограничение на количество гильдий. Поэтому Ватрас, бывший единственным магом Воды в G2, имеет гильдию GIL_VLK, а не GIL_KDW. То же самое и с монстрами, например: появившийся в аддоне кабан (ID_Keiler) приписан к GIL_WOLF, а похожий на глорха кусач (ID_OrcBiter) приписан к GIL_SCAVENGER.

29.08.2015 20:11

Re: М: Скриптинг в Готике
 
Помогите со скриптом на спаун моба без разницы какого если есть у кого то шаблон скиньте плиз буду очень благодарен


Текущее время: 09:39. Часовой пояс GMT +4.
Страница 65 из 65 « Первая 15555859606162636465

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

AGFC: Valley of Gothic © 2004-2022