Posts: 31
Threads: 9
Joined: Oct 2008
Reputation:
1
(This post was last modified: 11.02.2009, 14:13 by szepi.)
11.02.2009, 14:12
Hallo,
ich hätte den vorschlag, dass doch einer von denen die sich hier auskennen, vll mal ein Bot tutorial macht: Wie schreibt man einen Bot für Ds-lan.
Bisher haben sich ja schon mehrere an einem Bot versucht, aber immer wird ein großes Geheimnis aus den scripten gemacht, sodass Php-Anfänger so wie ich , viele schwierigkeiten haben, selbst mal einen zu schreiben.
Wenn einer hier seine Bot-Kenntnisse ins Forum stellen würde, könnte man das Prinzip genauer verstehen und dadurch einen Bot seinen eigenen Vorstellungen entsprechend schreiben und hier im Forum veröffentlichen. So könnte jeder Anfänger auch mal seinen Teil dazusteuern. Ein Beispiel- Bot würde ja schon reichen um das Prinzip zu erkennen und wenn jeder seinen Code vor dem anderen versteckt, wird es niemals den perfekten Bot geben, sondern nur viele angefangene die alle irgendwo noch ihre schwäche haben...
Wäre echt cool wenn sich jemand darum bemühen würde.
mfg
Posts: 451
Threads: 14
Joined: Dec 2008
Reputation:
7
Sehr unwahrscheinlich das das jemand macht...das wurde schon öfter, erfolgos, gefragt....
Posts: 780
Threads: 38
Joined: May 2008
Reputation:
19
Gefragt wurde soweit ich weiß noch nie...
Naja wenn du meinst wie ich einen Bot zb von agrafix zum laufen bringe dann lies die readme.
Wenn du meinst wie du selber einen machst dann hast du ein problem weil jeder seine Bots anders macht.
Posts: 31
Threads: 9
Joined: Oct 2008
Reputation:
1
ich meine wie man einen selber schreibt^^naja, vom prinzip sind die bots ausgenommen die ink version alle gleich, sie verändern die Datenbank... die bots mögen zwar inhaltlich etwas anders aufgebaut sein, aber ich denke vom grundgerüst her müsstes da kaum unterschiede geben. Und ansonsten orientiert man sich halt an der vorgehensweise von demjenigen ders erklärt Deswegen wärs echt toll wenn jemand das machen würde.
Posts: 780
Threads: 38
Joined: May 2008
Reputation:
19
Frag agrafix oder superking. Die sind super darin... Ich glaube milos wollte auch mal nen machen... Bin leider nicht mehr so aktiv wie früher...
Frag einfach ein bisschen rum dann bekommst du alles was du willst.
mfg emoser
Posts: 451
Threads: 14
Joined: Dec 2008
Reputation:
7
Nun ja wie gesagt nach meiner erfarhung ist die hilfsbereitschaft da echt nicht so gut...
naja würde mich freuen wenn das jemand macht
Posts: 1'107
Threads: 37
Joined: May 2008
Reputation:
47
(This post was last modified: 11.02.2009, 23:11 by agrafix.)
11.02.2009, 23:08
~ moved to "Sonstige Fragen"
Ein Bot zu programmieren ist eigentlich relativ einfach, mein Bot besteht aus 570 Zeilen Code (incl. Datenbankfunktionen und Ausgabefunktionen). Du musst dir zuerst eine "Künstliche Inteligenz" überlegen, und diese dann Programmtechnisch realisieren.
Posts: 31
Threads: 9
Joined: Oct 2008
Reputation:
1
Das mit der künstlichen intelligenz dürfte kein Problem sein, ich würde ihm meine Taktik verleihen, und vll noch n paar tricks reinproggen.
War auf vielen Welten schon in den Top 20, auf Welt 6 n paar Wochen sogar auf Platz 1 mit meinem Killing Scream acc. Also von den Spielkenntnissen dürfte es nicht so schwer sein, meine Probleme sind eher die Php-kenntnisse.
Ich weiß dank Milos halt nur den Anfang, wie man sich in die Mysql Datenbank einloggt und so.
<?php
include("../include.inc.php");
mysql_connect('localhost', 'root', NULL, 'lan');
mysql_select_db('lan');
echo "Der bot wird gestartet";
mysql_query ("UPDATE villages SET main = main + 1 WHERE userid = 2");
create_village(2,'D2zA',random);
reload_all_village_points();
reload_all_player_points();
reload_all_ally_points();
reload_ally_rangs();
reload_player_rangs();
reload_kill_player();
echo map(search_villages);
?>
Meine Fragen wären jetzt noch, z.B wie frag ich ab welcher Spieler welche id hat, oder wie hoch alle Gebäudestufen in dem Dorf sind.
Ein Ausschnitt, indem z.B soeine abfrage statfinden würde,oder jeder Programmtext würd mir schon helfen um die Vorgehensweise zu verstehen.
Ich nehme mal an bei dem Bot wiederholt sich das textschema eh öfters.
Posts: 352
Threads: 12
Joined: Feb 2009
Reputation:
34
(This post was last modified: 12.02.2009, 21:37 by iNk.)
12.02.2009, 21:35
eine KI ist nicht so einfach, wie sie sich anhört.
Ich kenne mich nicht mit PHP aus, doch unter C++ ist es ziemlich aufwendig Vergleichbares zu realisieren.
Da besteht die Schwierigkeit insbesondere beim Parsen der Webseite.
Du musst Unmengen an Informationen verarbeiten, damit dein Bot ein guter Spieler wird, denn man programmiert genau das, was man selbst macht.
Hier eine beispielhafte Login-Prozedur:
- localhost ansurfen
- schauen, ob dslan erscheint
- formular: username suchen
- daten aus gedächtnis abrufen
- Daten eintragen
- formular passwort suchen
- daten aus gedächtnis abrufen
- Daten eintragen
- login-button suchen
- link öffnen
- überprüfen, ob login erfolgreich, wenn nicht
- ->Daten aus gedächtnis überprüfen und
- ->login prozedur wiederholen
natürlich braucht man kein login, wenn man einen bot proggt, der die datenbank modifiziert.
Aber so in der Art proggt man seine algorithmen.
Posts: 861
Threads: 19
Joined: May 2008
Reputation:
57
der große vorteil von php ist dabei, das man direkt auf die daten zugreifen kann, ohne eine webseite zu parsen. dies lässt sich mit mysql funktionen realisieren
Posts: 1'946
Threads: 58
Joined: Aug 2008
Reputation:
82
(This post was last modified: 13.02.2009, 15:00 by Milu2K.)
13.02.2009, 14:59
(12.02.2009, 20:53)szepi Wrote: Das mit der künstlichen intelligenz dürfte kein Problem sein, ich würde ihm meine Taktik verleihen, und vll noch n paar tricks reinproggen.
War auf vielen Welten schon in den Top 20, auf Welt 6 n paar Wochen sogar auf Platz 1 mit meinem Killing Scream acc. Also von den Spielkenntnissen dürfte es nicht so schwer sein, meine Probleme sind eher die Php-kenntnisse.
Ich weiß dank Milos halt nur den Anfang, wie man sich in die Mysql Datenbank einloggt und so.
<?php
include("../include.inc.php");
mysql_connect('localhost', 'root', NULL, 'lan');
mysql_select_db('lan');
echo "Der bot wird gestartet";
mysql_query ("UPDATE villages SET main = main + 1 WHERE userid = 2");
create_village(2,'D2zA',random);
reload_all_village_points();
reload_all_player_points();
reload_all_ally_points();
reload_ally_rangs();
reload_player_rangs();
reload_kill_player();
echo map(search_villages);
?>
Meine Fragen wären jetzt noch, z.B wie frag ich ab welcher Spieler welche id hat, oder wie hoch alle Gebäudestufen in dem Dorf sind.
Ein Ausschnitt, indem z.B soeine abfrage statfinden würde,oder jeder Programmtext würd mir schon helfen um die Vorgehensweise zu verstehen.
Ich nehme mal an bei dem Bot wiederholt sich das textschema eh öfters. Haha Das ist der skript den ich dir gegeben hab
Bei
PHP Code: create_village(2,'D2zA',random);
würde ich
PHP Code: create_village(2,'D2zA',rand(530, 550));
machen
Die Abfrage für Gebäuden machst du so:
PHP Code: $mainstep = mysql_query("SELECT GEBÄUDE FROM village WHERE userid = userid") $mainstepr = mysql_result($mainstep, 0, 0) if $mainstepr ==(!=, >=, <=) ZAHL { CODE }
ID ABLESEN
PHP Code: $idsql = mysql_query("SELECT id FROM users WHERE username = USERNAME") $idresult = mysql_result($idsql, 0, 0) mysql_query ("UPDATE villages SET main = main + 1 WHERE userid = $idresult");
✝ RiP ✝
Weiter geht's
Posts: 1'107
Threads: 37
Joined: May 2008
Reputation:
47
(This post was last modified: 13.02.2009, 23:40 by agrafix.)
13.02.2009, 15:45
Hallo,
also milos was du hier verbreitest ist leider nicht ganz richtig. Mit
Code: UPDATE villages SET main = main + 1 WHERE userid = $idresult
würdest du bei jedem Dorf des spielers mit der ID $idresult das Hauptgebäude um eins erhöhen.
Ach dieser Teil ist mir rätselhaft:
PHP Code: mysql_query ("UPDATE villages SET main = main + 1 WHERE userid = 2"); create_village(2,'D2zA',random);
Erst mal etwas "bauen", und dann ein Dorf erstellen? Komische Logik...
Die Gebäudestufenabfrage machst du so:
PHP Code: $result = mysql_query("SELECT * FROM villages WHERE userid = ".$botid); while ($village = mysql_fetch_assoc($result) { // hier kannste jetzte für jedes dorf etwas anstellen, $village enthält einen Array mit allen nötigen infos, wie zB ein gebäude $village["main"] oder die punktezahl $village["points"] }
Oder geziehlt:
PHP Code: $result = mysql_query("SELECT * FROM villages WHERE id = ".$dorfid); $village = mysql_fetch_assoc($result);
// wieder ein array mit den entsprechenden daten, zB: echo "In Dorf #".$dorfid." ist das Hauptgebäude auf ".$village["main"];
Posts: 31
Threads: 9
Joined: Oct 2008
Reputation:
1
Danke schonmal für eure hilfe
Das werde ich direkt mal ausprobieren.
(13.02.2009, 15:45)agrafix Wrote: Hallo,
also milos was du hier verbreitest ist leider nicht ganz richtig. Mit
Code: UPDATE villages SET main = main + 1 WHERE userid = $idresult
würdest du bei jedem Dorf des spielers mit der ID $idresult das Hauptgebäude um eins erhöhen.
Ja stimmt, dass erhöht alle hauptgebäude des spielers... wie würde ich denn nur das von einem bestimmten dorf erhöhen?
Posts: 1'946
Threads: 58
Joined: Aug 2008
Reputation:
82
PHP Code: UPDATE villages SET main = main + 1 WHERE id = $villageid
✝ RiP ✝
Weiter geht's
Posts: 36
Threads: 2
Joined: May 2008
Reputation:
1
und wo muss ich angriffe eintragen, also in welche table?
Posts: 1'946
Threads: 58
Joined: Aug 2008
Reputation:
82
Ich glaube in Movements oder mit der Function add_movement()
✝ RiP ✝
Weiter geht's
Posts: 31
Threads: 9
Joined: Oct 2008
Reputation:
1
Gibt es einen mysql-Befehl um die Punkte zu aktualisieren?
Ich weiß das es die Php Funktion reload_all_village_points(); und
reload_all_player_points(); gibt, aber ich muss das über mysql machen.
Wie müsste ich da vorgehen?
Und wie lasse ich den Bot angreifen.
Posts: 1'946
Threads: 58
Joined: Aug 2008
Reputation:
82
Wieso über mysql? Das geht eben auch mit reload wenn du include.inc.php includiert hast
✝ RiP ✝
Weiter geht's
Posts: 80
Threads: 2
Joined: Dec 2008
Reputation:
3
(This post was last modified: 14.02.2009, 20:41 by Ephelian.)
14.02.2009, 20:00
PHP Code: mysql_query("UPDATE villages SET points = '$punktzahl' WHERE id = '$villageid'");
Ich weiß nicht ob es die Spalte 'points' gibt, da ich gerade nicht schauen kann. Sollte es sie nicht geben musst du 'points' halt mit dem entsprechenden Spaltenname ersetzen.
Posts: 1'946
Threads: 58
Joined: Aug 2008
Reputation:
82
Aber ohne Reload wird die Punktezahl auch nicht Reloadet
✝ RiP ✝
Weiter geht's
|