AGFC

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

10.03.2008 03:38

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

func int DIA_Dar_Kameradenschwein_Condition()<br>{<br> &nbsp; &nbsp; if(Dar_LostAgainstCipher == TRUE)<br> &nbsp; &nbsp; {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.aivar[AIV_LastFightComment] = FALSE;<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; };<br>}; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // ошибка, функция должна возвращать значение
<br><br>Многие ошибки можно исправить, сравнивая с ОРИГИНАЛЬНЫМИ немецкими скриптами из пакета G2MDK<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;self.aivar[AIV_LastFightComment] == FALSE; //geht NUR bei ECHTER Important-Info!<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return TRUE;<br> &nbsp; &nbsp; &nbsp;};<br>};

10.03.2008 14:41

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

1.Что за гильдии Strf &nbsp;и Dmt ?
<br>Старатели и ищущие.<br>
Цитата:

2.Как задать взаимодействие новой гильдии с остальными чтобы другие гильдии реагировали на новую.
<br>Wld_SetGuildAttitude(var int guild1, var int attitude, var int guild2);<br>
Цитата:

5. Есть где нибудь ссылка (только не на сайты KillerXXX) где можно скачать рабочую прогу NSC Script Generator 2.2. &nbsp;Она устанавливается, но не работает.
<br>.Net Framework установлен?

12.03.2008 22:20

Re: М: Скриптинг в Готике
 
Всем спасибо.<br>Последние вопросы про гильдии. &nbsp;1. Что это:<br>OUT &nbsp;?<br>Это для связи между гильдиями или какая-то еще фиговина? Персов с такой гильдии в скриптах нету.<br>2. Как можно задать взаимодействие между людьми и орками? Просто гильдия орков есть, но находится, так скажем, в разделе монстров. Можно ли их использовать (нужно чтобы они не на все типы людей кидались, а лишь на некоторых) или нужно новую гильдию орков создавать, нечто вроде оркосапиенс? <br><br>

13.03.2008 14:54

Re: М: Скриптинг в Готике
 
2 Magmatic:<br>Здесь Нефариус немного ошибся, гильдия STRF (нем. Straefling) - не [strike]старатели[/strike], а каторжники.<br>1. А гильдия OUT - вообще сборная солянка, кого в ней только нет:<br>крестьяне (Секоб, Тилл, Бальтазар, Рега, Бабера и пр.);<br>бандиты (Моргахард и компания);<br>менты (Мика);<br>палы (Маркос, Тенгрон, Файет и пара безимянных палов);<br>каторжники (Фед, Тонак, Пардос);<br>прочие с пометкой &quot;VLK&quot; (Рамирез, Кассия, Джо, Граймс, Билгот, Тальбин, Энгром, Гестат).<br><br>2. Есть такая гильдия &quot;дружественные орки&quot; (GIL_FRIENDLY_ORC), единственный её представитель - Ур-Шак.

13.03.2008 15:58

Re: М: Скриптинг в Готике
 
Не совсем по скриптам, но все же вопрос.<br>
Цитата:

<br>; List of vdf-files which have been added to the original gothic<br>; [separate them by spaces, include their extension &quot;.mod&quot;]<br>vdf=...<br>
<br>Как подразумевается в строке vdf указывается порядок загрузки mod.файлов, т.е. таким образом реализуется подключение патчей, озвучания, видео и прочих дополнений к существующим модификациям.<br><br>А теперь, собственно вопрос. В Г2А - никаких пробем, все грузится и работает без проблем. А в Г1 логику уловить не удалось. если указана последоватлеьность &quot;a.mod b.mod&quot; - грузится только &quot;b.mod&quot; если b.mod убарть из папки модов и запихнуть под видом b.vdf - работает, но через раз.

13.03.2008 17:15

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

А в Г1 логику уловить не удалось. если указана последоватлеьность &quot;a.mod b.mod&quot; - грузится только &quot;b.mod&quot; если b.mod убарть из папки модов и запихнуть под видом b.vdf - работает, но через раз.
<br>Файлы *.mod нужно разделять двойным пробелом.

13.03.2008 17:19

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

А в Г1 логику уловить не удалось. если указана последоватлеьность &quot;a.mod b.mod&quot; - грузится только &quot;b.mod&quot; если b.mod убарть из папки модов и запихнуть под видом b.vdf - работает, но через раз.
<br>Логика в г1 точно такая же как как в Г2а, а приоритет загрузки .mod файлов определяется не порядком в ini файле, а по дате создания .vdf или .mod архива, причем, если &nbsp;.vdf будет новее .mod он также перекроет своими данными .mod<br>Единственное существенной отличие в загрузке .mod от .vdf, что .mod рассматривается игрой только, через INI файл мода, а .vdf всегда.

13.03.2008 17:21

Re: М: Скриптинг в Готике
 
2Нефариус: *Спасибо камрад, а то я уж думал что у меня совсем крыша поехала. *;D<br><br>2Ukur: И за это тоже спасибо. Я подозревал что там последовательность завязана на дате, потому что последовательная перекомпиялция скриптов всегда помогала от багов, но не думал что это действительно так :) Это вполне логично для vdf-патчей. Не надо никаких дополнительных файлов.

14.03.2008 20:38

Re: М: Скриптинг в Готике
 
ммм... а может кто нибудь скажет как распотрошить движок г2 и вносить изменения? (ну ведь вы делали)

14.03.2008 23:01

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

Сообщение от FiG link=board=gothic&amp;t=1105030050&amp;goto=408229 1 date=03/14/08, в 19:38:31
<br>ммм... а может кто нибудь скажет как распотрошить движок г2 и вносить изменения? (ну ведь вы делали)<br>

<br>Делали Г2? ;D<br>Насколько мне известно камрад Vam занимался (и занимается) декомпиляцией движка Г1, о Г2 по-моему пока даже и речи не было.<br><br>А собственно, вам с какой целью это надо? :) Готика ведь очень гибкая в плане модификаций ;)<br>

14.03.2008 23:36

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

&gt; Насколько мне известно камрад Vam занимался
<br> &nbsp;он и вторую вроде разбирал... <br><br>
Цитата:

Готика ведь очень гибкая в плане модификаций
<br> &nbsp;не настолько, насколько нужно <br><br>p.s может кто знает ка сделать в готике parallax mapping ? xD ну или хотя бы bump mapping<br>это зашито в библиотеках или в ехешнике?

17.03.2008 09:16

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

он и вторую вроде разбирал...
<br>Вторая находится в работе...<br><br>
Цитата:

может кто знает ка сделать в готике parallax mapping ? xD ну или хотя бы bump mapping, это зашито в библиотеках или в ехешнике?
<br>Эти фишки в Готиках могут быть реализованы только в движке (экзешник) с использованием библиотек DirectX. Но, пока нет полных исходников движка, об этом можно только мечтать... &nbsp;:(<br>

18.03.2008 21:47

Re: М: Скриптинг в Готике
 
ну чтож, мечтаем пока..<br><br>а может кто привести пример самого простого скрипта для изготовления чего либо посредством диалога с MOBом (рунный стол, точильный камень и т.п) <br> т.е я понимаю что там надо писать что то типа<br> if (Npc_HasIitem(s)(...)) &nbsp;{ удалить эо из инвертаря и отдать готовую вещь, напр. меч};<br>но как начать диалог _с предметом_ ? (видел что в скриптах это делается через рокфеллера)<br><br> &nbsp;<br>

19.03.2008 13:42

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

Сообщение от FiG link=board=gothic&amp;t=1105030050&amp;goto=409028 8 date=03/18/08, в 20:47:49
<br>...а может кто привести пример самого простого скрипта для изготовления чего либо посредством диалога с MOBом (рунный стол, точильный камень и т.п) <br>

<br>А может проще открыть папочку с соответствующими диалогами? Или просто поиском в скриптах?<br>Чем ждать ответа на форуме....лень... :(

25.03.2008 12:35

Re: М: Скриптинг в Готике
 
2Муравьёв-Апостол<br> читаешь мысли) <br><br>у меня та же проблема, но я в принципе знаю с чем это связано<br>1) надо чтобы в файле gothic.ini была строка subTitles=1<br>2) в ини файле также должна быть задана переменная gametextAutoScroll=1000 &nbsp;(задержка для каждой буквы в диалоге, в милисекундах)

25.03.2008 12:43

Re: М: Скриптинг в Готике
 
2basilio<br>
Cпойлер(щелкните, чтобы прочесть):
func void potionalchemy_s1()<br>{<br> &nbsp; &nbsp; var C_Npc her;//заводим переменную хер<br> &nbsp; &nbsp; her = Hlp_GetNpc(PC_Hero);//&quot;присваиваем ей главгероя&quot;<br> &nbsp; &nbsp; if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(her))&quot;если id игрока = id хер-а т.е героя...&quot;<br> &nbsp; &nbsp; {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.aivar[AIV_INVINCIBLE] = TRUE; // невидимым становится??<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PLAYER_MOBSI_PRODUCTION = MOBSI_PotionAlchemy;//как я понял, устанавливается анимация...<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AI_ProcessInfos(her);// и начинается диалог?<br> &nbsp; &nbsp; };<br>};
<br>ну и как я тут сам разберусь?

26.03.2008 00:10

Re: М: Скриптинг в Готике
 
2FiG: *А вы ниже по контексту смотрите.<br>Взаимодействие с MOBом вызывает ф-цию (указывается в спейсере) в вашем случае это ф-ция potionalchemy_s1. Функция проверяет, взаимодействует ли герой с мобом - в этом случае начинается диалог.<br><br>Диалог с мобом выглядит практичесики так же как и с нпц:<br>
Цитата:

<br>//Добавляем (например) выход из диалога.<br><br>instance PC_MakeSome_End(C_Info)<br>{<br> * * *npc = PC_Hero;<br> * * *nr = 999;<br> * * *condition = PC_MakeSome_End_Condition;<br> * * *information = PC_MakeSome_End_Info;<br> * * *permanent = TRUE;<br> * * *description = Dialog_Ende;<br>};<br><br>//Условие, проверяем переменную PLAYER_MOBSI_PRODUCTION, в вашем случае написано MOBSI_PotionAlchemy, но константу можно задать любую, в т.ч. и пользовательскую, обработка же её происходит именно здесь. Именно здесь происходит привязка диалога к взаимодейтсвию с конкретным мобом.<br><br>func int PC_MakeSome_End_Condition()<br>{<br> * * *if(PLAYER_MOBSI_PRODUCTION == MOBSI_PotionAlchemy)<br> * * *{<br> * * * * * *return TRUE;<br> * * *};<br>};<br><br>//Сам выход<br><br>func void PC_MakeSome_End_Info()<br>{<br>AI_StopProcessInfos (self);<br>self.aivar[AIV_INVINCIBLE] = FALSE;<br>PLAYER_MOBSI_PRODUCTION = MOBSI_NONE;<br>};<br>
<br>

04.04.2008 15:08

Re: М: Скриптинг в Готике
 
Ребят, какой скрипт отвечает за реакцию нпс на атаки со стороны?

04.04.2008 18:17

Re: М: Скриптинг в Готике
 
2SMErtNIK: Конкретно за реакции (не только на нападение) отвечают восприятия персонажа. &nbsp;В вашем случае это<br>
Цитата:

Npc_PercEnable(self,PERC_ASSESSDAMAGE,ZS_ReactToDa mage);
<br>Следовательно интересующая вас функция -<br>
Цитата:

ZS_ReactToDamage
<br>Лежит она в папке AI/ZS_Human/ или AI/Human/ZS_Human/ для Г1 и Г2 соответсвенно.<br><br>

07.04.2008 18:29

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

07.04.2008 19:37

Re: М: Скриптинг в Готике
 
2K@ncler: зависит от того, что конкретно вы под этим подразумеваете :)))

07.04.2008 22:13

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

Сообщение от K@ncler link=board=gothic&amp;t=1105030050&amp;goto=412895 4 date=04/07/08, в 18:29:59
<br>А можно ли в Г2 движок сделать как Г3 (или наоборот)????<br>

<br>Перефразировав известного математика, добавлю:<br>&quot;Дайте нам исходный код и мы переделаем весь двиг!&quot;

08.04.2008 12:46

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

7 апреля 2008, 18:29, K@ncler писал:<br>А можно ли в Г2 движок сделать как Г3 (или наоборот)????<br>Перефразировав известного математика, добавлю:<br>&quot;Дайте нам исходный код и мы переделаем весь двиг!&quot;
<br><br>Я вообще пока не очень понимаю, что там Вам делает...<br>Но насколько мне известно пока он не заявлял, что собирается<br>делиться с кем-то исходниками движка, даже если они будут ;)

13.04.2008 17:08

Re: М: Скриптинг в Готике
 
Допустимы условия типа <br><br>if ((Npc_GetDistToWP (npc, wp1) &lt; Npc_GetDistToWP (npc,wp2)) ?<br><br>Обычно там цифра стоит, но...<br><br>Какая-то ерунда получается, но, может, я еще где-нибудь накосячила, конструкция семиэтажная... ::) Эта функция работает на больших расстояниях, если вп вне поля зрения?

marazmus 13.04.2008 18:50

Re: М: Скриптинг в Готике
 
Обычно обсчет скриптов идет только когда происходящее видно игроку.<br><br>По идее должно работать, легче самому запустить и проверить :)<br><br>Для упрощения конструкции можно обьявить две переменные рядом с функцией, затем присвоить этим переменным результаты функций, чтобы получилось что-то типа<br><br>
Код:

<br>Dist1 = Npc_GetDistToWP(self, wp1);<br>Dist2 = Npc_GetDistToWP(self, wp2);<br>if (Dist1 &lt; Dist 2) { ... }<br>

13.04.2008 19:28

Re: М: Скриптинг в Готике
 
2okin: по идее должно работать, ибо ф-ция возварщае значение int.<br>Вот только мне не совсем понятен смысл такой конструкции - вы проверяете к какому вейпоинту ближе находится тот или иной нпц? Есть например такое решение - <br>
Код:

if (Hlp_StrCmp(Npc_GetNearestWP(self),wp1))<br>{<br>//ближе к wp1<br>}<br>else if (Hlp_StrCmp(Npc_GetNearestWP(self),wp2))<br>{<br>//ближе к wp2<br>};
<br>Немного через голову, правда, но все же :)

14.04.2008 11:14

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

if (Hlp_StrCmp(Npc_GetNearestWP(self),wp1))
<br>Не совсем то, что нужно... Мне ведь не ближайший вп нужен, а определить, какой ближе из двух (на самом деле из шести), разбросанных по миру. Пытаюсь сделать колечко телепортации, у которого точка выхода зависит от точки входа. Плюс парочка триггеров на сладкое, срабатывающих с определенной вероятностью, - для большей непредсказуемости перемещений. То есть закономерность, конечно, есть, но забавная ;D<br><br>Пока пробовала с тремя вп на маленьком кусочке, все работало. Дописала остальное и увеличила расстояния - появились косяки... Могла просто где-то что-то напутать, но вроде уже несколько раз проверяла...<br><br>Поэтому вопрос - <br>marazmus<br>
Цитата:

Обычно обсчет скриптов идет только когда происходящее видно игроку.
<br>В данном случае тоже так? Пытаться определить расстояние за пределами видимости бесполезно? Тогда придется извращаться...<br>

14.04.2008 11:58

Re: М: Скриптинг в Готике
 
2okin: ага, задумку понял. Если вы проверяете дистанцию между ГГ и вейпоинтом - проблем быть не должно. Т.е. если self - ГГ, то дистанция будет определяться независимо от положения ГГ в мире (если, конечно, он не перейдейт в другой мир, ZEN в плане &nbsp;;D). Если бы скриптовой язык готики имел больше функций обработки массивов, то можно было бы получить 6 дистанций, загнать их в массив, найти минимальное значение, вернуть ключ и вуаля. <br><br>А так прихдится писать разветвленную и громозкую систему условий. Возможно где-то в ней ошибки. &nbsp;Например, я быстренько сделал вот такой скрипт (Г1), дистанция пишется в дневник вполне исправно.<br><br>
Код:

<br>instance MapRing(C_Item)<br>{<br> &nbsp; &nbsp; &nbsp;name = NAME_Ring;<br> &nbsp; &nbsp; &nbsp;mainflag = ITEM_KAT_MAGIC;<br> &nbsp; &nbsp; &nbsp;flags = ITEM_RING;<br> &nbsp; &nbsp; &nbsp;value = 0;<br> &nbsp; &nbsp; &nbsp;visual = &quot;ItMi_Ring_01.3ds&quot;;<br> &nbsp; &nbsp; &nbsp;visual_skin = 0;<br> &nbsp; &nbsp; &nbsp;material = MAT_METAL;<br> &nbsp; &nbsp; &nbsp;on_equip = Equip_MapRing;<br> &nbsp; &nbsp; &nbsp;on_unequip = UnEquip_MapRing;<br> &nbsp; &nbsp; &nbsp;description = &quot;Кольцо&quot;;<br> &nbsp; &nbsp; &nbsp;text[2] = &quot;&quot;;<br> &nbsp; &nbsp; &nbsp;text[3] = &quot;&quot;;<br> &nbsp; &nbsp; &nbsp;text[5] = NAME_Value;<br> &nbsp; &nbsp; &nbsp;count[5] = value;<br>};<br><br>func void Equip_MapRing()<br>{<br> &nbsp; &nbsp; &nbsp;var int oc;<br> &nbsp; &nbsp; &nbsp;var int nc;<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;oc=Npc_GetDistToWP(self, &quot;OCC_CENTER_1&quot;);<br> &nbsp; &nbsp; &nbsp;nc=Npc_GetDistToWP(self, &quot;NC_DAM&quot;);<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;Log_CreateTopic(&quot;Дистанция&quot;,LOG_NOTE);<br> &nbsp; &nbsp; &nbsp;Log_CreateTopic(&quot;Старый Лагерь&quot;,LOG_NOTE);<br> &nbsp; &nbsp; &nbsp;Log_CreateTopic(&quot;Плотина&quot;,LOG_NOTE);<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;if (oc&lt;nc)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp;B_LogEntry(&quot;Дистанция&quot;, &quot;Старый Лагерь ближе плотины.&quot;);<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else if (oc&gt;nc)<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp;B_LogEntry(&quot;Дистанция&quot;, &quot;Плотина ближе Старого Лагеря&quot;);<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp; &nbsp;else<br> &nbsp; &nbsp; &nbsp;{<br> &nbsp; &nbsp; &nbsp;B_LogEntry(&quot;Дистанция&quot;, &quot;Расстояния одинаковы&quot;); &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;}; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;<br> &nbsp; &nbsp; &nbsp;B_LogEntry(&quot;Старый Лагерь&quot;, IntToString(oc));<br> &nbsp; &nbsp; &nbsp;B_LogEntry(&quot;Плотина&quot;, IntToString(nc));<br> &nbsp; &nbsp; &nbsp;<br>};<br><br>func void UnEquip_MapRing()<br>{<br><br>};<br>
<br><br>Если ГГ использует кольцо в любой точке мира oldworld.zen - информация выводится вполне корректно &nbsp;;)

15.04.2008 13:37

Re: М: Скриптинг в Готике
 
Посмотрела на свежую голову на свою функцию и увидела забавный порядок проверки условий в одном блоке. Прямо как в анекдоте про вазочку: &quot;Во-первых, не брала, во-вторых, вернула целую, а в-третьих, она уже была разбита&quot;! ;D ;D ;D<br><br>Н-да... :-[<br><br>В общем, усе работает, прошу прощения за бестолковый вопрос. Спасибо за подсказки. ;)

22.04.2008 17:00

Re: М: Скриптинг в Готике
 
Подскажите пожалуйста, где зарыты:<br>ebrh2.3ds<br>Hum_EBRS_ARMOR.asc<br>В 1-й и 2-й Готиках.<br>Спасибо.

22.04.2008 17:27

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

Подскажите пожалуйста, где зарыты:<br>ebrh2.3ds<br>Hum_EBRS_ARMOR.asc<br>В 1-й и 2-й Готиках.<br>Спасибо.
<br><br>Это меш и анимашка, насколько мне помниться они валяются в скомпиленном виде ebrh2.3ds в meshes.vdf,<br>а Hum_EBRS_ARMOR.asc в anims.vdf в скомпиленном виде...

22.04.2008 18:20

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

в скомпиленном виде ebrh2.3ds в meshes.vdf
<br>и при этом имеют в скомпиленном виде расширение .MRM, а не .3ds. .3ds сырье можно найти в пакете модостроителя GMDK для Г1, или G2MDK для г2а.

22.04.2008 18:33

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

Сообщение от Ukur link=board=gothic&amp;t=1105030050&amp;goto=416080 2 date=04/22/08, в 18:20:23
<br>2DarkSeducer: <br>и при этом имеют в скомпиленном виде расширение .MRM, а не .3ds. .3ds сырье можно найти в пакете модостроителя GMDK для Г1, или G2MDK для г2а.<br>

<br>Спасибо, нашёл, скачал.<br>А каким инструментом можно декомпилировать файлы .MDM и .MRM и компилировать обратно в них?

22.04.2008 19:02

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

А каким инструментом можно декомпилировать файлы .MDM и .MRM и компилировать обратно в них?
<br>Декомпилятора мешей не существует, остальное GothicSourcer

23.04.2008 15:18

Re: М: Скриптинг в Готике
 
Подскажите, что отвечает за прибавление 12 к жизненной силе с каждым уровнем? Для маны можно сделать подобное?

23.04.2008 23:25

Re: М: Скриптинг в Готике
 
2niccolo: В готике 1 (да и в г2, скорее всего, так же), за это отвечает ф-ция B_giveXP которая, помимо дачи эскпы, проводит проверку на достижение нового урвоня. <br><br>Функция расположена в Story\B\B_GiveXp.d<br><br>Собственно, вот проверка на достижение нового уровня:<br>
Код:

<br> * * *if(hero.exp &gt;= hero.exp_next)<br> * * *{<br> * * *hero.level = hero.level + 1;<br> * * *hero.exp_next = hero.exp_next + ((hero.level + 1) * 500);<br> * * *hero.attribute[ATR_HITPOINTS_MAX] = hero.attribute[ATR_HITPOINTS_MAX] + HP_PER_LEVEL;<br> * * *hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS] + HP_PER_LEVEL;<br> * * *hero.lp = hero.lp + LP_PER_LEVEL;<br> * * *PrintScreen(NAME_LevelUp,-1,_YPOS_MESSAGE_LEVELUP,&quot;font_old_20_white.tga&quot;,_TIME_MESSAGE_LEVELUP);<br> * * *Snd_Play(&quot;LevelUp&quot;);<br> * * *};<br>
<br>Где: <br>hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS] + HP_PER_LEVEL и hero.attribute[ATR_HITPOINTS_MAX] = hero.attribute[ATR_HITPOINTS_MAX] + HP_PER_LEVEL - рост ЖС на размер, указанный в константе HP_PER_LEVEL<br><br>Собственно, для маны можно также задать, только вместо [ATR_HITPOINTS] и [ATR_HITPOINTS_MAX] следует добавить строчки с [ATR_MANA] и [ATR_MANA_MAX]. Вместо константы HP_PER_LEVEL можете прописать свою для маны или просто число.

24.04.2008 12:35

Re: М: Скриптинг в Готике
 
2360:<br>Спасибо, очень ясно и подробно.<br>------<br>Я нигде не нашёл описания<br>aivar[AIV_IMPORTANT] = TRUE<br>что это значит?<br>для чего добавляется self.?<br>где описано содержимое сундуков.<br>-----<br>Я сейчас меняю характеристики всех персонажей Готики-1,<br>убираю неуязвимость для большего реализма и делаю всех более живучими, сильными, ловкими и вооружёнными, так, чтобы и рудокоп или падальщик) смогли за себя нормально постоять, поднимаю также их уровень для увеличения экспы.<br>Основная идея в том, чтобы сделать трудным возможность побить крутого чувака и отобрать у него что-нибудь ценное.<br>Основная проблема в том, чтобы сделать грамотно и не переборщить. Если кто-то делал что-нибудь подобное, есть какие-нибудь советы?

MaGoth 24.04.2008 12:53

Re: М: Скриптинг в Готике
 
2niccolo: <br>self. одна из 3-х глобальных переменных двига для управления игры, позиционируется как на Гг так и на Непесей, связана с двигом и интелектом скриптов на прямую т.е. ни удалять ее ни изменять нельзя. (в туторе Вама читай, там расписано чуток ;))<br><br>Теперь по остальному, реализм в топку... бесмертие как было так пусть и остается, все равно на том что есть, более или менее реалистичность не реализовать, издержки двига. Что до баланса, то он есть в Готе только тогда, когда Гг на &quot;0&quot; уровне против волка, дальше уже песня о танках... &nbsp;;D<br>

24.04.2008 13:07

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

для чего добавляется self.?
<br>self в случае НПЦ это глобальная ссылка на его класс. т.е. если например написать self.name[0]=&quot;Василий&quot; то нпц в скриптах которого (например, в диалогах) присутвует данная строчка, переименутся в Василия :), установка self.attribute[ATR_HITPOINTS]=0 убьет его и т.д. В примере с левел-апом идет глобальная ссылка на ГГ.<br><br>Вместо self можно работать и c любой другой переменной типа C_NPC.<br>
Код:

<br>var C_Npc MyNpc;<br>MyNpc = Hlp_GetNpc(Sld_700_Lee);<br>MyNpc.name[0]=&quot;Генерал Ли&quot;;<br>
<br><br>
Цитата:

где описано содержимое сундуков.
<br>В zen-файлах. Содержимое именных сунудуков можно менять скриптами :)<br><br>
Цитата:

aivar[AIV_IMPORTANT] = TRUE
<br>Я глубоко в этом не разбирался, но похоже она влияет на диалоги с important=1; Ибо делая вариант, когда о преступлениях ГГ в Готике 1 сообщалось как в Г3, я столкнулся с проблемой, что НПЦ сам не начинал диалога, а говорил фарзу о преступлении в начале диалога с ГГ.<br><br>Добавление от 04/24/08, в 13:27:44 <hr class="hr_agfc">2MaGoth:
Цитата:

Теперь по остальному, реализм в топку... бесмертие как было так пусть и остается, все равно на том что есть, более или менее реалистичность не реализовать, издержки двига. Что до баланса, то он есть в Готе только тогда, когда Гг на &quot;0&quot; уровне против волка, дальше уже песня о танках...
<br>Ну в Г1 боевой баланс хоть поприличнее Г2 - минимального урона то нет &nbsp;;D, а делать автолевелинг монстров ИМХО еще хуже, &nbsp;так что действительно лучше ничего не трогать :)

24.04.2008 15:09

Re: М: Скриптинг в Готике
 
Эх, программисты... Любите же вы всё усложнять.<br><br>Придумываете всякие &quot;автолевелы&quot;, нелинейную прокачку, выносливость, рассудок и.т.д. и.т.п.<br><br>Я лично в своём моде сделал просто- ЗНАЧИТЕЛЬНО ослабил выдаваемую герою броню. И всё. Не трогал ни монстров, ни неписей (их броня на месте). &nbsp;А играть интересней, и сложней, и никаких &quot;песен про танки&quot;...<br>


Текущее время: 02:12. Часовой пояс GMT +4.

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

AGFC: Valley of Gothic © 2004-2022