Register for your free account! | Forgot your password?

You last visited: Today at 20:54

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Client/Server Codes aufräumen.

Discussion on Client/Server Codes aufräumen. within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
Endless.'s Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
Client/Server Codes aufräumen.

Schönen Guten Tag liebe Com,

ich habe mich die letzte Zeit intensiv mit dem Code des Spiels auseinander gesetzt, zumidest mal mit python. Auch wenn es im Quellcode viele Elemente gibt, die ohne Probleme entfernt werden können und ich sehe oftmals Codes, die komplett unstrukturiert und übersichtlich sind. Als Beispiel werfen wir mal einen Blick in die typische game.py welche bei jedem fast gleich aussieht. Doch schon ganz oben fängt des ganze an:

1. --> Zusammenfügen der ganzen imports und löschen von doppelten imports.
Code:
import os
import app
import dbg
import grp
import item
import time
import background
import chr
import chrmgr
import cw_player
import snd
import chat
import textTail
import snd
import net
import effect
import wndMgr
import fly
import systemSetting
import quest
import guild
import skill
import messenger
import localeInfo
import constInfo
import exchange
import ime
import ui
import serverInfo
import uiCommon
import uiPhaseCurtain
import uiMapNameShower
import uiAffectShower
import uiPlayerGauge
import uiCharacter
import uiTarget
import uiDeathCause
import uiauctionbuylink
import uiTeleport
import uiMobInfo
import uiProphecy
import cw_lootfilter
import localeString
import nonplayer
import uiCelestialPortal
import uiToolTip
Sieht schon vom Anfang unordentlich aus und vorallem diese doppelt und draifachen imports überall sind komplett UNNÖTIG, weil es bereits genügt , ganz oben es nur 1x stehen zu haben. Und um das ganze besser zu machen, habe ich dies in dieser Form zusammen gestellt, was exakt den gleichen Zweck erfüllt:

Code:
import serverInfo,uiCommon,uiPhaseCurtain,uiMapNameShower,uiAffectShower,uiPlayerGauge,uiCharacter,uiTarget
import uiDeathCause,uiauctionbuylink,uiTeleport,uiMobInfo,uiProphecy,cw_lootfilter,localeString,nonplayer,uiCelestialPortal,uiToolTip
spart eine Mange Zeilen und wenn ihr die duplikat Imports noch entfernt, sind es noch mehr.

2. --> entfernen von Codes, die im Spiel nicht verwendet werden.

Überall in den Files befinden sich Code schnipsel, welche so aussehen:
Code:
# if not app.IsPressed(app.DIK_LSHIFT):
Diese Codes wurden aus bestimmten Gründen auskommentiert und deaktiviert, z.B weil diese Probleme mit anderen Funktionen auslösen, nicht gebraucht werden oder nicht vollständig und fehlerfrei implementiert worden sind. Auf jeden Fall können diese entfernt werden, wenn nicht gebraucht, es wird keine Auswirkungen auf das Spiel haben. Wer gründlich sucht, wird auch einiges an Platz sparen können.


3. Kommentare welche auf Koreanisch sind.

Es befinden sich haufenweise Kommentare wie das hier z.B.
Code:
# ij¸¯ÅÍ ÁÂÇ¥ ¹
oder das hier:
Code:
######################################################################################
hier kann man eben erkennen, dass den Entwicklern iwie langweilig war, weil solche Teile einfach nur überall vorkommen.

Jedenfalls genügt es, wenn man Funktionen mit eindeutigen Kommentaren versieht und diese auch lesen kann. Es kann auch vorkommen (abhängig vom Editor), dass diese Zeichenfolge beim Bearbeiten Probleme bereitet und beim Speichern (ich glaube die uilocale.py) oder sowas in der Richtung.


4. (Trifft nicht auf alle zu, da manche lieber den Abstand zwischen den Commands so lassen wollen), doch man kann alle Leerzeichen und Tabs am Ende jeder Zeile direkt rauslöschen. Ebenfalls können alle Leerzeilen mit rausgelöscht werden, dadurch wird der Code nochmal locker 100-300 Zeilen kleiner und ist am Ende übersichtlicher.

Wer diese Schritte befolgt, wird es später leichter haben, Dinge im Code zu suchen und zu verändern.

Das gleiche habe ich auch mit der Source des Clienten und des Servers gemacht, dort sollte man etwas vorsichtiger sein, weil das compilen eben zeitaufwändiger ist. Dort findet man sehr viele solche Elemente:

Code:
// NOTE : 매트릭스에서 위치를 직접 얻어온다 - [levites]
oder
Code:
/*스에서 위치를 직접 얻어온다
Ihr werdet in vielen .cpp sowie auch .h Files extrem viel solcher unnötigen und sowieso unleserlichen Kommentare finden, diese werden euch in ein paar Fälle die Dateien um fast 1/3 schrumpfen, ohne das des Spiel davon beeinträchtigt wird.

Ich hoffe mit diesen Tipps konnte ich dem einen oder anderen bisschen helfen, auch wenn das jetzt keine große Sache ist. Es wird euch am Ende eben Zeit sparen und vllt geht das compilen auch etwas schneller, wenn das System nicht solange braucht, jede Datei vollständig einzulesen. Ich habe mir die Zeit genommen und ich hab das Gefühl, dadurch läuft das Spiel am Ende ein tick flüssiger und sauberer. vllt bilde ich mir des aber auch nur ein, es auszuprobieren, schadet auf jeden Fall nicht.

Wer dies machen will, soll am besten nach jeder File die root zusammenpacken und des Game starten und testen ob nichts versehentlich falsch gelöscht wurde. Auch backups sollten davor gemacht werden.

Falls ihr weiter Fragen habt, was Python und dem Modding von Metin2 angeht, könnt ihr mich gerne anschreiben.

€: Ich würde für diese Aktion Notepad++ benutzen, da dieser Editor alle Funktionen hat, dies schnell für die gesamte Datei zu übernehmen. Niemand will jede einzelne Zeile von Hand bearbeiten/löschen, sowas kann damit in wenigen Sekunden gemacht werden.
mit freundlichen Grüßen, Endless
Endless. is offline  
Thanks
1 User
Old 10/09/2023, 08:11   #2
 
RauschGiftx3's Avatar
 
elite*gold: 0
Join Date: Oct 2010
Posts: 124
Received Thanks: 31
nicht schlecht , dass mit den imports in eine reihe wusste ich z.b nicht.

eine frage hätte ich. wie kann ich in python die time.sleep() func nutzen? wenn ich diese einfüge, so wird das spiel komplett einfrieren. ich brauche eine verzögerung ohne das es iwelche laggs oder hänger gibt. wäre cool wenn du ein work around oder eine vergleichbare lösung zeigen könntest.
RauschGiftx3 is offline  
Old 10/14/2023, 20:10   #3
 
Endless.'s Avatar
 
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
Quote:
Originally Posted by RauschGiftx3 View Post
nicht schlecht , dass mit den imports in eine reihe wusste ich z.b nicht.

eine frage hätte ich. wie kann ich in python die time.sleep() func nutzen? wenn ich diese einfüge, so wird das spiel komplett einfrieren. ich brauche eine verzögerung ohne das es iwelche laggs oder hänger gibt. wäre cool wenn du ein work around oder eine vergleichbare lösung zeigen könntest.
Soviel ich weiss, muss man bestimmte Funktionen, welche dauernd aktualisiert werden müssen, mit in die "def OnUpdate()" schmeissen, da dieser sich mit dem gesamten Spiel updatet.

Um Funktionen dann nach bestimmter Zeit erneut auszuführen kannst du dann sowas mit dazu schreiben:

Code:
my_timer=app.GetTime()
delay=5
if app.GetTime() < my_timer+delay:
	return
else:
	my_timer=app.GetTime()
        FUNKTION()
Alternativ kannst du es auch mit "event.wait(TIME)" versuchen, klappt aber mehr nur in Konsolen Anwendungen.
Endless. is offline  
Reply


Similar Threads Similar Threads
Cartographer "Warteschlange aufräumen"
07/05/2009 - World of Warcraft - 0 Replies
Hi, ich hab seit neustem das Problem, dass wenn ich zB beim Zygors Guide ein Waypoint anklicken die Meldung Warteschlange aufräumen im Chat erscheint. Bei Cartographer v3 kommt wenn ich ingame bin direkt am Anfang eine komische Fehlermeldung also kann ich nur v2 nutzen. Allerdings scheint diese auch nicht richtig zu funktionieren. Ist jemandem das Problem bekannt? Per Google wie immer NIX.. MfG Mareeuz
Bitte aufräumen!
03/14/2008 - Metin2 - 4 Replies
Hallo Könnten die MOD´s z.b. reijin aus den categorien: cheats bots macros diese unnötigen sachen löschen! z.B. die fragen! denn es soll doch übersichtlich sein für neue member und wenn doch fragen sind dann fragen die neuen member auch dort...
toplist mal bissl aufräumen ne? <_<
10/23/2005 - Main - 7 Replies
würde die private server toplist mal bissl aufräumen über 50% nur andere seiten oO siehe blackseals seite diesen underground gfx kack usw ^^ wollte nurmal drauf hinweisen :)



All times are GMT +2. The time now is 20:54.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.