Beiträge von Steap

    Ich denke, der Fix ist in Ordnung. Es geht aber definitiv anders und besser. Das hier ist eher ein Workaround, denn jetzt wird mit jedem vorgegebenen Pulse(?) dem Charakter gefolgt und alle 500ms. Ich habe den Fix mal im M2Dev Forum gesehen.

    The button must be in the area of the first parent element of the window or it won't work, as far as i know.

    1. Create another class with just the button in it and instantiate it in TargetBoard. Could be hard because of the references to
    2. Put everything on a invisible window that acts as the new parent
    3. And and and

    Unfortunately, i currently don't have time to help

    Die, womit deine Drop UI in Verbindung steht.

    Wahrscheinlich heißen die in etwa so:

    root/uidrop.py

    uiscript/dropwindow.py

    gibt es da irgendwie ein tut oder ähnliches? oder erklärt sich jemand bereit dazu zu helfen? :)

    Ich würde es nicht komplett entfernen und dafür den Versuch loggen. Es ist praktisch ein Giveaway für jeden Administrator, wenn eine für Botter bekannte Funktion geloggt werden kann, statt sie zu entfernen.. Wenn ein Nutzer versucht per Injection die Funktion aufzurufen, erfährst du es.


    Hier, ohne Logging:

    Bitte melden Sie sich an, um dieses Bild zu sehen.


    C: char_item.cpp
    1. // DropItem damit austauschen:
    2. bool CHARACTER::DropItem(TItemPos Cell, WORD wCount)
    3. {
    4. ChatPacket(CHAT_TYPE_INFO, "Du darfst keine Gegenstände fallen lassen.");
    5. return false;
    6. }

    Für den Python-Part bräuchte ich die passenden Py-Dateien.

    Update zu folgendem Release:

    Bitte melden Sie sich an, um diesen Link zu sehen.


    Das Tutorial findet ihr ebenfalls in dem Thread von CHXENVS.


    Viel Spaß!



    Ihr wollt andere Programme haben?

    Ich bin sehr sorgfältig mit den Programmen die ich benutze und gehe (für mich) zu 100% sicher, dass es sich um legitime Dateien handelt, die nicht infiziert sind. Wenn ihr mehr nützliche Programme sehen wollt, schreibt diese einfach als Vorschlag in den Thread rein oder mit einer privaten Nachricht an mich.

    Magst du mich vielleicht auf Discord adden? Kam noch nicht dazu mir das genauer anzusehen, würde dich dann direkt Updaten wenn ich mal drüber schaue


    Strukturidee

    • Free Version mit den 3 wichtigsten(!) Systemen (feste Systeme)
    • Paid Version (Lite) mit den 5 wichtigsten Systemen & 5 Quality of Life Systemen (User darf aussuchen)
    • Paid Version (Pro) mit weiteren 15 wichtigen Systemen & 15 Quality of Life Systemen (User darf aussuchen)
    • Paid Version (Ultra) mit dem neusten Stand dieses Projekts, welches durchgehend erweitert und perfektioniert wird und alle Systeme enthält
    • Du kannst von einer Version zur anderen Version upgraden, indem du die Differenz nachzahlst

    Wieso?

    Die ersten zwei Versionen sind fertige Versionen, die nicht mehr mit neuen Systemen, aber mit Bugfixes beliefert werden. Mit einer kostenlosen Version versicherst du potentielle Kunden, dass es sich um eine gute Implementation handelt. Die meisten werden mit den 3 wichtigsten Systemen wahrscheinlich aber nicht befriedigt sein, weshalb es auch kostenlos ist. Die Lite Version dient als Sneak-Peak und reicht für einen guten Start aus. Die Pro Version ist eine sehr stabile und komplett ausreichende Version, mit der man praktisch die hälfte des Servers fertig hat. Die Ultra Version ist die aktuellste Version und wird (nicht unbedingt regelmäßig) aktualisiert.


    Warum so kompliziert?

    Personal preference

    Ich benutze folgendes für meine Backups, vielleicht kann es jemand gebrauchen:

    backup.sh:

    Code
    1. curr_date = $(date +"%Y_%m_%d_%I_%M_%S_%p")
    2. sql_file_name ="SQL_backup_$curr_date.sql"
    3. # Wenn du alle lokalen Datenbanken sichern willst:
    4. sudo mysqldump -u USERNAME -pPASSWORD --all-databases > /dein/backup/pfad/$sql_file_name.sql
    5. # Wenn du das Skript auf einem externen Server ausführst (empfehlenswert!):
    6. sudo mysqldump -h HOST_ADDRESS -u USERNAME -pPASSWORD --all-databases > /dein/backup/pfad/$sql_file_name.sql


    sudo crontab -e und dort folgenden Cronjob einfügen:

    Code
    1. @1800 /pfad/zu/backup.sh


    Erklärung:

    • Datenbank Daten
      • HOST_ADDRESS ist die IP Adresse zum externen Server (falls ihr nicht aus einer lokalen Datenbank sichert)
      • USERNAME ist der Username des Datenbanknutzers
      • -pPASSWORD ist das Passwort des Datenbanknutzers. Bei mir musste ich das Passwort direkt an -p anknüpfen, damit es funktioniert. Wenn dein Passwort also h4ll0we1t ist, muss dort -ph4ll0we1t stehen.
    • Crontab
      • @1800 steht für alle 1800 Sekunden (sind 30 Minuten). Dort kann auch @daily, @weekly, @reboot oder eine spezifische Uhrzeit stehen. Mehr Informationen: Bitte melden Sie sich an, um diesen Link zu sehen.
      • /pfad/zu/backup.sh ist der Pfad zu der erstellten .sh Datei mit dem oben genannten Skript
    • Empfehlung
      • Wenn du eine externe Datenbank sicherst (eine Datenbank die nicht auf dem selben Server liegt), empfehle ich dringend einen neuen Datenbanknutzer zu erstellen, der nur lesen kann, da die Datenbank meines Wissens ohne Whitelist von jedem erreichbar ist.
      • Um an Yuma anzuknüpfen: Wenn du die Sicherung direkt auch auf einem Server aufbewahren willst, solltest du das Skript am besten direkt auf einem externen Server ausführen und die Datenbank per SSH erreichbar machen und die IP deines Sicherungs-Servers in die Whitelist eintragen. Oder du lädst das erstellte Archiv stattdessen vom Main-Server auf einen Sicherungs-Server.


    Dat Ding solltest du vielleicht einmal komplett umschreiben lassen, falls du in Zukunft noch damit arbeiten willst. Dat ist ja seltsam.

    Bitte melden Sie sich an, um dieses Bild zu sehen.


    Ich vermute mal, dass bei dir das Fenster von der Größe her angepasst wird und dann erst die Button Count ermittelt wird. Wenn du dann erneut klickst, wird die passende Fenster-Größe ermittelt, weil die Button Count bereits bekannt ist.


    Ich kann mir das gerne nachher bei mehr Zeit ansehen, kann aber nichts versprechen.

    Das sieht für mich ganz und gar nicht nach einer reinen Datenbankanbindung aus, wenn ich ehrlich bin. Ich möchte nochmal anmerken, dass ich kein Experte bin, aber das sieht mir sehr stark nach P2P aus und das meinte ich mit der Metin2 API.


    Zitat

    Wieso solltest du jemanden so nicht kicken können?

    Naja, magst du mir erklären wie du jemanden per Datenbank kickst?

    Wünsche dir alles Gute bei deinem Projekt und hoffe dass es deinen und den Erwartungen deiner Kunden entspricht allerdings muss die nicht unbedeutende Frage stellen, wofür?

    Es gibt bereits ein solches Tool und ich bezweifel dass du in der Zeit, dem Verkäufer die Stirn bieten kannst in Punkt Stabilität, Aufbau und allgemeinen Funktionen.

    Ich denke jeder der länger in der Szene aktiv ist, weiß von wem die Rede ist (möchte hier keine Werbung in deinem Thread betreiben) - überleg es dir gut, weiß von dieser Person selbst dass es sehr sehr viel Aufwand ist.

    Das klingt sehr stark danach, als würdest du dich nur auf eine Datenbank-Anbindung beschränken, kann das sein?

    Worauf sollte er sich denn sonst einschießen?

    Du kannst per Datenbank einen Spieler sperren, ihn aber nicht kicken. Dass Chat-Sperren per Datenbank möglich sind, glaube ich auch nicht. Du müsstest dich mit Daten in der player-Tabelle zufrieden geben, die 10 Minuten alt sind, weil Metin2 meines Wissens erst alle 10 Minuten die Datenbank-Tabelle aus einem Cache aktualisiert. Zudem glaube ich auch, dass es so war, dass die Änderungen in der player-Tabelle ignoriert werden, während der Spieler online ist, weil der Server in der Zeit neue Daten cached und beim speichern die Werte die bereits in der Datenbank stehen ignoriert. Not too sure about that.


    Dafür bräuchtest du etwas wie die Metin2 API-Anbindung und wenn du neue Features anbieten willst, reicht eine einfache Registrierung nicht, weil du dafür neue Funktionen im Server-Source schreiben musst und Spieler sie implementieren müssten.


    Aber vielleicht habe ich auch einfach nur das Ziel des Projekts falsch verstanden. Es kann sich wirklich nur um eine Plattform handeln, womit man die Datenbank praktisch bearbeiten / analysieren kann.

    VirusScan looks okay to me. You could use Bitte melden Sie sich an, um diesen Link zu sehen.

    Ich denke die "Sicherheit" ist nur ein Bruchteil seiner Anspielung.

    1. Führt man nichts aus was man nicht kennt, es sei denn man ist dumm.
    2. Ist es durch ein Python Script für jeder individuell erweiterbar/abänderbar
    3. Ist es allgemein besser mit offenen Dingen zu hantieren als eine .exe

    Vielleicht findet sich jemand, der es für die Interessierten in Python neu schreiben kann. Es ist ein ziemlich simples Tool.


    VirusScan looks okay to me. You could use Bitte melden Sie sich an, um diesen Link zu sehen.

    virusscan genauso Aussagekräftig wie der Mann

    Bitte melden Sie sich an, um diesen Link zu sehen.

    Auf Seiten wie VirusTotal kannst du viele Programme nicht nur Scannen, sondern auch ausreichend analysieren. Ich bin bei weitem kein Experte, aber es sieht in Ordnung für mich aus.