Du bist herzlich Willkommen, richthofen
Ich glaube, ich veröffentliche nicht den gesamten Quellcode, sondern gebe ihn nur an Entwickler
Um euch einen Vorgeschmack zu geben, poste ich hier die Ausbau Funktion, mit der ich überhaupt nicht zufrieden bin.
Hier können wir ja schonmal anfangen gemeinsam daran zu arbeiten.
btwie Kommentare habe ich gerade lieblos hinzugefügt, also nicht wundern. Die Formatierung ging auch verloren
Ich glaube, ich veröffentliche nicht den gesamten Quellcode, sondern gebe ihn nur an Entwickler
Um euch einen Vorgeschmack zu geben, poste ich hier die Ausbau Funktion, mit der ich überhaupt nicht zufrieden bin.
Hier können wir ja schonmal anfangen gemeinsam daran zu arbeiten.
btwie Kommentare habe ich gerade lieblos hinzugefügt, also nicht wundern. Die Formatierung ging auch verloren
PHP Code:
/*
Vorinfos:
Klasse TBot gegeben. Die vcl von Codegear wird verwendet.
IdHTTP1 basiert auf den Indy Bibliotheken.
GET Methode (ziemlich billig):
AnsiString TIdHTTP::Get(AnsiString url); <- verarbeitet Umleitungen u. Cookies automatisch
*/
int TBot::Build(void)
{
int cnt=0;
AnsiString recv_buf=IdHTTP1->Get(server+"/game.php?village="+vlgnr+"&screen=main"); //recv_buf -> HTML-Output des Hauptgebäudes \n vlgnr -> ID des aktuellen Dorfes
if(FarmFull(recv_buf))
{
if(!CanBuild(recv_buf,"farm")&&Points()<9250)
{}//Form1->RichEdit1->Lines->Add(name+":\t Bauernhofkapazität erschöpft");
// Funktionen, die überprüfen, ob der Bauernhof voll ist, und/oder weiter ausgebaut werden kann
} // AnsiContainsStr gibt aus, ob der Teilstring im String vorhanden ist
while(AnsiContainsStr(recv_buf,"action=build")&&( //Das hier ist blöd
AnsiContainsStr(recv_buf,"id=main") ||
AnsiContainsStr(recv_buf,"id=barracks") ||
AnsiContainsStr(recv_buf,"id=stable") ||
AnsiContainsStr(recv_buf,"id=smith") ||
AnsiContainsStr(recv_buf,"id=wood") ||
AnsiContainsStr(recv_buf,"id=stone") ||
AnsiContainsStr(recv_buf,"id=iron") ||
AnsiContainsStr(recv_buf,"id=farm") ||
AnsiContainsStr(recv_buf,"id=market") ||
AnsiContainsStr(recv_buf,"id=storage") ||
AnsiContainsStr(recv_buf,"id=wall") ))
{
TStringList *html=new TStringList(); //String Liste, der
split(html,recv_buf,"\n"); // ... alle Zeilen des HTML-Outputs zugewiesen werden
for(int i=0;i<html->Count;i++)
{
if(AnsiContainsStr(html->Strings[i],"action=build")&&( // auch Scheiße
AnsiContainsStr(html->Strings[i],"id=main") ||
AnsiContainsStr(html->Strings[i],"id=barracks") ||
AnsiContainsStr(html->Strings[i],"id=stable") ||
AnsiContainsStr(html->Strings[i],"id=smith") ||
AnsiContainsStr(html->Strings[i],"id=wood") ||
AnsiContainsStr(html->Strings[i],"id=stone") ||
AnsiContainsStr(html->Strings[i],"id=iron") ||
AnsiContainsStr(html->Strings[i],"id=farm") ||
AnsiContainsStr(html->Strings[i],"id=market") ||
AnsiContainsStr(html->Strings[i],"id=storage") ||
AnsiContainsStr(html->Strings[i],"id=wall") ))
{
AnsiString build=BtWn(html->Strings[i],"href=\"","\">"); //BtWn(String str,String one,String two) gibt den String zwischen one und two von str aus
if(AnsiContainsStr(html->Strings[i],"javascript"))
build=BtWn(html->Strings[i],", '","')");
recv_buf=IdHTTP1->Get(server+"/"+build);
cnt++;
}
}
delete html; //saubermachen
}
return cnt; //anzahl der ausgebauten gebäude zurückgeben
}
bool TBot::FarmFull(String recv_buf)
{
AnsiString is=BtWn(recv_buf,"<td align=\"center\">","/"),
limit=BtWn(recv_buf,"<td align=\"center\">","/td>");
limit=BtWn(limit,"/","<");
return (StrToInt(limit)==StrToInt(is)?true:false);
}
bool TBot::CanBuild(String mainb,String id)
{
TStringList *html=new TStringList();
split(html,mainb,"\n");bool can=false;
for(int i=0;i<html->Count;i++)
{
if(AnsiContainsStr(html->Strings[i],"action=build")
&&AnsiContainsStr(html->Strings[i],"&id="+id))
can=true;
}
delete html;
return can;
}
Kein Support per PM!