moneylog.c-Dateireferenz

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

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

Makro-Dokumentation

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


Dokumentation der Funktionen

static int _sort_daily ( string  fn1,
string  fn2 
) [static]

Definiert in Zeile 57 der Datei moneylog.c.

Benutzt mon.

00058 {
00059     return mon[fn1, 1] > mon[fn2, 1];
00060 }

static int _sort_hourly ( string  fn1,
string  fn2 
) [static]

Definiert in Zeile 51 der Datei moneylog.c.

Benutzt mon.

00052 {
00053     return mon[fn1, 0] > mon[fn2, 0];
00054 }

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 }

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

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 }

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

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 }

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

public varargs int query_prevent_shadow ( object  ob  ) 

Definiert in Zeile 245 der Datei moneylog.c.

00245 { return 1; }

public mixed query_status (  ) 

Definiert in Zeile 223 der Datei moneylog.c.

Benutzt i und mon.

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 }

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

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 }

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

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 }

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


Variablen-Dokumentation

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.

Wird benutzt von create(), remove() und reset().

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