AdminMod.de https://www.adminmod.de/ |
|
nominate map plugin ??? https://www.adminmod.de/viewtopic.php?t=4292 |
Seite 5 von 7 |
Autor: | Rinde [ 25.11.2002, 22:42 ] |
Betreff des Beitrags: | |
nach ein wenig mehr rumprobieren glaube ich, dass der fehler nur kommt, wenn adminmod mit den zeilenumbrüchen rumpfuscht. wenn ich die datei selbet tippe gehts....bloss dass das sortieren auch nciht richtig funktioniert |
Autor: | [WING] Black Knight [ 25.11.2002, 22:46 ] |
Betreff des Beitrags: | |
Code: for (j=iNumber-1;j>=0; j--){ for (i=0;i<=j;i++){ if(Data[i]>Data[i+1]){ Buffer[0]=Data[0][i]; Buffer[1]=Data[1][i]; Data[0][i+1]=Data[0][i]; Data[1][i+1]=Data[1][i]; Data[0][i]=Buffer[0]; Data[1][i]=Buffer[1]; } } }Das müsste Bubblesort sein. Zumindest so ähnlich. Lohnt sich aber nur bei Arrays kleiner als 20, sonst steigt der Rechenbedarf. Ansonsten kannst Du Dir mal Quicksort ansehen. Ich hab es jetzt nicht ausprobiert, aber das Prinzip müsste stimmen. Über den Restcode schweige ich mal. Da wären noch einige optimierungswürdig Dinge. Schau erst mal, dass Du die Sortierung in den Griff bekommst. Aber eins schon vorweg: "Niemals WHILE in Verbindung mit statischen Felder ohne Abfangroutine verwenden!" |
Autor: | Rinde [ 25.11.2002, 22:58 ] |
Betreff des Beitrags: | |
den compile error hab ich wegbekommen, aber irgendwie isses das nicht. hier meine datei: Code: de_dust 4 de_cbble 3 cs_office 8 cs_italy 1 de_dust2 1 cs_assault 7 de_vertigo 6 1room 8und was er draus macht |
Autor: | aRved [ 25.11.2002, 23:07 ] |
Betreff des Beitrags: | |
joa hier wird ja hart gearbeitet *gg* Rinde hab mal nochen kleinen fehler glau bich gefunden Undzwar kommt nich immer der Vote am ende der map also die anzeige kommte der sound auch nur nich immer die auswahl vom vote... Und wenn die anzeige doch mal erscheint und man no change wählt kommt zum schluss *vote passed* und change map to due to vote..Also die map anzeige bleibt leer... Wollte ich mal ebnd so sagen *g* |
Autor: | [WING] Black Knight [ 25.11.2002, 23:13 ] |
Betreff des Beitrags: | |
Ich glaube in meiner routine ist noch ein kleiner Bug drin. Muss wohl so lauten: Code: for (j=iNumber-1;j>0; j--){ for (i=0;i<j;i++){Probier's nochmal. Ansonsten musst Du mal das ganze Schritt für Schritt überlegen. Bubblesort ist nicht soo schwierig. |
Autor: | Rinde [ 25.11.2002, 23:17 ] |
Betreff des Beitrags: | |
sieht aber genauso aus. naja, ich werd wohl für heute schluss machen. 4 stunden klausur morgen und ncoh nicht gelernt |
Autor: | pod.virus [ 26.11.2002, 12:54 ] |
Betreff des Beitrags: | |
hiho ich wollte wissen was ich einstellen muss das 5 min vor ende der map das plugin automatisch gestartet wird ? habe folgendes in meiner plugin.ini zurzeit Code: addons/adminmod/scripts/plugin_rindy_votemap.amx addons/adminmod/scripts/plugin_base.amx addons/adminmod/scripts/plugin_chat.amx addons/adminmod/scripts/plugin_cheat.amx addons/adminmod/scripts/plugin_CS.amx # addons/adminmod/scripts/plugin_hldsld_mapvote.amx addons/adminmod/scripts/plugin_message.amx addons/adminmod/scripts/plugin_retribution.amx addons/adminmod/scripts/plugin_spawn.amx # addons/adminmod/scripts/plugin_TFC.amx addons/adminmod/scripts/plugin_chicken_l.amx addons/adminmod/scripts/plugin_sank_al.amxgreetz virus |
Autor: | Rinde [ 26.11.2002, 15:42 ] |
Betreff des Beitrags: | |
admin_vote_autostart 1 |
Autor: | Rinde [ 26.11.2002, 17:03 ] |
Betreff des Beitrags: | |
blacky, besten dank für deine mühe, aber ich behalt meinen, der funzt jetzt nämlich Code: for(i=1;i<iNumber;i++) { for(j=0;j<i;j++) { if(Data[1][i] > Data[1][j]) { Buffer[0] = Data[0][i]; Buffer[1] = Data[1][i]; for(k=i-1;k>=j;k--) { Data[0][k+1] = Data[0][k]; Data[1][k+1] = Data[1][k]; } Data[0][j] = Buffer[0]; Data[1][j] = Buffer[j]; // <----- das muss 1 sein, nicht j } } }klar dass das den error erzeugt wenn j = 2 ist /edit: grml textformatierung in code tags geht nicht |
Autor: | Sir Drink a lot [ 26.11.2002, 17:03 ] |
Betreff des Beitrags: | |
wie sieht es aus mit der Sortier-Funktion Ich bastel vielleicht heute abend auch nochmal dran. Bisher habe ich das 'while' rausgeworfen und mit einer Schleife von 0 bis max 249 (filesize) ersetzt. habe in die Schleife ein strbreak rein gemacht. (sMap und sNominate, was ich zu iNominate per strtonum umwandle und in Data[0] benutze...) Das mit Deinem strtonum habe ich nicht verstanden...bzw. was ist wenn eine Map schon 11 (mehrstellige Zahl) Nominates hat... Die Sortier-Funktion habe ich noch nicht verstanden (eure beiden Vorschläge funzen nicht) Die Ausgabe der Sortierung habe ich auf 5 Zeilen begrenzt. Geht zur Zeit nicht, da die Sortierung der Data nicht geht... Muss der Buffer nicht auch 2-Dimensional sein?? Buffer[0] ??? wie?? Größe 0?? nicht versteh...komisch das dann ein amx_error 4 entsteht?? Es gibt einen Thread, wo ich auch schon mal nach einer Sortierung Frage....und kompetente Leute haben geantwortet... Nur leider bin ich nicht kompetent genug, um diese Vorschläge umzusetzen... |
Autor: | Rinde [ 26.11.2002, 17:05 ] |
Betreff des Beitrags: | |
oh ja, die while funktion hab ich auch geändert Code: new Data[2][250]; new UserName[MAX_NAME_LENGTH]; new LineData[MAX_DATA_LENGTH]; new Outstring[255] = "Top voted maps:^n"; new Line = 0; new i = 0; convert_string(HLUserName,UserName,MAX_NAME_LENGTH); for(Line=1;Line<=250;Line++) { if(readfile("addons/adminmod/statistics.txt",LineData,Line,MAX_DATA_LENGTH) == 1) { if(strlen(LineData) > 3 && strcount(LineData,' ') == 1 && LineData[0] != '#') { Data[0][i] = Line; Data[1][i] = strtonum(LineData[strchr(LineData,' ')+1]); i++; } } else { break; } } Sort(Data,i); for(i=0;i<g_Statistics && i<filesize("addons/adminmod/statistics.txt");i++) { readfile("addons/adminmod/statistics.txt",LineData,Data[0][i],MAX_DATA_LENGTH); snprintf(LineData,MAX_DATA_LENGTH,"^n %i. %s",i+1,LineData); strcat(Outstring,LineData,255); } messageex(UserName,Outstring,print_tty); return PLUGIN_HANDLED; }ohja, Data[1] = strtonum(LineData[strchr(LineData,' ')+1]); kann ich dir erklären: LineData[x] ist der string LineData ab dem zeichen mit index x, LineData[0] wäre der komplette string. strchr gibt den index des ersten leerzeichens aus. d.h. der teil von LineData ab einem zeichen hinter dem ersten leerzeichen wird komplett in ne zahl umgewandelt. |
Autor: | Sir Drink a lot [ 26.11.2002, 17:08 ] |
Betreff des Beitrags: | |
darf nicht = 250 sein....oder? 250 ist die 0.... was ist mit dem strtonum...klappen dann die mehrstelligen Zahlen? wie groß ist g_Statistic bei Dir? |
Autor: | Rinde [ 26.11.2002, 17:09 ] |
Betreff des Beitrags: | |
mehrstellige zahlen sollten klappen. 250 = 0? gnaa hast recht. |
Autor: | Sir Drink a lot [ 26.11.2002, 17:11 ] |
Betreff des Beitrags: | |
hihi..das war ja schnell editiert Nun dann werde ich es auch mal testen Wie mach ich das ganze jetzt mit einer Liste von Namen? Meier Müller Schmitz Peter Karl ?? Die sollen richtig sortiert werden! NACHTRAG: Zur Optimierung sollten alle Nullwerte des Data[1] rausfliegen. |
Autor: | Sir Drink a lot [ 26.11.2002, 17:19 ] |
Betreff des Beitrags: | |
Geht das auch? Code: new iLinemax=filesize(TextFile); for(i=0;i<iLinemax;i++){ readfile(TextFile,LineData,i,MAX_DATA_LENGTH); strbreak(LineData,Map,Nominate,MAX_DATA_LENGTH); iNominate = strtonum(Nominate); if(iNominate!=0){ Data[0][i] = i; Data[1][i] = iNominate; } } |
Autor: | Rinde [ 26.11.2002, 17:21 ] |
Betreff des Beitrags: | |
dieses hier funzt jetzt sehr gut. Code: public admin_showstatistic(HLCommand,HLData,HLUserName,UserIndex) { new Data[2][251]; new UserName[MAX_NAME_LENGTH]; new LineData[MAX_DATA_LENGTH]; new Outstring[255] = "Top voted maps:^n"; new Line = 0; new i = 0; convert_string(HLUserName,UserName,MAX_NAME_LENGTH); for(Line=1;Line<251;Line++) { if(readfile("addons/adminmod/statistics.txt",LineData,Line,MAX_DATA_LENGTH) == 1) { if(strlen(LineData) > 3 && strcount(LineData,' ') == 1 && LineData[0] != '#') { Data[0][i] = Line; Data[1][i] = strtonum(LineData[strchr(LineData,' ')+1]); i++; } } else { break; } } Sort(Data,i); Line = min(g_Statistics,i); for(i=0;i<Line;i++) { readfile("addons/adminmod/statistics.txt",LineData,Data[0][i],MAX_DATA_LENGTH); snprintf(LineData,MAX_DATA_LENGTH,"^n %i. %s",i+1,LineData); strcat(Outstring,LineData,255); } messageex(UserName,Outstring,print_tty); return PLUGIN_HANDLED; }es hat dieses file Code: de_dust 0 de_cbble 347 cs_office 82 cs_italy -13 de_dust2 17 cs_assault 7 de_vertigo 63 1room 89anstandslos korrekt sortiert, obwohl g_Statistics grösser als die anzahl der maps war. immoment fallen mir keine verbesserungen mehr ein und diese Code: Line = min(g_Statistics,i);stellt sicher, dass die nullwerte rausfliegen. noch was? achso, deine namen. willst du die alphabetisch sortieren oder wie? |
Autor: | Sir Drink a lot [ 26.11.2002, 18:08 ] |
Betreff des Beitrags: | |
jep! mit Sonderzeichen...(Clantags haben ja meist welche) Ist aus meinem admin_look Das Textfile LOOK.txt hat als Aufbau: WONID Name |
Autor: | Rinde [ 26.11.2002, 18:14 ] |
Betreff des Beitrags: | |
mmh, mit strings ist das schwieriger. mal sehen ob ich nachher noch zeit habe, aber erstmal muss ich zum cw |
Autor: | [WING] Black Knight [ 26.11.2002, 18:35 ] |
Betreff des Beitrags: | |
Nee, nee, nee. SDal, was passiert, wenn die Datei länger als 250 Zeilen lang ist? Nur mal so ne Frage. |
Autor: | Sir Drink a lot [ 26.11.2002, 18:39 ] |
Betreff des Beitrags: | |
keine Ahnung...amx_error 4 nehme ich an. Aber hier zu Rindes Sortierung...ich habe mir den Code kopiert, aber bei mir sortiert er gar nichts...er nimmt den letzten Eintrag und Ende... aber ich suche mal weiter... |
Seite 5 von 7 | Alle Zeiten sind UTC+01:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |