Pytanie: Jak zrobić nauczyciela? 5811 13

O temacie

Autor diegomez

Zaczęty 7.11.2011 roku

Wyświetleń 5811

Odpowiedzi 13

diegomez

diegomez

Labirynt
posty452
Propsy63
  • Labirynt

diegomez
Labirynt

Pytanie: Jak zrobić nauczyciela?
2011-11-07, 20:17(Ostatnia zmiana: 2011-11-08, 22:41)
Nie znalazłem nigdzie tutoriala z nauczycielem do G2NK.
Mógłby ktoś zrobić coś takiego ??
Dla nauczycieli, którzy będą uczyć:
-1h, 2h, Łuk, kusza (z pokazaniem jak zrobić żeby uczył do np 30%, 60%, 90% itd.)
-siła, zręczność, mana i życie
-inne (np. akrobatyka, otwieranie zamków itd).

Robię właśnie nauczycieli i mam z nimi problemy.
Poza tym nie ma tutków na nauczycieli do G2NK.
No i chyba najważniejsze: Propsy się same nie rozdadzą no nie ??
 


diegomez

diegomez

Labirynt
posty452
Propsy63
  • Labirynt

diegomez
Labirynt

Pytanie: Jak zrobić nauczyciela?
#2 2011-11-07, 20:29(Ostatnia zmiana: 2011-11-07, 20:30)
Skopiuj po prostu odpowiedni dialog od innego nauczyciela...

Próbowałem.
Podejrzewam że w jakimś innym pliku trzeba ustawić że ten to nauczyciel.
Tak jak z handlarzami.
Ale nawet już gdzieś coś takiego ustawiłem i mam błędy.
Poza tym tutorial przyda się innym.

Edit: No chyba, że ty myślisz o tym żeby nawet kod dialogu innego nauczyciela się zgadzał, ale to też dubbling będzie.
 


diegomez

diegomez

Labirynt
posty452
Propsy63
  • Labirynt
O ile kojarzę nie trzeba zmieniać nic w innych plikach, to najzwyklejszy debilny dialog.
Czy w opcjach dialogowych zmieniłeś "docelowego" npc?

To może ten dialog:

// *************************************************
// TRAIN
// *************************************************
INSTANCE DIA_PC_5004_Avan_Teach(C_INFO)
{
npc = PC_5004_Avan;
nr = 2;
condition = DIA_PC_5004_Avan_Teach_Condition;
information = DIA_PC_5004_Avan_Teach_Info;
permanent = TRUE;
description = "Ucz mnie (2H)";
};                      

FUNC INT DIA_PC_5004_Avan_Teach_Condition()
{
if (PC_5004_Avan_Teach1H == TRUE)
{
return TRUE;
};
};
 
FUNC VOID DIA_PC_5004_Avan_Teach_Info() //////////////------TU POKAZUJE MI BŁĄD. "Redefined identifier". Pewnie to nie jedyny taki.////////////////////////////////////////////////////////
{

AI_Output (other,self ,"DIA_PC_5004_Avan_Teach_15_00"); //Ucz mnie


Info_ClearChoices (DIA_PC_5004_Avan_Teach);
Info_AddChoice (DIA_PC_5004_Avan_Teach, DIALOG_BACK ,DIA_PC_5004_Avan_Teach_Back);
Info_AddChoice (DIA_PC_5004_Avan_Teach, B_BuildLearnString(PRINT_Learn2h1 , B_GetLearnCostTalent(other, NPC_TALENT_2H, 1)) ,DIA_PC_5004_Avan_Teach_2H_1);
Info_AddChoice (DIA_PC_5004_Avan_Teach, B_BuildLearnString(PRINT_Learn2h5 , B_GetLearnCostTalent(other, NPC_TALENT_2H, 5)) ,DIA_PC_5004_Avan_Teach_2H_5);
};

//__________________________________________________________________
FUNC INT DIA_PC_5004_Avan_Teach_Back  ()
{
if (PC_5004_Avan_Teach1H == TRUE)
{
return TRUE;
};
};
FUNC VOID DIA_PC_5004_Avan_Teach_Back ()
{
Info_ClearChoices (DIA_PC_5004_Avan_Teach);
};

//_____________________________________________________________________

FUNC INT DIA_PC_5004_Avan_Teach_2H_1()
{
return TRUE;
};

FUNC VOID DIA_PC_5004_Avan_Teach_2H_1 ()
{
if B_TeachFightTalentPercent (self, other, NPC_TALENT_2H, 1, 75)
{
Info_ClearChoices (DIA_PC_5004_Avan_Teach);
Info_AddChoice (DIA_PC_5004_Avan_Teach, DIALOG_BACK ,DIA_PC_5004_Avan_Teach_Back);
Info_AddChoice (DIA_PC_5004_Avan_Teach, B_BuildLearnString(PRINT_Learn2h1 , B_GetLearnCostTalent(other, NPC_TALENT_2H, 1)) ,DIA_PC_5004_Avan_Teach_2H_1);
Info_AddChoice (DIA_PC_5004_Avan_Teach, B_BuildLearnString(PRINT_Learn2h5 , B_GetLearnCostTalent(other, NPC_TALENT_2H, 5)) ,DIA_PC_5004_Avan_Teach_2H_5);

};
};
//________________________________________________________________________


FUNC INT DIA_PC_5004_Avan_Teach_2H_5()
{
return TRUE;

};
FUNC VOID DIA_PC_5004_Avan_Teach_2H_5 ()
{
if B_TeachFightTalentPercent (self, other, NPC_TALENT_2H, 5, 75)
{
Info_ClearChoices (DIA_PC_5004_Avan_Teach);
Info_AddChoice (DIA_PC_5004_Avan_Teach, DIALOG_BACK ,DIA_PC_5004_Avan_Teach_Back);
Info_AddChoice (DIA_PC_5004_Avan_Teach, B_BuildLearnString(PRINT_Learn2h1 , B_GetLearnCostTalent(other, NPC_TALENT_2H, 1)) ,DIA_PC_5004_Avan_Teach_2H_1);
Info_AddChoice (DIA_PC_5004_Avan_Teach, B_BuildLearnString(PRINT_Learn2h5 , B_GetLearnCostTalent(other, NPC_TALENT_2H, 5)) ,DIA_PC_5004_Avan_Teach_2H_5);

};
};
 


diegomez

diegomez

Labirynt
posty452
Propsy63
  • Labirynt

diegomez
Labirynt

Pytanie: Jak zrobić nauczyciela?
#6 2011-11-07, 21:18(Ostatnia zmiana: 2011-11-07, 21:20)
Musisz mieć DIA_PC_5004_Avan_Teach_Info już gdzie indziej.

No w całej grze jest tylko jeden taki dialog.
A DIA_PC_5004_Avan_Teach_Info w tym dialogu występuje dwa razy.

Cytuj


information     = DIA_PC_5004_Avan_Teach_Info;
permanent       = TRUE;
description = Ucz mnie (2H);
};                      

FUNC INT DIA_PC_5004_Avan_Teach_Condition()
{
        if (PC_5004_Avan_Teach1H == TRUE)
        {
                return TRUE;
        };      
};
 
FUNC VOID DIA_PC_5004_Avan_Teach_Info() //////////////------TU POKAZUJE MI BŁĄD. Redefined identifier. Pewnie to nie jedyny taki.////////////////////////////////////////////////////////
{      


I... ?


EDIT: Dlatego chcę by ktoś zrobić jakiś tutek odnośnie tego.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Redefined identifier znaczy że masz to gdzieś jeszcze. Możesz się mylić ty albo komputer, ale liczenie na to drugie byłoby dość naiwne (no dobra, parser Gothica czasami faktycznie ma odpały, ale potrzeba do tego dość szczególnych warunków).

kaczka

kaczka

RaveN Studio
Definitely not kaczka!
posty2280
Propsy2392
NagrodyV
ProfesjaLvl designer
  • RaveN Studio
  • Definitely not kaczka!
Ja jebie... tak trudno pomyśleć i skopiować z oryginału?

//***********************************************
// Kampflehrer EINHAND
//***********************************************

INSTANCE DIA_Keroloth_Teacher(C_INFO)
{
npc = PAL_258_Keroloth;
nr = 6;
condition = DIA_Keroloth_Teacher_Condition;
information = DIA_Keroloth_Teacher_Info;
permanent = TRUE;
description = "(Nauka walki bronią jednoręczną)";
};                  

FUNC INT DIA_Keroloth_Teacher_Condition()
{
if (Keroloth_TeachPlayer == TRUE)
&& (Keroloths_BeutelLeer == FALSE)
{
return TRUE;
};
};
 
FUNC VOID DIA_Keroloth_Teacher_Info()
{
AI_Output (other,self ,"DIA_Keroloth_Teacher_15_00"); //Chcę się szkolić!

Info_ClearChoices (DIA_Keroloth_Teacher);
Info_AddChoice (DIA_Keroloth_Teacher,DIALOG_BACK,DIA_Keroloth_Teacher_Back);
Info_AddChoice (DIA_Keroloth_Teacher, B_BuildLearnString(PRINT_Learn1h1 , B_GetLearnCostTalent(other, NPC_TALENT_1H, 1)) ,DIA_Keroloth_Teacher_1H_1);
Info_AddChoice (DIA_Keroloth_Teacher, B_BuildLearnString(PRINT_Learn1h5 , B_GetLearnCostTalent(other, NPC_TALENT_1H, 5)) ,DIA_Keroloth_Teacher_1H_5);
};

FUNC VOID DIA_Keroloth_Teacher_Back ()
{
Info_ClearChoices (DIA_Keroloth_Teacher);
};

FUNC VOID B_Keroloth_TeachNoMore1 ()
{
AI_Output(self,other,"B_Keroloth_TeachNoMore1_07_00"); //Jesteś bardzo dobry. Niczego już cię nie mogę nauczyć.
};

FUNC VOID B_Keroloth_TeachNoMore2 ()
{
AI_Output(self,other,"B_Keroloth_TeachNoMore2_07_00"); //Teraz może ci pomóc tylko wyszkolony mistrz miecza.
};

FUNC VOID DIA_Keroloth_Teacher_1H_1 ()
{
B_TeachFightTalentPercent (self, other, NPC_TALENT_1H, 1, 60);

if (other.HitChance[NPC_TALENT_1H] >= 60)
{
B_Keroloth_TeachNoMore1 ();

if (Npc_GetTalentSkill (other, NPC_TALENT_1H) == 2)
{
B_Keroloth_TeachNoMore2 ();
};
};
Info_AddChoice (DIA_Keroloth_Teacher, B_BuildLearnString(PRINT_Learn1h1 , B_GetLearnCostTalent(other, NPC_TALENT_1H, 1)) ,DIA_Keroloth_Teacher_1H_1);
};

FUNC VOID DIA_Keroloth_Teacher_1H_5 ()
{
B_TeachFightTalentPercent (self, other, NPC_TALENT_1H, 5, 60);

if (other.HitChance[NPC_TALENT_1H] >= 60)
{
B_Keroloth_TeachNoMore1 ();

if (Npc_GetTalentSkill (other, NPC_TALENT_1H) == 2)
{
B_Keroloth_TeachNoMore2 ();
};
};
Info_AddChoice (DIA_Keroloth_Teacher, B_BuildLearnString(PRINT_Learn1h5 , B_GetLearnCostTalent(other, NPC_TALENT_1H, 5)) ,DIA_Keroloth_Teacher_1H_5);
};
Dla przykładu ta broń 1h. Pozamieniaj sobie tylko instance postaci i gotowe :pokerface:
 

diegomez

diegomez

Labirynt
posty452
Propsy63
  • Labirynt

diegomez
Labirynt

Pytanie: Jak zrobić nauczyciela?
#9 2011-11-08, 19:16(Ostatnia zmiana: 2011-11-08, 21:36)
Ok dzięki.
Zrobiłem już dwa poprawne skrypty dwóch nauczycieli.

Trochę to zajęło, zanim to rozpykałem, ale dzięki.

<Może kiedyś zrobię tutek> :naughty:


EDIT:

PRINT_LearnDEX1   //---napis podczas uczenia się zręczności
PRINT_LearnSTR1   // -||- siły
PRINT_LearnMANA1  // -||- many
PRINT_ //----JAKI jest na HP. Spróbowałem LearnHP, LearnHITPOINTS, Learn_HEALTH
 

diegomez

diegomez

Labirynt
posty452
Propsy63
  • Labirynt
Dowiedziałem sie ze najprawdopodobniej czegos takiego nie ma.
Wiecie jak i gdzie robi sie ten napis ?
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
PRINT_Learnhitpoints_MAX to odpowiada za nauczenie się HP MAX.

Napisze ci na ekranie "Punkty trafień + (i tu liczba)".

I nie ma problemu...
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

diegomez

diegomez

Labirynt
posty452
Propsy63
  • Labirynt
Tak kilka minut temu przed przeczytaniiem tego posta to znalazlem.
Mozna hitpoints max e tez mozna dorobic opis i nazwac go jak sie chce.
 Jest np. Learnmana_max
A programisci zrobili jeszcze jedno o nazwie learnmana
Tak samo mozna zrobic z pz.
Jak wroce do domu to moze dokladnie to opisze.
 

Wicon

Wicon

Użytkownicy
posty147
Propsy5
  • Użytkownicy
// ************************************************************
//           Bring mir was bei.
// ************************************************************

//-----------------------
var int DiegoNW_Merke_DEX;
//-------------------------

INSTANCE DIA_DiegoNW_Teach(C_INFO)
{
   npc         = PC_Thief_NW;
   nr         = 995;
   condition   = DIA_DiegoNW_Teach_Condition;
   information   = DIA_DiegoNW_Teach_Info;
   permanent   = TRUE;

   description = "Naucz mnie.";
};                      
FUNC INT DIA_DiegoNW_Teach_Condition()
{
   if (Diego_IsOnBoard == FALSE)
   && (Diego_Teach == TRUE)
   {
      return TRUE;
   };
};
FUNC VOID DIA_DiegoNW_Teach_Info()
{   
   AI_Output (other,self ,"DIA_DiegoNW_Teach_15_00"); //Naucz mnie.
   AI_Output (self ,other,"DIA_DiegoNW_Teach_11_01"); //Mogę popracować trochę nad twoją zręcznością.
   
   DiegoNW_Merke_Dex = other.attribute[ATR_DEXTERITY]; //<--W tej linijce mi wyskakuje. Unkown identyfire ( kod źródłowy nie rozpoznaje tej linijki)
   
   Info_ClearChoices   (DIA_DiegoNW_Teach);
   Info_AddChoice      (DIA_DiegoNW_Teach, DIALOG_BACK, DIA_DiegoNW_Teach_BACK);
   Info_AddChoice      (DIA_DiegoNW_Teach, B_BuildLearnString(PRINT_LearnDEX1, B_GetLearnCostAttribute(other, ATR_DEXTERITY))   ,DIA_DiegoNW_TeachDEX_1);
   Info_AddChoice      (DIA_DiegoNW_Teach, B_BuildLearnString(PRINT_LearnDEX5, B_GetLearnCostAttribute(other, ATR_DEXTERITY)*5)   ,DIA_DiegoNW_TeachDEX_5);
};

func void DIA_DiegoNW_Teach_BACK()
{
   if (DiegoNW_Merke_DEX < other.attribute[ATR_DEXTERITY]) ( no i w związku z powyższym tej linijki także nie rozpoznaje. Oczywiście zmieniłem tutaj imię na imie postaci.)
   {
      AI_Output (self, other, "DIA_DiegoNW_Teach_BACK_11_00"); //Już jesteś bardziej zręczny. Tak trzymać.
   };
   Info_ClearChoices   (DIA_DiegoNW_Teach);
};

// ------ 1 Geschick -----
func void DIA_DiegoNW_TeachDEX_1()
{
   B_TeachAttributePoints (self, other, ATR_DEXTERITY, 1, T_MAX);

   Info_ClearChoices   (DIA_DiegoNW_Teach);
   Info_AddChoice      (DIA_DiegoNW_Teach, DIALOG_BACK, DIA_DiegoNW_Teach_BACK);
   Info_AddChoice      (DIA_DiegoNW_Teach, B_BuildLearnString(PRINT_LearnDEX1, B_GetLearnCostAttribute(other, ATR_DEXTERITY))   ,DIA_DiegoNW_TeachDEX_1);
   Info_AddChoice      (DIA_DiegoNW_Teach, B_BuildLearnString(PRINT_LearnDEX5, B_GetLearnCostAttribute(other, ATR_DEXTERITY)*5)   ,DIA_DiegoNW_TeachDEX_5);
};

// ------ 5 Geschick ------
func void DIA_DiegoNW_TeachDEX_5()
{
   B_TeachAttributePoints (self, other, ATR_DEXTERITY, 5, T_MAX);
   
   Info_ClearChoices   (DIA_DiegoNW_Teach);
   Info_AddChoice      (DIA_DiegoNW_Teach, DIALOG_BACK, DIA_DiegoNW_Teach_BACK);
   Info_AddChoice      (DIA_DiegoNW_Teach, B_BuildLearnString(PRINT_LearnDEX1, B_GetLearnCostAttribute(other, ATR_DEXTERITY))   ,DIA_DiegoNW_TeachDEX_1);
   Info_AddChoice      (DIA_DiegoNW_Teach, B_BuildLearnString(PRINT_LearnDEX5, B_GetLearnCostAttribute(other, ATR_DEXTERITY)*5)   ,DIA_DiegoNW_TeachDEX_5);
};


To jest kod Diega na naukę. Zmieniłem instance dialogu, nazwę npc, we wszystkich innych miejscach także zmieniłem instance i wyskakuje mi błąd w miejscu zaznaczonym powyżej w skrypcie. W dialogach na naukę w powyższych postach nie zauważyłem tej linijki nawet. Co to jest? Proszę o pomoc.


Już znalazłem. Nie dodałem na górze nad instance var int imie_merke_DEX. Jeśli ktoś by w przyszłości będzie miał ten problem to niech sobie zmieni. Dodam jeszcze jak zmienić maksymalną ilość punktów do nauczenia się. Trzeba zmienić wszędzie T_MAX na T_MEGA. Wtedy będzie można do 300 się uczyć. A jak będzie się chciało zwiększyć jeszcze bardziej to tu opiszę jak to zrobić:

Wchodzimy do pliku story Globals. Na samej górze mamy następujące linijki.

// ------ Teacher MAX Werte ------
const int T_MEGA = 300; //Pyrokar MANA
const int T_MAX = 200;
const int T_HIGH = 120;
const int T_MED = 90;
const int T_LOW = 60;

Możemy dodać kolejną np.
const int T_BIG = 500;

Teraz wchodzimy do dialogu postaci i w skrypcie nauki szukamy 2 linijek. One nie są umieszczone pod sobą.
B_TeachAttributePoints (self, other, ATR_DEXTERITY, 1, T_MAX);
B_TeachAttributePoints (self, other, ATR_DEXTERITY, 5, T_MAX);

Zmieniamy w nich końcówkę T_MAX na to, co wpisaliśmy w story globals, czyli T_BIG. Dzięki temu będziemy mogli się nauczyć danej umiejętności do 500. W tym przypadku zręczności
 


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