Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
C/C++ Open Source Bot
#1
Exclamation 
Wie ihr wisst, bin ich gerade dabei einen Bot in C++ zu programmieren.
Das Grundgeruest ist auch schon fertig, allerdings finde ich dass es wesentlich mehr bringen wuerde, das Projekt Open Source zu machen.

Ich weiß leider nicht wie ihr euch in C/++ auskennt, deswegen bitte ich all jene, die bereit wären am Bot mitzuwirken und Ahnung in C/++ haben das hier zu bestaetigen Smile

LG
iNk
Reply
#2
wie immer eine gute idee von unseren iNki^^. Ich bestätige hiermit das ich mich c++ aukenne und gerne am projekt mit teilhaben will. Allerdings weiß ich nicht ob ich genug zeit habe um "mitentwikler" zu werden.

mfg Daniel aka Agamendon
Crap?!
Reply
#3
Zeit zu haben ist wichtig! Ich trage dich aber trotzdem als potentiellen Entwickler ein ;)
Reply
#4
(04.04.2009, 21:53)iNk Wrote: Zeit zu haben ist wichtig! Ich trage dich aber trotzdem als potentiellen Entwickler ein Wink

klar deswegen sag ich das ja auch.
allerdings hoffe es finden sich noch andere
Crap?!
Reply
#5
Ich lerne php, mysql und c/++!!!

Vlt. helf ich auch irg. wann!!
Reply
#6
ist das eigentlicj vereinfachstes c++ mit dem borland c++ compiler. weil die forms etc. sind bei borland schon dabei...
Reply
#7
(05.04.2009, 08:42)-superking- Wrote: ist das eigentlicj vereinfachstes c++ mit dem borland c++ compiler. weil die forms etc. sind bei borland schon dabei...

Das "vereinfachstes C++" ? Mir ist nichts von einfacheren C++'s bekannt und beim Borland C++ Compiler gibt es auch keine Forms oder Komponenten.
Du meinst warscheinlich den Borland C++ Builder, doch nicht mal den benutze ich.

Bei einem Bot geht es darum, was er macht und nicht um das Aussehen, oder kannst Du durch das Aussehen bestimmen, wie der Bot sich verbindet?
Ich glaube dir fehlen in der Hinsicht Grundkenntnisse über höhere Programmiersprachen.

Versuch bitte dich zu informieren, bevor Du sowas naives schreibst. -.-
Kein Support per PM!
Reply
#8
ich bin nicht doof und ich weiß wie schwer bzw. aufwendig es ist, eine gui in c++ zu schreiben. außerdem, auf dem screen zum xebot steht unten Form1->RichEdit1->Lines->Add
und das kenn ich von borland. dann sag du mir nicht, dass du das alles ohne kompontenten machst ...
Reply
#9
Ich programmiere mit der IDE von Codegear.
Du hast immernoch nicht verstanden worum es geht: Das Aussehen bei einem Bot zählt doch nicht, und ich will auch nicht meine gesamte Entwicklungszeit damit verbringen eine GUI zu schreiben, du redest von einem vereinfachtem C++.
Inwiefern ist es denn einfacher mit einer IDE einen Bot zu schreiben ?
Kein Support per PM!
Reply
#10
c++ ist c++. ich meine mit vereinfachtem c++ eigentlich die komponenten. es ist nicht nötig eine gui zu schreiben, da gebe ich dir recht, aber eine gui ist vorallem für den enduser leichter verständlich als eine konsolen anwendung. mit c++ ist es halt ein bischen schwieriger eine fenster anwendung zu erstellen. da hilft einem solche komponenten wie forms etc. die elemente müssen ja nicht schön verziehrt sein, aber sie sollten halt im grundgedanken da sein. und da ist es dann ganz praktisch, wenn man "vereinfachertest" c++ nutzen kann
Reply
#11
Ich meine, es wäre doch unnötig sich selbst eine GUI zu schreiben, wo Codegear schon eine wirklich gute Grundlage bietet.
Für den Anwender würde es ja ansich auch nix bringen, gerade da könnten sich auch die größten Fehler ansammeln.

Naja, back2topic: Für den Bot habe ich mir eine eigene Klasse geschrieben, von der je nach Eingabe soviele Objekte in Threads erzeugt werden, wie der User Bots benötigt.
Den Quellcode würde ich auch gern veröffentlichen, doch bis jetzt sieht es nicht so aus, als ob es sich lohnen würde :(
Kein Support per PM!
Reply
#12
As you know, ich wäre natürlich bereit mitzuwirken - allerdings sehe ich ein Problem in dem OpenSourceBot - nämlich dass er zu leicht für das "echte" DS Umwandelbar wäre.
Reply
#13
Sehr schön ^^ Ich wusste doch, dass ich auf dich zählen kann.

Ja, das stimmt leider. Ich weiß allerdings nicht, wie man das verhindern könnte.
Höchstens ich gebe die Source nur Membern, denen ich vertraue.

Andererseits: Wer schon dazu in der Lage ist den Code zu verstehen, für das echte DS umzubauen und erfolgreich zu kompilieren kann sich genauso gut einen eigenen proggen.
Außerdem gibts im Internet schon einen Stämme Bot, wozu sich also erst die Mühe machen?
Kein Support per PM!
Reply
#14
ich würde auch mitmachen. nur habe ich mich eher auf den grafischen teil von c++ mit directx spezialisiert. aber ich bin sicher das ich euch auch ein bissel helfen kann.
Reply
#15
es wäre natürlich ein risiko den bot Open-Source zu machen -> umprogrammieren. Natürlich gibt es Bots im Internet zu finden aber die sind bei weitem nicht so gut wie deiner iNk <-.

Ich würde auch vorschlagen den Bot nur an vertrauliche personen zu übergeben die sich auch per andere wege wie MSN, ICQ oder Skype kommunizieren können.

Auserdem hoffe ich das Die DsLan benutzer keinen so blöden gedanken bekommen immerhin sind hier einige schlaue köpfchen dabei Wink

mfg Daniel aka Agamendon
Crap?!
Reply
#16
Du bist herzlich Willkommen, richthofen Smile


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.

btwBig Grinie Kommentare habe ich gerade lieblos hinzugefügt, also nicht wundern. Die Formatierung ging auch verloren Sad

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!
Reply
#17
na dan viel spaß jungs Wink
ich werd vlt. nechste woche 1 tag frei haben genaueres werd ich erst morgen erfahren.
Crap?!
Reply
#18
Naja, also ein Tag nützt uns eigentlich nichts.
Wenn Du nur so wenig Zeit hast, musst Du nicht mitarbeiten.
Es ist schließlich kein Muss.
Kein Support per PM!
Reply
#19
was genau gefählt dir denn an der funktion nicht??
Reply
#20
Diese beiden if-Blocks sollen weg,
außerdem muss die Bau-Funktion allgemein verbessert werden (z.B. das Dorf gleichmäßig aufbauen)
Kein Support per PM!
Reply




Users browsing this thread: 1 Guest(s)