babelfisch.c-Dateireferenz

#include <language.h>
#include <properties.h>
#include <fishing.h>
#include <wizlevels.h>
Include-Abhängigkeitsdiagramm für babelfisch.c:

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

Makro-Dokumentation

#define bs ( x   )     break_string( x, 78 )

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().

#define QueryDetail ( o,
x   )     member(o->QueryProp(P_DETAILS),x)

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().


Dokumentation der Funktionen

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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   }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

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  }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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.

Benutzt init() und IS_WIZARD.

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

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  }


Variablen-Dokumentation

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().

Erzeugt am Thu Jun 3 14:39:46 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3