#include <thing/properties.h>#include <wizlevels.h>#include <new_skills.h>#include <events.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | NEED_PROTOTYPES |
Funktionen | |
| void | create () |
| public mixed | QueryProp (string name) |
| nomask int | beitreten () |
| static nomask void | loose_ability (mixed key, mixed dat, int loss) |
| varargs nomask int | austreten (int loss) |
| static nomask int | security_check () |
| nomask int | AddGuild (string gildob) |
| nomask int | RemoveGuild (string gildob) |
| nomask int | ValidGuild (string gildenob) |
Variablen | |
| string * | valid_guilds = ({}) |
| #define NEED_PROTOTYPES |
Definiert in Zeile 11 der Datei gildenmaster.c.
| nomask int AddGuild | ( | string | gildob | ) |
Definiert in Zeile 124 der Datei gildenmaster.c.
Benutzt GUILD_DIR, GUILD_SAVEFILE, save_object(), security_check() und valid_guilds.
00124 { 00125 object tp; 00126 00127 if (!stringp(gildob) || !strlen(gildob) || !security_check() 00128 || file_size(GUILD_DIR+gildob+".c")<0) 00129 return 0; 00130 if (member(valid_guilds, gildob) != -1) 00131 return 0; 00132 valid_guilds+=({gildob}); 00133 save_object(GUILD_SAVEFILE); 00134 return 1; 00135 }

| varargs nomask int austreten | ( | int | loss | ) |
Definiert in Zeile 81 der Datei gildenmaster.c.
Benutzt DEFAULT_GUILD, E_ENVIRONMENT, E_GUILDNAME, E_LAST_GUILDNAME, E_OBJECT, E_PLNAME, EVENTD, EVT_GUILD_CHANGE, gilde, gname, GUILD_DIR, P_DEFAULT_GUILD, P_GUILD, P_NEWSKILLS, pl und skills.
00081 { 00082 object pl,gilde; 00083 string gname; 00084 mapping skills; 00085 00086 if (!(pl=this_player()) || !(gilde=previous_object())) 00087 return 0; 00088 // Gilden muessen Blueprints sein, so. ;-) 00089 gname=object_name(gilde); 00090 if (gname[0..7]!=GUILD_DIR || 00091 ((string)pl->QueryProp(P_GUILD))!=gname[8..]) { 00092 write("Du kannst hier nicht aus einer anderen Gilde austreten.\n"); 00093 return -1; 00094 } 00095 if (gname[8..]==(pl->QueryProp(P_DEFAULT_GUILD)||DEFAULT_GUILD)) 00096 { 00097 write("Aus dieser Gilde kannst Du nicht austreten.\n"); 00098 return -1; 00099 } 00100 if (loss<=0) loss=20; 00101 skills=(mapping)pl->QueryProp(P_NEWSKILLS); 00102 walk_mapping(skills,"loose_ability",this_object(),loss); 00103 pl->SetProp(P_NEWSKILLS,skills); 00104 pl->SetProp(P_GUILD,0); 00105 // Event Gildenwechsel triggern 00106 EVENTD->TriggerEvent(EVT_GUILD_CHANGE, ([ 00107 E_OBJECT: pl, E_PLNAME: getuid(pl), 00108 E_ENVIRONMENT: environment(pl), 00109 E_GUILDNAME: pl->QueryProp(P_GUILD), 00110 E_LAST_GUILDNAME: gname ]) ); 00111 00112 return 1; 00113 }
| nomask int beitreten | ( | ) |
Definiert in Zeile 35 der Datei gildenmaster.c.
Benutzt DEFAULT_GUILD, E_ENVIRONMENT, E_GUILDNAME, E_LAST_GUILDNAME, E_OBJECT, E_PLNAME, EVENTD, EVT_GUILD_CHANGE, gilde, gname, GUILD_DIR, P_DEFAULT_GUILD, P_GUILD, pl und valid_guilds.
00035 { 00036 object pl,gilde; 00037 string gname,ogname; 00038 00039 if (!(pl=this_player()) || !(gilde=previous_object())) 00040 return 0; 00041 // Gilden sind Blueprints. 00042 gname=object_name(gilde); 00043 if ((ogname=(string)pl->QueryProp(P_GUILD)) && 00044 (ogname!=(((string)pl->QueryProp(P_DEFAULT_GUILD)) || DEFAULT_GUILD))) { 00045 if ((GUILD_DIR+ogname)==gname) { 00046 write("Du bist schon in dieser Gilde.\n"); 00047 return -4; 00048 } 00049 write("Du bist noch in einer anderen Gilde.\n"); 00050 return -1; 00051 } 00052 if (gname[0..7]!=GUILD_DIR || 00053 member(valid_guilds,(gname=gname[8..]))<0) { 00054 write("Diese Gilde ist leider nicht zugelassen.\n"+ 00055 "Bitte verstaendige einen Erzmagier.\n"); 00056 return -2; 00057 } 00058 pl->SetProp(P_GUILD,gname); 00059 // Event Gildenwechsel triggern 00060 EVENTD->TriggerEvent(EVT_GUILD_CHANGE, ([ 00061 E_OBJECT: pl, E_PLNAME: getuid(pl), 00062 E_ENVIRONMENT: environment(pl), 00063 E_GUILDNAME: gname, 00064 E_LAST_GUILDNAME: ogname ]) ); 00065 00066 return 1; 00067 }
| void create | ( | ) |
Definiert in Zeile 20 der Datei gildenmaster.c.
Benutzt GUILD_SAVEFILE, restore_object() und valid_guilds.
00020 { 00021 seteuid(getuid(this_object())); 00022 restore_object(GUILD_SAVEFILE); 00023 if (!pointerp(valid_guilds)) 00024 valid_guilds=({}); 00025 }

| static nomask void loose_ability | ( | mixed | key, | |
| mixed | dat, | |||
| int | loss | |||
| ) | [static] |
Definiert in Zeile 69 der Datei gildenmaster.c.
Benutzt SI_SKILLABILITY.
00069 { 00070 mixed val; 00071 00072 val=mappingp(dat)?dat[SI_SKILLABILITY]:dat; 00073 if (!intp(val) || val<=0) return; 00074 val-=(val*loss)/100;if (val<=0) val=1; 00075 if (mappingp(dat)) 00076 dat[SI_SKILLABILITY]=val; 00077 else 00078 dat=val; 00079 }
| public mixed QueryProp | ( | string | name | ) |
Definiert in Zeile 28 der Datei gildenmaster.c.
Benutzt P_VALID_GUILDS und valid_guilds.
00029 { 00030 if (name==P_VALID_GUILDS) 00031 return copy(valid_guilds); 00032 return 0; 00033 }
| nomask int RemoveGuild | ( | string | gildob | ) |
Definiert in Zeile 137 der Datei gildenmaster.c.
Benutzt GUILD_SAVEFILE, save_object(), security_check() und valid_guilds.
00137 { 00138 object tp; 00139 00140 if (!stringp(gildob) || !strlen(gildob) 00141 || !security_check()) 00142 return 0; 00143 if (member(valid_guilds, gildob) == -1) 00144 return 0; 00145 valid_guilds-=({gildob}); 00146 00147 save_object(GUILD_SAVEFILE); 00148 return 1; 00149 }

| static nomask int security_check | ( | ) | [static] |
Definiert in Zeile 115 der Datei gildenmaster.c.
Benutzt ARCH_SECURITY, process_call() und ROOTID.
Wird benutzt von AddGuild() und RemoveGuild().
00116 { 00117 if (previous_object() && geteuid(previous_object())==ROOTID) 00118 return 1; 00119 if (!process_call() && previous_object() && ARCH_SECURITY) 00120 return 1; 00121 return 0; 00122 }


| nomask int ValidGuild | ( | string | gildenob | ) |
Definiert in Zeile 151 der Datei gildenmaster.c.
Benutzt valid_guilds.
00151 { 00152 if (!stringp(gildenob)) 00153 return 0; 00154 00155 return (member(valid_guilds,gildenob)>=0); 00156 }
| string* valid_guilds = ({}) |
Definiert in Zeile 18 der Datei gildenmaster.c.
Wird benutzt von AddGuild(), beitreten(), create(), QueryProp(), RemoveGuild() und ValidGuild().
1.6.3