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