Silkroad Bot v.0.1 - Source Code

  • Der Anfang einer Silkroad Online Gameplay Automatisierungssoftware.
    Vor einigen Wochen mal angefangen und nie über die Basisfunktionalität hinaus gewachsen, doch sämtliche Plattform Features bietend ist dieses Projekt mein Tribut an die SIlkroad Online Community in diesem Forum.
    Der Bot greift alle Monster an und hebt gefiltert Items auf. Was genau passiert steht im Source Code. Zum Beispiel sind die zu benutzenden Skills Hardcoded.


    Download - uploaded.to


    FÜR DIE ISRO VERSION.


    Naja, ich hoffe damit dem ein oder anderen vielleicht helfen zu können. Ich bin nämlich recht zufrieden mit dem Code, wobei natürlich auch hier, besonders in den Silkroad Klassen, Unsauberheiten zu finden sind.


    MfG

  • Hübsch :D
    Auch wenn ich wirklich gar nichts mehr mit Silkroad zu tun habe sieht es doch ganz passabel aus - sicherlich eine gute Grundlage für einen erweiterten Bot.
    Wenn ich mir deine Todos noch ansehe;


    Zitat

    2 - In SilkroadCharacterInventory and SilkroadCharacterSkills there is a methods called something like
    "createFromCurrentPositionInCharacterDataPacket". Are you kidding me? We have to find some way around it.
    Maybe parse in the class that calls this function?
    Same thing for SilkroadObject::createFromSpawnPacket


    Was genau meinst du damit? Respektive was stört dich daran? :D


    Zitat

    4 - I know we already tried it, but think about adding classes for every differnt type of SilkroadObject.
    Using unions sucks, not only because it is a bad style.


    Es ergibt meiner Meinung nach definitiv mehr Sinn verschiedene Klassen für die Objekte zu verwenden.
    NPC,
    Monster,
    Character,
    Item,
    Pet, ...
    Das Ganze kannst du schlussendlich ja von einer Super-Klasse ableiten (aber ich glaube den Gedankengang hattest du mit Sicherheit schon). :)


    Die einzige kluge Idee für ein Union wäre meiner meinung nach ein grosses Silkroad Packet-Struct.


    Quasi dass man für jeden Opcode, resp. für jede einzelne Packet Art ein Union hat & dann schlussendlich das Packet nichtmehr Byte für Byte parsen muss, sondern den ganzen Bytestream direkt in das Struct lesen kann.



    greez & danke :)

  • An "createFromCurrentPositionInCharacterDataPacket" stört mich neben des langen Namens vor allem die Tatsache, dass ich die Position außerhalb der Klasse setzen muss (also die Vorgänger ihre Daten komplett gelesen haben müssen, damit ich sicher bin, dass jetzt das Inventory anfängt) und nach der Methode nicht sicher bin, ob auch tatsächlich alles geparst wurde.
    Das war auch einer der Gründe weshalb ich das Projekt beendet habe: Ich kann mir nie sicher sein, dass ich jetzt alles aus dem Packet kenne und es nicht doch noch ein kleines Byte gibt, dass die gesamte Struktur ändert, wenn es selber bspw. 2 statt 1 ist.


    Ich habe mal probiert, dass ich, wie du sagtest, alle Silkroad Objekte in eine Klasse packe und dann selbstverständlich von der Super-Klasse SilkroadObject erbe.
    Ich habe es aufgegeben, weil es sich nicht gelohnt hat, für Objekte, die sich nur in einem Byte unterscheiden eine eigene Klasse zu benutzen. Im Sinne der OOP wäre das natürlich trotzdem korrekter und rückblickend vielleicht die bessere Lösung. Da hast du schon Recht.


    MfG