====== ZenGin Klassen ======
So, hier möchte ich nach und nach einige Erklärungen der einzelnen Klassen (wie bin ich auf Instanzen gekommen?) sammeln.
Dann werde ich mal beginnen:
===== c_npc =====
instance GRD_278_Gardist (Npc_Default)
{
//-------- primary data --------
name = NAME_gardist; //Name des NPC
npctype = NPCTYPE_MINE_GUARD; //NPC-Typ (was das bewirkt, weiß ich grad nicht)
guild = GIL_GRD; //Gilde des NPC
level = 10; //Der level des NPC (nur wichtig für Angst/keine Angst und Erfahrungspunktevergabe)
voice = 13; //die Stimme des NPC
id = 278; //die ID (darf nicht doppelt vergeben werden)
//-------- abilities --------
attribute[ATR_STRENGTH] = 35; //Stärke
attribute[ATR_DEXTERITY] = 35; //Geschicklichkeit
attribute[ATR_MANA_MAX] = 0; //max. Zauberenergie
attribute[ATR_MANA] = 0; //manamenge beim Start
attribute[ATR_HITPOINTS_MAX] = 160; //max. Lebensenergie
attribute[ATR_HITPOINTS] = 160; //Lebensenergie zum Start
//-------- visuals --------
// animations
Mdl_SetVisual (self,"HUMANS.MDS"); //könnte die Animation sein, aber net sicher
Mdl_ApplyOverlayMds (self,"Humans_Militia.mds"); //auch auf jeden Fall ne Animationssache, is die bewegungsart (also hängende Schultern oder verschränkte Arme usw.)
// bodymesh, bdytex, Haut, Kopfmesh, Kopftex,Zahntex, ruestung
Mdl_SetVisualBody (self,"hum_body_Naked0", 0, 1, "Hum_Head_Fighter", 12, 2, GRD_ARMOR_L);
B_Scale (self); //kA
Mdl_SetModelFatness(self,0); //höhere Werte lassen das mesh dicker erscheinen
self.aivar[AIV_IMPORTANT] = TRUE;//self.aivar speichert verschiedene dinge über den NPC
//genauere erläuterung einzelner werte folgt demnächst
fight_tactic = FAI_HUMAN_STRONG; //Kampf-AI (nah-/fernkampf usw.) erläuterung folgt demnächst
//-------- Talente --------
Npc_SetTalentSkill (self, NPC_TALENT_1H,1); //mit dieser Funktion werden Talente definiert
//-------- inventory --------
EquipItem (self, ItMw_1H_Sword_01); //ein item ins inventory und ausrüsten(anlegen)
CreateInvItem (self, ItFoApple); //ein item ins inventory
CreateInvItems (self, ItMiNugget, 10); //mehrere gleiche items ins inventory
//-------------Daily Routine-------------
daily_routine = Rtn_start_278; //der standardtagesablauf des NPC
};
FUNC VOID Rtn_Start_289
{
//Hier kommt der Tagesablauf hinein
//Beispiel:
TA_Stand(00,00,13,00, "KJ_LAGER_INSIDE_02");
TA_Stand(13,00,00,00, "KJ_LAGER_INSIDE_02");
//Führt dazu, dass der NPC 24 Stunden am Waypoint KJ_LAGER_INSIDE_02 steht.
//zu beachten, es müssen mindestens zwei funktionen angegeben sein, auch wenn den ganzen Tag das selbe passiert
TA_Stand(00,00,24,00, "KJ_LAGER_INSIDE_02");
//ist nicht möglich
};
===== c_mission =====
CLASS C_Mission
{
VAR STRING name ; // Name des Auftrages, der im Logbuch angezeigt wird
VAR STRING description ; // Text, der im Logbuch bei der Mission angezeigt wird
VAR INT duration ; // Max. Dauer in Tageszeiten
VAR INT important ;
VAR FUNC offerConditions ;
VAR FUNC offer ;
VAR FUNC successConditions ;
VAR FUNC success ; // Status: Mission geschafft
VAR FUNC failureConditions ;
VAR FUNC failure ; // Status: Mission fehlgeschlagen
VAR FUNC obsoleteConditions ;
VAR FUNC obsolete ; // Status: Mission veraltet, 'duration' schon vorbei
VAR FUNC running ; // Status: Mission läuft noch
};
===== c_item =====
CLASS C_Item
{
// Für alle Items
VAR INT id ; // Individuelle Nummer für dieses Item
VAR STRING name,nameID ; // Name der im Spiel angezeigt wird
VAR INT hp,hp_max ;
VAR INT mainflag,flags ; // Hauptflag und weitere Flags
// mainflags können sein: in welcher Kategorie ist das Item?
//CONST INT ITEM_KAT_NONE Sonstiges
//CONST INT ITEM_KAT_NF Alle Nahkampfwaffen
//CONST INT ITEM_KAT_FF Alle Fernkampfwaffen
//CONST INT ITEM_KAT_MUN Jede Art von Munition (->MultiSlot)
//CONST INT ITEM_KAT_ARMOR Rüstungen und Helme
//CONST INT ITEM_KAT_FOOD Alle Nahrungsmittel (->MultiSlot)
//CONST INT ITEM_KAT_DOCS Alle Dokumente
//CONST INT ITEM_KAT_POTIONS Traenke
//CONST INT ITEM_KAT_LIGHT Alle Lichtquellen
//CONST INT ITEM_KAT_RUNE Runen und Scrolls
//CONST INT ITEM_KAT_MAGIC Ringe und Amulette
//CONST INT ITEM_KAT_KEYS
// flags können sein:
//CONST INT ITEM_BURN Brennbar (kommt nur bei Fackeln vor)
//CONST INT ITEM_MISSION Missionsgegenstand
//CONST INT ITEM_MULTI Item kann gestapelt werden (-> Pfeile)
//CONST INT ITEM_TORCH Wie eine Fackel behandeln
//CONST INT ITEM_THROW Gegenstand kann geworfen werden (geht nicht mehr!)
//CONST INT ITEM_AMULET Gegenstand ist ein Amulett
//CONST INT ITEM_RING Gegenstand ist ein Ring
//CONST INT ITEM_BELT Gegenstand ist ein Gürtel (Nur G2?)
Bei Amuletten, Ringen und Gürteln kann nur jeweils eine bestimmte Anzahl
gleichzeitig getragen werden.
VAR INT weight,value ; //weight: Welches Gewicht hat das Item (wird das gebraucht?)
//value: Welchen Wert hat das Item beim Kauf / Verkauf? ACHTUNG: Beim Verkauf bringt jedes Item nur die Hälfte des Wertes.
// Für Waffen
VAR INT damageType ;
// Welche Schadensarten:
//CONST INT DAM_INVALID nur der Vollstandigkeit und Transparenz wegen hier definiert ( _NICHT_ verwenden )
//CONST INT DAM_BARRIER nur der Vollstandigkeit und Transparenz wegen hier definiert ( _NICHT_ verwenden )
//CONST INT DAM_BLUNT Keulen oder Hämmer
//CONST INT DAM_EDGE Scharfe Waffen wie Schwerter oder Äxte
//CONST INT DAM_FIRE Feuer
//CONST INT DAM_FLY Flugschaden (-> Windfaust)
//CONST INT DAM_MAGIC Magieschaden (Wird getrennt von Feuerschaden erteilt)
//CONST INT DAM_POINT Pfeile oder Bolzen
//CONST INT DAM_FALL nur der Vollstandigkeit und Transparenz wegen hier definiert ( _NICHT_ verwenden )
VAR INT damageTotal ; // Wie viel Schaden macht die Waffe denn nu?
VAR INT damage [DAM_INDEX_MAX] ; // Um gezielt mehrere Schadensarten anzusprechen (-> Uriziel)
// Für Rüstungen
VAR INT wear ;
// Wo soll die Rüstung getragen werden?
//CONST INT WEAR_TORSO Oberkoerper ( Brustpanzer )
//CONST INT WEAR_HEAD Kopf ( Helm )
VAR INT protection [PROT_INDEX_MAX] ; // Vor welchen Schadensarten bietet die Rüstung Schutz?
// Für Nahrung
VAR INT nutrition ; //HP-Steigerung bei Nahrung ACHTUNG: Wird nicht benutzt. Die Energie wird über on_state vergeben.
// Benötigte Attribute zum Benutzen des Items
VAR INT cond_atr [3] ; // Welches Attribut wird benötigt um das Item anzulegen?
//const int ATR_HITPOINTS Lebenspunkte
//const int ATR_MANA Mana Mana
//const int ATR_STRENGTH Stärke
//const int ATR_DEXTERITY Geschick
VAR INT cond_value [3] ; // Wie hoch muss das Attribut sein, um das Item anzulegen?
// Attribute, die bei anlegen des Items verändert werden
VAR INT change_atr [3] ; // Welches Attribut wird beim Anlegen geändert?
VAR INT change_value [3] ; // Um wie viel wird das Attribut verändert?
// Parserfunktionen
VAR FUNC magic ; // Parserfunktion zum "Magie Header" (geht das noch?)
VAR FUNC on_equip ; // Funktion, die aufgerufen wird, wenn man das Item anlegt
VAR FUNC on_unequip ; // Funktion, die aufgerufen wird, wenn man das Item ablegt
VAR FUNC on_state [4] ; // Funktion, die bei der angegebenen Animationsstufe aufgerufen wird
// Besitzer
VAR FUNC owner ; // Besitzer : Name des NPC
VAR INT ownerGuild ; // Besitzer : Gilde
VAR INT disguiseGuild ; // Zur Schau getragene Gilde durch Verkleidung
// Die 3DS-Datei
VAR STRING visual ; // Welche 3ds-Datei hat das Item?
// Veränderung des NSC-Meshes beim Anlegen dieses Gegenstandes
VAR STRING visual_change ; // ASC-File -> Die Rüstung bewegt sich beim Laufen ja auch!
VAR INT visual_skin ; // Wird der Skin geändert? (???)
VAR STRING scemeName ; // Animation, die bei Benutzung ausgeführt wird
VAR INT material ; // Material -> Welche Geräusche macht das Item
// VAR STRING pfx ; // Magic Weapon PFX (geht erst in G2)
VAR INT munition ; // Name der Munition (zB Pfeile)
var int spell ; // Welcher Zauberspruch ist das? (meistens Rune und Spruchrolle)
var int range ; // In wie viel Meter Entfernung trifft man Gegner damit noch?
var int mag_circle; // Welche Magie-Stufe braucht man, um das Item anzulegen?
VAR STRING description ; // Name des Items, der im Spiel angezeigt wird
VAR STRING text [ITM_TEXT_MAX] ; // Text, der in Zeile x der Beschreibung angezeigt wird
VAR INT count [ITM_TEXT_MAX] ; // Welche Zahl (zB Schadenswert einer Waffe) wird in Zeile x der Beschreibung angezeigt?
};
===== c_focus =====
CLASS C_Focus
{
/// für NSCs
VAR FLOAT npc_longrange ; // Zurufweite ( 20 m )
VAR FLOAT npc_range1, npc_range2 ; // Reichweite
VAR FLOAT npc_azi ; // Azimuth ( Seitenwinkel )
VAR FLOAT npc_elevdo, npc_elevup ; // Elevation ( Höhenwinkel )
VAR INT npc_prio ; // Priorität
/// für ITEMs
VAR FLOAT item_range1, item_range2; // Reichweite
VAR FLOAT item_azi ; // Azimuth ( Seitenwinkel )
VAR FLOAT item_elevdo, item_elevup; // Elevation ( Höhenwinkel )
VAR INT item_prio ; // Priorität
/// für MOBs
VAR FLOAT mob_range1, mob_range2 ; // Reichweite
VAR FLOAT mob_azi ; // Azimuth ( Seitenwinkel )
VAR FLOAT mob_elevdo, mob_elevup ; // Elevation ( Höhenwinkel )
VAR INT mob_prio ; // Priorität
};
===== c_info =====
CLASS C_INFO
{
VAR INT npc ; // Welchem NPC gehört die Info?
VAR INT nr ; // Welche Stelle im Dialogfenster hat die Info?
VAR INT important ; // Wichtig Flag -> ansprechen
VAR FUNC condition ; // Funktion angeben, die bei Rückgabewert 1 die Info erscheinen lässt.
VAR FUNC information ; // Funktion angeben die ausgeführt werden soll, wenn man die Info auswählt oder bekommt.
VAR STRING description ; // Welcher Text steht für die Info im Dialogfenster?
VAR INT trade ; // Soll das Handelsmenü geöffnet werden?
VAR INT permanent ; // Soll diese Info immer wieder gegeben werden, auch wenn man sie schon kennt?
};