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 };
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? };