redleha

Administrator
Команда форума
Регистрация
28 Фев 2008
Сообщения
1,492
Репутация
426
Адрес
г.Новокуйбышевск Самарская обл.
Повторюсь один разок(спросил в Идеях для мода). Для того, чтоб объяснили с чем это связано...
В скриптах:
Почему в фалах в папке ...\AI\Magic\Spells в заклах, относящихся к магии огня, такие как Spell_Firebolt, Spell_FireRain, Spell_Firestorm параметр damagetype = DAM_MAGIC, а не DAM_FIRE ? Можно ли поменять?
Также, для чего и где используются "Заклинания Майя", а также вопрос - модмейкеры задействовали все зарезервированные заклинания?
 

MaGoth

Хранитель форума
Регистрация
30 Авг 2006
Сообщения
2,024
Репутация
0
Адрес
Самара
redleha
Почему в фалах в папке ...\AI\Magic\Spells в заклах, относящихся к магии огня, такие как Spell_Firebolt, Spell_FireRain, Spell_Firestorm параметр damagetype = DAM_MAGIC, а не DAM_FIRE ? Можно ли поменять?
Потому что:
DAM_MAGIC = Магия Огня,Воды, Белиара, Спящего...
DAM_FIRE = Огонь дракона.
Также, для чего и где используются "Заклинания Майя", а также вопрос - модмейкеры задействовали все зарезервированные заклинания?
- в аддоне смотри, по игре с мечем Белиара.
- зарезервированных уже нет.
 

redleha

Administrator
Команда форума
Регистрация
28 Фев 2008
Сообщения
1,492
Репутация
426
Адрес
г.Новокуйбышевск Самарская обл.
MaGoth
Спасибо.
Одно ясно - скрипты в Готике достаточно простые. И вроде всё уже понятно. Если сильно не заморачиваться и тем более держать под рукой образцы, примеры, акелловские скрипты и тутор Вама, то можно скриптить уже после пары дней знакомства с ними, походу уясняя уже что-то новое. (ну есссно, если есть склад ума соответствующий).
 

ghost

Воин Инноса
Регистрация
31 Июл 2007
Сообщения
415
Репутация
0
Одно ясно - скрипты в Готике достаточно простые. И вроде всё уже понятно. Если сильно не заморачиваться и тем более держать под рукой образцы, примеры, акелловские скрипты и тутор Вама, то можно скриптить уже после пары дней знакомства с ними, походу уясняя уже что-то новое. (ну есссно, если есть склад ума соответствующий).
:) Не скажи... Если внимательно прочтеш скрипт, даже "туторы", то есть несколько интерестных и не реализованных возможностей... Попробуй их ввести в мод... Если заметил и реализуеш, в чем не сомневаюсь, - должно получиться нечто новое...

P.S. Не в обиду будет сказано, но радостный "поросячий визг" по поводу простоты скриптов отложи, есть целый ряд зависимостей, на которые постоянно "нарываються" создатели GM...
 

MaGoth

Хранитель форума
Регистрация
30 Авг 2006
Сообщения
2,024
Репутация
0
Адрес
Самара
ghost
Не просвятишь ???? :D
 

ghost

Воин Инноса
Регистрация
31 Июл 2007
Сообщения
415
Репутация
0
ghost
Не просвятишь ????  :D
Просвящу...

К примеру:

protection [PROT_BLUNT]
и
damage [DAM_INDEX_BLUNT]

полностью задействовано?

... ищите дальше...

P.S. Если спросил по поводу "зависимостей", то ищите/читайте сами... Судя по GM v.1.14 с большинством проблем справитесь легко... (основное - внимательность, уже освоили...).

:) P.S.S. Если не сложно будет, в качестве урока, в соответствующей теме изложи все переменные используемые при написании скриптов (с простешим пояснением их смысла), и возможно, порядок внесения новых...
 

redleha

Administrator
Команда форума
Регистрация
28 Фев 2008
Сообщения
1,492
Репутация
426
Адрес
г.Новокуйбышевск Самарская обл.
ghost
Даже Пираньи не всё задействовали, что сделали. А ты про команду говоришь. Необязательно всё задействовать, чтобы получился качественный мод.
Даже та идея про показ рукой НПСом в то место, про которое он рассказывает, позволяется движком и в скриптах это есть. Но Пираньи в Г2 это не реализовали.
 

ghost

Воин Инноса
Регистрация
31 Июл 2007
Сообщения
415
Репутация
0
ghost
Даже Пираньи не всё задействовали, что сделали. А ты про команду говоришь. Необязательно всё задействовать, чтобы получился качественный мод.
Даже та идея про показ рукой НПСом в то место, про которое он рассказывает, позволяется движком и в скриптах это есть. Но Пираньи в Г2 это не реализовали.
:) Пираньи не реализовали... ну и ... с ними... Надеюсь будет реализовано в GlobalMod...
 

MaGoth

Хранитель форума
Регистрация
30 Авг 2006
Сообщения
2,024
Репутация
0
Адрес
Самара
ghost
P.S.S. Если не сложно будет, в качестве урока, в соответствующей теме изложи все переменные используемые при написании скриптов (с простешим пояснением их смысла), и возможно, порядок внесения новых...
Не, с этим я парится не стану, на кой шут оно мне нужно??? :blink:


Пираньи не реализовали... ну и ... с ними... Надеюсь будет реализовано в GlobalMod...
Эмм. что именно? :)
у нас планируется что-то из того что не реализовали пираны, а вот то что они оставили не сделанным хз, хз... :rolleyes:
 

ghost

Воин Инноса
Регистрация
31 Июл 2007
Сообщения
415
Репутация
0
MaGoth: Не станеш париться или скорее просто не знаеш? Список переменных позволил бы даже начинающим скриптологам оценить свои возможности и/или найти новые решения...

P.S. Х.з., х.з. - лежит на поверхности - читайте внимательнее прогу, ведь сами создаете уроки/туторы, зачастую бездумно...

P.S.S. [!--SpoilerBegin--][/div][table border=\'0\' align=\'center\' width=\'95%\' cellpadding=\'3\' cellspacing=\'1\'][tr][td onclick=\'ShowTableTdFromTd(this,1)\' style=\"cursor:pointer\"]Скрытый текст (нажмите сюда, чтобы увидеть) [/td][/tr][tr][td style=\"display:none\" id=\'SPOILER\'][!--SpoilerEBegin--] прикинусь лохом [!--SpoilerEnd--][/td][/tr][/table][div class=\'postcolor\'][!--SpoilerEEnd--] А на каком языке скрипты пишуться?
 

redleha

Administrator
Команда форума
Регистрация
28 Фев 2008
Сообщения
1,492
Репутация
426
Адрес
г.Новокуйбышевск Самарская обл.
А на каком языке скрипты пишуться?
Язык, вроде, называется Daedalus. Стиль, да и внешний вид очень похожи на С++ , только очень упрощённый.
По идее, тутора Вама вполне может хватить для новичков, которые имеют склонность хотя бы к простейшей скриптологии Готы (по сравнению с ассемблером или чистым С эти скрипты - простейшие).
Поверь мне MaGoth хорошо знает скрипты, иначе бы он не был админом-скриптологом и не возглавлял с Marazmus'ом WOG.
 

ghost

Воин Инноса
Регистрация
31 Июл 2007
Сообщения
415
Репутация
0
Язык, вроде, называется Daedalus. Стиль, да и внешний вид очень похожи на С++ , только очень упрощённый.
По идее, тутора Вама вполне может хватить для новичков, которые имеют склонность хотя бы к простейшей скриптологии Готы (по сравнению с ассемблером или чистым С эти скрипты - простейшие).
Поверь мне MaGoth хорошо знает скрипты, иначе бы он не был админом-скриптологом и не возглавлял с Marazmus'ом WOG.
:) Абсолютно согласен... Но вспомни С - что в начале прописывается (?).... - именно это и прошу MaGoth или др., если не составит труда, перечислить по возможности/знанию... Очень сомневаюсь что смогут, хотя надеюсь, что ошибаюсь...

P.S. К сожалению язык упрощен, общие библиотеки (*.h и т.д.) отсутствуют как, по всей видимости, и проверка при компиляции, а туторы достаточно скудны необходимой информацией (скорее для общего ознакомления) - остается идти методом проб и ошибок от версии к версии (в GM это прослеживается...)...

P.S.S. Ассемблер и "чистый" С (С1) языки разных уровней...
 

MaGoth

Хранитель форума
Регистрация
30 Авг 2006
Сообщения
2,024
Репутация
0
Адрес
Самара
ghost
MaGoth: Не станеш париться или скорее просто не знаеш? Список переменных позволил бы даже начинающим скриптологам оценить свои возможности и/или найти новые решения...
Если тебе нужно описание, то скачай GMDK2, установи его там будет описание небольшое правда и только на немецком.
Что до твоего вопроса: то я не совсем понял что именно тебе нужно, приведи пример.

По Daedalus: сам язык примитывный до ужаса, все что нужно конкретно описанов Туторе вама, и программе ГотикСоурсер.


P.S. Х.з., х.з. - лежит на поверхности - читайте внимательнее прогу, ведь сами создаете уроки/туторы, зачастую бездумно...
Если бы они были бездумными, то не было бы русских модов как таковых...
 

ghost

Воин Инноса
Регистрация
31 Июл 2007
Сообщения
415
Репутация
0
Что до твоего вопроса: то я не совсем понял что именно тебе нужно, приведи пример.
:) Как пример: можно ли используя скрипты присвоить дальнобойному/стрелковому оружию возможности оружия ближнего боя зависимо от расстояния до текущего противника... Более просто: обстреливаем Орка на расстоянии, но он подбегает в ближний бой - как к примеру арбалету присвоить возможность удара?...Т.е. обусловить характеристики предмета зависимо от вторичного параметра (не обязательно согласно приведенному примеру/запросу, возможно наоборот - при ударе, к примеру, "магическим" мечом повреждение наноситься на расстоянии (как у Равена...)...

P.S. При написании, к примеру, на С переменные и присваемые им значения должны быть описаны в начале (если придерживаться корректного стиля)... Конечно не касаюсь написания новых квестов - это чисто лоховское (без обид...)... Кстати, как в скрипте определяется текущая глава в Г2НВ и присваевается последующая зависимось подскриптов/подпрограм?

P.S.S. Обобщая: насколько понимаю, при написании скриптов в Г2НВ используються определенные переменные, зависимые от возможностей "движка", со своими изменяемыми, в определенных пределах, значениями - но как их "звать" и что им присваивать?... Если знаете - полный список выложите...

Если бы они были бездумными, то не было бы русских модов как таковых...
И в результате что нового, кроме интерестных квестов и криво созданных NPC-обжектов?...
 

MaGoth

Хранитель форума
Регистрация
30 Авг 2006
Сообщения
2,024
Репутация
0
Адрес
Самара
ghost
Как пример: можно ли используя скрипты присвоить дальнобойному/стрелковому оружию возможности оружия ближнего боя зависимо от расстояния до текущего противника... Более просто: обстреливаем Орка на расстоянии, но он подбегает в ближний бой - как к примеру арбалету присвоить возможность удара?...Т.е. обусловить характеристики предмета зависимо от вторичного параметра (не обязательно согласно приведенному примеру/запросу, возможно наоборот - при ударе, к примеру, "магическим" мечом повреждение наноситься на расстоянии (как у Равена...)...
Ни как, если не ошибаюсь тут придется ехе юзать вроде, хотя могу ошибаться нужно реализацию анимации для этого класса смотреть... :)
Если будет время, позже отвечу точно.

P.S. При написании, к примеру, на С переменные и присваемые им значения должны быть описаны в начале (если придерживаться корректного стиля)...
Забудь о С, здесь его нет... :)
Все переменные прописаны в СториГлобалс, это которые Глобальные... Все остальные в в соответствующих скриптах, откуда они задействуются.(и не обязательно что это скрипты диалогов и т.д...)

Кстати, как в скрипте определяется текущая глава в Г2НВ и присваевается последующая зависимось подскриптов/подпрограм?
Ну так как это:
чисто лоховское (без обид...)
Пусть будет твоим ДЗ... :)

P.S.S. Обобщая: насколько понимаю, при написании скриптов в Г2НВ используються определенные переменные, зависимые от возможностей "движка", со своими изменяемыми, в определенных пределах, значениями - но как их "звать" и что им присваивать?... Если знаете - полный список выложите...
Читай тутор Вама, там описаны все типы переменных и присваемых ими значений и т.д..
Если же речь идет конкретно о переменных описаных в коде, то выше я уже писал.(файл СториГлобал)

И в результате что нового, кроме интерестных квестов и криво созданных NPC-обжектов?...
Скажи за это спасибо Пираньям... :)
 

redleha

Administrator
Команда форума
Регистрация
28 Фев 2008
Сообщения
1,492
Репутация
426
Адрес
г.Новокуйбышевск Самарская обл.
У меня вот такой вопрос возник.
Написал я значит несколько квестов, заскриптил их. Потом декомпилировал скрипты Глобала 1.14, решив аккуратно их туда вставить. Залез в самый важный файлик StoryGlobals, а там увидел что-то совсем не похожее на StoryGlobal от Акеллы или оригинала Г2А. А также в папке _Intern отсутствует файл Constants.d . Не подскажите с чем это связано, и следовательно второй вопрос - куда прописывать глобальные переменные тогда? :unsure:
 

redleha

Administrator
Команда форума
Регистрация
28 Фев 2008
Сообщения
1,492
Репутация
426
Адрес
г.Новокуйбышевск Самарская обл.
Marvin, спасибо!
Но всё-таки, может кто поможет и прикрепит эти два файлика в виде спойлера. Я уж сам как-нибудь вставлю куда надо! :P
Заранее премного благодарен! :)
 

redleha

Administrator
Команда форума
Регистрация
28 Фев 2008
Сообщения
1,492
Репутация
426
Адрес
г.Новокуйбышевск Самарская обл.
Решил выложить мой мини-тутор. "Тутор по изменению диалога MOBSI на примере добавления нового алхимического рецепта."
Может кому-то поможет.

Всё рассмотренное ниже проводилось на акелловских скриптах, скачанных с WoG.ru
Изменения проводились с помощью программы GothicSourcer v3.14
Мой Мини-Тутор будет отредактирован, в случае необходимости и удобочитаемости.
Скрипты рабочие!

Заметил одну неприятную особенность в отображении скриптов Готики: сочетание && заменяется на &;&;
Это следует учесть


Давайте рассмотрим пример «как добавить новый алхимический рецепт».
Предположим, вам захотелось, чтобы какой-нибудь алхимик помог вам изучить Зелье, которое вы придумали сами, и при взаимодействии с алхимическим столом появлялся соответствующий пункт. Навскидку – я придумал зелья, которые представляют собой вытяжки-экстракты из различных растений. Например, рецепт:
«Вытяжка из лечебных растений» - представляет собой что? Берём 10 лечебных растений, выжимаем их в бутылочку и получаем зелье, которое представляет собой эликсир, увеличивающий наши ХитПойнты на 100 очков, то бишь жизнь.
1) Начинаем с конца – создаём сам эликсир. Для этого открываем файл IT_Potions.d в папке Items, и в самый конец файла прописываем следующее:


[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]const[/span] [span class=\"CTR\"]int[/span] HP_SpecMi_Health_01 [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]0[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//объявляем константу бонуса – 100 HP[/span]
[span class=\"CTR\"]const[/span] [span class=\"CTR\"]int[/span] Value_HpSpecMi_Health_01 [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]0[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//объявляем константу стоимости напитка.[/span]

[span class=\"CTR\"]instance[/span] ItPo_SpecMi_Health_01[span class=\"CTSp\"]([/span]C_Item[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
name [span class=\"CTSp\"]=[/span] NAME_Trank[span class=\"CTSp\"];[/span]
mainflag [span class=\"CTSp\"]=[/span] ITEM_KAT_POTIONS[span class=\"CTSp\"];[/span]
flags [span class=\"CTSp\"]=[/span] ITEM_MULTI[span class=\"CTSp\"];[/span]
value [span class=\"CTSp\"]=[/span] Value_HpSpecMi_Health_01[span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//константа - стоимость напитка[/span]
visual [span class=\"CTSp\"]=[/span] [span class=\"CTQ\"]\"ItPo_Health_01.3ds\"[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//будет выглядеть как обычная лечебная эссенция.[/span]
material [span class=\"CTSp\"]=[/span] MAT_GLAS[span class=\"CTSp\"];[/span]
on_state[span class=\"CTSp\"][[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] UseItPo_SpecMi_Health_01[span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//здесь имя функции, которая описана ниже, и описывающая бонусы от использования напитка.[/span]
scemeName [span class=\"CTSp\"]=[/span] [span class=\"CTQ\"]\"POTIONFAST\"[/span][span class=\"CTSp\"];[/span]
wear [span class=\"CTSp\"]=[/span] WEAR_EFFECT[span class=\"CTSp\"];[/span]
effect [span class=\"CTSp\"]=[/span] [span class=\"CTQ\"]\"SPELLFX_HEALTHPOTION\"[/span][span class=\"CTSp\"];[/span]
description [span class=\"CTSp\"]=[/span] [span class=\"CTQ\"]\"Выжимка из лечебных растений\"[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//название вашего эликсира[/span]
text[span class=\"CTSp\"][[/span][span class=\"CTN\"]1[/span][span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] NAME_Bonus_HP[span class=\"CTSp\"];[/span]
count[span class=\"CTSp\"][[/span][span class=\"CTN\"]1[/span][span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] HP_SpecMi_Health_01[span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//константа, объявленная выше (значение бонуса от использования напитка) с присвоенным значением, равным 100 HP.[/span]
text[span class=\"CTSp\"][[/span][span class=\"CTN\"]5[/span][span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] NAME_Value[span class=\"CTSp\"];[/span]
count[span class=\"CTSp\"][[/span][span class=\"CTN\"]5[/span][span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] Value_HpSpecMi_Health_01[span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] UseItPo_SpecMi_Health_01[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span] [span class=\"CTCom\"]//функция, описывающая бонус.[/span]
[span class=\"CTSp\"]{[/span]
Npc_ChangeAttribute[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]ATR_HITPOINTS[span class=\"CTSp\"],[/span]HP_SpecMi_Health_01[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span][/span][!-- /gsrc --]
//В данном случае при помощи функции Npc_ChangeAttribute мы изменяем себе текущее значение //ХитПойнтов(ATR_HITPOINTS) на 100 пунктов(HP_SpecMi_Health_01=100).
//
Аналогично вставляем второй напиток:
[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]const[/span] [span class=\"CTR\"]int[/span] HP_SpecMi_Health_02 [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]2[/span][span class=\"CTN\"]0[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//объявляем константу бонуса – 200 HP[/span]
[span class=\"CTR\"]const[/span] [span class=\"CTR\"]int[/span] Value_HpSpecMi_Health_02 [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]2[/span][span class=\"CTN\"]0[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//объявляем константу стоимости напитка.[/span]

[span class=\"CTR\"]instance[/span] ItPo_SpecMi_Health_02[span class=\"CTSp\"]([/span]C_Item[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
name [span class=\"CTSp\"]=[/span] NAME_Trank[span class=\"CTSp\"];[/span]
mainflag [span class=\"CTSp\"]=[/span] ITEM_KAT_POTIONS[span class=\"CTSp\"];[/span]
flags [span class=\"CTSp\"]=[/span] ITEM_MULTI[span class=\"CTSp\"];[/span]
value [span class=\"CTSp\"]=[/span] Value_HpSpecMi_Health_02[span class=\"CTSp\"];[/span]
visual [span class=\"CTSp\"]=[/span] [span class=\"CTQ\"]\"ItPo_Health_02.3ds\"[/span][span class=\"CTSp\"];[/span]
material [span class=\"CTSp\"]=[/span] MAT_GLAS[span class=\"CTSp\"];[/span]
on_state[span class=\"CTSp\"][[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] UseItPo_SpecMi_Health_02[span class=\"CTSp\"];[/span]
scemeName [span class=\"CTSp\"]=[/span] [span class=\"CTQ\"]\"POTIONFAST\"[/span][span class=\"CTSp\"];[/span]
wear [span class=\"CTSp\"]=[/span] WEAR_EFFECT[span class=\"CTSp\"];[/span]
effect [span class=\"CTSp\"]=[/span] [span class=\"CTQ\"]\"SPELLFX_HEALTHPOTION\"[/span][span class=\"CTSp\"];[/span]
description [span class=\"CTSp\"]=[/span] [span class=\"CTQ\"]\"Выжимка из лечебных трав\"[/span][span class=\"CTSp\"];[/span]
text[span class=\"CTSp\"][[/span][span class=\"CTN\"]1[/span][span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] NAME_Bonus_HP[span class=\"CTSp\"];[/span]
count[span class=\"CTSp\"][[/span][span class=\"CTN\"]1[/span][span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] HP_SpecMi_Health_02[span class=\"CTSp\"];[/span]
text[span class=\"CTSp\"][[/span][span class=\"CTN\"]5[/span][span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] NAME_Value[span class=\"CTSp\"];[/span]
count[span class=\"CTSp\"][[/span][span class=\"CTN\"]5[/span][span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] Value_HpSpecMi_Health_02[span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] UseItPo_SpecMi_Health_02[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span] [span class=\"CTCom\"]//функция, описывающая бонус.[/span]
[span class=\"CTSp\"]{[/span]
Npc_ChangeAttribute[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]ATR_HITPOINTS[span class=\"CTSp\"],[/span]HP_SpecMi_Health_02[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
Вы можете изменять, что хотите. Например можно написать следующую функцию:
[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] UseItPo_SpecMi_Health_02[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span] [span class=\"CTCom\"]//функция, описывающая бонус.[/span]
[span class=\"CTSp\"]{[/span]
Npc_ChangeAttribute[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]ATR_HITPOINTS[span class=\"CTSp\"],[/span]HP_SpecMi_Health_02[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//Увеличиваем текущие ХП на 100 пунктов.[/span]
if[span class=\"CTSp\"]([/span]Npc_IsPlayer[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
SpecMiUsing_Bonus [span class=\"CTSp\"]=[/span] SpecMiUsing_Bonus [span class=\"CTSp\"]+[/span] [span class=\"CTN\"]1[/span][span class=\"CTSp\"];[/span]
if[span class=\"CTSp\"]([/span]SpecMiUsing_Bonus [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"])[/span] [span class=\"CTCom\"]//если мы использовали напиток 10 раз, то возникает следующее:[/span]
[span class=\"CTSp\"]{[/span]
B_RaiseAttribute[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]ATR_HITPOINTS_MAX[span class=\"CTSp\"],[/span]SpecMi_Bonus[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//увеличиваем максимум силы на величину константы SpecMi_Bonus[/span]
Npc_ChangeAttribute[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]ATR_HITPOINTS[span class=\"CTSp\"],[/span][span class=\"CTN\"]5[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]// Увеличиваем текущие ХП на 5 пунктов.[/span]
Snd_Play[span class=\"CTSp\"]([/span][span class=\"CTQ\"]\"LevelUp\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
SpecMiUsing_Bonus [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]0[/span][span class=\"CTSp\"];[/span]
SpecMiUsing_SuperBonus [span class=\"CTSp\"]=[/span] SpecMiUsing_SuperBonus [span class=\"CTSp\"]+[/span] [span class=\"CTN\"]1[/span][span class=\"CTSp\"];[/span]
If[span class=\"CTSp\"]([/span]SpecMiUsing_SuperBonus [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"])[/span] [span class=\"CTCom\"]// если мы использовали напиток 100 раз, то возникает:[/span]
[span class=\"CTSp\"]{[/span]
B_RaiseAttribute[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]ATR_STRENGTH[span class=\"CTSp\"],[/span] SpecMi_Bonus[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//увеличиваем максимум силы на[/span]
[span class=\"CTCom\"]// величину константы SpecMi_Bonus[/span]
B_AddFightSkill[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]NPC_TALENT_1H[span class=\"CTSp\"],[/span]SpecMi_SuperBonus[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//увеличиваем атрибут владения[/span]
[span class=\"CTCom\"]//одноручным мечём на величину константы SpecMi_SuperBonus[/span]
Snd_Play[span class=\"CTSp\"]([/span][span class=\"CTQ\"]\"LevelUp\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
SpecMiUsing_SuperBonus [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]0[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span][/span][!-- /gsrc --]
В этом случае перед строкой instance ItPo_SpecMi_Health_02(C_Item) добавляем строчки:
[!-- gsrc --][span class=\"CT\"]
Const [span class=\"CTR\"]int[/span] SpecMi_Bonus [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]5[/span][span class=\"CTSp\"];[/span]
Const [span class=\"CTR\"]int[/span] SpecMi_SuperBonus [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]5[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
А в файле StoryGlobals.d добавляем две строки:

[!-- gsrc --][span class=\"CT\"]Var [span class=\"CTR\"]int[/span] SpecMiUsing_Bonus[span class=\"CTSp\"];[/span]
Var [span class=\"CTR\"]int[/span] SpecMiUsing_SuperBonus[span class=\"CTSp\"];[/span][/span][!-- /gsrc --]

2) Следующий шаг – нужно внести изменения в диалог взаимодействия ГГ с алхимическим столом. Чтобы при выученном навыке «Варить вытяжку» появлялась соответствующая строчка.
Сразу усложним немного задачу и внесем не строчку в диалог, а целый раздел «Изготовить экстракты растений» с внутренними строками: «Вытяжка из лечебных растений» и «Вытяжка из лечебных трав». Всё это аналогично тому, как раздел «Лечебные зелья» содержит в себе строки «Лечебная эссенция», «Лечебный экстракт».
Для этого открываем файл …\Story\Dialog_Mobsis\PotionAlchemy.d и в конец файла добавляем следующее:

Условно разделим вставляемые строки на три логические части(помечены как А, А1 и А2):
Часть А отвечает за раздел в диалоге MOBSI – а именно «Изготовить экстракты растений»
Части А1 и А2 – это как раз те зелья, которые будут в разделе «Изготовить экстракты растений», а именно «Вытяжка из лечебных растений» и «Вытяжка из лечебных трав»


А
[!-- gsrc --][span class=\"CT\"]
[span class=\"CTR\"]var[/span] [span class=\"CTR\"]int[/span] SpecialMiskStart[span class=\"CTSp\"];[/span]
[span class=\"CTR\"]instance[/span] PC_SpecialMisk_Start[span class=\"CTSp\"]([/span]C_Info[span class=\"CTSp\"])[/span] [span class=\"CTCom\"]//функция вставляющая соответствующий раздел «Изготовить экстракты растений»[/span]
[span class=\"CTSp\"]{[/span]
npc [span class=\"CTSp\"]=[/span] PC_Hero[span class=\"CTSp\"];[/span]
nr [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]2[/span][span class=\"CTSp\"];[/span]
condition [span class=\"CTSp\"]=[/span] PC_SpecialMisk_Start_Condition[span class=\"CTSp\"];[/span]
information [span class=\"CTSp\"]=[/span] PC_SpecialMisk_Start_Info[span class=\"CTSp\"];[/span]
permanent [span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"];[/span]
description [span class=\"CTSp\"]=[/span] [span class=\"CTQ\"]\"Изготовить экстракты растений\"[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]int[/span] PC_SpecialMisk_Start_Condition[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span] [span class=\"CTCom\"]//условия, при которых будет вставлен раздел[/span]
[span class=\"CTSp\"]{[/span]
if[span class=\"CTSp\"]([/span][span class=\"CTSp\"]([/span]PLAYER_MOBSI_PRODUCTION [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] MOBSI_PotionAlchemy[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]TabakStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]BoozeStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]HealthStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]ManaStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]SpecialStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]SpecialMiskStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
return TRUE[span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] PC_SpecialMisk_Start_Info[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span] [span class=\"CTCom\"]//итоговое значение функции – то, что мы перешли в этот раздел к напиткам.[/span]
[span class=\"CTSp\"]{[/span]
SpecialMiskStart [span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]instance[/span] PC_SpecialMisk_Stop[span class=\"CTSp\"]([/span]C_Info[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
npc [span class=\"CTSp\"]=[/span] PC_Hero[span class=\"CTSp\"];[/span]
nr [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]9[/span][span class=\"CTN\"]9[/span][span class=\"CTSp\"];[/span]
condition [span class=\"CTSp\"]=[/span] PC_SpecialMisk_Stop_Condition[span class=\"CTSp\"];[/span]
information [span class=\"CTSp\"]=[/span] PC_SpecialMisk_Stop_Info[span class=\"CTSp\"];[/span]
permanent [span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"];[/span]
description [span class=\"CTSp\"]=[/span] Dialog_Back[span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]int[/span] PC_SpecialMisk_Stop_Condition[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
if[span class=\"CTSp\"]([/span][span class=\"CTSp\"]([/span]PLAYER_MOBSI_PRODUCTION [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] MOBSI_PotionAlchemy[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]SpecialMiskStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
return TRUE[span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] PC_SpecialMisk_Stop_Info[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
SpecialMiskStart [span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
А1

[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]instance[/span] PC_ItPo_SpecMi_Health_01[span class=\"CTSp\"]([/span]C_Info[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
nr [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"];[/span]
npc [span class=\"CTSp\"]=[/span] PC_Hero[span class=\"CTSp\"];[/span]
condition [span class=\"CTSp\"]=[/span] PC_ItPo_SpecMi_Health_01_Condition[span class=\"CTSp\"];[/span]
information [span class=\"CTSp\"]=[/span] PC_ItPo_SpecMi_Health_01_Info[span class=\"CTSp\"];[/span]
permanent [span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"];[/span]
description [span class=\"CTSp\"]=[/span] “Вытяжка из лечебных трав”[span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]int[/span] PC_ItPo_SpecMi_Health_01_Condition[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
if[span class=\"CTSp\"]([/span][span class=\"CTSp\"]([/span]PLAYER_MOBSI_PRODUCTION [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] MOBSI_PotionAlchemy[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]SpecialMiskStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_SpecMi_Health_01[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
return TRUE[span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] PC_ItPo_SpecMi_Health_01_Info[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
if[span class=\"CTSp\"]([/span]Npc_HasItems[span class=\"CTSp\"]([/span]hero[span class=\"CTSp\"],[/span]ItPl_Health_Herb_01[span class=\"CTSp\"])[/span] [span class=\"CTSp\"]>[/span][span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
Npc_RemoveInvItems[span class=\"CTSp\"]([/span]hero[span class=\"CTSp\"],[/span]ItPl_Health_Herb_01[span class=\"CTSp\"],[/span][span class=\"CTN\"]1[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
CreateInvItem[span class=\"CTSp\"]([/span]hero[span class=\"CTSp\"],[/span]ItPo_SpecMi_Health_01[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
Print[span class=\"CTSp\"]([/span]PRINT_AlchemySuccess[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span]
else
[span class=\"CTSp\"]{[/span]
Print[span class=\"CTSp\"]([/span]PRINT_ProdItemsMissing[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
CreateInvItems[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]ItMi_Flask[span class=\"CTSp\"],[/span][span class=\"CTN\"]1[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
b_endproductiondialog[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]

А2
[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]instance[/span] PC_ItPo_SpecMi_Health_02[span class=\"CTSp\"]([/span]C_Info[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
nr [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]1[/span][span class=\"CTSp\"];[/span]
npc [span class=\"CTSp\"]=[/span] PC_Hero[span class=\"CTSp\"];[/span]
condition [span class=\"CTSp\"]=[/span] PC_ItPo_SpecMi_Health_02_Condition[span class=\"CTSp\"];[/span]
information [span class=\"CTSp\"]=[/span] PC_ItPo_SpecMi_Health_02_Info[span class=\"CTSp\"];[/span]
permanent [span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"];[/span]
description [span class=\"CTSp\"]=[/span] [span class=\"CTQ\"]\"Вытяжка из лечебных растений\"[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]int[/span] PC_ItPo_SpecMi_Health_02_Condition[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
if[span class=\"CTSp\"]([/span][span class=\"CTSp\"]([/span]PLAYER_MOBSI_PRODUCTION [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] MOBSI_PotionAlchemy[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]SpecialMiskStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_SpecMi_Health_02[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
return TRUE[span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] PC_ItPo_SpecMi_Health_02_Info[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
if[span class=\"CTSp\"]([/span]Npc_HasItems[span class=\"CTSp\"]([/span]hero[span class=\"CTSp\"],[/span]ItPl_Health_Herb_02[span class=\"CTSp\"])[/span] [span class=\"CTSp\"]>[/span][span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
Npc_RemoveInvItems[span class=\"CTSp\"]([/span]hero[span class=\"CTSp\"],[/span]ItPl_Health_Herb_02[span class=\"CTSp\"],[/span][span class=\"CTN\"]1[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
CreateInvItem[span class=\"CTSp\"]([/span]hero[span class=\"CTSp\"],[/span]ItPo_SpecMi_Health_02[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
Print[span class=\"CTSp\"]([/span]PRINT_AlchemySuccess[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span]
else
[span class=\"CTSp\"]{[/span]
Print[span class=\"CTSp\"]([/span]PRINT_ProdItemsMissing[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
CreateInvItems[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]ItMi_Flask[span class=\"CTSp\"],[/span][span class=\"CTN\"]1[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
b_endproductiondialog[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
Теперь практически всё, осталось только по всему файлу изменить строки, содержащие выражение:
[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span][span class=\"CTSp\"]([/span]PLAYER_MOBSI_PRODUCTION [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] MOBSI_PotionAlchemy[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]TabakStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]BoozeStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]HealthStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]ManaStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]SpecialStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span]
на
[span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span][span class=\"CTSp\"]([/span]PLAYER_MOBSI_PRODUCTION [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] MOBSI_PotionAlchemy[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]TabakStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]BoozeStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]HealthStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]ManaStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]SpecialStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]SpecialMiskStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span][/span][!-- /gsrc --]
Видим изменения. Надеюсь понятно - почему.

3) Далее открываем файл …/Story/B_Story/b_teachplayertalentalchemy –
В этом файле содержится функция
func int B_TeachPlayerTalentAlchemy(var C_Npc slf,var C_Npc oth,var int potion)
Её роль – обучение ГГ искусству алхимии и соответственно каждому из рецептов.
Теперь вставляем после строки:
B_LogEntry(TOPIC_TalentAlchemy,"Чтобы сварить зелье, мне нужна пустая мензурка и необходимые для этого зелья ингредиенты. Из этих ингредиентов, я могу приготовить зелье на столе алхимика.");
Наши строки:

[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span]potion [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] POTION_SpecMi_Health_01[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Health_01[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"];[/span]
B_LogEntry[span class=\"CTSp\"]([/span]TOPIC_TalentAlchemy[span class=\"CTSp\"],[/span][span class=\"CTQ\"]\"Ингредиенты для 'Выжимки из лечебных растений': 10 лечебных растений.\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span]potion [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] POTION_SpecMi_Health_02[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Health_02[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"];[/span]
B_LogEntry[span class=\"CTSp\"]([/span]TOPIC_TalentAlchemy[span class=\"CTSp\"],[/span][span class=\"CTQ\"]\"Ингредиенты для 'Выжимки из лечебных трав': 10 лечебных растений.\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span][/span][!-- /gsrc --]
На этом всё.

4) Далее открываем файл …/Story/B_Story/b_getlearncosttalent.d –
В этом файле содержится функция
func int B_GetLearnCostTalent(var C_Npc oth,var int talent,var int skill)
Её роль – определение очков обучения, которые будут потрачены на обучение какому-либо навыку всех талантов ГГ, как то рецепты алхимии, кузнечного и охотничьего дела и т.д.
Ищем строки:

[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]else[/span] [span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span]skill [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] POTION_MegaDrink[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
kosten [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]2[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
И после них вставляем следующее, предварительно удалив точку с запятой. Получаем следующее:
[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]else[/span] [span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span]skill [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] POTION_MegaDrink[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
kosten [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]2[/span][span class=\"CTN\"]0[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span]
[span class=\"CTR\"]else[/span] [span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span]skill [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] POTION_SpecMi_Health_01[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
kosten [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]2[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span]
[span class=\"CTR\"]else[/span] [span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span]skill [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] POTION_SpecMi_Health_02[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
kosten [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]2[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
Здесь kosten – кол-во очков обучения, которые ГГ потратит на изучение соответствующего рецепта.

5) Самое главное теперь прописать эти рецепты в файл …/Intern/Constants.d
Ищем строки

[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]var[/span] [span class=\"CTR\"]int[/span] player_talent_alchemy[span class=\"CTSp\"][[/span]MAX_POTION[span class=\"CTSp\"]][/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//массив размеров равным константе MAX_POTION, объявленной ниже.[/span]
[span class=\"CTR\"]const[/span] [span class=\"CTR\"]int[/span] POTION_Health_04 [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]4[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]const[/span] [span class=\"CTR\"]int[/span] MAX_POTION [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]5[/span][span class=\"CTSp\"];[/span][/span][!-- /gsrc --]
И изменяем размер массива и вставляем строки так, как показано ниже:
[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]var[/span] [span class=\"CTR\"]int[/span] player_talent_alchemy[span class=\"CTSp\"][[/span]MAX_POTION[span class=\"CTSp\"]][/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]const[/span] [span class=\"CTR\"]int[/span] POTION_Health_04 [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]4[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]const[/span] [span class=\"CTR\"]int[/span] POTION_SpecMi_Health_01 [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]5[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]const[/span] [span class=\"CTR\"]int[/span] POTION_SpecMi_Health_02 [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]6[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]const[/span] [span class=\"CTR\"]int[/span] MAX_POTION [span class=\"CTSp\"]=[/span] [span class=\"CTN\"]1[/span][span class=\"CTN\"]7[/span][span class=\"CTSp\"];[/span][/span][!-- /gsrc --]
На этом подготовительная часть закончена. Осталось только добавить обучение этим рецептам кому-то из алхимиков.

6) Возьмем, например Константино.
Открываем файл …/Story/Dialoge/dia_vlk_417_constantino.d
Ищем строки:

[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] DIA_Constantino_TEACH_Info[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
AI_Output[span class=\"CTSp\"]([/span]other[span class=\"CTSp\"],[/span]self[span class=\"CTSp\"],[/span][span class=\"CTQ\"]\"DIA_Constantino_TEACH_15_00\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//Каким рецептам ты можешь обучить меня?[/span]
[span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span][span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Health_01[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Health_02[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Health_03[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Perm_Health[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Mana_01[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Mana_02[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Perm_STR[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
AI_Output[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]other[span class=\"CTSp\"],[/span][span class=\"CTQ\"]\"DIA_Constantino_TEACH_10_01\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//Извини. Я больше ничему не могу научить тебя.[/span]
[span class=\"CTSp\"]}[/span]
[span class=\"CTR\"]else[/span]
[span class=\"CTSp\"]{[/span]
AI_Output[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]other[span class=\"CTSp\"],[/span][span class=\"CTQ\"]\"DIA_Constantino_TEACH_10_02\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//Есть несколько - выбирай.[/span]
Info_ClearChoices[span class=\"CTSp\"]([/span]DIA_Constantino_TEACH[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
Info_AddChoice[span class=\"CTSp\"]([/span]DIA_Constantino_TEACH[span class=\"CTSp\"],[/span]Dialog_Back[span class=\"CTSp\"],[/span]DIA_Constantino_Teach_BACK[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
И изменяем следующим образом (изменения замечаем сами):
[!-- gsrc --][span class=\"CT\"][span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] DIA_Constantino_TEACH_Info[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
AI_Output[span class=\"CTSp\"]([/span]other[span class=\"CTSp\"],[/span]self[span class=\"CTSp\"],[/span][span class=\"CTQ\"]\"DIA_Constantino_TEACH_15_00\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//Каким рецептам ты можешь обучить меня?[/span]
[span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span][span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Health_01[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Health_02[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Health_03[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Perm_Health[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Mana_01[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Mana_02[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_Perm_STR[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_SpecMi_Health_01[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span] &amp[span class=\"CTSp\"];[/span]&amp[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_SpecMi_Health_02[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] TRUE[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
AI_Output[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]other[span class=\"CTSp\"],[/span][span class=\"CTQ\"]\"DIA_Constantino_TEACH_10_01\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//Извини. Я больше ничему не могу научить тебя.[/span]
[span class=\"CTSp\"]}[/span]
[span class=\"CTR\"]else[/span]
[span class=\"CTSp\"]{[/span]
AI_Output[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]other[span class=\"CTSp\"],[/span][span class=\"CTQ\"]\"DIA_Constantino_TEACH_10_02\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//Есть несколько - выбирай.[/span]
Info_ClearChoices[span class=\"CTSp\"]([/span]DIA_Constantino_TEACH[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
Info_AddChoice[span class=\"CTSp\"]([/span]DIA_Constantino_TEACH[span class=\"CTSp\"],[/span]Dialog_Back[span class=\"CTSp\"],[/span]DIA_Constantino_Teach_BACK[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
И вставляем после них сразу:
[!-- gsrc --][span class=\"CT\"]
[span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_SpecMi_Health_01[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
Info_AddChoice[span class=\"CTSp\"]([/span]DIA_Constantino_TEACH[span class=\"CTSp\"],[/span]B_BuildLearnString[span class=\"CTSp\"]([/span][span class=\"CTQ\"]\"Выжимка из лечебных растений\"[/span][span class=\"CTSp\"],[/span]B_GetLearnCostTalent[span class=\"CTSp\"]([/span]other[span class=\"CTSp\"],[/span]NPC_TALENT_ALCHEMY[span class=\"CTSp\"],[/span]POTION_SpecMi_Health_01[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"],[/span]DIA_Constantino_TEACH_SpecMi_Health_01[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span]PLAYER_TALENT_ALCHEMY[span class=\"CTSp\"][[/span]POTION_SpecMi_Health_02[span class=\"CTSp\"]][/span] [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
Info_AddChoice[span class=\"CTSp\"]([/span]DIA_Constantino_TEACH[span class=\"CTSp\"],[/span]B_BuildLearnString[span class=\"CTSp\"]([/span][span class=\"CTQ\"]\"Выжимка из лечебных трав\"[/span][span class=\"CTSp\"],[/span]B_GetLearnCostTalent[span class=\"CTSp\"]([/span]other[span class=\"CTSp\"],[/span]NPC_TALENT_ALCHEMY[span class=\"CTSp\"],[/span]POTION_SpecMi_Health_02[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"],[/span]DIA_Constantino_TEACH_SpecMi_Health_02[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
Далее после строк:
[!-- gsrc --][span class=\"CT\"]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] DIA_Constantino_Teach_BACK[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
Info_ClearChoices[span class=\"CTSp\"]([/span]DIA_Constantino_TEACH[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
Прописываем следующее:
[!-- gsrc --][span class=\"CT\"]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] DIA_Constantino_TEACH_SpecMi_Health_01[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
[span class=\"CTR\"]if[/span][span class=\"CTSp\"]([/span]B_TeachPlayerTalentAlchemy[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]other[span class=\"CTSp\"],[/span]POTION_SpecMi_Health_01[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
AI_Output[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]other[span class=\"CTSp\"],[/span][span class=\"CTQ\"]\"DIA_Constantino_TEACH_SpecMi_Health01_10_00\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]//Ингредиенты для \"Выжимки из лечебных растений\" - 10 лечебных растений.[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
Info_ClearChoices[span class=\"CTSp\"]([/span]DIA_Constantino_TEACH[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[span class=\"CTR\"]func[/span] [span class=\"CTR\"]void[/span] DIA_Constantino_TEACH_SpecMi_Health_02[span class=\"CTSp\"]([/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
if[span class=\"CTSp\"]([/span]B_TeachPlayerTalentAlchemy[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]other[span class=\"CTSp\"],[/span]POTION_SpecMi_Health_02[span class=\"CTSp\"])[/span][span class=\"CTSp\"])[/span]
[span class=\"CTSp\"]{[/span]
AI_Output[span class=\"CTSp\"]([/span]self[span class=\"CTSp\"],[/span]other[span class=\"CTSp\"],[/span][span class=\"CTQ\"]\"DIA_Constantino_TEACH_SpecMi_Health02_10_00\"[/span][span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span] [span class=\"CTCom\"]////Ингредиенты для \"Выжимки из лечебных трав\" - 10 лечебных трав.[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
Info_ClearChoices[span class=\"CTSp\"]([/span]DIA_Constantino_TEACH[span class=\"CTSp\"])[/span][span class=\"CTSp\"];[/span]
[span class=\"CTSp\"]}[/span][span class=\"CTSp\"];[/span]
[/span][!-- /gsrc --]
7) Теперь самое главное – не компилируем наш изменённый проект, а сохраняем все изменения и закрываем его.
Затем вновь запускаем GS3.14 и открываем наш проект. После этого компилируем.
С чем это связано? Просто если компилировать сразу, то вы наткнётесь на ошибку
«Неопределённый идентификатор POTION_SPECMI_HEALTH_01» в файле dia_vlk_417_constantino.d
Чем это объясняется. В моём понимании – ответ таков:
В момент открытия проекта идет анализ в том числе файла Constants.d.
Можно компилировать и сразу, но тогда нужно сделать следующую замену:
PLAYER_TALENT_ALCHEMY[POTION_SpecMi_Health_01] на
PLAYER_TALENT_ALCHEMY[15],
а PLAYER_TALENT_ALCHEMY[POTION_SpecMi_Health_02]
На PLAYER_TALENT_ALCHEMY[16]
В этом случае компиляция проходит, но работоспособность мной в этом случае не была проверена.
 

. . . .Pr0gр@мmеR. . . .

Ополченец
Регистрация
15 Июл 2007
Сообщения
52
Репутация
0
Кто-нибудь может рассписать логику написания диалогов?
 
Сверху Снизу