#include <properties.h>#include <defines.h>#include <wizlevels.h>
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 |
Definiert in Zeile 13 der Datei dancetool.c.
| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| 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 }

| private string actual_file |
Definiert in Zeile 17 der Datei dancetool.c.
| private int counter |
Definiert in Zeile 15 der Datei dancetool.c.
Wird benutzt von Add_Quest(), adjust_percents(), create(), heart_beat(), query_add_details(), ReadNewQuest(), renew_variables(), RestartBeats(), set_add_detail() und WalkerList().
| 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.
1.6.3