Решил выложить мой мини-тутор. "Тутор по изменению диалога 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] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]TabakStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]BoozeStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]HealthStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]ManaStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[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=\"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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] [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] &[span class=\"CTSp\"];[/span]&[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] [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] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]TabakStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]BoozeStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]HealthStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]ManaStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]TabakStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]BoozeStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]HealthStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[span class=\"CTSp\"];[/span] [span class=\"CTSp\"]([/span]ManaStart [span class=\"CTSp\"]=[/span][span class=\"CTSp\"]=[/span] FALSE[span class=\"CTSp\"])[/span] &[span class=\"CTSp\"];[/span]&[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=\"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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] &[span class=\"CTSp\"];[/span]&[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] [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] [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]
В этом случае компиляция проходит, но работоспособность мной в этом случае не была проверена.