Zwiększanie maksymalnej siły 4003 10

O temacie

Autor muttley

Zaczęty 20.06.2009 roku

Wyświetleń 4003

Odpowiedzi 10

muttley

muttley

Użytkownicy
posty567
Propsy381
  • Użytkownicy

muttley

Zwiększanie maksymalnej siły
2009-06-20, 22:53(Ostatnia zmiana: 2009-06-23, 16:29)
Witam,

mam pytanie jak zrobić aby uczący nas npc mógł nas uczyć np. do 300 ?

Skrypt npc'a:

Cytuj
// ********************************
//             EXIT
// ********************************

instance DIA_Ralix_EXIT (C_INFO)
{
   npc         = Non_3912_Ralix;
   nr         = 999;
   condition   = DIA_Ralix_EXIT_Condition;
   information   = DIA_Ralix_EXIT_Info;
   permanent   = 1;
   description = DIALOG_ENDE;
};                 

FUNC int DIA_Ralix_EXIT_Condition()
{
   return 1;
};

FUNC VOID  DIA_Ralix_EXIT_Info()
{
   AI_StopProcessInfos   (self);
};

// ********************************
//             First
// ********************************

instance DIA_Ralix_First (C_INFO)
{
   npc         = Non_3912_Ralix;
   nr         = 1;
   condition   = DIA_Ralix_First_Condition;
   information   = DIA_Ralix_First_Info;
   permanent   = 0;
   important    = 1;
};                 

FUNC int DIA_Ralix_First_Condition()
{
   if    ( Npc_KnowsInfo(hero,DIA_Nermal_Zadanie))
   {
      return 1;
   };
};

FUNC VOID  DIA_Ralix_First_Info()
{
   AI_Output (other, self,"DIA_Ralix_First_15_00"); //O co chodzi?
   AI_Output (self, other,"DIA_Ralix_First_04_00"); //Dobrze się spisałeś. To zadanie nie było proste.
   AI_Output (self, other,"DIA_Ralix_First_04_01"); //Myślę, że mogę zacząć Cię szkolić.
};

//////////////////////////
// Teacher
//////////////////////////
INSTANCE Info_Ralix_Teach(C_INFO)
{
   npc         = Non_3912_Ralix;
   nr         = 100;
   condition   = Info_Ralix_Teach_Condition;
   information   = Info_Ralix_Teach_Info;
   permanent   = 1;
   description = "Możesz mnie czegoś nauczyć?";
};                 

FUNC INT Info_Ralix_Teach_Condition()
{
   if ( Npc_KnowsInfo(hero,DIA_Ralix_First) )
   {
      return 1;
   };
};

FUNC VOID Info_Ralix_Teach_Info()
{   
   if   (log_Ralixtrain == FALSE)
   {   
      Log_CreateTopic (GE_TeacherOZ,LOG_NOTE);
      B_LogEntry      (GE_TeacherOZ,   "Ralix może mi pomóc w zwiększeniu mojej zwinności i siły.");
      log_Ralixtrain   = TRUE;
   };
   AI_Output(hero,self,"Info_Ralix_Teach_15_00"); //Możesz mnie czegoś nauczyć?
   AI_Output(self,hero,"Info_Ralix_Teach_11_01"); //Tak. Mogę ci pokazać, jak zwiększyć swoją siłę lub zręczność.
   
   Info_ClearChoices   (Info_Ralix_Teach);
   Info_AddChoice      (Info_Ralix_Teach,DIALOG_BACK                           ,Info_Ralix_Teach_BACK);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnStrength_5,5*LPCOST_ATTRIBUTE_STR
ENGTH,0)         ,Info_Ralix_Teach_STR_5);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnStrength_1,LPCOST_ATTRIBUTE_STREN
GTH,0)         ,Info_Ralix_Teach_STR_1);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnDexterity_5,5*LPCOST_ATTRIBUTE_DE
XTERITY,0),Info_Ralix_Teach_DEX_5);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnDexterity_1,LPCOST_ATTRIBUTE_DEXT
ERITY,0),Info_Ralix_Teach_DEX_1);
   
   
};

func void Info_Ralix_Teach_BACK()
{
   Info_ClearChoices   (Info_Ralix_Teach);
};

func void Info_Ralix_Teach_STR_1()
{
   B_BuyAttributePoints (hero, ATR_STRENGTH, LPCOST_ATTRIBUTE_STRENGTH);
   Info_ClearChoices   (Info_Ralix_Teach);
   Info_AddChoice      (Info_Ralix_Teach,DIALOG_BACK                           ,Info_Ralix_Teach_BACK);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnStrength_5 ,5*LPCOST_ATTRIBUTE_STRENGTH,0)         ,Info_Ralix_Teach_STR_5);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnStrength_1,LPCOST_ATTRIBUTE_STREN
GTH,0)         ,Info_Ralix_Teach_STR_1);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnDexterity_5,5*LPCOST_ATTRIBUTE_DE
XTERITY,0),Info_Ralix_Teach_DEX_5);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnDexterity_1,LPCOST_ATTRIBUTE_DEXT
ERITY,0),Info_Ralix_Teach_DEX_1);
};

func void Info_Ralix_Teach_STR_5()
{
   B_BuyAttributePoints (hero, ATR_STRENGTH, 5*LPCOST_ATTRIBUTE_STRENGTH);
   Info_ClearChoices   (Info_Ralix_Teach);
   Info_AddChoice      (Info_Ralix_Teach,DIALOG_BACK                           ,Info_Ralix_Teach_BACK);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnStrength_5,5*LPCOST_ATTRIBUTE_STR
ENGTH,0)         ,Info_Ralix_Teach_STR_5);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnStrength_1,LPCOST_ATTRIBUTE_STREN
GTH,0)         ,Info_Ralix_Teach_STR_1);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnDexterity_5,5*LPCOST_ATTRIBUTE_DE
XTERITY,0),Info_Ralix_Teach_DEX_5);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnDexterity_1,LPCOST_ATTRIBUTE_DEXT
ERITY,0),Info_Ralix_Teach_DEX_1);
};

func void Info_Ralix_Teach_DEX_1()
{
   B_BuyAttributePoints (hero, ATR_DEXTERITY, LPCOST_ATTRIBUTE_DEXTERITY);
   Info_ClearChoices   (Info_Ralix_Teach);
   Info_AddChoice      (Info_Ralix_Teach,DIALOG_BACK                           ,Info_Ralix_Teach_BACK);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnStrength_5,5*LPCOST_ATTRIBUTE_STR
ENGTH,0)         ,Info_Ralix_Teach_STR_5);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnStrength_1,LPCOST_ATTRIBUTE_STREN
GTH,0)         ,Info_Ralix_Teach_STR_1);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnDexterity_5,5*LPCOST_ATTRIBUTE_DE
XTERITY,0),Info_Ralix_Teach_DEX_5);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnDexterity_1,LPCOST_ATTRIBUTE_DEXT
ERITY,0),Info_Ralix_Teach_DEX_1);
};

func void Info_Ralix_Teach_DEX_5()
{
   B_BuyAttributePoints (hero, ATR_DEXTERITY, 5*LPCOST_ATTRIBUTE_DEXTERITY);
   Info_ClearChoices   (Info_Ralix_Teach);
   Info_AddChoice      (Info_Ralix_Teach,DIALOG_BACK                           ,Info_Ralix_Teach_BACK);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnStrength_5,5*LPCOST_ATTRIBUTE_STR
ENGTH,0)         ,Info_Ralix_Teach_STR_5);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnStrength_1,LPCOST_ATTRIBUTE_STREN
GTH,0)         ,Info_Ralix_Teach_STR_1);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnDexterity_5,5*LPCOST_ATTRIBUTE_DE
XTERITY,0),Info_Ralix_Teach_DEX_5);
   Info_AddChoice      (Info_Ralix_Teach,B_BuildLearnString(NAME_LearnDexterity_1,LPCOST_ATTRIBUTE_DEXT
ERITY,0),Info_Ralix_Teach_DEX_1);
};

Po części skopiowane z Diego (usunąłem te teksty "jesteś dużo silniejszy").

Poprawiłem wyświetlanie,
Adanos
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Jak się nigdzie nie pomyliłem, to powinno być ok:
FUNC INT Info_Ralix_Teach_Condition()
{
if ( Npc_KnowsInfo(hero,DIA_Ralix_First) ) && (hero.attribute[ATR_STRENGTH] < 300)
{
return 1;
};
};

muttley

muttley

Użytkownicy
posty567
Propsy381
  • Użytkownicy
Nie pomogło :D

FUNC INT Info_Ralix_Teach_Condition()
{
if ( Npc_KnowsInfo(hero,DIA_Ralix_First) && (hero.attribute[ATR_STRENGTH] < 300) )
{
return 1;
};
};

Dobrze wklejone ?
Jak rozumiem to miało być w części sprawdzającej czy dany dialog "ma zajść"?

Jeśli źle mnie zrozumiałeś (to się często zdarza, bo mam zwyczaj konstruować niejasne zdania) to powtórzę: chodzi mi o to, żeby Ralix uczył nas do 300 siły ;p
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
W jakim sensie nie pomogło? Wywala jakiś błąd czy po prostu nie działa?

muttley

muttley

Użytkownicy
posty567
Propsy381
  • Użytkownicy
Nie działa, ustawiłem sobie siłę na 100, podszedłem do NPC, "naucz mnie", dodałem sobie siły na 5 a ten odparł, że "umiem już wszystko"
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Czyli masz 100 siły i chcesz się więcej nauczyć, tak? A warunek masz, że do 300, tak?

muttley

muttley

Użytkownicy
posty567
Propsy381
  • Użytkownicy
1. Tak
2. Tak (warunek "zajścia" dialogu tak?).
 

Zysk

Zysk

Użytkownicy
posty606
Propsy451
  • Użytkownicy
znajdź funkcję B_BuyAttributePoints i ją popraw, tak aby ci pasowało.
 

muttley

muttley

Użytkownicy
posty567
Propsy381
  • Użytkownicy

muttley

Zwiększanie maksymalnej siły
#8 2009-06-23, 16:55(Ostatnia zmiana: 2009-06-23, 16:56)
Działa :>

Mam tylko jeszcze jedno pytanie - da się określić maksymalną siłę zmienną ?

Bo chciałbym aby 1 NPC mógł uczyć do 300 inny do 200 itd.

Chyba trzeba dać zmienną na tą linijkę ?
if (Typ_Atr + AtrPlus <= 300)
Czyli 300 jak zmienną
 

Zysk

Zysk

Użytkownicy
posty606
Propsy451
  • Użytkownicy
no raczej, dodaj nową funkcję, taką samą (np. B_BuyAttributePointsLimit), tylko z dodatkowym argumentem var int limit
 

muttley

muttley

Użytkownicy
posty567
Propsy381
  • Użytkownicy
Dobra, dzięki za pomoc.
Temacik do zamknięcia.

Ok, zamknąłem,
Adanos
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry