blob: 9f955d5fdca6bfbb94f885a8ca8a99f27c436299 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001inherit "/std/thing/properties";
2
3#include <defines.h>
4#include <properties.h>
5#include <sys_debug.h>
6
7#define EM_DATA "/etc/Erzmagier"
8#define MAGIER "/etc/Magierliste"
9#define MASTER "/secure/master"
10#define WIZ_HOME "/players"
11
12#define REM 0 // RegionsErzMagier
13#define MAG 1 // Normale Magier
14
15private mapping domains, build_domains;
16private int Finished, today;
17void MagierListe();
18
19private mapping _query_Magierliste() { return domains; }
20
21void create()
22{
23 ::create();
24 seteuid(getuid());
25 Set("Magierliste", #'_query_Magierliste/*'*/, F_QUERY_METHOD);
26 call_out("reset", 0);
27}
28
29void reset()
30{
31 if (today >= time()/86400)
32 return;
33
34 today=time()/86400;
35 MagierListe();
36}
37
38void ProcessList(mixed names)
39{
40 mixed Dname;
41 int i;
42 i = 5;
43
44 while(i-- && sizeof(names))
45 {
46 if(!pointerp(Dname = MASTER->get_domain_homes(names[0])))
47 Dname = ({Dname});
48 if(!sizeof(Dname)) Dname = ({"Keine Region"});
49 while(sizeof(Dname))
50 {
51 if(!build_domains[Dname[0]])
52 {
53 build_domains[Dname[0], REM] = ({});
54 build_domains[Dname[0], MAG] = ({});
55 }
56 if(Dname[0]!="Keine Region" && MASTER->domain_master(names[0], Dname[0]))
57 build_domains[Dname[0], REM] += ({names[0]});
58 else
59 build_domains[Dname[0], MAG] += ({names[0]});
60 Dname = Dname[1..];
61 }
62 names = names[1..];
63 }
64 if(sizeof(names)) call_out("ProcessList", 0, names);
65 else { Finished = 1; MagierListe(); }
66}
67
68void MagierListe()
69{
70 string output;
71 mixed d;
72
73 if(!Finished)
74 {
75 if(find_call_out("ProcessList") == -1)
76 {
77 Finished = 0;
78 build_domains = m_allocate(0,2);
79 call_out("ProcessList", 0, get_dir(WIZ_HOME+"/*") - ({".", "..", ".readme"}));
80 }
81 call_out("MagierListe", 20, 1);
82 return;
83 }
84 while(remove_call_out("Magierliste") != -1);
85
86 if (!build_domains)
87 return;
88
89 output = "Magierliste von MorgenGrauen vom "+dtime(time())+"\n";
90
91 domains = deep_copy(build_domains);
92 build_domains=0;
93 for(d = m_indices(domains); sizeof(d); d = d[1..])
94 {
95 output += "REGION: "+capitalize(d[0])
96 +" REM: "
97 +implode(map(domains[d[0], REM], #'capitalize), ", ")
98 +" ("+sizeof(domains[d[0], REM]+domains[d[0], MAG])
99 +" Magier)\n"
100 + break_string(implode(map(domains[d[0], MAG],#'capitalize),
101 ", "), 62, 8)
102 +"\n";
103 }
104 rm(MAGIER);
105 write_file(MAGIER, output);
106}