#include <wizlevels.h>#include <properties.h>#include <language.h>
gehe zum Quellcode dieser Datei
Funktionen | |
| int | dump () |
| int | secure () |
| void | create () |
| int | add (string number) |
| int | changepath (string number) |
| int | setlist (string number) |
| int | activate () |
| int | deactivate () |
| int | info (string para) |
Variablen | |
| inherit std | thing |
| int activate | ( | ) |
Definiert in Zeile 148 der Datei ptool.c.
Benutzt active, dump(), room und secure().
00149 { 00150 int nr, active; 00151 string room; 00152 00153 if (!secure()) 00154 { printf("Fehler: -1\n"); return -1; } 00155 if (!query_once_interactive(environment())) 00156 { printf("Fehler: -2\n"); return -2; } 00157 room = object_name(environment(environment(this_object()))); 00158 active = "/secure/potionmaster"->ActivateRoom(room); 00159 if (active>=0) 00160 { 00161 printf("Raum aktiviert in Liste %d\n", active); 00162 dump(); 00163 } 00164 else 00165 printf("Fehler beim Aktivieren, Ergebnis: %d\n", active); 00166 return 1; 00167 }

| int add | ( | string | number | ) |
Definiert in Zeile 61 der Datei ptool.c.
Benutzt active, dump(), room und secure().
00062 { 00063 int nr, next, active; 00064 string room; 00065 if (!secure()) 00066 { printf("Fehler: -1\n"); return -1; } 00067 if (!query_once_interactive(environment())) 00068 { printf("Fehler: -2\n"); return -2; } 00069 if (!number) 00070 { printf("Fehler: -3\n"); return -3; } 00071 sscanf(number, "%d", nr); 00072 if (!intp(nr)) 00073 { printf("Fehler: -4\n"); return -4; } 00074 room = object_name(environment(environment(this_object()))); 00075 next = "/secure/potionmaster"->AddPotionroom(room); 00076 if (next>0) 00077 printf("Raum in Gesamtliste eingetragen, Nummer: %d\n", next-1); 00078 else 00079 { 00080 printf("Raum konnte nicht eingetragen werden, Ergebnis: %d\n", next); 00081 return 1; 00082 } 00083 active = "/secure/potionmaster"->SetListNr(room, nr); 00084 if (active>=0) 00085 { 00086 printf("Raum aktiviert in Liste %d\n", nr); 00087 dump(); 00088 } 00089 else 00090 printf("Fehler beim Aktivieren, Ergebnis: %d\n", active); 00091 return 1; 00092 }

| int changepath | ( | string | number | ) |
Definiert in Zeile 94 der Datei ptool.c.
Benutzt dump(), neu, room und secure().
00095 { 00096 int nr,neu; 00097 string room; 00098 mixed roomold; 00099 if (!secure()) 00100 { printf("Fehler: -1\n"); return -1; } 00101 if (!query_once_interactive(environment())) 00102 { printf("Fehler: -2\n"); return -2; } 00103 if (!number) 00104 { printf("Fehler: -3\n"); return -3; } 00105 sscanf(number, "%d", nr); 00106 if (!intp(nr)) 00107 { printf("Fehler: -4\n"); return -4; } 00108 room = object_name(environment(environment(this_object()))); 00109 roomold = "/secure/potionmaster"->GetFilenameByNumber(nr); 00110 if (roomold==-1) 00111 { printf("Fehler: -5\n"); return -5; } 00112 neu = "/secure/potionmaster"->ChangeRoomPath(roomold,room); 00113 if (neu>0) 00114 { 00115 printf("ZT %d durch aktuellen Raum ersetzt.\n", neu); 00116 dump(); 00117 } 00118 else 00119 printf("ZT %d konnte nicht ersetzt werden, Ergebnis: %d\n", nr,neu); 00120 return 1; 00121 }

| void create | ( | ) |
Definiert in Zeile 24 der Datei ptool.c.
Benutzt AddCmd(), AddId(), create(), NEUTER, P_AUTOLOADOBJ, P_GENDER, P_LONG, P_NAME, P_NODROP, P_SHORT und SetProp().
00025 { 00026 if (!clonep(this_object())) return; 00027 ::create(); 00028 SetProp(P_SHORT, "Potion-Tool"); 00029 SetProp(P_LONG, 00030 "Ein Tool zum Eintragen von Raumen in den Potionmaster.\n"+ 00031 "Folgende Befehle gibt es:\n"+ 00032 "ptadd <nummer> Addiert den ZT im Raum in Liste <nummer>\n"+ 00033 " und aktiviert ihn gleichzeitig.\n"+ 00034 "ptset <nummer> Aktiviert den ZT im Raum und setzt ihn in\n"+ 00035 " die Liste <nummer>.\n"+ 00036 "ptchange <nummer> Ersetzt den ZT <nummer> durch den ZT im Raum.\n"+ 00037 "ptact Aktiviert einen deaktivierten ZT in seiner\n"+ 00038 " bisherigen Liste.\n"+ 00039 "ptdeact Deaktiviert den ZT im Raum aus der ZTListe\n"+ 00040 " und verschiebt ihn nach 'deaktivierte ZTs'.\n"+ 00041 "ptinfo [para] kein para: Zeigt Infos ueber den ZT im aktu-\n"+ 00042 " ellen Raum.\n"+ 00043 " int para: Zeigt Infos zum ZT para an.\n"+ 00044 " string para: Zeigt ZT-Infos des Spielers para.\n"+ 00045 "ptdump Erzeugt ein Dump der aktuellen ZTListe und\n"+ 00046 " speichert diesen ab.\n\n"); 00047 SetProp(P_NAME, "PTool"); 00048 SetProp(P_GENDER, NEUTER); 00049 AddId(({"tool", "ptool"})); 00050 SetProp(P_NODROP, 1); 00051 SetProp(P_AUTOLOADOBJ, 1); 00052 AddCmd("ptadd", "add"); 00053 AddCmd("ptset", "setlist"); 00054 AddCmd("ptchange", "changepath"); 00055 AddCmd("ptact", "activate"); 00056 AddCmd("ptdeact", "deactivate"); 00057 AddCmd("ptinfo", "info"); 00058 AddCmd("ptdump", "dump"); 00059 }

| int deactivate | ( | ) |
Definiert in Zeile 169 der Datei ptool.c.
Benutzt dump(), room und secure().
00170 { 00171 int deactive; 00172 string room; 00173 00174 if (!secure()) 00175 { printf("Fehler: -1\n"); return -1; } 00176 if (!query_once_interactive(environment())) 00177 { printf("Fehler: -2\n"); return -2; } 00178 room = object_name(environment(environment(this_object()))); 00179 deactive = "/secure/potionmaster"->DeactivateRoom(room); 00180 if (deactive>=0) 00181 { 00182 printf("Raum deaktiviert in Liste %d\n",deactive); 00183 dump(); 00184 } 00185 else 00186 printf("Fehler beim Deaktivieren, Ergebnis: %d\n", deactive); 00187 return 1; 00188 }

| int dump | ( | ) |
| int info | ( | string | para | ) |
Definiert in Zeile 190 der Datei ptool.c.
Benutzt break_string(), find_player(), info, P_POTIONROOMS, room und secure().
00191 { 00192 int info,nr; 00193 string s; 00194 object room,o; 00195 mixed m,*potions; 00196 if (!secure()) 00197 { printf("Fehler: -1\n"); return -1; } 00198 if (!query_once_interactive(environment())) 00199 { printf("Fehler: -2\n"); return -2; } 00200 if (!para || para=="") 00201 { 00202 room = environment(environment(this_object())); 00203 info = "/secure/potionmaster"->HasPotion(room); 00204 if (info>=0) 00205 { 00206 printf("Raum hat ZT mit Nr: %d\n\n",info); 00207 nr = "/secure/potionmaster"->GetListByNumber(info); 00208 if (nr>=0) 00209 printf("ZT aktiv in Liste: %d\n\n",nr); 00210 else 00211 { 00212 nr = "/secure/potionmaster"->GetInactListByNumber(info); 00213 if (nr>=0) 00214 printf("ZT INaktiv in Liste: %d\n\n",nr); 00215 else 00216 printf("ZT INaktiv\n\n"); 00217 } 00218 if (info>=0 && s=read_file("/secure/ARCH/ZT/"+info+".zt")) 00219 { 00220 write("Tip:\n"+s); 00221 } 00222 } 00223 else 00224 printf("Raum hat keinen ZT eingetragen.\n"); 00225 } 00226 else 00227 if (sscanf(para,"%d",info)==1) 00228 { 00229 printf("ZT mit Nummer: %d\n\n",info); 00230 m = "/secure/potionmaster"->GetFilenameByNumber(info); 00231 if (m!=-1) 00232 { 00233 write("Filename: "+m+"\n\n"); 00234 nr = "/secure/potionmaster"->GetListByNumber(info); 00235 if (nr>=0) 00236 printf("ZT aktiv in Liste: %d\n\n",nr); 00237 else 00238 { 00239 nr = "/secure/potionmaster"->GetInactListByNumber(info); 00240 if (nr>=0) 00241 printf("ZT INaktiv in Liste: %d\n\n",nr); 00242 else 00243 printf("ZT INaktiv\n\n"); 00244 } 00245 if (info>=0 && s=read_file("/secure/ARCH/ZT/"+info+".zt")) 00246 { 00247 write("Tip:\n"+s); 00248 } 00249 } 00250 else 00251 write("Kein ZT mit dieser Nummer bekannt.\n"); 00252 } 00253 else 00254 { 00255 write("Spieler "+capitalize(para)+"\n\n"); 00256 if (o=find_player(para)) 00257 { 00258 potions=sort_array(o->QueryProp(P_POTIONROOMS),#'>); 00259 if (sizeof(potions)) 00260 { 00261 s=""; 00262 for (nr=0;nr<sizeof(potions);nr++) 00263 s+=potions[nr]+", "; 00264 write("Potionrooms:\n"+break_string(s[0..<3],78)+"\n"); 00265 } 00266 else write("Spieler hat keine weiteren Potionrooms.\n"); 00267 potions=sort_array(o->QueryProp(P_KNOWN_POTIONROOMS),#'>); 00268 if (sizeof(potions)) 00269 { 00270 s=""; 00271 for (nr=0;nr<sizeof(potions);nr++) 00272 s+=potions[nr]+", "; 00273 write("Bekannte Potionrooms:\n"+ 00274 break_string(s[0..<3],78)); 00275 } 00276 else write("Spieler hat keine bekannten Potionrooms.\n"); 00277 } 00278 else 00279 write("Kein Spieler mit diesem Namen anwesend.\n"); 00280 } 00281 return 1; 00282 }

| int secure | ( | ) |
Definiert in Zeile 14 der Datei ptool.c.
Benutzt ARCH_SECURITY und ROOTID.
Wird benutzt von activate(), ActivateRoom(), add(), AddPotionroom(), changepath(), ChangeRoomPath(), deactivate(), DeactivateRoom(), info(), jonglier(), message(), parse(), QueryDir(), QueryRead(), QueryWrite(), setlist() und SetListNr().
00015 { 00016 if (!previous_object()) return 0; 00017 if (geteuid(previous_object())==ROOTID) return 1; 00018 if (geteuid(previous_object()) != geteuid(this_interactive())) return 0; 00019 if (this_interactive() != this_player()) return 0; 00020 if (!ARCH_SECURITY) return 0; 00021 return 1; 00022 }

| int setlist | ( | string | number | ) |
Definiert in Zeile 123 der Datei ptool.c.
Benutzt active, dump(), room und secure().
00124 { 00125 int nr, next, active; 00126 string room; 00127 if (!secure()) 00128 { printf("Fehler: -1\n"); return -1; } 00129 if (!query_once_interactive(environment())) 00130 { printf("Fehler: -2\n"); return -2; } 00131 if (!number) 00132 { printf("Fehler: -3\n"); return -3; } 00133 sscanf(number, "%d", nr); 00134 if (!intp(nr) || nr<0 || nr>7) 00135 { printf("Fehler: -4\n"); return -4; } 00136 room = object_name(environment(environment(this_object()))); 00137 active = "/secure/potionmaster"->SetListNr(room, nr); 00138 if (active>=0) 00139 { 00140 printf("Raum aktiviert in Liste %d\n", nr); 00141 dump(); 00142 } 00143 else 00144 printf("Fehler beim Aktivieren, Ergebnis: %d\n", active); 00145 return 1; 00146 }

1.6.3