
gehe zum Quellcode dieser Datei
Funktionen | |
| public int | QueryPlAttacked (object pl) |
| Hat dieser Spieler den Spieler pl angegriffen?. | |
| public int | RegisterHelperNPC (object npc, int flags) |
| registriert den NPC als Helfer von diesem Spieler. | |
| public int | UnregisterHelperNPC (object npc) |
| de-registriert den NPC als Helfer von diesem Spieler. | |
| public int QueryPlAttacked | ( | object | pl | ) |
Hat dieser Spieler den Spieler pl angegriffen?.
| [in] | pl | object zu pruefender Spieler |
Definiert in Zeile 109 der Datei combat.c.
Benutzt find_netdead(), find_player(), IsEnemy(), ME, ob() und plAttacked.
Wird benutzt von Kill().
00109 { 00110 object ob; 00111 00112 if ( !objectp(pl) ) 00113 return 0; 00114 00115 foreach(string plname: plAttacked) { 00116 if ( !( ob=(find_player(plname)||find_netdead(plname)) ) 00117 || ( !IsEnemy(ob) && !(ob->IsEnemy(ME)) ) ) 00118 plAttacked -= ({plname}); // ja, das geht. ;-) 00119 } 00120 return (member( plAttacked, getuid(pl) ) >= 0); 00121 }


| public int RegisterHelperNPC | ( | object | npc, | |
| int | flags | |||
| ) |
registriert den NPC als Helfer von diesem Spieler.
| [in] | npc | object Helfer-NPC |
| [in] | flags | int Bitfeld von Flags |
Definiert in Zeile 47 der Datei combat.c.
Benutzt CLASS_MASK, EXCLUSIVE_HELPER, P_HELPER_NPC und QueryProp().
00047 { 00048 if (!objectp(npc)) 00049 raise_error(sprintf( "Wrong argument 1 in RegisterHelperNPC(). " 00050 "Expected <object>, got %.100O\n", npc)); 00051 if (!intp(flags) || flags < 1) 00052 raise_error(sprintf( "Wrong argument 2 in RegisterHelperNPC(). " 00053 "Expected positive <int>, got %O\n", flags)); 00054 00055 mapping helpers = QueryProp(P_HELPER_NPC); 00056 00057 // schon registrierte sind witzlos. 00058 if (member(helpers, npc)) 00059 return 0; 00060 00061 // auf exklusive Helfer pruefen. 00062 foreach(object helper, int fl: helpers) { 00063 // flags identisch? Dann Klasse und Exklusivitaet identisch 00064 if (fl == flags) 00065 return 0; 00066 // oder einer von beiden exklusiv und beide in der gleichen Klasse? 00067 else if ( ((fl & EXCLUSIVE_HELPER) || (flags & EXCLUSIVE_HELPER)) 00068 && ((fl & CLASS_MASK) == (flags & CLASS_MASK)) ) 00069 return 0; 00070 } 00071 // scheint wohl ok zu sein. Registrieren und Prop im NPC setzen. 00072 helpers += ([ npc: flags ]); 00073 npc->SetProp(P_HELPER_NPC, ({ this_object(), flags }) ); 00074 // momentan unnoetig, da helpers keine Kopie ist. 00075 // SetProp(P_HELPER_NPC, helpers); 00076 00077 return 1; 00078 }

| public int UnregisterHelperNPC | ( | object | npc | ) |
de-registriert den NPC als Helfer von diesem Spieler.
| [in] | npc | object Helfer-NPC |
Definiert in Zeile 87 der Datei combat.c.
Benutzt m_delete(), P_HELPER_NPC und QueryProp().
00087 { 00088 if (!objectp(npc)) 00089 raise_error(sprintf("Wrong argument in UnregisterHelpernNPC(). " 00090 "Expected <object>, got %.100O\n", npc)); 00091 00092 mapping helpers = QueryProp(P_HELPER_NPC); 00093 if (member(helpers, npc)) { 00094 efun::m_delete(helpers, npc); 00095 // momentan unnoetig, da helpers keine Kopie ist. 00096 // SetProp(P_HELPER_NPC, helpers); 00097 npc->SetProp(P_HELPER_NPC, 0); 00098 return 1; 00099 } 00100 return 0; 00101 }

1.6.3