Новости Анонс The Elder Scrolls VI уже этим летом?
  • 288
  • 1
По данным инсайдера eXtas1s, Bethesda может впервые показать The Elder Scrolls VI летом 2025 года Обсуждается возможность анонса игры на одной из крупных презентаций Xbox - в июне или августе...
Новости Of Ash and Steel: разработка в цифрах
  • 288
  • 0
На днях авторы игры Of Ash and Steel поблагодарили игроков за поддержку и положительные отклики, а также поделились цифрами во время разработки. В игре будут: 300+ квестов; 30 000+ строк...
Новости Clair Obscur: Expedition 33 – новая ролевая игра, ломающая стереотипы
  • 470
  • 1
Clair Obscur: Expedition 33 – уникальная ролевая игра, которая могла появиться только у инди-разработчика Раз в год Художница просыпается и рисует на Монолите. Выводит свое проклятое число. И...
Новости Состоялся релиз The Elder Scrolls IV: Oblivion Remastered
  • 1.401
  • 18
22 апреля 2025 года состоялся релиз игры The Elder Scrolls IV: Oblivion Remastered. Это ремастер игры 2006 года, разработанный студиями Virtuos и Bethesda Game Studios, изданный Bethesda...

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

Milaskus

Постоялец
Участник форума
Регистрация
13 Авг 2020
Сообщения
67
Реакции
79
Баллы
30
Лучшие ответы
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.447
Реакции
3.607
Баллы
741
Лучшие ответы
405
#2
@Milaskus, там где нпц качает характеристику, естественно. В самой функции диалога. Тебе скорее всего нужно создать отдельную функцию, где ты забираешь нужное количество денег. Ну и предварительно проверяешь, есть ли у гг эти деньги, и если нет - то не учишь.
 
Автор
Автор
Milaskus

Milaskus

Постоялец
Участник форума
Регистрация
13 Авг 2020
Сообщения
67
Реакции
79
Баллы
30
Лучшие ответы
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
Сообщения
67
Реакции
79
Баллы
30
Лучшие ответы
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);
};
};


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