#include <language.h>#include <properties.h>#include <fishing.h>#include <wizlevels.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | HOME(x) "/d/ebene/fraggle/"+x |
| #define | TXT(x) HOME("txt/")+x+".txt" |
| #define | QueryDetail(o, x) member(o->QueryProp(P_DETAILS),x) |
| #define | bs(x) break_string( x, 78 ) |
Funktionen | |
| create () | |
| init () | |
| setwater (str) | |
| teste_wasser () | |
| string | DecodeType (string str) |
| DecodeFlag (i) | |
| wechdamit (str) | |
| hilf_mir () | |
| zeige_etwas (str) | |
| int | reset_vars () |
| int | set_raum (string str) |
| DoItNow (str) | |
Variablen | |
| inherit std | thing |
| private int | i |
| private int | first_setprop_line |
| private int | first_include_line |
| private int | startline |
| private int | endline |
| private string | oldfname |
| private string | waterstr |
| private string * | file_lines |
| private string | old_file |
| private string | actual_file |
Definiert in Zeile 22 der Datei babelfisch.c.
Wird benutzt von create(), get_edit_line(), give_info(), set_add_detail() und set_raum().
| #define HOME | ( | x | ) | "/d/ebene/fraggle/"+x |
Definiert in Zeile 18 der Datei babelfisch.c.
Wird benutzt von create().
Definiert in Zeile 21 der Datei babelfisch.c.
Wird benutzt von teste_wasser().
| #define TXT | ( | x | ) | HOME("txt/")+x+".txt" |
Definiert in Zeile 19 der Datei babelfisch.c.
Wird benutzt von hilf_mir() und zeige_etwas().
| create | ( | ) |
Definiert in Zeile 27 der Datei babelfisch.c.
Benutzt AddId(), create(), MALE, oldfname, P_ARTICLE, P_AUTOLOADOBJ, P_GENDER, P_LONG, P_NAME, P_NOBUY, P_SHORT, P_VALUE, P_WEIGHT, SetProp() und waterstr.
00028 { 00029 if (!clonep(this_object())) return; 00030 ::create(); 00031 waterstr="FAILURE"; oldfname=""; 00032 AddId(({"babelfisch","fisch"})); 00033 SetProp(P_NAME, "Babelfisch" ); 00034 SetProp( P_GENDER , MALE ); 00035 SetProp(P_ARTICLE, 1 ); 00036 SetProp(P_SHORT, "Ein klitzekleiner Babelfisch" ); 00037 SetProp(P_LONG, 00038 "Du siehst einen klitzekleinen Babelfisch.\n" 00039 +"Er kann Dir helfen, in Deinen Raeumen das Gewaesser zu ermitteln\n" 00040 +"und die Flags zu setzen, damit man dort Angeln kann. Hilfe kannst\n" 00041 +"Du mit dem Befehl <babel> bekommen. Bei Problemen sag Fraggle bescheid.\n"); 00042 SetProp(P_NOBUY,1); 00043 SetProp(P_VALUE,1); 00044 SetProp(P_WEIGHT,0 ); 00045 SetProp(P_AUTOLOADOBJ,1); 00046 seteuid(getuid(this_object())); 00047 }

| DecodeFlag | ( | i | ) |
Definiert in Zeile 188 der Datei babelfisch.c.
Benutzt i, W_BEACH, W_HARBOR, W_LAKE, W_OCEAN, W_POOL, W_RIVER, W_ROCK, W_STREAM und W_USER.
Wird benutzt von set_raum() und teste_wasser().
00189 { 00190 switch(i) 00191 { 00192 case W_STREAM: return "Bach"; 00193 case W_OCEAN : return "Meer" ; 00194 case W_RIVER : return "Fluss"; 00195 case W_HARBOR: return "Hafen"; 00196 case W_BEACH : return "Strand"; 00197 case W_POOL : return "Teich"; 00198 case W_LAKE : return "See"; 00199 case W_ROCK : return "Gebirgsbach"; 00200 case W_USER : return "Userdefined"; 00201 default : return "*unbekannt*"; 00202 } 00203 return "ERROR!!! Fraggle Bescheid sagen!"; 00204 }

| string DecodeType | ( | string | str | ) |
Definiert in Zeile 173 der Datei babelfisch.c.
Wird benutzt von DoItNow(), set_raum(), setwater() und teste_wasser().
00174 { 00175 switch(lower_case(str)) 00176 { 00177 case "meer" : return "W_OCEAN"; 00178 case "fluss" : return "W_RIVER"; 00179 case "hafen" : return "W_HARBOR"; 00180 case "strand": return "W_BEACH"; 00181 case "teich" : return "W_POOL"; 00182 case "see" : return "W_LAKE"; 00183 case "bach" : return "W_STREAM"; 00184 case "gebirgsbach": return "W_ROCK"; 00185 default: return "FAILURE"; 00186 } 00187 }

| DoItNow | ( | str | ) |
Definiert in Zeile 322 der Datei babelfisch.c.
Benutzt actual_file, DecodeType(), endline, file_lines, first_include_line, first_setprop_line, i und waterstr.
00323 { 00324 if(str!="ja") 00325 { 00326 write("Abbruch !\n"); 00327 return 1; 00328 } 00329 write("writing file "+actual_file+"\n"); 00330 if ( rename( actual_file,actual_file+".old") ) 00331 { 00332 write( "File: "+actual_file+" nicht gefunden/no write permission.\n"); 00333 return 1; 00334 } 00335 write("File "+actual_file+" copied to: "+actual_file+".old\n"); 00336 write("First file line: "+file_lines[1]+"\n"); 00337 write("Adding #include <fishing.h>\nbefore " 00338 +file_lines[first_include_line]+"\n"); 00339 write("Adding SetProp(P_WATER,"+DecodeType(waterstr)+");\nbefore " 00340 +file_lines[first_setprop_line]+"\n"); 00341 write("Last file line: "+file_lines[endline]+"\n"); 00342 write("...writing"); 00343 00344 for(i=1;i<first_include_line;i++)write_file(actual_file,file_lines[i]+"\n"); 00345 write_file(actual_file,"#include <fishing.h>\n"); 00346 for(;i<first_setprop_line;i++)write_file(actual_file,file_lines[i]+"\n"); 00347 write_file(actual_file," SetProp(P_WATER,"+DecodeType(waterstr)+");\n"); 00348 for(;i<=endline;i++)write_file(actual_file,file_lines[i]+"\n"); 00349 00350 write("...uploading..."); 00351 this_player()->command_me("here make"); 00352 write("Ready! (Download via ftp nicht vergessen! ;)\n"); 00353 return 1; 00354 }

| hilf_mir | ( | ) |
Definiert in Zeile 213 der Datei babelfisch.c.
Benutzt TXT.
00214 { 00215 return this_player()->more(TXT("babel")); 00216 }
| init | ( | ) |
Definiert in Zeile 49 der Datei babelfisch.c.
00050 { 00051 ::init(); 00052 if(IS_WIZARD(this_player())) 00053 { 00054 add_action( "set_raum","writewater"); 00055 add_action( "teste_wasser","wt"); 00056 add_action( "teste_wasser","analysiere"); 00057 add_action( "teste_wasser","watertest"); 00058 add_action( "setwater","setwater"); 00059 add_action( "wechdamit","brate"); 00060 add_action( "zeige_etwas","view"); 00061 add_action( "hilf_mir","babel"); 00062 } 00063 }

| int reset_vars | ( | ) |
Definiert in Zeile 222 der Datei babelfisch.c.
Benutzt actual_file, endline, file_lines, first_include_line, first_setprop_line, i, old_file und startline.
Wird benutzt von set_raum().
00223 { 00224 i =first_include_line= first_setprop_line = startline = endline = 0; 00225 file_lines = ({}); 00226 old_file = actual_file; 00227 return 1; 00228 }

| int set_raum | ( | string | str | ) |
Definiert in Zeile 229 der Datei babelfisch.c.
Benutzt actual_file, bs, DecodeFlag(), DecodeType(), endline, file_lines, first_include_line, first_setprop_line, i, input_to(), old_explode(), old_file, P_CURRENTDIR, P_WATER, QueryProp(), reset_vars(), startline, teste_wasser() und waterstr.
00230 { 00231 int r1; 00232 r1=0; 00233 if(r1=environment(this_player())->QueryProp(P_WATER)) 00234 { 00235 write("Der Typ des Gewaessers wurde bereits auf <"+DecodeFlag(r1)+"> gesetzt!\n" 00236 +"Ich kann diesen Raum nicht mehr aendern! Bitte manuell aendern!\n"); 00237 return 1; 00238 } 00239 00240 reset_vars(); 00241 00242 if(!str)actual_file=object_name(environment(this_player()))+".c"; 00243 else 00244 { 00245 if ( str[0..0] == "/" ) 00246 { 00247 if ( str[<2..] != ".c" ) 00248 actual_file = str+".c"; 00249 else 00250 actual_file = str; 00251 } 00252 else 00253 { 00254 if ( str[<2..] != ".c" ) 00255 actual_file = this_player()->QueryProp( P_CURRENTDIR )+"/"+str+".c"; 00256 else 00257 actual_file = this_player()->QueryProp( P_CURRENTDIR )+"/"+str; 00258 } 00259 } 00260 if ( file_size( actual_file )==-1 ) 00261 { 00262 write( "File: "+actual_file+" nicht gefunden!\n" ); 00263 return 1; 00264 } 00265 call_other( actual_file, "???" ); 00266 write( "\n------------------------------------------------------------------\n"); 00267 write( "Aktuelles File: "+actual_file+"\n" ); 00268 write( "Filegroesse: "+file_size( actual_file )+"\n" ); 00269 write( "Userid des Files: "+getuid( find_object( actual_file ) )+"\n" ); 00270 first_setprop_line = first_include_line = 0; 00271 old_file = read_file( actual_file ); 00272 file_lines = ({ "dummy" }) + old_explode( old_file, "\n" ); 00273 startline = 1; 00274 endline = sizeof( file_lines )-1; 00275 for( i = startline; i <= endline; i++ ) 00276 { 00277 if ( strstr( file_lines[i], "SetProp" ) != -1 ) 00278 { 00279 if ( !first_setprop_line ) first_setprop_line = i; 00280 } 00281 if ( strstr( file_lines[i], "#include" ) != -1 ) 00282 { 00283 if ( !first_include_line ) first_include_line = i; 00284 } 00285 } 00286 if ( !first_setprop_line ) 00287 { 00288 write( bs( "Es wurden im File "+actual_file+" keine "+ 00289 "Properties gefunden! Um Details hinzufuegen zu koennen, "+ 00290 "muss mindestens ein SetProp bereits vorhanden sein!" ) ); 00291 write( "-----------------------------------------------------------------\n"); 00292 return 1; 00293 } 00294 if ( !first_include_line ) 00295 { 00296 write( bs( "Es wurden im File "+actual_file+" keine "+ 00297 "Includes gefunden! Um Details hinzufuegen zu koennen, "+ 00298 "muss mindestens ein #include bereits vorhanden sein!" ) ); 00299 write( "-----------------------------------------------------------------\n"); 00300 return 1; 00301 } 00302 write("First #include @line "+first_include_line 00303 +"\nFirst SetProp @line "+first_setprop_line+"\n"); 00304 if(DecodeType(waterstr)=="FAILURE") 00305 { 00306 write("Abbruch, kein Gewaessertyp gesetzt! Starte stattdessen Test-Funktion!\n" 00307 +"Zum Schreiben musst Du diese Funktion erneut aufrufen!\n"); 00308 teste_wasser(); 00309 return 1; 00310 } 00311 write( 00312 "---------------------------------------------------------------------\n" 00313 +"Folgendes Zeilen werden in "+actual_file+" eingefuegt:\n" 00314 +" #include <fishing.h>\n" 00315 +" SetProp(P_WATER,"+DecodeType(waterstr)+");\n" 00316 +"---------------------------------------------------------------------\n" 00317 +"Das Gewaesser wird ab dann als "+capitalize(waterstr)+" identifiziert!\n\n" 00318 +"OK? [ja | irgendwas anderes fuer Abbruch]\n"); 00319 input_to("DoItNow"); 00320 return 1; 00321 }

| setwater | ( | str | ) |
Definiert in Zeile 64 der Datei babelfisch.c.
Benutzt DecodeType() und waterstr.
00065 { 00066 if(!str)str=waterstr; 00067 write( 00068 "---------------------------------------------------------------------\n" 00069 +"Der Gewaessertyp kann manuell mit setwater <typ> gesetzt werden,\n" 00070 +"Es gibt folgende Salzwasser-Typen: meer hafen strand\n" 00071 +" und folgende Suesswasser-Typen: fluss teich gebirgsbach bach see\n" 00072 +"---------------------------------------------------------------------\n"); 00073 waterstr=str; 00074 if(DecodeType(waterstr)!="FAILURE") 00075 write("Der Typ ist zur Zeit gesetzt auf "+waterstr+".\n"); 00076 if(DecodeType(waterstr)!="FAILURE") 00077 { 00078 write( 00079 "---------------------------------------------------------------------\n" 00080 +"Folgendes Zeilen muessen im Raum-source eingefuegt werden:\n" 00081 +" #include <fishing.h> -> zu den includes\n" 00082 +" SetProp(P_WATER,"+DecodeType(waterstr)+"); -> im create()-block\n"); 00083 return 1; 00084 } 00085 write("Es ist zur Zeit kein gueltiger Typ gesetzt!\n"); 00086 return 1; 00087 }

| teste_wasser | ( | ) |
Definiert in Zeile 88 der Datei babelfisch.c.
Benutzt DecodeFlag(), DecodeType(), P_WATER, QueryDetail, QueryProp() und waterstr.
Wird benutzt von set_raum().
00089 { 00090 int r1,r2; 00091 write("Teste auf Details:\n------------------\n"); 00092 if(r1=environment(this_player())->QueryProp(P_WATER)) 00093 { 00094 write("Der Typ des Gewaessers wurde bereits auf <"+DecodeFlag(r1)+"> gesetzt!\n"); 00095 return 1; 00096 } 00097 if(!QueryDetail(environment(this_player()),"wasser"))write("Kein Detail Wasser zu sehen!\n"); 00098 else write("Es wurde Wasser in diesem Raum gefunden!\n"); 00099 r2=0; 00100 waterstr="FAILURE"; 00101 if(QueryDetail(environment(this_player()),"fluss")) 00102 { 00103 r2++; 00104 write("Detail Fluss gefunden.\n"); 00105 waterstr="fluss"; 00106 } 00107 if(QueryDetail(environment(this_player()),"bach")) 00108 { 00109 r2++; 00110 write("Detail Bach gefunden.\n"); 00111 waterstr="bach"; 00112 if(QueryDetail(environment(this_player()),"gebirge")) 00113 { 00114 write("Detail Gebirge gefunden.\n"); 00115 waterstr="gebirgsbach"; 00116 } 00117 } 00118 if(QueryDetail(environment(this_player()),"meer")||QueryDetail(environment(this_player()),"ozean")) 00119 { 00120 r2++; 00121 write("Detail Meer/Ozean gefunden.\n"); 00122 waterstr="meer"; 00123 } 00124 if(QueryDetail(environment(this_player()),"hafen")) 00125 { 00126 r2++; 00127 write("Detail Hafen gefunden.\n"); 00128 waterstr="hafen"; 00129 } 00130 if(QueryDetail(environment(this_player()),"teich")) 00131 { 00132 r2++; 00133 write("detail Teich gefunden.\n"); 00134 waterstr="teich"; 00135 } 00136 if(QueryDetail(environment(this_player()),"strand")) 00137 { 00138 r2++; 00139 write("detail Strand gefunden.\n"); 00140 waterstr="strand"; 00141 } 00142 if(QueryDetail(environment(this_player()),"see")) 00143 { 00144 r2++; 00145 write("detail See gefunden.\n"); 00146 waterstr="see"; 00147 } 00148 if(r2>1) write( 00149 "Es wurden mehrere Details gefunden! Bitte ueberpruefe, ob gewaehlter Typ OK!\n"); 00150 if(r2==0) write( 00151 "Es wurde kein Detail im Raum gefunden, das einen Hinweis auf die Art\n" 00152 +"des Gewaessers schliessen laesst.\n"); 00153 if(waterstr!="FAILURE") write( 00154 "Der Gewaessertyp wurde als "+capitalize(waterstr)+" identifiziert.\n"); 00155 write( 00156 "---------------------------------------------------------------------\n" 00157 +"Der Gewaessertyp kann auch manuell mit setwater <typ> gesetzt werden.\n" 00158 +"Es gibt folgende Salzwasser-Typen: meer hafen strand\n" 00159 +"und folgende Suesswasser-Typen : fluss teich gebirgsbach bach see\n" 00160 +"---------------------------------------------------------------------\n"); 00161 if(DecodeType(waterstr)=="FAILURE") 00162 { 00163 write("Der Typ ist nicht gesetzt, bitte mit setwater <typ> setzen!\n"); 00164 return 1; 00165 } 00166 if(r2)write( 00167 "Folgende Zeilen muessen im Raum-Source eingefuegt werden:\n" 00168 +" #include <fishing.h> -> zu den includes\n" 00169 +" SetProp(P_WATER,"+DecodeType(waterstr)+"); -> im create()-block\n" 00170 +"---------------------------------------------------------------------\n"); 00171 return 1; 00172 }


| wechdamit | ( | str | ) |
Definiert in Zeile 205 der Datei babelfisch.c.
Benutzt destruct() und notify_fail().
00206 { 00207 notify_fail("Was willst Du denn braten?\n"); 00208 if(!id(str))return 0; 00209 write("Herzloserweise braetst Du den Babelfisch und isst ihn auf.\n"); 00210 destruct(this_object()); 00211 return 1; 00212 }

| zeige_etwas | ( | str | ) |
Definiert in Zeile 217 der Datei babelfisch.c.
Benutzt TXT.
00218 { 00219 return this_player()->more(TXT(str)); 00220 return 0; 00221 }
| private string actual_file |
Definiert in Zeile 25 der Datei babelfisch.c.
Wird benutzt von DoItNow(), query_add_details(), renew_variables(), reset_vars(), set_add_detail() und set_raum().
| private int endline |
Definiert in Zeile 24 der Datei babelfisch.c.
Wird benutzt von DoItNow(), query_add_details(), renew_variables(), reset_vars(), set_add_detail() und set_raum().
| private string * file_lines |
Definiert in Zeile 25 der Datei babelfisch.c.
Wird benutzt von DoItNow(), query_add_details(), renew_variables(), reset_vars(), set_add_detail() und set_raum().
| private int first_include_line |
Definiert in Zeile 24 der Datei babelfisch.c.
Wird benutzt von DoItNow(), reset_vars() und set_raum().
| private int first_setprop_line |
Definiert in Zeile 24 der Datei babelfisch.c.
Wird benutzt von DoItNow(), reset_vars() und set_raum().
| private int i |
Definiert in Zeile 24 der Datei babelfisch.c.
| private string old_file |
Definiert in Zeile 25 der Datei babelfisch.c.
Wird benutzt von query_add_details(), renew_variables(), reset_vars(), set_add_detail() und set_raum().
| private string oldfname |
Definiert in Zeile 25 der Datei babelfisch.c.
Wird benutzt von create().
| private int startline |
Definiert in Zeile 24 der Datei babelfisch.c.
Wird benutzt von query_add_details(), renew_variables(), reset_vars(), set_add_detail() und set_raum().
| inherit std thing |
Definiert in Zeile 11 der Datei babelfisch.c.
| private string waterstr |
Definiert in Zeile 25 der Datei babelfisch.c.
Wird benutzt von create(), DoItNow(), set_raum(), setwater() und teste_wasser().
1.6.3