/*
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;
}