Dokumentation zu: mnpc.doc(WL)

HR Image


Ich habe Kobayashis Moving-NPC (mnpc) nun endgueltig auf den
callmaster umgestellt, weil Vrais Scheduler zwar eine tolle
eierlegende Wollmilchsau ist, aber viel zu viele call_outs
macht. Die Definitionen der Properties stehen in /sys/mnpc.h,
welche man mit #include <mnpc.h> einbinden kann. Zu erben
ist die Datei /std/mnpc.c.

Folgende Properties gibt es:

P_MNPC   	Dieses Property wird bei MNPC's automatisch gesetzt.

P_MNPC_MASTER   Damit ist es moeglich, einen eigenen Master
	        anzugeben, wenn man nicht den default-maessig
		gesetzten Master benutzen will. (lohnt nur,
		wenn man auch sonst einen eigenen Master benutzt,
		d.h., wenn man viele eigene mnpcs hat.)

P_MNPC_FLAGS    Moegliche Flags sind:
	MNPC_WALK		Der MNPC laeuft im erlaubten Bereich
	MNPC_INVINCIBLE		Der MNPC laesst keine Angriffe zu
	MNPC_FOLLOW_PLAYER	Der MNPC verfolgt Spieler, die den 
				Raum verlassen.
	MNPC_NO_TPORT		Der MNPC verwendet keine M_TPORT-
				Methode, sondern nur M_GO.

P_MNPC_HOME     Dies ist der Raum in der MNPC teleportiert
	        wird, wenn es keinen gueltigen Ausgang gibt.
		Default ist MNPC_DFLT_HOME == "/room/void"

P_MNPC_AREA     Dies ist ein Array von strings. sie geben den
	        Bereich an, in den sich der MNPC bewegen darf.
		(Es sind die Anfaenge der Filenamen)
	        Default ist ({}) =>er darf ueberall hingehen.

P_MNPC_DELAY    Zeitabstand zwischen zwei Walk's (min 5 Sek.)
	        Default ist MNPC_DFLT_DELAY == 20 Sekunden
		Hier kann eine closure uebergeben werden, die
		bei Aufruf eine int zurueckliefert. Dadurch
		koennen random-Zeiten erzeugt werden.

P_MNPC_ENTER    Funktion, die sofort beim Betreten eines
	        Raumes ausgefuehrt wird.

P_MNPC_LEAVE    Funktion die kurz vor Verlassen des Raumes
	        ausgefuehrt wird.

P_MNPC_SPECIAL_EXITS	MNPC darf durch SpecialExits gehen.
	                Default 0 (er darf nicht)

P_MNPC_LOAD_ROOMS       MNPC darf Raeume laden
	                Default 0 (er darf nicht)

P_MNPC_OLD_ENV          Property zum Testen der Bewegung, intern
P_MNPC_LASTREV          Property zum Testen der Referenz, intern (*)

Zu (*):
Wenn der MNPC 1.5 Stunden keinen Spielerkontakt hatte, bewegt er sich
in den Raum, in dem er geclont wurde (muss nicht P_MNPC_HOME sein)
Dadurch wird den Raeumen die Moeglichkeit gegeben, ihren clean_up 
durchzufuehren.
	
Beispiel (Lachmoewe (/d/ozean/troy/kompass/mon/moewe.c))

#pragma strong_types

#include <properties.h>
#include <mnpc.h>
#include <combat.h>
#include "../files.h"

inherit "/std/mnpc";

int departure()
{
  return 22+random(46);
}

void create()
{
  string fn;
  if(!is_clone(this_object())) return;
  ::create();
  SetProp(P_SHORT,"Eine Lachmoewe");
  SetProp(P_LONG,break_string(
  "Mit seinem charakteristischen schwarzen Kopf, den silbergrauen "+
  "Fluegeldecken und dem ansonsten weissen Gefieder gehoert dieser "+
  "Vogel zur Gattung der Lachmoewen.",78));
  SetProp(P_NAME,"Lachmoewe");
  SetProp(P_GENDER,FEMALE);
  SetProp(P_ALIGN,-2);
  SetProp(P_RACE,"Moewe");
  SetProp(P_DEFAULT_INFO,"schreit: IIIIAEEEK!!! IIIIAEEEK!!!\n");
  AddId(({"moewe","lachmoewe","\ntroy_kompass_lachmoewe"}));
  // hierdurch wird der clonende Raum zum Home:
  SetProp(P_MNPC_HOME,
	  (fn=efun::explode(file_name(previous_object()),"#")[0]));
  // dies setzt das Directory des clonenden Raumes als area:
  SetProp(P_MNPC_AREA,
	  ({ 
efun::implode(efun::explode(fn,"/")[0..<2],"/")}));
  SetProp(P_MNPC_DELAY,#'departure); // siehe oben
  SetProp(P_MNPC_FLAGS,MNPC_WALK | MNPC_NO_TPORT);
  SetProp(P_MNPC_LOAD_ROOMS,0);
  SetProp(P_MSGIN,"schwebt herein");
  SetProp(P_MSGOUT,"fliegt");
  SetProp(P_LEVEL,6);
  SetProp(P_MAX_HP,80);
  SetProp(P_HP,80);
  SetProp(P_HANDS,({"mit ihrem scharfen Schnabel",65,DT_SLASH}));
  SetProp(P_XP,QueryProp(P_MAX_HP)*QueryProp(P_TOTAL_WC)*5);
  SetChats(25,({
    capitalize(name(WER,1))+" schreit Dir laut ins Ohr.\n",
    capitalize(name(WER,1))+" laesst etwas auf Dich fallen.\n",
    "Du wirst von "+name(WEM,1)+" fast gestriffen.\n",
    capitalize(name(WER,1))+" stuerzt sich hungrig auf ein paar Brotkruemel.\n" }));
}


Start » Magierhandbuch » Docu » Konzepte » Mnpc.doc Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!