[G1&G2]Omówienie C_NPC 8052 1

O temacie

Autor Baster

Zaczęty 20.07.2008 roku

Wyświetleń 8052

Odpowiedzi 1

Baster

Baster

Użytkownicy
Root Oszust
posty184
Propsy11
  • Użytkownicy
  • Root Oszust

Baster

[G1&G2]Omówienie C_NPC
2008-07-20, 20:18(Ostatnia zmiana: 2009-07-11, 11:40)
No więc zacznę od tego, że to całe C_NPC wyjaśnił mi mEatrikZ :D

C_NPC... Co to do licha jest ?
Fachowa odpowiedź -

mEatrikZ 19:59:00
"Zajebiście przydatna Funkcja"

****************************************

Dobra, no więc już wiemy co to jest. Teraz czas na wyjaśnienie używania. Przykładowo, npc ma w ekwipunku pancerz, a my mu go chcemy założyć, gadając z innym gościem. Niewykonalne? Jak to nie! :P

załóżmy, ze zbroja nazywa się "ITAR_MIL_L", a npc :  "ORG_71830_Meat"

bierzemy dialog jakiegokolwiek gościa i wstawiamy coś takiego :


var C_NPC wacek; wacek = Hlp_GetNpc(ORG_71830_Meat);
AI_EquipArmor  (wacek,ITAR_MIL_L);


i tyle! :P  Ale należy wspomnieć, że var C_NPC wacek; wacek = Hlp_GetNpc(ORG_71830_Meat); wstawiamy na początek dialogu.

Pokażę na przykładzie dialogu z Hagenem:

Cytuj
///////////////////////////////////////////////////////////////////////
//   Info Hallo
///////////////////////////////////////////////////////////////////////
INSTANCE DIA_Lord_Hagen_Hallo (C_INFO)
{
   npc          =    PAL_200_Hagen;
   nr          =    2;
   condition    =    DIA_Lord_Hagen_Hallo_Condition;
   information    =    DIA_Lord_Hagen_Hallo_Info;
   important    =    TRUE;
   permanent    =    FALSE;
};
func int DIA_Lord_Hagen_Hallo_Condition ()
{   
   if (hero.guild != GIL_NONE)
   && (self.aivar[AIV_TalkedToPlayer] == FALSE)
   && (Kapitel < 3)
   {
      return TRUE;
   };
};
func void DIA_Lord_Hagen_Hallo_Info ()
{
var C_NPC wacek;    wacek = Hlp_GetNpc(ORG_71830_Meat);
   AI_Output (self, other, "DIA_Lord_Hagen_Hallo_04_00"); //Słyszałem już o tobie.
   if (Npc_KnowsInfo (other, DIA_Lothar_EyeInnos))
   || (Andre_EyeInnos == TRUE)
   {
      AI_Output (self ,other, "DIA_Lord_Hagen_Add_04_03"); //Lothar doniósł mi, że chciałeś ze mną rozmawiać.
      AI_Output (self, other, "DIA_Lord_Hagen_Hallo_04_01"); //Jesteś tym obcym, który domaga się Oka Innosa.
   };
   
   AI_Output (self, other, "DIA_Lord_Hagen_Hallo_04_02"); //Jestem Lord Hagen.
   AI_Output (self, other, "DIA_Lord_Hagen_Hallo_04_03"); //Królewski paladyn, wojownik w służbie Innosa i namiestnik Khorinis.
   AI_Output (self, other, "DIA_Lord_Hagen_Hallo_04_04"); //Jestem zajętym człowiekiem, więc nie marnuj mojego czasu. Mów od razu, co cię tu sprowadza.
AI_EquipArmor  (wacek,ITAR_MIL_L);
};


Tym sposobem można zrobić dosłownie wszystko u kogoś, nawet z nim nie gadając! (np. zmienić rutynę, gildie, założyć hełm, itp.)

Właśnie nauczyłeś się bardzo przydatnej funkcji! :D

Tutorial można kopiować ile wlezie, a nawet jeszcze więcej, ale miłe słowo o autorze :P

@down - a może :P  to mEatrikZ nazwał to funkcją :D
 

Vuler

Vuler

Użytkownicy
posty60
Propsy16
Profesjabrak
  • Użytkownicy

Vuler

[G1&G2]Omówienie C_NPC
#1 2008-07-21, 15:43(Ostatnia zmiana: 2009-07-11, 11:42)
C_NPC NIE JEST funkcją tylko klasą, której definicja znajduje się w pliku Classes. Na podstawie tej klasy tworzy się instancję. W Gothicu takimi instancjami klasy C_NPC są poszczególne postacie i potwory.
Natomiast instrukcje:
[codebox]var C_NPC nazwa_zmiennej;
nazwa_zmiennej = Hlp_GetNpc(instancja_npc);[/codebox]
tworzą zmienną obiektową, a następnie tej zmiennej przypisują instancje konkretnego npc poprzez funkcję Hlp_GetNpc. Dzięki temu w łatwy sposób można odwoływać się do instancji danego npc.
Wykorzystując to możemy podczas rozmowy np. dodać przedmiot do ekwipunku postaci z którą rozmawiamy używając poniższych funkcji
[codebox]CreateInvItem (nazwa_zmiennej, instancja_przedmiotu);
CreateInvItems (nazwa_zmiennej, instancja_przedmiotu, ilość);[/codebox]
 


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