dancetool.c-Dateireferenz

#include <properties.h>
#include <defines.h>
#include <wizlevels.h>
Include-Abhängigkeitsdiagramm für dancetool.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

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

Funktionen

void create ()
void init ()
int give_info ()
int renew_variables ()
int query_add_details (string str)
int set_add_detail (string str)
int get_detail_short (string str)
int get_detail_long (string str)
int save_detail (string str)

Variablen

inherit std thing
private int i
private int counter
private int first_detail_line
private int startline
private int endline
private string * detail_shorts
private string * newstring
private string * file_lines
private string * new_lines
private string detail_long
private string save_string
private string old_file
private string new_file
private string actual_file
private string detail_text

Makro-Dokumentation

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

Definiert in Zeile 13 der Datei dancetool.c.


Dokumentation der Funktionen

void create (  ) 

Definiert in Zeile 20 der Datei dancetool.c.

Benutzt AddId(), bs, create(), FEMALE, P_ARTICLE, P_AUTOLOADOBJ, P_GENDER, P_LONG, P_NAME, P_NOBUY, P_NODROP, P_SHORT, P_VALUE, P_WEIGHT und SetProp().

00021 {
00022    ::create();
00023    SetProp( P_AUTOLOADOBJ,1 );
00024    SetProp( P_NAME, "Dancers Sandtigerkralle" );
00025    SetProp( P_GENDER, FEMALE );
00026    SetProp( P_SHORT, "Dancers Sandtigerkralle" );
00027    SetProp( P_LONG, bs( "Die Sandtigerkralle von Dancer ist "+
00028               "ein kleines Tool, mit dem Du gewoehnliche Details "+
00029               "in allen Raeumen nachschauen und in Deinen eigenen "+
00030               "hinzufuegen kannst. Weitere Informationen kannst Du "+
00031               "mit dem Befehl <dancetool> bekommen." ) );
00032    SetProp( P_ARTICLE, 2 );
00033    SetProp( P_WEIGHT, 500 );
00034    SetProp( P_VALUE, 10000 );
00035    SetProp( P_NOBUY, 1 );
00036    SetProp( P_NODROP, 1 );
00037    AddId( "kralle" );
00038    AddId( "sandtigerkralle" );
00039    AddId( "tigerkralle" );
00040    AddId( "dancetool" );
00041    AddId( "dancertool" );
00042    seteuid(getuid(this_object()));
00043 }

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

int get_detail_long ( string  str  ) 

Definiert in Zeile 242 der Datei dancetool.c.

00243 {
00244    if ( str == "q" )
00245    {
00246      write( "Abgebrochen!\n" );
00247      write( "-----------------------------------------------------------------------------\n" );
00248      return 1;
00249    }
00250    detail_long = break_string( "break_string( \""+str, 60 ); 
00251    save_string = "  AddDetail( ({ ";        
00252    for( i = 0; i < sizeof( detail_shorts ); i ++ )
00253    {
00254       if ( !(i%3) && i )
00255         save_string = save_string + "\n                ";
00256       if ( i < sizeof( detail_shorts ) - 1 ) 
00257          detail_shorts[ i ] = "\""+detail_shorts[ i ]+"\", ";
00258       else
00259          detail_shorts[ i ] = "\""+detail_shorts[ i ]+"\" ";
00260       save_string = save_string + detail_shorts[ i ];      
00261       write( detail_shorts[ i ]+"\n" );
00262    }
00263    save_string = save_string + "}), \n";
00264    newstring = old_explode( detail_long,"\n");
00265    i = 0; 
00266    for( i = 0; i<sizeof(newstring); i++) 
00267    {
00268       if ( i < sizeof(newstring)-1 )
00269       {
00270          if ( i==0||!i )
00271           save_string = save_string +"                "+newstring[i]+" \"+\n";
00272          else
00273           save_string = save_string +"                \""+ newstring[i]+" \"+\n";
00274  
00275       }
00276       else
00277       {
00278          if ( i==0||!i )
00279           save_string = save_string +"                "+ newstring[i]+"\", 78 ) );";
00280          else
00281           save_string = save_string +"                \""+ newstring[i]+"\", 78 ) );";
00282       }
00283    }
00284    new_lines += ({ "dummy" });
00285    for ( i = 1; i < first_detail_line; i++ )
00286    {
00287      new_lines += ({ file_lines[i] });
00288    }                                  
00289    new_lines += ({ save_string });
00290    for ( i = first_detail_line + 1; i <= endline+1; i++ )
00291      new_lines += ({ file_lines[ i - 1 ] });
00292    write( "-----------------------------------------------------------------------------\n" );
00293    write( bs( "Folgende Zeilen werden in die Datei "+actual_file+" geschrieben, falls `j` eingegeben wird:\n" ) );
00294    write( save_string+"\n" );
00295    write( "\nDetail speichern? (j/n)\n->" );
00296    input_to( "save_detail" );
00297    return 1;
00298 }

int get_detail_short ( string  str  ) 

Definiert in Zeile 224 der Datei dancetool.c.

Benutzt detail_shorts und old_explode().

00225 {
00226    string dummy;
00227    if ( str == "q" )
00228    {
00229      tell_object( this_player(), "Abgebrochen!\n" );
00230      return 1;
00231    }
00232    detail_shorts = map( old_explode( str, " " ),#'lower_case);
00233    dummy = break_string(implode(sort_array(map(detail_shorts,#'lower_case),#'>),", ")+":",78);
00234    write( "-----------------------------------------------------------------------------\n" );
00235    write( bs ( "Bitte Beschreibung eingeben fuer das Detail mit den Namen \n" ) );
00236    write( dummy+"( Abbruch mit 'q'.)\n->" );
00237    input_to( "get_detail_long" );
00238    return 1;
00239 }

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

int give_info (  ) 

Definiert in Zeile 60 der Datei dancetool.c.

Benutzt bs.

00061 {
00062    write( "-----------------------------------------------------------------------------\n" );
00063    write( "Die Sandtigerkralle ermoeglicht folgende Befehle:\n" );
00064    write( "\nadd_detail, add_details oder ad:\n" );
00065    write( bs( "Ruft einen kleinen AddDetail-Editor auf, mit dem Du "+
00066       "Details in Deine eigenen Raeume einfuegen kannst. Als Argument "+
00067       "kann hinter den Befehl der Filename eines Raumes eingegeben "+
00068       "werden. Wird kein Argument eingegeben, so wird der Raum "+
00069       "genommen, in dem Du gerade stehst. Achtung: Es koennen "+
00070       "nur Details in Raeume eingefuegt haben, die bereits ein "+
00071       "AddDetail in ihrem create() haben. Du musst die Lupe haben, "+
00072       "da der Raum nach dem Einfuegen des Details automatisch "+
00073       "neu geladen wird." ) );
00074    write( "\nshow_detail, show_details oder sd:\n" );
00075    write( bs( "Zeigt Dir alle Zeilen des angesprochenen Raumes bzw. "+
00076       "des Raumes in dem Du stehst, die ein AddDetail "+
00077       "beinhalten. So kannst Du kontrollieren, welche Details "+
00078       "Du schon eingebaut hast." ) );
00079    write( "-----------------------------------------------------------------------------\n" );
00080    return 1;
00081 }

void init (  ) 

Definiert in Zeile 46 der Datei dancetool.c.

Benutzt init() und IS_LEARNER.

00047 {
00048   if (!IS_LEARNER(this_player())) return;
00049   ::init();
00050   add_action("query_add_details", "show_detail" );
00051   add_action("query_add_details", "show_details" );
00052   add_action("query_add_details", "sd" );
00053   add_action("set_add_detail", "add_detail" );
00054   add_action("set_add_detail", "add_details" );
00055   add_action("set_add_detail", "ad" );
00056   add_action("give_info", "dancetool" );
00057 }

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

int query_add_details ( string  str  ) 

Definiert in Zeile 94 der Datei dancetool.c.

Benutzt actual_file, counter, endline, file_lines, first_detail_line, i, new_file, new_lines, old_explode(), old_file, P_CURRENTDIR und startline.

00095 {
00096    string old_file, *file_lines, new_file, *new_lines, actual_file;        
00097    int i, counter, first_detail_line, startline, endline;      
00098  
00099    actual_file = "";
00100                             
00101    if ( !str ) actual_file = object_name( environment( this_player() ) )+".c";
00102    else       
00103    {
00104       if ( str[0..0] == "/" )
00105       {
00106          if ( str[<2..] != ".c" )
00107              actual_file = str+".c";
00108          else
00109              actual_file = str;
00110       }
00111       else
00112       {
00113          if ( str[<2..] != ".c" )
00114              actual_file = this_player()->QueryProp( P_CURRENTDIR )+
00115                            "/"+str+".c";
00116          else
00117              actual_file = this_player()->QueryProp( P_CURRENTDIR )+
00118                            "/"+str;
00119       }
00120    }
00121    if ( file_size( actual_file )==-1 )
00122    {
00123      write( "File: "+actual_file+" nicht gefunden!\n" );
00124      return 1;
00125    }
00126    call_other( actual_file, "???" );
00127    write( "\n-----------------------------------------------------------------------------\n" );
00128    write( "Aktuelles File:   "+actual_file+"\n" );
00129    write( "Filegroesse:      "+file_size( actual_file )+"\n" );
00130    write( "Userid des Files: "+getuid( find_object( actual_file ) )+"\n" );
00131    new_file = "";
00132    counter = 0;
00133    first_detail_line = 0;
00134    old_file = read_file( actual_file );
00135    file_lines = ({ "dummy" }) + old_explode( old_file, "\n" );          
00136    startline = 1;
00137    endline = sizeof( file_lines )-1;        
00138    for( i = startline; i <= endline; i++ )
00139    {                                                        
00140       new_file = new_file+file_lines[ i ]+"\n";
00141       if ( strstr( file_lines[i], "AddDetail" ) != -1 )
00142       {
00143          write( file_lines[i]+"\n" );
00144          if ( !first_detail_line ) first_detail_line = i;
00145           counter = counter + 1;
00146       }
00147    }                                
00148    write( "Details found: "+counter+".\n" ); 
00149    write( "-----------------------------------------------------------------------------\n" );
00150    return 1;
00151 }    

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

int renew_variables (  ) 

Definiert in Zeile 84 der Datei dancetool.c.

Benutzt actual_file, counter, detail_long, detail_shorts, detail_text, endline, file_lines, first_detail_line, i, new_file, new_lines, newstring, old_file, save_string und startline.

Wird benutzt von set_add_detail().

00085 {
00086    i = counter = first_detail_line = startline = endline = 0; 
00087    detail_shorts = newstring = file_lines = new_lines = ({});
00088    detail_long = save_string = old_file = new_file = actual_file = detail_text = 0;
00089    return 1;
00090 } 

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

int save_detail ( string  str  ) 

Definiert in Zeile 301 der Datei dancetool.c.

00302 {  
00303    if ( str != "j" && str != "ja" && str != "Ja" && str != "J" )
00304    {
00305      write( "Abgebrochen!\n" );
00306      write( "-----------------------------------------------------------------------------\n" );
00307      return 1;
00308    }   
00309    if ( !rm( actual_file ) )
00310    {
00311       write( "File: "+actual_file+" wurde nicht gefunden!\n" );
00312       return 1;
00313    }                   
00314    for ( i = 2; i <= endline+2; i++ )
00315      write_file( actual_file, new_lines[i]+"\n" ); 
00316      //write( new_lines[i]+"\n" ); 
00317    write( "Das Detail wurde in die Datei geschrieben.\n" );
00318    this_player()->command_me( "here make" );
00319    write( "-----------------------------------------------------------------------------\n" );  
00320    return 1;
00321 }

int set_add_detail ( string  str  ) 

Definiert in Zeile 154 der Datei dancetool.c.

Benutzt actual_file, bs, counter, endline, file_lines, first_detail_line, i, input_to(), new_file, new_lines, old_explode(), old_file, P_CURRENTDIR, renew_variables() und startline.

00155 {
00156  
00157    renew_variables();
00158                             
00159    if ( !str ) actual_file = object_name( environment( this_player() ) )+".c";
00160    else       
00161    {
00162       if ( str[0..0] == "/" )
00163       {
00164          if ( str[<2..] != ".c" )
00165              actual_file = str+".c";
00166          else
00167              actual_file = str;
00168       }
00169       else
00170       {
00171          if ( str[<2..] != ".c" )
00172              actual_file = this_player()->QueryProp( P_CURRENTDIR )+
00173                            "/"+str+".c";
00174          else
00175              actual_file = this_player()->QueryProp( P_CURRENTDIR )+
00176                            "/"+str;
00177       }
00178    }
00179    if ( file_size( actual_file )==-1 )
00180    {
00181      write( "File: "+actual_file+" nicht gefunden!\n" );
00182      return 1;
00183    }
00184    call_other( actual_file, "???" );
00185    write( "\n-----------------------------------------------------------------------------\n" );
00186    write( "Aktuelles File:   "+actual_file+"\n" );
00187    write( "Filegroesse:      "+file_size( actual_file )+"\n" );
00188    write( "Userid des Files: "+getuid( find_object( actual_file ) )+"\n" );
00189    new_file = "";
00190    new_lines = ({ "dummy" });
00191    counter = 0;
00192    first_detail_line = 0;
00193    old_file = read_file( actual_file );
00194    file_lines = ({ "dummy" }) + old_explode( old_file, "\n" );          
00195    startline = 1;
00196    endline = sizeof( file_lines )-1;        
00197    for( i = startline; i <= endline; i++ )
00198    {                                                        
00199       new_file = new_file+file_lines[ i ]+"\n";
00200       if ( strstr( file_lines[i], "AddDetail" ) != -1 )
00201       {
00202         if ( !first_detail_line ) first_detail_line = i;
00203         counter = counter + 1;
00204       }
00205    }
00206    if ( !first_detail_line )
00207    {
00208       write( bs( "Es wurden im File "+actual_file+" keine "+
00209          "Details gefunden! Um Details hinzufuegen zu koennen, "+
00210          "muss mindestens ein AddDetail bereits vorhanden sein!" ) );
00211       write( "-----------------------------------------------------------------------------\n" );
00212       return 1;
00213    }
00214    write( "Details found:    "+counter+".\n" );
00215    write( "-----------------------------------------------------------------------------\n" ); 
00216    write( "Bitte die Detail-Kuerzel eingeben:\n(Bemerkung: "+
00217           "die Kuerzel muessen mit Leerzeichen getrennt sein, "+
00218           "Abbruch mit 'q'.)\n->" );
00219    input_to( "get_detail_short" );
00220    return 1;
00221 }    

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


Variablen-Dokumentation

private string actual_file

Definiert in Zeile 17 der Datei dancetool.c.

private int counter
private string detail_long

Definiert in Zeile 17 der Datei dancetool.c.

Wird benutzt von renew_variables().

private string* detail_shorts

Definiert in Zeile 16 der Datei dancetool.c.

Wird benutzt von get_detail_short() und renew_variables().

private string detail_text

Definiert in Zeile 17 der Datei dancetool.c.

Wird benutzt von renew_variables().

private int endline

Definiert in Zeile 15 der Datei dancetool.c.

private string * file_lines

Definiert in Zeile 16 der Datei dancetool.c.

private int first_detail_line

Definiert in Zeile 15 der Datei dancetool.c.

Wird benutzt von query_add_details(), renew_variables() und set_add_detail().

private int i

Definiert in Zeile 15 der Datei dancetool.c.

private string new_file

Definiert in Zeile 17 der Datei dancetool.c.

Wird benutzt von query_add_details(), renew_variables() und set_add_detail().

private string * new_lines

Definiert in Zeile 16 der Datei dancetool.c.

Wird benutzt von query_add_details(), renew_variables() und set_add_detail().

private string * newstring

Definiert in Zeile 16 der Datei dancetool.c.

Wird benutzt von renew_variables().

private string old_file

Definiert in Zeile 17 der Datei dancetool.c.

private string save_string

Definiert in Zeile 17 der Datei dancetool.c.

Wird benutzt von renew_variables().

private int startline

Definiert in Zeile 15 der Datei dancetool.c.

inherit std thing

Definiert in Zeile 7 der Datei dancetool.c.

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