Sonst noch ein Wunsch? Wie wärs noch mit chinesisch und arabisch?
Beiträge von fofenk
-
-
Hey, danke für deine Prüfung die nicht nötig war. Der Check für tch dient nur zum kicken des Spielers. Gebannt wird er so oder so. Angenommen der Spieler ist nicht Online, wird der Else ausgelöst. Kick läuft über p2p ist die Standart Funktion von Metin. Es sollte definitiv kein Meisterwerk werden. Wie ich bereits sagte nutzt man sowas heutzutage nicht.
Ich suche irgendwie verzweifelt nach dem P2P Paket, welches den Kick ausführt. Hast du dich vielleicht verschrieben?
"Kick läuft über p2p ist die Standart Funktion von Metin"
Sorry, kick läuft nicht über p2p my bad. Ich habe ohne zu überlegen geantwortet weil ich zu der Zeit unterwegs war. Dennoch meine Aussage, ich habe die Funktion kopiert. Müsste man aber easy erweitern können. Wie auch immer, warum ist das so relevant ?
C: cmd_gm.cpp- ACMD(do_disconnect)
- {
- char arg1[256];
- one_argument(argument, arg1, sizeof(arg1));
- if (!*arg1)
- {
- ch->ChatPacket(CHAT_TYPE_INFO, "ex) /dc <player name>");
- return;
- }
- LPDESC d = DESC_MANAGER::instance().FindByCharacterName(arg1);
- LPCHARACTER tch = d ? d->GetCharacter() : NULL;
- if (!tch)
- {
- ch->ChatPacket(CHAT_TYPE_INFO, "%s: no such a player.", arg1);
- return;
- }
- if (tch == ch)
- {
- ch->ChatPacket(CHAT_TYPE_INFO, "cannot disconnect myself");
- return;
- }
- DESC_MANAGER::instance().DestroyDesc(d);
- }
-
4) Guards für Anweisungen
Code- LPCHARACTER tch = d ? d->GetCharacter() : NULL;
- if (tch && tch != ch) {
- DESC_MANAGER::instance().DestroyDesc(d);
- ch->ChatPacket(CHAT_TYPE_INFO, "%s banned and kicked", escapePlayer);
- }
- else if (tch && tch == ch) {
- ch->ChatPacket(CHAT_TYPE_INFO, "cannot disconnect myself");
- return;
- }
- else {
- ch->ChatPacket(CHAT_TYPE_INFO, "%s banned", escapePlayer);
- }
könnte man für lesbareren Code auch so schreiben (der Else-Pfad würde sowieso nie erreicht werden oder nur fälschlicherweise wenn tch = NULL wäre):
Code- // disconnect player
- LPDESC d = DESC_MANAGER::instance().FindByCharacterName(escapePlayer);
- LPCHARACTER tch = d ? d->GetCharacter() : NULL;
- if (!tch) {
- ch->ChatPacket(CHAT_TYPE_INFO, "a user by the name (%s) could not be found on this core!", escapePlayer);
- return;
- }
- if (tch == ch) {
- ch->ChatPacket(CHAT_TYPE_INFO, "cannot disconnect myself");
- return;
- }
- DESC_MANAGER::instance().DestroyDesc(d);
- ch->ChatPacket(CHAT_TYPE_INFO, "%s banned and kicked", escapePlayer);
Ein paar finale Hinweise:
- Denk daran, dass das Bannen aktuell nicht Core-übergreifend funktioniert. Sollte der Spieler sich also rechtzeitig wegteleportieren oder ausloggen, hast du womöglich ein Problem.
- In der CInputMain::Analyze befindet sich direkt bei Eintritt folgende Prüfung:
Du kannst also so Prüfungen wie "!ch" oder "!d->GetCharacter()" weglassen, außer du erwartest aus irgendwelchen Gründen, dass der User genau in dieser Milisekunde destroyed wird, in der dieser Code ausgeführt wird. Unmöglich ist nichts, aber dann haben wir größere Probleme als das
- Nach einem 'strncpy' emphielt es sich, explizit die letzte Stelle des Arrays auf '\0' zu setzen, siehe hier:
Weil diese Methode so funktioniert, dass wenn dein Buffer nicht groß genug ist, sie nur "so viele Bytes von src kopiert, wie möglich". Ergo, wenn dein Buffer nur 10 Stellen groß ist, du willst aber 11 kopieren, hört er bei 10 auf. Die 11. Stelle wäre aber das benötigte '\0' gewesen. Mit strlcpy hat man das Problem btw. nicht.
- Dir fehlt die Logik, wenn ein Spieler in einem Dungeon ist und der Gruppenleiter. Das kann dazu führen, dass die Gruppe den Dungeon nicht mehr beenden kann, je nachdem wie die Quest geschrieben ist.
Zum Abschluss:
Ich hoffe, dass es mehr Beiträge wie dieses gibt und das wir weiterhin gute Entwickler in der Szene haben, die so freundlich sind, uns ihre Arbeiten zur Verfügung zu stellen.
~Lead
Hey, danke für deine Prüfung die nicht nötig war. Der Check für tch dient nur zum kicken des Spielers. Gebannt wird er so oder so. Angenommen der Spieler ist nicht Online, wird der Else ausgelöst. Kick läuft über p2p ist die Standart Funktion von Metin. Es sollte definitiv kein Meisterwerk werden. Wie ich bereits sagte nutzt man sowas heutzutage nicht.
-
Das für CB wär noch sexy, aber danke auf jeden Fall
Kannst du easy erweitern. Habe den Code möglich einfach dargestellt
-
1.) Bringt in der heutigen Zeit ein Bann ohne HWID nichts mehr.
Der Grund dafür das du die HWID Parts weggelassen hast, ist vermutlich weil du Colossus seinen Code nicht releasen möchtest. Finde ich gut.
2.) Die Zeitbegrenzung war vor 5 Jahren cool. Allerdings wenn du heute jemanden für ne Woche einen Bann gibst, spielt er längst woanders, bevor das Ding wieder abgelaufen ist. Und 1 Monat? Bis dahin ist vermutlich der Server down.
Hallo,
Zu Punkt 1, ja unter anderem habe ich HWID Part rausgelassen weils verkauft wird (und um ehrlich zu sein den Aufwand für Release nicht wert ist).
Zu Punkt 2, ich fands zu wenig, eine einfache ban / unban Methode zu releasen. Ich selber würde sowas heutzutage auch nicht nutzen.
-
Bitte melden Sie sich an, um dieses Bild zu sehen.
-
Bitte melden Sie sich an, um dieses Bild zu sehen.
-
a small, but big fix.
The scoreboard of the guild war is always updated upwards as soon as a new member enters the war. However, they were not updated down when a member left.
Bitte melden Sie sich an, um dieses Bild zu sehen. -
Also need to be edited in translate.lua, or quest the [ENTER] thing, cause it will be without any effect. But great work.
Yes that's right. I thought everyone was aware of that.
-
Bitte melden Sie sich an, um diesen Link zu sehen.
-
Hallöchen,
hier ist ein Fix für ein Schönheitsfehler von YMIR
Bitte melden Sie sich an, um dieses Bild zu sehen.
-
Auf Anfrage habe ich dieses Auto-Shout System gecodet
- Speichern nach Teleport und Client Restart
- Option für Yang
Bitte melden Sie sich an, um dieses Bild zu sehen.
-
Gibts im Eyvil pack wenn ich mich nicht irre. Sonst such dir iwo Sanii Client raus xD
-
Auf Anfrage habe ich dieses Outgame-Interface gecodet (Wird nicht kostenlos gemacht)
Bitte melden Sie sich an, um dieses Bild zu sehen. -
#Neu Puzzle-Captcha System
Auf Anfrage wurde dieses System erstellt.
Bitte melden Sie sich an, um dieses Bild zu sehen.
Verfehlt dieses System nicht ein bisschen den Sinn von einem Captcha? Wenn ich einen Bot für Metin2 schreiben kann, kann ich doch auch ein Python Skript injizieren welches die Elemente auf dem Captcha sucht und zusammenführt.
Der Rest sieht ziemlich gut aus! Ein paar echt gute Ideen.
Hey,
du hast vollkommen Recht. Das abgebildete System wurde auf Wunsch eines Users erstellt. Der Kunde sollte sich um das blockieren der Injektion selbst kümmern. Dennoch danke ich dir für den Hinweis.
-
Auf Anfrage von einem Kunden habe ich dieses System reworked.
- TextTail Update- Speichern von metin2.cfg
- Scaling
Bitte melden Sie sich an, um dieses Bild zu sehen. -
Dieser Atlas Shower wurde auf Anfrage von einem Kunden gecodet.
Bitte melden Sie sich an, um dieses Bild zu sehen.
-
# Updated MSM-Creator
Bitte melden Sie sich an, um dieses Bild zu sehen.
-
Freut mich, dass du es lösen konntest. Vergewissere dich den Thread, als erledigt zu markieren
-
Hey,
Deaktiviere ENABLE_LOCAL_FILE_LOADING und packe deine root|locale|uiscript um die Fehlermeldung detailliert zu sehen. Alternativ kannst du auch von blackdragon das Official Abort Traceback Update nutzen. Die findest du hier: Bitte melden Sie sich an, um diesen Link zu sehen.