Новости Анонсирован Atomic Heart II
Новости Анонсирован ремастер Final Fantasy Tactics
  • 242
  • 1
Культовая пошаговая тактическая RPG от Square Enix получит второе дыхание. На проходящей выставке State of Play, где анонсируются игры для Play Station, состоялся анонс ремастера Final Fantasy...
Новости Моддеры Oblivion Remastered нашли способ внедрения абсолютно любых скриптов
  • 294
  • 1
Сообщество моддинга Oblivion Remastered (ORM) переживает настоящий расцвет. После долгих месяцев работы, энтузиасты научили игру работать с мощным скриптовым языком Lua, открыв перед создателями...
Новости Tainted Grail: The Fall of Avalon — Польская «Skyrim» теперь официально
  • 1.868
  • 26
23 мая 2025 после двух лет успешного раннего доступа в Steam польская студия Questline наконец представила свою фэнтези-RPG в полной версии. Tainted Grail: The Fall of Avalon доступна на ПК...

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

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.453
Реакции
3.614
Баллы
741
Лучшие ответы
407
#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);
};
};


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