Готика 2: Другая история Gothic II: Other Story - Описание мода
  • 8.189
  • 50
Готика 2: Другая история / Other Story - это глобальная модификация для игры «Готика 2: Ночь Ворона». Её цель - сделать игру более нелинейной, с большим количеством вариантов выбора и...
Новости Старт 6го сезона Grim League
  • 1.944
  • 1
4 мая в 18-00 стартует шестой сезон Community лиги по одной из лучших игр в жанре arpg Grim Dawn. Сезон представляет собой глобальную модификацию игры, включающую в себя расширение мира, изменение...
Новости Дата релиза Baldur's Gate III
  • 21.146
  • 1
Наконец-то дождались - "Baldur's Gate III" покидает ранний доступ, и в августе 2023 выходит в полноценный релиз, о чём стало известно на церемонии "The Game Awards 2022". С момента выхода игры в...
Новости Итоги года от The Game Awards 2022
  • 14.780
  • 0
Вчера прошла ежегодная церемония награждения проектов в индустрии компьютерных игр и киберспорта. Самую главную награда - "Игра года" забрала игра "Elden Ring" от японских разработчиков...

В процессе Как назначить цену за повышение аттрибута?

Milaskus

Постоялец
Участник форума
Регистрация
13 Авг 2020
Сообщения
52
Реакции
70
Баллы
20
Лучшие ответы
0
#1
instance DIA_Lares_DEX1(C_Info)
{
npc = VLK_5000_Korg;
nr = 20;
condition = DIA_Lares_DEX1_Condition;
information = DIA_Lares_DEX1_Info;
permanent = FALSE;
description = "Ты можешь научить меня чему-нибудь?";
};


func int DIA_Lares_DEX1_Condition()
{
return TRUE;
};

func void DIA_Lares_DEX1_Info()
{
AI_Output(other,self,"DIA_Lares_DEX_15_00"); //Ты можешь научить меня чему-нибудь?
AI_Output(self,other,"DIA_Addon_Lares_DEX_Add_09_01"); //Конечно. Я могу помочь тебе стать более сильным и ловким.
Lares_TeachDEX = TRUE;
Log_CreateTopic(TOPIC_CityTeacher,LOG_NOTE);
B_LogEntry(TOPIC_CityTeacher,"Ларес может помочь мне повысить мою ловкость и силу.");
};


var int Lares_MerkeDEX1;
var int Lares_MerkeSTR1;


instance DIA_Lares_TEACH1(C_Info)
{
npc = VLK_5000_Korg;
nr = 20;
condition = DIA_Lares_TEACH1_Condition;
information = DIA_Lares_TEACH1_Info;
permanent = TRUE;
description = "Тренируй меня.";
};
func int DIA_Lares_TEACH1_Condition()
{
if (Npc_KnowsInfo(other,DIA_Lares_DEX1))
{
return TRUE;
};
};
func void DIA_Lares_TEACH1_Info()
{
AI_Output(other,self,"DIA_Lares_TEACH1_15_00"); //Вот твои 100 золотых!
if(B_GiveInvItems(other,self,ItMi_Gold,100))
{
AI_StopProcessInfos(self);
}
else
{
AI_Output(self,other,"DIA_Lares_TEACH1_09_09"); //У тебя проблемы со счетом? Я не вижу 100 золотых монет.
AI_StopProcessInfos(self);
};
};


Подскажите пожалуйста.


Перепробовал (B_GiveInvItems(other,self,ItMi_Gold,100), ItMi_Gold,100 добавлял в разных местах.
1) у лареса, там где он качает гг
2) B_BlessAttribute
3) B_GetLearnCostAttribute


в 3 пункте самое логичное добавить, цену к множителю скил поинтов. Но фиаско всюду. За 3 часа так и не нашел.
 
Последнее редактирование:

Haart

Герой
Команда форума
Редактор раздела
Модостроитель
Почётный пользователь
 
Участник форума
Регистрация
3 Дек 2012
Сообщения
6.250
Реакции
3.321
Баллы
676
Лучшие ответы
396
#2
@Milaskus, там где нпц качает характеристику, естественно. В самой функции диалога. Тебе скорее всего нужно создать отдельную функцию, где ты забираешь нужное количество денег. Ну и предварительно проверяешь, есть ли у гг эти деньги, и если нет - то не учишь.
 
Автор
Автор
Milaskus

Milaskus

Постоялец
Участник форума
Регистрация
13 Авг 2020
Сообщения
52
Реакции
70
Баллы
20
Лучшие ответы
0
#3
instance DIA_Lares_DEX1(C_Info)
{
npc = VLK_5000_Korg;
nr = 20;
condition = DIA_Lares_DEX1_Condition;
information = DIA_Lares_DEX1_Info;
permanent = FALSE;
description = "Ты можешь научить меня чему-нибудь?";
};


func int DIA_Lares_DEX1_Condition()
{
return TRUE;
};

func void DIA_Lares_DEX1_Info()
{
AI_Output(other,self,"DIA_Lares_DEX_15_00"); //Ты можешь научить меня чему-нибудь?
AI_Output(self,other,"DIA_Addon_Lares_DEX_Add_09_01"); //Конечно. Я могу помочь тебе стать более сильным и ловким.
Lares_TeachDEX = TRUE;
Log_CreateTopic(TOPIC_CityTeacher,LOG_NOTE);
B_LogEntry(TOPIC_CityTeacher,"Ларес может помочь мне повысить мою ловкость и силу.");
};


var int Lares_MerkeDEX1;
var int Lares_MerkeSTR1;


instance DIA_Lares_TEACH1(C_Info)
{
npc = VLK_5000_Korg;
nr = 20;
condition = DIA_Lares_TEACH1_Condition;
information = DIA_Lares_TEACH1_Info;
permanent = TRUE;
description = "Тренируй меня.";
};
func int DIA_Lares_TEACH1_Condition()
{
if (Npc_KnowsInfo(other,DIA_Lares_DEX1))
{
return TRUE;
};
};
func void DIA_Lares_TEACH1_Info()
{
AI_Output(other,self,"DIA_Lares_TEACH1_15_00"); //Вот твои 100 золотых!
if(B_GiveInvItems(other,self,ItMi_Gold,100))
{
Lares_MerkeDEX = other.attribute[ATR_DEXTERITY];
Lares_MerkeSTR = other.attribute[ATR_STRENGTH];
Info_ClearChoices(DIA_Lares_TEACH1);
Info_AddChoice(DIA_Lares_TEACH1,Dialog_Back,DIA_Lares_TEACH_BACK);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnDEX1,B_GetLearnCostAttribute(other,ATR_DEXTERITY)),DIA_Lares_TEACH1_1);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnDEX5,B_GetLearnCostAttribute(other,ATR_DEXTERITY) * 5),DIA_Lares_TEACH1_5);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnSTR1,B_GetLearnCostAttribute(other,ATR_STRENGTH)),DIA_Lares_TEACHSTR1_1);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnSTR5,B_GetLearnCostAttribute(other,ATR_STRENGTH) * 5),DIA_Lares_TEACHSTR1_5);
}
else
{
AI_Output(self,other,"DIA_Lares_TEACH1_09_09"); //У тебя проблемы со счетом? Я не вижу 100 золотых монет.
AI_StopProcessInfos(self);

};
};
func void DIA_Lares_TEACH1_1()
{
B_TeachAttributePoints(self,other,ATR_DEXTERITY,1,T_MED);
Info_ClearChoices(DIA_Lares_TEACH);
Info_AddChoice(DIA_Lares_TEACH1,Dialog_Back,DIA_Lares_TEACH_BACK);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnDEX1,B_GetLearnCostAttribute(other,ATR_DEXTERITY)),DIA_Lares_TEACH1_1);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnDEX5,B_GetLearnCostAttribute(other,ATR_DEXTERITY) * 5),DIA_Lares_TEACH1_5);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnSTR1,B_GetLearnCostAttribute(other,ATR_STRENGTH)),DIA_Lares_TEACHSTR1_1);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnSTR5,B_GetLearnCostAttribute(other,ATR_STRENGTH) * 5),DIA_Lares_TEACHSTR1_5);
AI_StopProcessInfos(self);
};

func void DIA_Lares_TEACH1_5()
{
B_TeachAttributePoints(self,other,ATR_DEXTERITY,5,T_MED);
Info_ClearChoices(DIA_Lares_TEACH);
Info_AddChoice(DIA_Lares_TEACH1,Dialog_Back,DIA_Lares_TEACH_BACK);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnDEX1,B_GetLearnCostAttribute(other,ATR_DEXTERITY)),DIA_Lares_TEACH1_1);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnDEX5,B_GetLearnCostAttribute(other,ATR_DEXTERITY) * 5),DIA_Lares_TEACH1_5);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnSTR1,B_GetLearnCostAttribute(other,ATR_STRENGTH)),DIA_Lares_TEACHSTR1_1);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnSTR5,B_GetLearnCostAttribute(other,ATR_STRENGTH) * 5),DIA_Lares_TEACHSTR1_5);
AI_StopProcessInfos(self);
};

func void DIA_Lares_TEACHSTR1_1()
{
B_TeachAttributePoints(self,other,ATR_STRENGTH,1,T_LOW);
Info_ClearChoices(DIA_Lares_TEACH);
Info_AddChoice(DIA_Lares_TEACH1,Dialog_Back,DIA_Lares_TEACH_BACK);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnDEX1,B_GetLearnCostAttribute(other,ATR_DEXTERITY)),DIA_Lares_TEACH1_1);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnDEX5,B_GetLearnCostAttribute(other,ATR_DEXTERITY) * 5),DIA_Lares_TEACH1_5);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnSTR1,B_GetLearnCostAttribute(other,ATR_STRENGTH)),DIA_Lares_TEACHSTR1_1);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnSTR5,B_GetLearnCostAttribute(other,ATR_STRENGTH) * 5),DIA_Lares_TEACHSTR1_5);
AI_StopProcessInfos(self);
};

func void DIA_Lares_TEACHSTR1_5()
{
B_TeachAttributePoints(self,other,ATR_STRENGTH,5,T_LOW);
Info_ClearChoices(DIA_Lares_TEACH1);
Info_AddChoice(DIA_Lares_TEACH1,Dialog_Back,DIA_Lares_TEACH_BACK);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnDEX1,B_GetLearnCostAttribute(other,ATR_DEXTERITY)),DIA_Lares_TEACH1_1);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnDEX5,B_GetLearnCostAttribute(other,ATR_DEXTERITY) * 5),DIA_Lares_TEACH1_5);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnSTR1,B_GetLearnCostAttribute(other,ATR_STRENGTH)),DIA_Lares_TEACHSTR1_1);
Info_AddChoice(DIA_Lares_TEACH1,B_BuildLearnString(PRINT_LearnSTR5,B_GetLearnCostAttribute(other,ATR_STRENGTH) * 5),DIA_Lares_TEACHSTR1_5);
AI_StopProcessInfos(self);
};

У меня получилось, сделать оплату за обучение. Посмотрите пожалуйста, можно ли как то её оптимизировать?

И по поводу увеличения платы. Я могу сделать на каждого персонажа по капу, сразу сумму. Допустим Ларес учит до 50-60 ловкости цена 500. Можно ли сделать в диа переменную return, item_gold,100 *2 через Attribut =>30 И возвращать цену 1000?

Ключевое выделил. Вопрос решил. Спасибо за подсказку.
 
Последнее редактирование:
Автор
Автор
Milaskus

Milaskus

Постоялец
Участник форума
Регистрация
13 Авг 2020
Сообщения
52
Реакции
70
Баллы
20
Лучшие ответы
0
#4
var int Addon_Cavalorn_Merke_Bow;
var int Addon_Cavalorn_Merke_1h;

instance DIA_Addon_Cavalorn_TEACH(C_Info)
{
npc = BAU_4300_Addon_Cavalorn;
nr = 8;
condition = DIA_Addon_Cavalorn_TEACH_Condition;
information = DIA_Addon_Cavalorn_TEACH_Info;
permanent = TRUE;
description = "Я хочу обучиться тому, что ты умеешь.";
};


func int DIA_Addon_Cavalorn_TEACH_Condition()
{
if(Cavalorn_Addon_TeachPlayer == TRUE)
{
return TRUE;
};
};

func void DIA_Addon_Cavalorn_TEACH_Choices()
{
Info_ClearChoices(DIA_Addon_Cavalorn_TEACH);
Info_AddChoice(DIA_Addon_Cavalorn_TEACH,Dialog_Back,DIA_Addon_Cavalorn_Teach_Back);
Info_AddChoice(DIA_Addon_Cavalorn_TEACH,B_BuildLearnString(PRINT_LearnBow1,B_GetLearnCostTalent(other,NPC_TALENT_BOW,1)),DIA_Addon_Cavalorn_Teach_Bow_1);
Info_AddChoice(DIA_Addon_Cavalorn_TEACH,B_BuildLearnString(PRINT_LearnBow5,B_GetLearnCostTalent(other,NPC_TALENT_BOW,1) * 5),DIA_Addon_Cavalorn_Teach_Bow_5);
Info_AddChoice(DIA_Addon_Cavalorn_TEACH,B_BuildLearnString(PRINT_Learn1h1,B_GetLearnCostTalent(other,NPC_TALENT_1H,1)),DIA_Addon_Cavalorn_Teach_1H_1);
Info_AddChoice(DIA_Addon_Cavalorn_TEACH,B_BuildLearnString(PRINT_Learn1h5,B_GetLearnCostTalent(other,NPC_TALENT_1H,1) * 5),DIA_Addon_Cavalorn_Teach_1H_5);
if(Npc_GetTalentSkill(other,NPC_TALENT_SNEAK) == FALSE)
{
Info_AddChoice(DIA_Addon_Cavalorn_TEACH,B_BuildLearnString("Красться",B_GetLearnCostTalent(other,NPC_TALENT_SNEAK,1)),DIA_Addon_Cavalorn_Teach_Sneak);
};
};

func void DIA_Addon_Cavalorn_TEACH_Info()
{
AI_Output(other,self,"DIA_Addon_Cavalorn_TEACH_15_00"); //Я хочу обучиться тому, что ты умеешь.
AI_Output(self,other,"DIA_Addon_Cavalorn_TEACH_08_01"); //Хорошо. Что именно тебя интересует?
Addon_Cavalorn_Merke_Bow = other.HitChance[NPC_TALENT_BOW];
Addon_Cavalorn_Merke_1h = other.HitChance[NPC_TALENT_1H];
DIA_Addon_Cavalorn_TEACH_Choices();
};

func void DIA_Addon_Cavalorn_Teach_Sneak()
{
AI_Output(other,self,"DIA_Addon_Cavalorn_Teach_Sneak_8_00"); //Вот твои 1000 золотых!
if(B_GiveInvItems(other,self,ItMi_Gold,1000))
{
B_TeachThiefTalent(self,other,NPC_TALENT_SNEAK);
AI_Output(self,other,"DIA_Addon_Cavalorn_Teach_Sneak_08_01"); //С мягкими подошвами тебе будет легче незаметно подобраться к противнику.
DIA_Addon_Cavalorn_TEACH_Choices();
}
else
{
AI_Output(self,other,"DIA_Addon_Cavalorn_Teach_Sneak_09_09"); //У тебя проблемы со счетом? Я не вижу 1000 золотых монет.
AI_StopProcessInfos(self);
};
};

func void DIA_Addon_Cavalorn_Teach_Bow_1()
{
AI_Output(other,self,"DIA_Addon_Cavalorn_Teach_Bow_1_15_00"); //Вот твои 100 золотых!
if(B_GiveInvItems(other,self,ItMi_Gold,100))
{
B_TeachFightTalentPercent(self,other,NPC_TALENT_BOW,1,90);
DIA_Addon_Cavalorn_TEACH_Choices();
}
else
{
AI_Output(self,other,"DIA_Addon_Cavalorn_Teach_Bow_1_09_09"); //У тебя проблемы со счетом? Я не вижу 100 золотых монет.
AI_StopProcessInfos(self);
};
};

func void DIA_Addon_Cavalorn_Teach_Bow_5()
{
AI_Output(other,self,"DIA_Addon_Cavalorn_Teach_Bow_5_15_00"); //Вот твои 500 золотых!
if(B_GiveInvItems(other,self,ItMi_Gold,500))
{
B_TeachFightTalentPercent(self,other,NPC_TALENT_BOW,5,90);
DIA_Addon_Cavalorn_TEACH_Choices();
}
else
{
AI_Output(self,other,"DIA_Addon_Cavalorn_Teach_Bow_5_09_09"); //У тебя проблемы со счетом? Я не вижу 500 золотых монет.
AI_StopProcessInfos(self);
};
};

func void DIA_Addon_Cavalorn_Teach_1H_1()
{
AI_Output(other,self,"DIA_Addon_Cavalorn_Teach_1H_1_15_00"); //Вот твои 50 золотых!
if(B_GiveInvItems(other,self,ItMi_Gold,50))
{
B_TeachFightTalentPercent(self,other,NPC_TALENT_1H,1,30);
DIA_Addon_Cavalorn_TEACH_Choices();
}
else
{
AI_Output(self,other,"DIA_Addon_Cavalorn_Teach_1H_1_09_09"); //У тебя проблемы со счетом? Я не вижу 50 золотых монет.
AI_StopProcessInfos(self);
};
};

func void DIA_Addon_Cavalorn_Teach_1H_5()
{
AI_Output(other,self,"DIA_Addon_Cavalorn_Teach_1H_5_15_00"); //Вот твои 200 золотых!
if(B_GiveInvItems(other,self,ItMi_Gold,200))
{
B_TeachFightTalentPercent(self,other,NPC_TALENT_1H,5,30);
DIA_Addon_Cavalorn_TEACH_Choices();
}
else
{
AI_Output(self,other,"DIA_Addon_Cavalorn_Teach_1H_5_09_09"); //У тебя проблемы со счетом? Я не вижу 200 золотых монет.
AI_StopProcessInfos(self);
};
};


Как сделать проверку на лп? Сейчас забирает деньги в любом случае, но прокачка лишь в наличии лп. Подскажите название кода пожалуйста, не нашел. Сумму, выведу через константу.
 
Последнее редактирование:
Сверху Снизу