#include <wizlevels.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | LOGNAME "ADDMONEY" |
| #define | SAVEFILE "/p/daemon/save/moneylog" |
| #define | THRESHOLD_HOURLY 10000 |
| #define | THRESHOLD_DAILY 50000 |
Funktionen | |
| public void | create () |
| static int | _sort_hourly (string fn1, string fn2) |
| static int | _sort_daily (string fn1, string fn2) |
| public void | reset () |
| public void | AddMoney (object ob, int amount) |
| public int | remove () |
| public varargs int | modify_threshold (string fn, int amount1, int amount2) |
| public varargs mixed | query_thresholds (string str) |
| public mixed | query_status () |
| public varargs int | query_prevent_shadow (object ob) |
Variablen | |
| private mapping | mon |
| private mapping | grenzen |
| private int | check |
| private int | next_reset |
| #define LOGNAME "ADDMONEY" |
Definiert in Zeile 14 der Datei moneylog.c.
Wird benutzt von reset().
| #define SAVEFILE "/p/daemon/save/moneylog" |
Definiert in Zeile 15 der Datei moneylog.c.
| #define THRESHOLD_DAILY 50000 |
Definiert in Zeile 18 der Datei moneylog.c.
Wird benutzt von reset().
| #define THRESHOLD_HOURLY 10000 |
Definiert in Zeile 17 der Datei moneylog.c.
Wird benutzt von reset().
| static int _sort_daily | ( | string | fn1, | |
| string | fn2 | |||
| ) | [static] |
Definiert in Zeile 57 der Datei moneylog.c.
Benutzt mon.
| static int _sort_hourly | ( | string | fn1, | |
| string | fn2 | |||
| ) | [static] |
Definiert in Zeile 51 der Datei moneylog.c.
Benutzt mon.
| public void AddMoney | ( | object | ob, | |
| int | amount | |||
| ) |
Definiert in Zeile 123 der Datei moneylog.c.
Benutzt IS_LEARNER und mon.
Wird benutzt von _abheben() und DeepTransferMoney().
00124 { 00125 string fn; 00126 00127 // keine Manipulationen per Hand bitte 00128 if ( !objectp(ob) || amount < 0 || !previous_object() || 00129 (!query_once_interactive(previous_object()) && 00130 explode(object_name(previous_object()), "#")[0] != "/obj/money") 00131 || IS_LEARNER(previous_object()) ) 00132 return; 00133 00134 fn = explode( object_name(ob), "#" )[0]; 00135 00136 mon[fn, 0] += amount; 00137 mon[fn, 1] += amount; 00138 }

| public void create | ( | ) |
Definiert in Zeile 25 der Datei moneylog.c.
Benutzt check, grenzen, mon, next_reset, restore_object(), SAVEFILE und set_next_reset().
00026 { 00027 // wir muessen Savefile schreiben duerfen 00028 seteuid(getuid()); 00029 00030 if ( !restore_object(SAVEFILE) ){ 00031 mon = m_allocate( 0, 2 ); 00032 grenzen = m_allocate( 0, 2 ); 00033 check = 0; 00034 next_reset = 3600; 00035 } 00036 00037 if ( next_reset > 3600 ) 00038 next_reset = 3600; 00039 00040 if ( next_reset < 60 ) 00041 next_reset = 60; 00042 00043 // Auswertung jede Stunde 00044 set_next_reset( next_reset ); 00045 next_reset += time(); 00046 }

| public varargs int modify_threshold | ( | string | fn, | |
| int | amount1, | |||
| int | amount2 | |||
| ) |
Definiert in Zeile 153 der Datei moneylog.c.
Benutzt break_string(), grenzen, IS_ARCH, m_delete(), process_call(), save_object() und SAVEFILE.
00154 { 00155 if ( !this_interactive() || this_interactive() != this_player() || 00156 !IS_ARCH(this_interactive()) || process_call() ) 00157 return -1; 00158 00159 if ( !stringp(fn) || !intp(amount1) || !intp(amount2) ) 00160 return -2; 00161 00162 if ( !amount1 && !amount2 ){ 00163 efun::m_delete( grenzen, fn ); 00164 write( "Eintrag " + fn + " geloescht.\n" ); 00165 return 1; 00166 } 00167 00168 grenzen[fn, 0] = amount1; 00169 grenzen[fn, 1] = amount2; 00170 00171 write( break_string( "Die Grenzen fuer " + fn + " betragen jetzt " + 00172 ((amount1 < 0) ? "unendlich viele" : 00173 to_string(amount1)) + " Muenzen fuer den " 00174 "stuendlichen und " + 00175 ((amount2 < 0) ? "unendlich viele" : 00176 to_string(amount2)) + " Muenzen fuer den taeglichen " 00177 "Check.", 78 ) ); 00178 00179 save_object(SAVEFILE); 00180 return 1; 00181 }

| public varargs int query_prevent_shadow | ( | object | ob | ) |
Definiert in Zeile 245 der Datei moneylog.c.
| public mixed query_status | ( | ) |
Definiert in Zeile 223 der Datei moneylog.c.
00224 { 00225 int i; 00226 string *files, txt; 00227 00228 if ( !this_player() ) 00229 return deep_copy(mon); 00230 00231 files = sort_array( m_indices(mon), #'</*'*/ ); 00232 txt = "Geldquellen:\n=================================" 00233 "=============================================\n"; 00234 00235 for ( i = sizeof(files); i--; ) 00236 txt += sprintf( "%'.'-48s : %8d (h) %10d (d)\n", 00237 files[i], mon[files[i], 0], mon[files[i], 1] ); 00238 00239 this_player()->More( txt ); 00240 return 1; 00241 }
| public varargs mixed query_thresholds | ( | string | str | ) |
Definiert in Zeile 185 der Datei moneylog.c.
Benutzt break_string(), grenzen und i.
00186 { 00187 int i; 00188 string *files, txt; 00189 00190 if ( !this_player() ) 00191 return deep_copy(grenzen); 00192 00193 if ( stringp(str) && member( grenzen, str ) ){ 00194 write( break_string( "Die Grenzen fuer " + str + " betragen " + 00195 ((grenzen[str, 0] < 0) ? "unendlich viele" : 00196 to_string(grenzen[str, 0])) + " Muenzen fuer den " 00197 "stuendlichen und " + 00198 ((grenzen[str, 1] < 0) ? "unendlich viele" : 00199 to_string(grenzen[str, 1])) + 00200 " Muenzen fuer den taeglichen Check.", 78 ) ); 00201 return 0; 00202 } 00203 00204 if ( stringp(str) && str != "" ){ 00205 write( "Es sind keine Grenzen fuer " + str + " eingetragen!\n" ); 00206 return 0; 00207 } 00208 00209 files = sort_array( m_indices(grenzen), #'</*'*/ ); 00210 txt = "Eingetragene Grenzwerte:\n=================================" 00211 "=============================================\n"; 00212 00213 for ( i = sizeof(files); i--; ) 00214 txt += sprintf( "%'.'-48s : %8d (h) %10d (d)\n", 00215 files[i], grenzen[files[i], 0], grenzen[files[i], 1] ); 00216 00217 this_player()->More( txt ); 00218 return 1; 00219 }

| public int remove | ( | ) |
Definiert in Zeile 142 der Datei moneylog.c.
Benutzt destruct(), next_reset, query_next_reset(), save_object() und SAVEFILE.
00143 { 00144 next_reset = query_next_reset(this_object()) - time(); 00145 save_object(SAVEFILE); 00146 00147 destruct(this_object()); 00148 return 1; 00149 }

| public void reset | ( | void | ) |
Definiert in Zeile 64 der Datei moneylog.c.
Benutzt check, ctime(), grenzen, i, log_file, LOGNAME, mon, next_reset, save_object(), SAVEFILE, set_next_reset(), THRESHOLD_DAILY und THRESHOLD_HOURLY.
00065 { 00066 int i; 00067 string *files, txt; 00068 00069 // keinen Aufruf per Hand bitte 00070 if ( time() < next_reset ) 00071 return; 00072 00073 // Auswertung jede Stunde 00074 set_next_reset(3600); 00075 next_reset = time() + 3600; 00076 check++; 00077 txt = ""; 00078 00079 files = sort_array( m_indices(mon), #'_sort_hourly/*'*/ ); 00080 00081 for ( i = sizeof(files); i--; ){ 00082 if ( !(grenzen[files[i], 0] < 0) && 00083 (grenzen[files[i], 0] && mon[files[i], 0] > grenzen[files[i], 0]) 00084 || (!grenzen[files[i], 0] && mon[files[i], 0] > THRESHOLD_HOURLY) ) 00085 txt += sprintf( "%12d --- %s\n", mon[files[i], 0], files[i] ); 00086 00087 mon[files[i], 0] = 0; 00088 } 00089 00090 // nur loggen, wenn es auch etwas zu loggen gibt 00091 if ( txt != "" ) 00092 log_file( LOGNAME, sprintf( "%s: ==================================" 00093 "==============(stuendlich)===\n", 00094 ctime(time())[4..15] ) + txt ); 00095 00096 // der "grosse" Check kommt nur einmal pro Tag 00097 if ( check < 24 ){ 00098 save_object(SAVEFILE); 00099 return; 00100 } 00101 00102 check = 0; 00103 txt = ""; 00104 files = sort_array( m_indices(mon), #'_sort_daily/*'*/ ); 00105 00106 for ( i = sizeof(files); i--; ) 00107 if ( !(grenzen[files[i], 1] < 0) && 00108 (grenzen[files[i], 1] && mon[files[i], 1] > grenzen[files[i], 1]) 00109 || (!grenzen[files[i], 1] && mon[files[i], 1] > THRESHOLD_DAILY) ) 00110 txt += sprintf( "%12d --- %s\n", mon[files[i], 1], files[i] ); 00111 00112 if ( txt != "" ) 00113 log_file( LOGNAME, sprintf( "%s: ==================================" 00114 "==============(taeglich)=====\n", 00115 ctime(time())[4..15] ) + txt ); 00116 00117 mon = m_allocate( 1, 2 ); 00118 save_object(SAVEFILE); 00119 }

| private int check |
Definiert in Zeile 22 der Datei moneylog.c.
Wird benutzt von create(), find_living_nr() und reset().
| private mapping grenzen |
Definiert in Zeile 21 der Datei moneylog.c.
Wird benutzt von create(), modify_threshold(), query_thresholds() und reset().
| private mapping mon |
Definiert in Zeile 21 der Datei moneylog.c.
Wird benutzt von _sort_daily(), _sort_hourly(), AddMoney(), create(), Drink(), give_money(), query_status() und reset().
| private int next_reset |
Definiert in Zeile 22 der Datei moneylog.c.
1.6.3