forked from jexp/TinyMacros
-
Notifications
You must be signed in to change notification settings - Fork 0
/
loading.tf
563 lines (508 loc) · 21.5 KB
/
loading.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
; $Log: loading.tf,v $
; Revision 1.43 2002/12/06 15:33:54 mh14
; /custom und damit auch alles was laedt und speichert kennt jetzt \-g für gilde
;
; Revision 1.42 2002/12/03 03:46:34 mh14
; Sprachkonzept geändert, kein LANG mehr sondern user_lang (-L) und mud_lang (-l) neue mak_loc zu direkten Ersetzen von Strings in Makrobodies, /addh kennt jetz locales für verschiedene Hilfeversionen
;
; Revision 1.41 2002/09/28 00:51:12 mh14
; bug mit -a behoben
;
; Revision 1.40 2002/09/18 13:19:07 thufhnik
; is_file_loaded entbuggt
;
; Revision 1.39 2002/06/13 08:24:26 mh14
; bei -U kann jetzt der Text angegeben werden, der beim /configure der Paketauswahl angezeigt werden soll, damit entfallen die extra /cfg_info fuer die Paketauswahl
;
; Revision 1.38 2002/04/21 13:09:30 mh14
; doku -U -E
;
; Revision 1.37 2002/04/16 13:02:17 mh14
; /custom erzeugt jetzt keine globalen Variablen mehr (grosse Fehlerursache), es nutzt /ret_vars aus util.tf, die Files wurden darauf angepasst
;
; Revision 1.36 2002/04/16 12:16:44 mh14
; ladereihenfolge *.cfg *.def vor *.tf -U und -E als Optionen von /mload, config system
;
; Revision 1.35 2002/03/27 01:36:41 mh14
; Aenderung Testsystem
;
; Revision 1.34 2002/02/13 14:38:03 mh14
; /custom -a bei bedarf / dranhaengen
;
; Revision 1.33 2002/02/13 14:11:34 mh14
; /custom nochmal umgestellt, mit der option -a[string] haengt es makdir oder string vor den pfad dran, ansonsten ist es wieder relativ
;
; Revision 1.32 2002/02/11 01:34:28 mh14
; bug bei /mload -m entfernt
;
; Revision 1.31 2002/02/09 15:21:00 mh14
; /custom haengt jetzt %makdir an %load_dir an, WICHTIG inkompatible aenderung! lists.tf updaten
;
; Revision 1.30 2002/01/11 14:15:46 mh14
; mload hat jetzt den Parameter -m fuer multiples laden von files z.B. /mload -m -c -dways *.tf
;
; Revision 1.29 2001/12/18 00:02:26 mh14
; requirre gesaeubert
;
; Revision 1.28 2001/10/29 18:32:27 nieten
; Hilfe zu /custom korrigiert
; "/addh hooks" in "/addh hook" korrigiert
;
; Revision 1.27 2001/10/25 13:20:24 mh14
; doku mload wg. load_init_config
;
; Revision 1.26 2001/10/25 13:07:40 mh14
; load_init_config fuer init Makros fuer TF-Files nach Laden in mload eingebaut
;
; Revision 1.25 2001/10/10 22:10:21 mh14
; Default-Konfiguration in .tf Files verschoben
;
; Revision 1.24 2001/10/03 09:40:16 mh14
; connection sachen in worldconnect.tf verschoben
;
; Revision 1.23 2001/10/02 00:09:06 mh14
; bug in load_config entfernt (bei inner loads in den geladenen config-files
;
; Revision 1.22 2001/10/01 18:54:38 mh14
; bug in load_config entfernt
;
; Revision 1.21 2001/09/30 01:12:59 mh14
; load_config debuggt
; is_file_loaded hinzugefuegt, wird z.b. in user_connect genutzt
; connect hook um user_connect erweitert
; escapen des dateinamens in get_filename_file_info ausgelagert
;
; Revision 1.20 2001/09/27 21:20:06 nieten
; /file_info kommt nun auch mit Pfaden zurecht
;
; Revision 1.19 2001/09/25 21:21:39 mh14
; warning bei xx_connect_count raus, generelle Methode fuer Einfaerben von Text erfolgsabhaengig (siehe util.echo.tf) , diese in list_required eingebaut, /load_config zum Laden von Konfigurationsdateien
;
; Revision 1.18 2001/09/19 19:31:05 mh14
; dateinamen mit - jetzt mit mload moeglich
;
; Revision 1.17 2001/09/17 14:55:57 nieten
; /echo_file_info geaendert, damit /mload auch mit Pfadangaben funzt
;
; Revision 1.16 2001/09/17 10:46:24 mh14
; *.i18n wird bei /mload mit geladen
;
; Revision 1.15 2001/09/15 19:48:36 mh14
; custom um -d erweitert, histsize jetzt im çonnect hook
;
; Revision 1.14 2001/09/14 22:18:49 mh14
; neue parameter (-vvarname, -l, -p) fuer custom und damit /mload,/loadlist,/savelist
;
; Revision 1.13 2001/09/12 22:25:40 mh14
; customize.cfg wird zusaetzlich geladen
;
; Revision 1.12 2001/09/09 19:06:22 mh14
; remove_cvs verschoben, bug in list_required
;
; Revision 1.11 2001/09/07 00:55:23 mh14
; Versionscheck beim Laden
;
; Revision 1.10 2001/09/07 00:06:51 mh14
; /load_config generell als /load_depend fuer zugeordnete Dateien
;
; Revision 1.9 2001/09/06 22:32:34 mh14
; etwas andere Fehlermeldung beim Laden
;
; Revision 1.8 2001/09/06 22:13:19 mh14
; wieder ganz
;
; Revision 1.7 2001/09/06 22:02:31 mh14
; kuenstlicher Fehler
;
; Revision 1.6 2001/09/06 21:11:44 mh14
; Log eingefuegt
;
/set loading_tf_version $Id$
/set [email protected]
/set loading_tf_requires lists.tf util.hooks.tf util.prompts.tf
/set loading_tf_desc /mload, /setos, Speichern und Laden von Variablen
; ********************* BEGIN CONFIG ********************
; in user_config.cfg setzen
;/set load_all_quiet=0
/cfg_info all loading Laden_von_Files
/cfg_info all loading SUFFIX Dateiendungen:file_suffixes
/set_var file_suffixes .tf .mak
/cfg_info all loading INFO Fileinfo_beim_Laden
/cfg_set all loading INFO 1
/ifdo CFG_ALL_LOADING_INFO \
/add_to_hook loaded /echo_file_info \%1
/if (TF_TEST_RUN) \
/add_to_hook loaded /add_to_hook run_test /load_depend %2 .test%;\
/endif
/ifdef CFG_ALL_LOADING_INFO user_echo_file_info = \
/if (file_info(fi_filename,"version") =~ "$Id$") \
/let tmp=%;\
/test %{fi_filename}_version:=file_name%;\
/endif%;\
; Ausgabe CVS Informatione (Filename, Version, Autor)
/ifecho file_info(fi_filename,"version")!~"" \
-aCgreen $[remove_cvs(file_info(fi_filename,"version"))] ($[file_info(fi_filename,"author")])%;\
/if (!load_quiet) \
; Ausgabe Inhalt
/ifecho file_info(fi_filename,"version")!~"" \
$[file_info(fi_filename,"desc")]%;\
; Ausgabe benoetigte Dateien
/ifecho file_info(fi_filename,"requires")!~"" \
-p Requires: $[list_required(fi_filename)]%;\
/endif%;
; ********************* END CONFIG **********************
/addh info \
Dieser Hook wird vor dem Laden eines Files mit dem puren Dateinamen als Parameter ausgefuehrt.
/addh see /mload
/addh pre_load hook
/add_to_hook pre_load /set file_name=%1
/addh info \
Dieser Hook wird zum Neuladen aller geladenen Dateien ausgefuehrt, er wird von /mload mit den bisher geladenen Dateien gefuellt. Er enthaelt z. Zt. nur Aufrufe von /mload, kann aber durch andere Kommandos ergaenzt werden, die beim Neuladen der Files notwendig werden.
/addh see /mload
/addh reload hook
/addh info \
Wertet den '-c'-Parameter der Speicher- und Ladekommandos aus und gibt das entsprechende offset directory zurueck. Ggf. muss noch das Basis-Makro Directory davorgehaengt werden (bei Speicherkommandos).
/addh syn \
-m bedeutet multiple Files der Filename ist dann ein Pattern z.B. *.tf, es wird dann die Variable load_multi auf 1 gesetzt@{N}\
-a erzeugt absolute Pfade, dh. vor den offset wird noch %makdir gehaengt@{N}\
-c nimmt ${world_host} als Offset oder, wenn ${world_host} nicht gesetzt ist, dann %default_world_host.@{N}\
-cp nimmt ${world_host} als Offset oder, wenn ${world_host} nicht gesetzt ist, dann %default_world_host und als zweiten Offset ${world_character} bzw. %default_world_character.@{N}\
-coffset nimmt offset als Offset ,)
/addh opt \
-U wenn CFG_USE_FILE (z.b. CFG_USE_LOADING) existiert und 0 ist wird das File nicht geladen, sonst ja@{N}\
-Etf-expr wenn die TF-Expression true ist, wird das File geladen sonst nicht@{N}\
-p[char] Character@{N}\
-g[gilde] Gilde@{N}\
-c[host] Host (Mud)@{N}\
-l[lang] Mudsprache (Language)@{N}\
-L[lang] Nutzersprache (Language)@{N}\
-q quiet (ohne Meldungen)@{N}\
-vvarname Inhalt der Variablen (z.b. -vp_guild -> gildenbez.)@{N}\
-ddirname dirname uebernommen (z.b. -dnpcs -> npcs.)
/addh ex \
'-cmg.mud.de' liefert 'mg.mud.de/' als Offset fuer mudspezifische Dateien und@{N}\
'-c -p' liefert bei mir 'mg.mud.de/mesirii/'@{N}\
'-Ep_sub_guild=~"Abwehr" laedt das File nur wenn der Zaubererzweig "Abwehr" ist
/addh version 1.02
/addh custom mak
/def custom = \
/test getopts("g:d:v:l:L:c:p:qma:E:U:",0)%;\
/let load_dir=%;\
/test load_dir:=strcat(load_dir,custom_opt(opt_l,map_locale(mud_lang)))%;\
/test load_dir:=strcat(load_dir,custom_opt(opt_L,map_locale(user_lang)))%;\
/test load_dir:=strcat(load_dir,custom_opt(opt_c,custom_opt_world("host")))%;\
/test load_dir:=strcat(load_dir,custom_opt(opt_p,custom_opt_world("character")))%;\
/test load_dir:=strcat(load_dir,custom_opt(opt_g,p_guild))%;\
/test load_dir:=strcat(load_dir,custom_opt((opt_v=~"0")?0 :"",inner_var(2,"opt_v")))%;\
/test load_dir:=strcat(load_dir,custom_opt(opt_d))%;\
/let load_multi=%opt_m%;\
/let load_do=1%;\
/if (opt_E!~"0" & opt_E!~"") \
/test load_do:=%opt_E%;\
/endif%;\
/test load_do:=load_do & custom_use(load_dir,{*})%;\
/if (opt_a!~"0") \
/let a_load_dir=%{opt_a-%makdir}%;\
/if (a_load_dir!/"*/") /let a_load_dir=%a_load_dir/%; /endif%;\
/let load_dir=%{a_load_dir}%load_dir%;\
/endif%;\
/let load_quiet=$[opt_q | load_all_quiet]%;\
/let load_file=%*%;\
;/echo %load_dir %load_file%;\
/return ret_vars('load_file','load_dir','load_quiet','load_do','load_multi')
/def custom_use = \
/if (opt_U!~"0" & !opt_m) \
; /if (!opt_m) \
/let cfg_use_var=CFG_%;\
/let cfg_use_file=$[toupper(replace(".","_",{2}))]%;\
/if (cfg_use_file=/"*_TF") /let cfg_use_file=$[substr(cfg_use_file,0,-3)]%; /endif%;\
/let cfg_use_dir=$[toupper(replace(".","_",replace("/"," ",{1})))]%;\
/let cfg_use_var=CFG_USE_$[ (cfg_use_dir!~"") ? strcat(replace(" ","_",cfg_use_dir),"_") : ""]%{cfg_use_file}%;\
; /let cfg_use_var=$[toupper(replace(".","_",replace("/","_",strcat("CFG_USE_",{1},{2}))))]%;\
; /if (opt_l!~"0") /let cfg_use_var=%{cfg_use_var}_LANG%; /endif%;\
; /if (opt_c!~"0") /let cfg_use_var=%{cfg_use_var}_MUD%; /endif%;\
; /if (opt_p!~"0") /let cfg_use_var=%{cfg_use_var}_PLAYER%; /endif%;\
; /if (cfg_use_var=/"*_TF") /let cfg_use_var=$[substr(cfg_use_var,0,-3)]%; /endif%;\
; /echo -aCmagenta dir: %cfg_use_dir file: %cfg_use_file all: %cfg_use_var%;\
/if (opt_U!~"") \
/cfg_info USE %cfg_use_dir %cfg_use_file %opt_U%;\
/endif%;\
/if (!isVar(cfg_use_var)) \
/set %cfg_use_var=1%;\
/return 1%;\
/else \
/return %cfg_use_var%;\
/endif%;\
/endif%;\
/return 1%;
/def custom_opt = \
/let param=%{1}%;\
/if (param!~"0") \
/if (param=~"") \
/test param:={2}%; \
/endif%;\
/return strcat(param,"/")%;\
/endif%;\
/return ""%;
/def custom_opt_world = \
/result (world_info({1})!~"")?world_info({1}):default_world_%1
/addh info \
Laedt ein Makrofile. Dabei kann die Endung '.tf' oder '.mak' weggelassen werden.@{N}\
Die geladenen Dateien werden im Hookmakro reload zum Neuladen gespeichert.\
Mit '/mload -c' werden die Dateien aus dem Verzeichnis ${world_host} geladen.@{N}\
Es wird der Hook loaded ausgefuehrt, der nach dem Laden eines Files mit dem Dateinamen (1), mit vollem Pfad(2) und mit den Ladeparametern(-2) ausgefuehrt wird. (z.B. /eval_hook loaded kampf.tf mg.mud.de/kampf/kampf.tf -c -dkampf)@{N}\
Wenn ein Makro dateiname_tf_init definiert ist, wird dieses nach dem Laden ausgefuehrt (load_init_config) um ggf. eine Initialisierung nach dem Fileladen zu ermoeglichen.
/addh opt \
-m bedeutet multiple Files der Filename ist dann ein Pattern z.B. *.tf, es wird pro File ein /mload aufgerufen@{N}\
/addh syn /mload [-q] [-p[directory]] [-c[directory]] -mfile[.tf|.mak]
/addh see re, purge, load, load_init_config, custom
/addh mak hook_reload, add_to_hook, eval_hook
/addh hook loaded, reload
/addh changes /custom wurde ausgegliedert.
/addh version 1.02
/addh mload comm
/def mload = \
/let fullparam=%*%;\
/custom %*%;\
/test %?%;\
/let mload_file=%load_file%;\
/let mload_base_file=%mload_file%;\
/let off=$[strrchr(mload_base_file,".")]%;\
/if (off>-1) \
/let mload_base_file=$[substr(mload_file,0,off)]%;\
/endif%;\
/if (!load_do) /return%; /endif%;\
/if (load_multi) \
; /unset load_multi%;\
/let multi_files=$(/sys echo %load_dir%mload_file)%;\
;/echo %load_dir%mload_file%;\
/let multi_files=$[substr(multi_files,1)]%;\
;/let multi_files%;\
/if (multi_files=~strcat(load_dir,mload_file)) \
/break%;\
/endif%;\
/let off=$[strchr(multi_files," ")]%;\
/while (strlen(multi_files)>0) \
/if (off==-1) \
/load %multi_files%;\
/let multi_files=%;\
/else \
/load $[substr(multi_files,0,off)]%;\
/let multi_files=$[substr(multi_files,off+1)]%;\
/let off=$[strchr(multi_files," ")]%;\
/endif%;\
/done%;\
/break%;\
/endif%;\
/eval_hook pre_load %mload_file %fullparam%;\
; /echo /load %load_dir%mload_base_file.cfg%;\
/load %load_dir%mload_base_file.cfg%;\
/load %load_dir%mload_base_file.def%;\
/try_load %{load_dir-.} %mload_file %file_suffixes%;\
/test %?%;\
/if (!{?}) \
/ifecho !load_quiet -aB Fehler: %load_dir%mload_file nicht gefunden!!%;\
/break%;\
/endif%;\
/add_to_hook reload /mload %fullparam%;\
/load_init_config %mload_file%;\
/load_depend %mload_fullfile .i18n%;\
; /load_depend %mload_fullfile .def%;\
; /load_depend %mload_fullfile .cfg%;\
/eval_hook loaded %mload_file %mload_fullfile %fullparam%;\
/addtolist loaded_files %mload_fullfile %fullparam%;\
/addh info \
fuehrt ein Initialisierungsmakro nach dem Laden des Files aus. Der Parameter ist der Dateiname, dieser wird wie bei den file_info Variablen als Praefix vor das _init gesetzt
/addh ex /load_init_config loading.tf -> aufruf von loading_tf_init wenn existent
/addh load_init_config mak
/def load_init_config = \
/let init_name=$[strcat(get_filename_file_info({1}),"_init")]%;\
/if (ismacro(init_name)) \
/eval -s0 /%init_name%;\
/endif%;
/addh info laedt die beiden Konfigurationsdateien name.def und name.cfg aus dem ueber die Parameter spezifizierten Verzeichnis
/addh opt siehe /custom
/addh ex /load_config user_config
/addh load_config mak
/def load_config = \
/custom %*%;\
/test %{?}%;\
/let load_config_file=%load_file%;\
/let off=$[strrchr(load_config_file,".")]%;\
/if (off>-1) \
/let load_config_file=$[substr(load_config_file,0,off)]%;\
/endif%;\
/let load_config_load_dir=%{load_dir-.}%;\
/try_load %load_config_load_dir %load_config_file.cfg%;\
/test %?%;\
/let load_config_echo=Load Config: $[format_success_text((!{?})?"warning":"success",strcat(load_config_load_dir,load_config_file,".cfg"))]%;\
/try_load %load_config_load_dir %load_config_file.def%;\
/test %?%;\
/let load_config_echo=$[strcat(load_config_echo," ",\
format_success_text((!{?})?"warning":"success",\
strcat(load_config_load_dir,load_config_file,".def")))]%;\
/ifecho !load_quiet -p %load_config_echo
/addh info \
Laedt abhaengige Dateien fuer die, mit vollem Pfad uebergebene, Makrodatei. Dabei enthaelt dateiname.def die Standardeinstellungen und sollte nicht vom Benutzer veraendert werden, dazu ist die Kopie namens dateiname.cfg da. Bei einer Neuinstallation wird dateiname.def ueberschrieben, damit dort auch aktuelle Aenderungen (z. B. neue Konfigurationsparameter) zum Tragen kommen. In Dateiname.test kann eine Testdatei stehen.
/addh syn /load_depend voller_dateiname
/addh ex /load_depend loading.tf
/addh load_depend mak
/def load_depend = \
/let param=%1%;\
/let pos=$[strrchr(param,".")]%;\
/if (pos>-1) \
/test param:=substr(param,0,pos)%;\
/load -q %{param}%2%;\
/endif%;
/addh info \
Wird von /mload benutzt, um eine Datei mit verschiedenen Dateiendungen zu laden. Standardmaessig stehen die Dateiendungen in der Variablen 'file_suffixes'. Wenn das Verzeichnis nicht gegeben ist (also tf suchen soll), dann statt des Verzeichnisses einen Punkt (.) uebergeben.
/addh file_suffixes var
/addh syn /try_load (dir|.) file possible_suffix_list
/addh ex /try_load ~/makros loading .tf .mak
/addh try_load mak
/def try_load = \
/if ({1}!~".") /let tl_base=%1%; /else /let tl_base=%; /endif%;\
/let tl_file=%2%;\
/let tl_suff=%;\
/shift 2%;\
/load -q %{tl_base}%{tl_file}%;\
/let load_res=%?%;\
/while (!load_res & {#}>0) \
/let tl_suff=%1%;\
/shift%;\
/load -q %{tl_base}%{tl_file}%{tl_suff}%;\
/let load_res=%?%;\
/done%;\
/if (load_res) \
/let mload_fullfile=$[strcat(tl_base,tl_file,tl_suff)]%;\
/let mload_file=$[strcat(tl_file,tl_suff)]%;\
/return ret_vars('mload_fullfile','mload_file')%;\
/else \
/return 0%;\
/endif
/addh info \
Liefert die Informationen in den Dateivariablen dateiname_suffix_name.
/addh ex /test file_info("loading_tf","version")
/addh file_info func
/def file_info = \
/let efi_pos=$[strrchr({1},"/\\")+1]%;\
/if (efi_pos==0) \
/let fi_filename=%1%;\
/else \
/let fi_filename=$[substr({1},{efi_pos})]%;\
/endif%;\
/result %{fi_filename}_%2
/addh info \
Entfernt die Zusatztexte vom CVS von den Id Informationen.
/addh syn /remove_cvs Text von Id
/addh remove_cvs mak
/def remove_cvs = \
/if (regmatch(strcat("\\$I","d: (.+) Exp \\$"),{*})) \
/return strcat({PL},{P1},{PR})%;\
/else \
/return {*}%;\
/endif%;
/addh info wandelt den uebergebenen Dateinamen in eine Form um, die fuer die Dateiinfo Variablen (z.B. filename_version) nutzbar ist, dabei werden z.b. [.-] in Unterstriche _ umgewandelt und nur der Dateiname ohne Pfad genutzt
/addh see user_echo_file_info, echo_file_info, is_file_loaded
/addh get_filename_file_info
/def get_filename_file_info =\
; evtl. vorhandene Pfadangabe abhacken und nur Filenamen nehmen
/let efi_pos=$[strrchr({1},"/\\")+1]%;\
/if (efi_pos==0) \
/let fi_filename=%1%;\
/else \
/let fi_filename=$[substr({1},{efi_pos})]%;\
/endif%;\
/test fi_filename:=replace(".","_",fi_filename)%;\
/test fi_filename:=replace("-","_",fi_filename)%;\
/return fi_filename%;
/addh info \
Sofern 'load_quiet' nicht gesetzt ist, werden per /user_echo_file_info die Dateiinformationen der Dateivariablen ausgegeben.
/addh var lokal fi_filename, fi_file
/addh cfg /user_echo_file_info
/addh echo_file_info mak
/def echo_file_info=\
/let fi_filename=$[get_filename_file_info({1})]%;\
/user_echo_file_info%;
/addh info \
testet ob das angegebene File schon geladen ist, dabei wird auf die Existenz der filename_version Variablen geprueft
/addh is_file_loaded mak
/def is_file_loaded = \
/let is_file_loaded_tmp=$[replace('"','',${hook_reload})]%;\
/return (file_info(get_filename_file_info({1}),"version")!~"") | \
(_loaded_libs=/"*%1*") | is_file_loaded_tmp=/"*%1*"%;
/addh info \
Parst die Liste der benoetigten Files und zeigt farbig an, welche davon schon geladen sind, dabei unterschieden zwischen unbedingt notwendigen Dateien und spaeter benoetigten Dateien.@{N}\
In der Dateivariablen 'filename_tf_requires' stehen die benoetigten Dateien, dabei sind die unbedingt notwenigen mit einem ! als Praefix markiert.
/addh cfg siehe \$(/listvar -s format_attr_*)
/addh var fi_filename
/addh list_required func
/def list_required = \
/let tmp=$[file_info(fi_filename,"requires")]%;\
/test ctokenize(" ",tmp)%;\
/let i=0%;\
/let tmp=%;\
/let required_file=%;\
/while (++i<=T0) \
/test required_file:=replace(".","_",\{T%{i}\})%;\
/let must_have=0%;\
/if (required_file=/"!*") \
/test required_file:=substr(required_file,1)%;\
/let must_have=1%;\
/endif%;\
; Versionsbestimmung
/if (regmatch("(.+) *[(]([0-9]+)(_([0-9]+))?[)]$",required_file)) \
/let required_version_number=$[+{P2}*1000+{P4}]%;\
/test required_file:={P1}%;\
/else /let required_version_number=0%;\
/endif%;\
;,v 1.10
/let required_info=$[file_info(required_file,"version")]%;\
/if (regmatch(",v ([0-9]+)([.]([0-9]+))?",required_info))\
/let required_info_version=$[+{P1}*1000+{P3}]%;\
/else /let required_info_version=0%;\
/endif%;\
/if (required_info!~"") \
/let required_succ=success%;\
/if (required_info_version<required_version_number) \
/let required_succ=fatal%;\
/endif%;\
/else \
/let required_succ=$[must_have?"failure":"warning"]%;\
/endif%;\
/test tmp:=strcat(tmp,format_success_text(required_succ,\{T%{i}\})," ")%;\
/done%;\
/result tmp
/addh info \
Laedt alle Makrodateien neu, ohne vorher den Speicher zu loeschen.
/addh mak eval_hook
/addh reload comm
/def reload = /eval_hook reload
/addh info \
Loescht den Speicher und laedt alle mit bisher geladenen Makrofiles neu.@{N}\
Alle Variablen werden auch abgespeichert und neu geladen.
/addh mak hook_reload, eval_hook
/addh see mload, purge, load
/addh purge_reload comm
/def purge_reload = \
/saveall %;\
/let reload=${hook_reload}%;\
/let mload=${mload}%;\
/purge%; \
/def mload = %mload%;\
/def hook_reload = %reload%;\
/eval_hook %reload %;\
/loadsaved %;
/addh info \
Das Dateisystem beruht auf den Properties eines Spielers.\
@{N}Es gibt Dateien, die vom Mud und Spieler (in gewissen Grenzen) unabhaengig sind:\
@{N}?loading.tf, ?help.tf, ?lists.tf, ?untroom.tf, ?way.tf, ?properties.tf\
@{N}Die Datei ${world_host}/${world_character}.tf (z.B.) mg.mud.de/mesirii.tf ist vom Mud abhaengig und wird beim Connect vom tf entsprechend geladen. Ausserdem wird aus diesem Directory auch die ?customize.tf geladen, die viele Einstellungen enthaelt.@{N}\
Zu den Dateien bitte die dortigen Hilfeseiten anschauen. Und jetzt viel Spass.
/addh see loading.tf, help.tf, lists.tf, untroom.tf, way.tf, properties.tf, customize.tf, mesirii.tf, chaos.tf, ueben.tf
/addh changes 1.01 In den Hook Kommandos wurden Ueberpruefungen eingebaut, ob die Hooks schon existieren.@{N}\
/mload ruft jetzt den Hook pre_load vor dem Laden eines Files und loaded nach dem Laden eines Files auf.@{N}\
1.02 Das Laden von -c (=custom) Dateien wurde aus /mload ausgelagert, so dass alle Funktionen es nutzen koennen (siehe /custom).@{N}\
1.04 /custom wurde um die Moeglichkeit ergaenzt, -cp als einzigen Parameter zum Laden anzugeben; damit wird and das Mudverzeichnis noch ein Playerverzeichnis zum Laden drangehaengt.@{N}\
Fehler in myconn (CONNECT) behoben, der mehrfaches Laden der Files zur Folge hatte.
/addh_fileinfo