Dies ist eine alte Version des Dokuments!
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:
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
};
Dann wird AndiNo mal weitermachen und die Klasse c_mission, c_item, c_focus und c_info erklären.
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
};
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?
};
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
};
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?
};