The-Arena-Forum
Ruhm und Rlp-Listen - Druckversion

+- The-Arena-Forum (https://forum.the-arena.de)
+-- Forum: Universität (https://forum.the-arena.de/forum-15.html)
+--- Forum: The Arena- Entwicklung (https://forum.the-arena.de/forum-17.html)
+--- Thema: Ruhm und Rlp-Listen (/thread-641.html)

Seiten: 1 2


Ruhm und Rlp-Listen - Anonymous - 08.05.2004

Ich weiss nicht ganz in welches Forum ich das packen soll aber weils ja eigentlich ein verbesserungsvorschlag ist, der meiner meinung nach im spiel intergriert werden sollte poste ichs einfach mal hier hin...

hab schnell ein kleines proggie zusammengehackt mit dem man sich geordnete ruhm und rlp-listen seiner ally erstellen kann...

ist ein ziemlicher mischmasch aus c und c++ geworden (vielliecht programmier ichs ja nochmal sauber und lesbarer) aber ist alles nach ansi-standard. könnt ihr also mit jedem c-compiler kompilieren (auch die leute die das unter linux spielen)

ihr müsst nur folgender massen vorgehen. die allianzseite in euerem browser speichern als allianz.html in dem verzeichnis des proggies und dann das proggie aufrufen,
es wird dann eine ruhm.txt und rlp.txt erstellt in der vom besten bis zum schlechtesten einer ally durchsortiert wird. Bei uns im Allyforum ist das jedenfalls besonders beliebt. Und ich konnte kaum glauben das sich jemand vorher von Hand die arbeit gemacht hat diese Listen zu erstellen...

wer keinen c++ kompiler hat kann sich ne exe von mir mailen lassen (bei linux ist ja standardmässig ein c++ kompiler dabei) einfach ne postmessage schicken...

ach so kann sein das unterschiedliche browser das leicht ein wenig anderes abspeichern... in dem fall die html-seite einfach mal mit nem textbrowser öffnen und gucken was für ein keyword der vor den zu suchenden begriff schreibt und dann einfach entsprechend im quellcode ändern...(bei fragen dazu einfach ne postmessage an mich

an sonsten viel spass damit
Gruss Windalf




#include <iostream>

typedef struct {std::string nick;int ruhm;int rlp;}gladiator;

void rlp_ruhm_listen(char* filename){

FILE *in,*rlp_out,*ruhm_out;
char c,nick[100];

char keyword1[100],keyword2[100],*p;
int i,j,ruhm,rlp,anzahl=0;;
gladiator erg[100];

if(!(in=fopen(filename,"r")))return;

sprintf(keyword1,"antwortennick=");
sprintf(keyword2,"<td align=\"right\">");

while(!feof(in)){
ruhm=rlp=0;

for(p=keyword1;!feof(in)&&*p;)
if(fgetc(in)==*p)++p;
else p=keyword1;

for(i=0;(c=fgetc(in))!='\"'&&!feof(in);++i)nick[i]=c;
nick[i]=0;

for(p=keyword2;!feof(in)&&*p;)
if(fgetc(in)==*p)++p;
else p=keyword2;

while(isdigit(c=fgetc(in)))ruhm=10*ruhm+c-48;

for(p=keyword2;!feof(in)&&*p;)
if(fgetc(in)==*p)++p;
else p=keyword2;

while(isdigit(c=fgetc(in)))rlp=10*rlp+c-48;

if(!feof(in)){
erg[anzahl].nick=nick;erg[anzahl].rlp=rlp;erg[anzahl].ruhm=ruhm;++anzahl;
}

}

fseek(in,0,SEEK_SET);
sprintf(keyword1,"#66ff66\">");

for(p=keyword1;!feof(in)&&*p;)
if(fgetc(in)==*p)++p;
else p=keyword1;

for(i=0;(c=fgetc(in))!='<'&&!feof(in);++i)nick[i]=c;
nick[i]=0;

for(p=keyword2;!feof(in)&&*p;)
if(fgetc(in)==*p)++p;
else p=keyword2;

while(isdigit(c=fgetc(in)))ruhm=10*ruhm+c-48;

for(p=keyword2;!feof(in)&&*p;)
if(fgetc(in)==*p)++p;
else p=keyword2;

while(isdigit(c=fgetc(in)))rlp=10*rlp+c-48;

if(!feof(in)){
erg[anzahl].nick=nick;erg[anzahl].rlp=rlp;erg[anzahl].ruhm=ruhm;++anzahl;
}


if(ruhm_out=fopen("ruhm.txt","w")){

for(j=0;j<anzahl-1;j++)
for(i=j+1;i<anzahl;i++)
if(erg[i].ruhm>erg[j].ruhm){gladiator tmp=erg[i];erg[i]=erg[j];erg[j]=tmp;}

for(i=0;i<anzahl;++i)
fprintf(ruhm_out,"%d.\t%s\t%d\n",i+1,erg[i].nick.c_str(),erg[i].ruhm);

fclose(ruhm_out);

}

if(rlp_out=fopen("rlp.txt","w")){

for(j=0;j<anzahl-1;j++)
for(i=j+1;i<anzahl;i++)
if(erg[i].rlp>erg[j].rlp){gladiator tmp=erg[i];erg[i]=erg[j];erg[j]=tmp;}

for(i=0;i<anzahl;++i)
fprintf(rlp_out,"%d.\t%s\t%d\n",i+1,erg[i].nick.c_str(),erg[i].rlp);

fclose(rlp_out);

}


}

int main(int argc,char**argv){rlp_ruhm_listen("allianz.html");}


- Anonymous - 08.05.2004

hm, also ich erstelle das immer noch mit excel...

ist zwar etwas steinzeitlich, aber ich kann eben net mit C++ umgehen...werde das aber mal ausprobieren, macht meine arbeit ja evtl. einfacher...

kami

ps: wenn ichs getestet habe, kommt ne bewertung aus der perspektive eines progging-noobs ;)


- Anonymous - 08.05.2004

aus aktuellem anlass,
also mit dem internetexplorer hab ich es nicht hinbekommen die angezeigte seite zu speichern. Liegt daran das die seite auch nur wiederum aus zwei html-seiten besteht. die linke seite ist der teil der säule wo die ganzen sachen wie statistik, ergebnisse, charakter,allianz usw. drauf stehen und der rechte teil ist halt der teil der seite den ihr braucht wenn ihr das ganze speichert...

nach dem speichern der seite also mal ein blick drauf werfen was der da wirklich gespeichert hat, das sollte schon genauso aussehen wie der im rechten teil des browser angezeigte seite...

das ding dann in allianz.html umbennen und das proggie starten dann sollte das auch funzen... bei mir geht das jedenfalls (ich habe den netscape 7.0 verwendet)

ach so bisher für die die sich den code selber compilieren wollen und nicht wissen wo sie einen c++-compiler herbekommen können hilft vielleicht folgender link http://www.fun-soft.de/zubehoer.php

sich ne exe schicken lassen ist ja eigentlich irgendwie nicht so das wahre... ich wäre da jedenfalls immer misstrauisch wenn ihr wisst was ich meine ;)


- Anonymous - 09.05.2004

Im Internetexplorer macht man einfach - Rechtsklick - Quelltext anzeigen und speichern diesen dann als passende html-Datei.


- Anonymous - 09.05.2004

@Thunder115
schön wärs probiers mal... die allianz.html bekommst du mit dem nicht so abgespeichert wie du es aus deinem browser kennst...
wenn du das hinbekommst sag mal unbedingt wie du es gemacht hast


- Anonymous - 09.05.2004

meinst du ich würde es hier posten, wenn ich es nicht probiert hätte?

Wenn ich die Datei, die auch als allianzen.htm gespeichert wird (ja so bietet mir es der Editor sogar an), öffne, dann sieht diese haargenau so aus wie der rechte Frame.
Da wird dann sogar von der auf der Festplatte befindlichen Datei das Werbebanner korrekt geladen. Ich weiß ja nicht wo oder was du anklickst.

IE 5.5 unter Win2K


- Anonymous - 09.05.2004

hmm das ist in der tat interessant weil bei mir funzt das nicht, und bei einigen anderen auch nicht...

vielleicht liegts an der 5 hinter dem punkt...
naja ich bin auch nciht drauf angewiesen bei mir funzt es auch so ;D
aber den anderen würd ich dann empfehlen den internetexplorer zu updaten


- Anonymous - 09.05.2004

Bei mir wird wegen den Frames auch nicht der richtige Quellcode angezeigt.

Rechtklick auf Alliant und Link speichern unter auswählen. Dann ein neues Fenster aufmachen...und voilà. Man ist auf der Allianzseite und hat nicht die Navigationsleiste auf der Seite. Jetzt kann man den Quellcode anzeigen lassen.

Alternativ kann man auch direkt auf die Seite gehen, wobei man sich natürlich erst einloggen muss. Der link: http://sn2.the-arena.de/allianzen.php


- Anonymous - 09.05.2004

Ich verstehe das nicht:
Ihr sollt bitte in dem Frame, da wo die Alliübersicht ist, Rechtsklick - Queltext anzeigen auswählen.

Wenn ich das oben im Menü mache geht es selbstverständlich auch nicht.

PS: Auch beim IE 5.01 ist es kein Problem.


- Anonymous - 09.05.2004

Nein, mit dem Internet Explorer wird der Framequellltext nicht angezeigt auf diese Art und Weise.... Jedenfalls nicht mit der Version die ich hab. Mit anderen Browsern ist es allerdings kein problem


- Anonymous - 09.05.2004

Standardfrage, welchen Browser hast du?

Ich habe probiert: IE5.5 unter Windows 2000 und IE 5.01 unter Windows 98 SE - beides geht.


- Anonymous - 09.05.2004

IE 6.0 unter Windows XP (da gehts nich)
Netscape 7.1 (da gehts)
Mit Mozilla und Opera hab ichs nich getestet ;)


- Anonymous - 09.05.2004

so...ich hab das programm ein bisschen editiert. Die Ausgabedateien sind jetzt html-Dateien, die vom Design her noch relativ gut bearbeitet werden können.
Der momentane Style ist dem offiziellen Grafikpack von TA nachempfunden.

http://www.the-arena-project.de.vu/

edit:
es wurde so ausgebesser, dass es unter Opera, IE und Firefox (Mozilla funktioniert), aber warscheinlich nicht mehr unter Netscape, wobei ich es nicht getestet habe.

mfg
Toxic Trikus


- Anonymous - 09.05.2004

@Toxic Trikus
hab mal kurz einen blick in deinen quellcode geworfen... Ist ne gute idee das gleich in ne html-datei zu ballern.

hab da aber noch ne zeile gefunden die glaube ich eher nicht so das macht was du willst

if(erg[i].nick == nick)

erg[i].nick ist ein std::string... dass heisst hier ist der vergleichsoperator definiert...
nick hingegen ist nur ein char[100]... (ja ich weiss ist scheisse aber ich habs wie gesagt nur schnell in ner stunde absoluter langeweile zusammengehakt, und funzen tuts ja) mag sein das es kompiler gibt die das auch gebacken bekommen aber das verhalten ist auf jeden fall nich definiert...

der vergleich muss entweder so
if(!strcmp(erg[i].nick.c_str(),nick)) gemacht werden oder du definierst dir vorher einen std::string tmp; setzt dem gleich dem char-array nick und vergleichst dann diese...

und noch ne kleine anmerkung...

kann vorkommen das ihr diese zeile hier abändern müsst

sprintf(keyword2,"<td align=\"right\">");
in
sprintf(keyword2,"<td align=right>");

manchmal schreibt ders halt in hochkommata und manchmal schreibt ers halt ohne (einfach mal wie gesagt die html in nem texteditor anschauen dann ist man schlauer...)
je nachdem wie es der browser hält entstprechend anpassen...

Gruss Windalf


- Anonymous - 10.05.2004

Windalf schrieb:@Toxic Trikus
hab mal kurz einen blick in deinen quellcode geworfen... Ist ne gute idee das gleich in ne html-datei zu ballern.

hab da aber noch ne zeile gefunden die glaube ich eher nicht so das macht was du willst

if(erg[i].nick == nick)

erg[i].nick ist ein std::string... dass heisst hier ist der vergleichsoperator definiert...
nick hingegen ist nur ein char[100]... (ja ich weiss ist scheisse aber ich habs wie gesagt nur schnell in ner stunde absoluter langeweile zusammengehakt, und funzen tuts ja) mag sein das es kompiler gibt die das auch gebacken bekommen aber das verhalten ist auf jeden fall nich definiert...

der vergleich muss entweder so
if(!strcmp(erg[i].nick.c_str(),nick)) gemacht werden oder du definierst dir vorher einen std::string tmp; setzt dem gleich dem char-array nick und vergleichst dann diese...

Die Zeile macht schon, dass was ich will, kann ich mir jetzt im nachinein aber auch nicht mehr erklären warum. Die ist ja dazu da, dass der eigene Nick grün geschrieben wird. Ich werde mir die Zeile nochmal anschauen...Danke schonmal für den Tipp.

Windalf schrieb:und noch ne kleine anmerkung...

kann vorkommen das ihr diese zeile hier abändern müsst

sprintf(keyword2,"<td align=\"right\">");
in
sprintf(keyword2,"<td align=right>");

manchmal schreibt ders halt in hochkommata und manchmal schreibt ers halt ohne (einfach mal wie gesagt die html in nem texteditor anschauen dann ist man schlauer...)
je nachdem wie es der browser hält entstprechend anpassen...

Gruss Windalf

Wie schon in der einen Textdatei, die sich in dem Archiv gefindet aufgelistet, habe ich das Programm mit den Quelltexten aus dem IE, Opera und Firefox probiert, und die zeigen das alle ohne Hochkommata an. Scheint nur Netscap so auszugeben...

Vielen Dank für die Vorschläge

mfg
Toxic Trikus