Beiträge von metho

    Bcrypt ist keine Verschlüsselung/Encryption.


    Für Git solltest du smudge und clean Filter einrichten, der wichtigste hierbei ist Git LFS, der ersetzt Binär-Dateien (davon hat Metin2 relativ viele) automatisch beim Committen durch File-Pointer. Somit speicherst du in deinem Git-Repository ausschließlich einen "Link zur Datei" und die eigentliche Datei speichert dein Git-Hoster an einem anderen Ort. Du solltest gegebenfalls deinen Source-Code am Anfang komplett formattieren oder gar nicht neu formattieren, da dies ja sonst als Changes in den darauffolgenden Commits auftaucht. Formattierung kann auch als Filter dienlich sein, je nach dem wie du arbeitest, ich bevorzuge jedoch die VSCode settings formatOnSave oder formatOnPaste Variante (ähnliches gibt es auch als Plugin für Visual Studio).


    Ich würde dir empfehlen einen Git-Client wie Git-Fork oder Git-Kraken zu verwenden. Diese sehen auf den ersten Blick komplizierter aus als z. B. GitHub Desktop, jedoch lernst du mit den zwei zuvor genannten mehr wie git funktioniert.

    Ein wichtiges Altagstool bei git ist eigentlich Git Bisect. Das hilft dir Fehler einfacher zu finden.

    Die Lösung des Fehlers kannst du hier nachlesen: Bitte melden Sie sich an, um diesen Link zu sehen. . Kann sein, dass etwa Begrifflichkeiten wie "Block" etc. für dich neu sind, die Definitionen sollten aber alle auffindbar sein.

    Nein, das ist kein Bullshit. Das ist defacto Teil der Definition eines Virus.

    Ich bezweifle nicht, dass es in Metin2 viele False Positives gibt, aber viele Metin2 Spieler gehen direkt davon aus, dass es so ist, weil es ihnen so gesagt wird. Nehmt doch einfach mal die Sorgen der Spieler ernst, so abwegig ist das nicht, dass jemand sowas macht. Die Vergangenheit hat's bewiesen.

    Arwena Woher hast du den Patcher bezogen? Werden die Daten von einer zertifizierten nachweisbaren Quelle heruntergeladen? Kannst du uns diesbezüglich mehr Informationen geben?

    Nope. That has no impact and is only formatting.

    Nope.

    The problem here is that the function CanWarp() has a qualifier const. With it, a non-static function must not modify it's underlying instance.

    Both GetOfflineShopGuest() and GetAuctionGuest() are getters and follow this restrictive rule. But they must be qualified as such too.

    You simply have to add const (FunctionName() const) to both function declarations and definitions.

    Für Deutsch:


    For English:


    If you are interested in the source code and want to get more information or learn something, please feel free to do so:



    Ich habe dies im Vorfeld nochmals Aze mitgeteilt. Hier nochmals Danke für seine Diskretion. :pepelove:

    Du denkst viel zu kompliziert:

    Du musst einfach alle Items ausschliessen, welche ein +1 - +9 im Namen haben.

    JavaScript
    1. console.log(items.filter(({ item_name }) => !/\+[1-9]$/.test(item_name)))

    Es gibt aber Items, welche über +9 gehen (z. B. Angel), also müsstest alle +Zahlen ausschliessen bis auf +0:

    Code
    1. console.log(items.filter(({ item_name }) => !/\+\d+$/.test(item_name) || item_name.endsWith('+0')))

    Dies prüft ob ein "+" gefolgt auf eine Digit Kombination vorhanden ist am Ende, wenn nicht, ok, wenn doch, wird geprüft ob es sich um +0 handelt am Ende.

    Boah nicht schlecht was du hier gemacht hast :D

    Darf ich fragen wo du dir dein webdev wissen angeeignet hast? Kannst du irgendwelche Bücher empfehlen?

    habe die nächste Zeit sehr viel zeit und möchte mir was sinnvolles aneignen. Danke dir!

    JUST DO IT.

    Und nein, ich kann dir kein Buch empfehlen, weil ich in meinem Leben kein einziges Buch über Programmieren freiwillig gelesen habe. Bücher sind kontraproduktiv, weil sie dich davon abhalten selber zu denken und über den Rand hinaus zu schauen.

    Die meisten Entwickler sind Anwendungsentwickler. Sie gehen den Weg des geringsten Widerstandes und begnügen sich mit der erstbesten Antwort, welche bei StackOverflow steht um möglichst schnell ein Ergebnis vorzuweisen, welches funktionsfähig ist.

    Wenn du noch kein fundiertes Wissen hast, wirst du dich wahrscheinlich noch paar Monate/Jahre damit begnügen müssen. Aber nicht verzagen! Denn die Lernkurve ist exponentiell (sagte mir einst jemand)!

    Ich empfehle dir als ersten Schritt, schaue dir an wie es andere gemacht haben. Am besten etwas, was du bereits als Anwendungsentwickler kennengelernt hast und du jetzt vertieft anschauen willst.

    Wenn du dich für PHP interessierst:

    Die Entwicklung mit PHP erwartet leider Wissen im Bereich der OOP Programmierung. Wenn du diese noch nicht hast, dann erlerne es. In der Zeit kannst du dir aber schon mal einfacheren PHP Code anschauen.

    Für Anfänger empfiehlt sich WordPress. Wie die ihren Code formatieren ist nichts was du dir aneignen solltest, aber er ist leserlich und der Source Code ist einfach zu verstehen.

    Wenn du bereits Erfahrung in OOP hast, kann ich dir das Projekt von phpMyAdmin empfehlen. Ist eigentlich auch noch im Bereich der Anfängerfreundlichkeit.

    Wenn du dann wissen willst wie man's richtig macht und damit auch sehr stark übertreiben kann. Kannst du dir Projekte wie Laravel anschauen.

    Wenn du dich für JavaScript interessierst:

    Wenn du noch ein Anfänger bist. Schaue dir den Source Code von jQuery an. Dieser ist auch wieder relativ einfach zu verstehen und leserlich.

    Wenn du dich mit JavaScript bereits gut auskennst. Dann kann ich dir empfehlen schaue dir mal paar Bundler an wie Webpack oder RollupJs. Studiere diese erstmals ganz oberflächlich. Themen wie Garbage Collection (Mark-and-Sweep), Tree-Shaking, AST, Chunk-Splitting etc.. Versuche zu verstehen wie unterschiedliche Bundler diese implementiert haben. Der Vorteil bei Bundlern ist, du lernst etwas über die Entwicklung mit Nodejs und gleichzeitig etwas über die Entwicklung mit JavaScript im Browser.

    Oder schaue dir Projekte an wie Reactjs. Hierbei ist der Code aber schon nicht mehr so einfach zu durschauen, wenn du keine Vorerfahrung in React Entwicklung hast. Hierbei empfiehlt es sich die unstable_ Funktionen sich anzuschauen z. B. unstable_wrapCallback, unstable_scheduleCallback etc..

    Im Backend kann ich dir empfehlen, schau dir das Projekt koa.js an. Es ist wirklich sehr auch wieder anfängerfreundlich.


    Wenn du bereits ein fundiertes Wissen hast in Web-Entwicklung und du präziseres Wissen erlangen möchtest, kann ich dir empfehlen, dass du dich mit Dingen im Detail wirklich konkret auseinandersetzt.

    Wenn du dich für PHP interessierst:

    Wichtig! Bevor du mit mit irgendwas anfangen möchtest lerne erstmal C. Generell hilft dir C auch bei der Entwicklung mit PHP. Da kommst du nicht drumherum, wenn du in PHP gut werden möchtest.

    Kann ich dir empfehlen schau dir gezielt ein Gebiet an. Z. B. libxml. Wie wie werden XML/HTML Dateien geparst und interpretiert:

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

    Interessanter Einstieg ist auch z. B. URL Parsing. Das ist eigentlich Vulnerable By Design:

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

    Wenn du dich für JavaScript interessierst:

    Für das Backend das gleiche in Nodejs/V8 wie bei PHP. Hierbei ist aber zu sagen, dass der Source Code um einiges komplexer zu verstehen ist, weil dieser in modernem C++ geschrieben ist.

    Wenn du dich für Frontend-Entwicklung mehr interessierst, dann sei dir gesagt, dass der Weg um einiges Steiniger wird als im Backend. Es gibt so viele Rendering Engines, Sandboxes, Environments etc. mit denen man Anfangen könnte. Kannst dir aber mal WebKit/JavaScriptCore anschauen.

    Um hierbei vielleicht bisschen vorweg dir Dinge anzueignen empfiehlt sich MDN. Hier findest du Themen wie Memory Management, die dir vielleicht so oberflächlich helfen können Ansätze zu verstehen.

    Als Einstieg hier etwas über Post Messaging Transfer und die Kommunikation zwischen verschiedenen Workers: Bitte melden Sie sich an, um diesen Link zu sehen.

    Wenn das alles gerade bisschen viel erscheint, dann kann ich dir YouTube empfehlen. Hilft immer um sich mal ein Thema auf die leichte Art reinzuziehen. Oder lies ein Buch (:pepelaugh:). Aber irgendwann heisst es: DO IT.


    Und spätestens dann wenn es heisst DO IT. Unterscheiden sich die Leute, die wirklich wissen wo von sie reden von den Leuten die den ganzen Tag nur Zeug schwurbeln und sagen, sie denken "so ist es doch" und "so funktioniert es doch", aber eigentlich keinen Plan haben was sie da eigentlich machen.

    Kompetentes Team mit der nötigen Erfahrung in dem Bereich um ein AC anzubieten, welches man auch weiterempfehlen kann. Der Support und Integrität ist auch 1A.

    Finde, dass es gerade im Bereich Sicherheit wichtig ist, dass ein Entwickler, der eine Lösung für ein Problem anbieten möchte, den nötigen Ehrgeiz mitbringt sich tagtäglich mit der Materie zu beschäftigen, besser zu werden. weil man sich weiterentwickeln möchte und das ist hier definitiv mehr als gegeben.

    Sie sind sich nicht zu schade, selber herauszufinden, welche Möglichkeiten es gibt Dinge zu umgehen statt abzuwarten bis es jemand anderes für sie herausfindet.

    Ja, also grundsätzlich bist du bisschen auf dem Holzweg mit UTF-8. UTF-8 ist eine multi-byte Enkodierung, welche alle Unicode Zeichen unterstützt, das sind ganz viele an der Zahl.


    Damit wirst du aber in Metin wenig anfangen können, weil C++ unter Windows und Multibyte nicht die besten Freunde sind. Es bedeutet, dass die Zeichen nach dem 128. Zeichen aus der Kombination von mehreren Bytes bestehen, also ist ein String der 30 Bytes lang ist, nicht auch immer 30 Zeichen lang.

    Metin2 arbeitet hingegen im westlichen Raum mit Codepages, die mit Abstand bekannteste ist windows1252. Und dient als Codepage für den westeuropäischen Raum. Diese sind immer ein Zeichen per Byte.

    Codepages unterstützen nur 256 Zeichen, sind wie UTF-8 auch ASCII kompatibel, was bedeutet, dass die ersten 128 Zeichen von der Stell 0 bis 127 gleich sind. Die Zeichen von 128 bis 255 können variieren ähneln sich aber auch sehr stark.

    Ein wichtiger Punkt den du über Codepages wissen musst, sie sind nicht enkodiert, dass bedeutet, jedes einzelne Zeichen steht genauso da wie's dasteht, keine Zusatzinformationen. Das bedeutet, man kann nicht wissen was für eine Codepage man vor sich hat. Es kann ANSI windows1252 sein, es kann aber auch ISO latin1 sein, die sich sehr stark ähneln, aber nicht exakt gleich sind. Wenn du einen Text bekommst der nur ASCII Zeichen beinhaltet wie "A-Za-z0-9+-{}[]/()" etc. ist es unmöglich nachzuvollziehen, was der Absender des Textes für eine Codepage hatte, wenn diese Information nicht zusätzlich übergeben wird.

    Ein "?" entsteht, dann wenn eine Codepage an der Stelle kein Zeichen kennt. Ergo nicht alle Stellen der 255 möglichen Stellen sind belegt mit Zeichen.

    Es gibt zu jeder Codepage einen Wikipedia-Eintrag, den du dir ansehen solltest, hier z. B. windows1252:

    Deutsch: Bitte melden Sie sich an, um diesen Link zu sehen.
    Türkisch: Bitte melden Sie sich an, um diesen Link zu sehen.
    etc.

    Nun zu deiner eigentlichen Frage, was hilft dir das jetzt?
    Du musst wissen:
    - MYSQL verwendet latin1 in Metin2, welches sich sehr der windows1252 ähnelt, aber nicht ganz deckungsgleich ist.

    - Deine Codedateien solltest du immer in windows1252 öffnen und nur ASCII Zeichen verwenden, wenn möglich.
    - Deine restlichen Sprachdateien musst du in der jeweiligen Codepage öffnen, dies kannst nur du wissen, dein Editor weiss nicht was er da öffnet und du musst ihm (wenn er nicht intelligent ist) jedesmal sagen, interpretiere die türkische Datei als windows1254 Codepage.
    - In deinem Code, musst du angeben, wenn du die Codepages lädst, dass diese mit der Codepage windows1254 interpretiert werden muss, wenn es eine türkische Datei ist, das kann dein Metin2 Code nämlich genauso wenig wissen.
    - Dem Client musst du ebenfalls sagen, was er als was interpretieren muss. Und welche Nachricht deutsch ist und welche türkisch etc..

    Wenn du weitere Fragen hast, einfach stellen.

    Und deswegen muss man es genau so coden ? 😂


    Dragonsoul ist ein eigenes Window

    Es ist durchaus Praxis; Dinge einheitlich zu coden, Legacy Code zu respektieren und im gleichen Stil fortzufahren ist meines Erachtens sogar der korrekte Weg.


    Nur Noobs schreiben die ganze Struktur von M2 um und denken sie haben dadurch was gewonnen.

    Nein, was du sagst ist Unsinn. Du meinst Plaintext, nicht Klartext. Enkodierte Daten sind auch Klartext. Du machst gerade den MaxChri und frontest mich, obwohl ich dir nur erkläre wie's funktioniert.


    Ich habe keine Lust dir zu erklären, weshalb es performanter ist, weil du nur mit irgendwelchen Begriffen um dich wirfst.

    Gut zu wissen dass Klartext also die Übersetzung ist, bleiben wir nächstes mal doch einfach bei Englisch. Schade ist natürlich dass du mir nicht zeigen kannst dass Sessions performanter sind. Würde das gerne mal schwarz auf weiß haben.

    Plaintext und Klartext haben in diesem Zusammenhang eine unterschiedliche Bedeutung, mein Freund. Informier dich doch einfach, wenn du's nicht weisst bevor du irgendwas äusserst, nur um was dagegen gesagt zu haben.

    Die Daten werden auch nicht validiert mit dem Secret sondern verifiziert. Du verwendest einfach wahllos irgendwelche Begriffe ohne diese zu verstehen.


    Habe echt keine Lust dir zu erklären, warum das eine performanter ist als das Andere, dafür müsstest du verstehen, wie beide funktionieren und das tust du nicht. Zudem habe ich keine Lust, dir was beizubringen, wenn du so drauf reagierst.

    Wenn du wirklich interessiert bist, etwas zu lernen, dann kannst du mich gerne privat anschreiben, statt dich hier als wannabe zu outen.

    Nein, was du sagst ist Unsinn. Du meinst Plaintext, nicht Klartext. Enkodierte Daten sind auch Klartext. Du machst gerade den MaxChri und frontest mich, obwohl ich dir nur erkläre wie's funktioniert.


    Ich habe keine Lust dir zu erklären, weshalb es performanter ist, weil du nur mit irgendwelchen Begriffen um dich wirfst.

    HS256 encoded? Wtf soll das sein? Meinst du HS256 encrypted? Und nein, die Daten werden nicht encrypted, sondern signiert. Die Daten eines JWT Tokens stehen im Klartext, respektive sind sie Base64 enkodiert.
    Ich habe bewusst Dinge weggelassen um es euch leichter verständlich zu machen.


    Du bist ein Meme, dass keine Ahnung hat wovon es redet lul :pepelaugh:

    Mein Vorredner hat leider nur Halbwissen verzapft :pepelaugh:. Weshalb dir hier eine korrekte und simple Antwort gebe:

    Bei JWT:

    Initial wird ein Token vom Server an den Client übertragen, dieser Token wird vom Server signiert und kann bei jedem weiteren Request vom Client an den Server, vom Server verifiziert werden.

    Der Token beinhaltet sowohl die Signatur als auch die Daten zur Authentifizierung (z. B. account_id). Diese Daten sind Klartext und sowohl für Server als auch Client einsehbar.
    Durch die Signatur, kann der Server verifizieren, ob die im Token beinhalteten Daten exakt dem entsprechen, was der Server zuvor dem Client gesendet hat. Weder der Client, noch der Server kann den Token verändern, ohne das dieser seine Gültigkeit verliert.


    Bei Sessions wie :
    Initial generiert der Server einen zufälligen Token. Dieser Token wird vom Server gespeichert und an den Client übertragen. Anders als bei JWT beinhaltet dieser Token keine Daten. Die Daten werden auf dem Server gespeichert und können nicht vom Client direkt abgerufen werden. Bei jedem Request, sendet der Client den Token dem Server und der Server ruft entsprechend des Tokens die Daten hervor. Diese kann der Server beliebig ändern, sind aber nur für diesen ersichtlich.

    Ich würde nicht sagen, dass das eine besser ist, als das andere.

    Aber du musst wissen, dass JWT ressourcenschonender ist, da du dir Datei-Zugriffe auf deinem Server sparst.
    Jedoch sind Sessions in der Regel performanter, flexibler und einfacher nachzuvollziehen. Flexibler deswegen, weil die Daten entsprechen noch im nachhinein vom Server geändert werden können.

    Was du stattdessen machen könntest, ist, dass du Teams hilfst ihre System besser und sicherer zu entwickeln. Du könntest ihnen grundlegend die wichtigsten Punkte von Agiler Entwicklung näher bringen und Compliance.


    Weil Lücken wird es immer geben und in 95% der Fälle ist es Jemand aus dem eigenen Team/eigenen Reihen, der es einem Anderen nicht gönnt.


    Viel wichtiger als Lücken zu finden ist, die Entwicklung von Systemen und deren Anforderung. Viele Server bauen blindlinks alles ein was die in Foren finden und nach zwei Tagen kommt es auf den Live-Server ohne irgendwelches dokumentiertes Testing oder Sonstiges.

    So auch die Anforderungen an die Teammitglieder und die Verwaltung deren Rechte. Diese sollten auch bis zu einem gewissen Grad vertrauenswürdig sein. Viele Teams sind zu faul, Prozesse, Daten, und Abläufe einzuhalten und diese zu dokumentieren; ich empfinde das als viel gravierender als das man gehackt wird.

    Ich warte ehrlichgesagt auf den Tag an dem ein Server ein Announcement macht: "Sorry, wir wurden so eben gehackt. Der Server wird nach einem Hotfix in 5 Minuten wieder hochgefahren :hackerman:"

    Ein gut gemeinter Appell, lass es sein, hör auf. Nimm deine 7 Sachen und vereis weit weg. Merkst du nicht wie sehr dein Geisteszustand mittlerweile leidet und dein Gehirn bereits schaden genommen hat? Ich glaube der DDoS ist direkt in dein' Kopf vorgedrungen...

    Der Preis sollte bei sowas niemals eine Rolle spielen.


    Wenn X nur bisschen besser ist als Y, aber X doppelt soviel kostet, nimm X. Zudem ist das ein Zusammenspiel aus der Kompatibilität des ACs, die Kredibilität des Entwicklers, die Flexibilität kontinuierlich Patches zu liefern und das AC an sich.

    Hör auf geleakte Files zu nutzen wenn du nicht mal den Offensichtlichsten Fehler lesen kannst den er dir sogar groß und fett hinschreibt

    es tut mir leid das nicht jeder so gut sein kann wie du ?

    Darum geht es nicht. Durch die erste Version dieser Files wurde der Grundstein gelegt, dass selbst Leute wie du einen Server erstellen und bearbeiten können. Und heute legst du den Grabstein für eine Szene, welche seit Jahren das Problem hat, dass es kaum noch Leute gibt mit Ahnung und Erfahrung, welche aktiv was beitragen möchten.

    Tu uns allen einen Gefallen und nutz andere Files, ist ein gut gemeinter Rat.