Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Bot tutorial
#1
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 ichTongue, 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
Reply
#2
Sehr unwahrscheinlich das das jemand macht...das wurde schon öfter, erfolgos, gefragt....
[Image: banner1.jpg?2]
Reply
#3
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.
[Image: create.php?uid=14]
Reply
#4
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ärtWink Deswegen wärs echt toll wenn jemand das machen würde.
Reply
#5
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
[Image: create.php?uid=14]
Reply
#6
Nun ja wie gesagt nach meiner erfarhung ist die hilfsbereitschaft da echt nicht so gut...

naja würde mich freuen wenn das jemand macht Wink
[Image: banner1.jpg?2]
Reply
#7
~ 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.
Reply
#8
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.
Reply
#9
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:
  1. localhost ansurfen
  2. schauen, ob dslan erscheint
  3. formular: username suchen
  4. daten aus gedächtnis abrufen
  5. Daten eintragen
  6. formular passwort suchen
  7. daten aus gedächtnis abrufen
  8. Daten eintragen
  9. login-button suchen
  10. link öffnen
  11. überprüfen, ob login erfolgreich, wenn nicht
  12. ->Daten aus gedächtnis überprüfen und
  13. ->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.
Reply
#10
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
Reply
#11
(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 Big Grin Das ist der skript den ich dir gegeben hab Big Grin
Bei
PHP Code:
create_village(2,'D2zA',random); 
würde ich
PHP Code:
create_village(2,'D2zA',rand(530550)); 
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($mainstep00)
if 
$mainstepr ==(!=, >=, <=) ZAHL {
CODE


ID ABLESEN
PHP Code:
$idsql mysql_query("SELECT id FROM users WHERE username = USERNAME")
$idresult mysql_result($idsql00)
mysql_query ("UPDATE villages SET main = main + 1 WHERE userid = $idresult"); 
✝ RiP 
Weiter geht's  Cool
Reply
#12
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"]; 
Reply
#13
Danke schonmal für eure hilfeSmile
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?
Reply
#14
PHP Code:
UPDATE villages SET main main 1 WHERE id $villageid 
✝ RiP 
Weiter geht's  Cool
Reply
#15
und wo muss ich angriffe eintragen, also in welche table?
Reply
#16
Ich glaube in Movements oder mit der Function add_movement()
✝ RiP 
Weiter geht's  Cool
Reply
#17
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.
Reply
#18
Wieso über mysql? Das geht eben auch mit reload wenn du include.inc.php includiert hast Wink
✝ RiP 
Weiter geht's  Cool
Reply
#19
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.
Reply
#20
Aber ohne Reload wird die Punktezahl auch nicht Reloadet
✝ RiP 
Weiter geht's  Cool
Reply




Users browsing this thread: 2 Guest(s)