MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | inherit "/std/thing"; |
| 2 | |
| 3 | #include <properties.h> |
| 4 | #include <language.h> |
| 5 | |
| 6 | // ({Funktionsname, ({argumente}), tttel }) |
| 7 | nosave <string|mixed*>* watdenn; |
| 8 | |
| 9 | string _liesliste(); |
| 10 | |
| 11 | protected void create() |
| 12 | { |
| 13 | if (!clonep(this_object())) return; |
| 14 | ::create(); |
| 15 | SetProp(P_SHORT,"Die Top-Liste, Top-Spielerliste, Top-Seherliste und " |
| 16 | "Top-Hardcoreliste"); |
| 17 | SetProp(P_WEIGHT,0); |
| 18 | SetProp(P_GENDER,FEMALE); |
| 19 | SetProp(P_WEIGHT,20); |
| 20 | AddId(({"liste","topliste","top-liste", |
| 21 | "topspielerliste","top-spielerliste","topspieler","spielerliste", |
| 22 | "topseherliste","top-seherliste","topseher","seherliste", |
| 23 | "tophardcoreliste","top-hardcoreliste","tophardcore","hardcoreliste"})); |
| 24 | SetProp(P_NAME,"Liste"); |
| 25 | SetProp(P_NOGET,"Die ist an der Wand festgenagelt.\n"); |
| 26 | AddReadDetail(SENSE_DEFAULT, #'_liesliste); |
| 27 | } |
| 28 | |
| 29 | #define NAME 0 |
| 30 | #define LEP 1 |
| 31 | #define QP 2 |
| 32 | #define XP 3 |
| 33 | #define LEVEL 4 |
| 34 | #define AGE 5 |
| 35 | #define RACE 6 |
| 36 | #define GUILD 7 |
| 37 | #define WIZLEVEL 8 |
| 38 | #define HARDCORE 9 |
| 39 | public string format_list(< <string|int>* >* list) |
| 40 | { |
| 41 | int idx; |
| 42 | //string res=" Name Level AP Erfahrung Alter Gilde\n"; |
| 43 | string res = sprintf( |
| 44 | "%c%:4s %:11-s %:5|s %:5|s %:4|s %:12|s %:12|s %:14-s\n", |
| 45 | ' ', "", "Name", "", "Level", "AP", "Erfahrung","Alter","Gilde"); |
| 46 | |
| 47 | foreach(<string|int>* entry: list) |
| 48 | { |
| 49 | ++idx; |
| 50 | entry[AGE] *= 2; |
| 51 | int tage = entry[AGE]/86400; |
| 52 | int stunden = (entry[AGE] % 86400) / 3600; |
| 53 | int minuten = (entry[AGE] % 3600) / 60; |
| 54 | res += |
| 55 | sprintf("%c%:4d. %:11-s %:5-s %:5d %:4d %:12d %:4dd, %:2'0'd:%:2'0'd %:14-s\n", |
| 56 | (entry[WIZLEVEL]>0 ? '*' : ' '), |
| 57 | idx, capitalize(entry[NAME]), |
| 58 | (entry[HARDCORE]>1 ? "(RIP)" : ""), |
| 59 | entry[LEVEL], |
| 60 | entry[QP], entry[XP], |
| 61 | tage, stunden, minuten, |
| 62 | capitalize(entry[GUILD])); |
| 63 | } |
| 64 | return res; |
| 65 | } |
| 66 | |
| 67 | private string get_list(<string|mixed*>* was) |
| 68 | { |
| 69 | if (was == 0) |
| 70 | was=({"Liste", ({}), " "*28 + "Liste der Topspieler !\n\n" }); |
| 71 | |
| 72 | < <string|int>* >* list = "/secure/topliste"->(was[0])(was[1]...); |
| 73 | |
| 74 | return was[2] + format_list(list); |
| 75 | } |
| 76 | |
| 77 | varargs int id(string str,int lvl) |
| 78 | { |
| 79 | if (!::id(str,lvl)) |
| 80 | return 0; |
| 81 | |
| 82 | if (strstr(str,"seher")>=0) |
| 83 | watdenn=({"SeherListe", ({ }), " "*29 + "Liste der Topseher !\n\n" }); |
| 84 | else if (strstr(str,"spieler")>=0) |
| 85 | watdenn=({"SpielerListe", ({ }), |
| 86 | " "*21 + "Liste der Topspieler (Keine Seher) !\n\n" }); |
| 87 | else if (strstr(str,"hardcore")>=0) |
| 88 | watdenn=({"HardcoreListe", ({ }), |
| 89 | " "*22 + "Liste der mutigsten aller Helden !\n\n" }); |
| 90 | else |
| 91 | watdenn=({"Liste", ({ }), " "*28 + "Liste der Topspieler !\n\n" }); |
| 92 | |
| 93 | return 1; |
| 94 | } |
| 95 | |
| 96 | string _query_long() |
| 97 | { |
| 98 | if (this_player()) this_player()->More(get_list(watdenn)); |
| 99 | watdenn=0; |
| 100 | return ""; |
| 101 | } |
| 102 | |
| 103 | varargs string long(int mode) |
| 104 | { |
| 105 | if (this_player()) this_player()->More(get_list(watdenn)); |
| 106 | watdenn=0; |
| 107 | return ""; |
| 108 | } |
| 109 | |
| 110 | string _liesliste() |
| 111 | { |
| 112 | if (this_player()) this_player()->More(get_list(watdenn)); |
| 113 | watdenn=0; |
| 114 | return ""; |
| 115 | } |
| 116 | |