![]() |
LUA I/O & mysql (via os.execute)
Hallo =)
Ich will hier mal was hoffentlich neues Releasen, dass für große Server recht interessant ist.. Ich habe von einiger Zeit mal nach Möglichkeiten gesucht, um bestimmte Daten die in einer Quest benutzt werden woanders als in in der Quest-Tabelle speichern zu lassen? Warum? Ganz einfach: Wenn ich jetzt etwas auslesen will also z.B. bei einem 2 sprachigen Server muss man ja irgendwo abspeichern, welche Sprache der user hat.. Das kann man ja ganz normal per setqf machen.. Aber wenn ich das jetzt abrufen muss also SELECT * xyx (des macht ja der db Server) dann muss der mysql Server so lange suchen bis er den Eintrag hat.. Was bei 800.000k Einträgen (PSG-Elysim 42k Spieler) ganz schön dauern kann und einige Ressourcen braucht. Schneller und effizenter geht es wenn man einfach eine Textdatei ausliest, wo darin einfach die Sprache gespeichert wird.. Hier mal einen Ausschnitt aus meiner Questlib: PHP Code:
Also wird bei 1. Login das Grundgerüst von einem Spieler erstellt. Warum jetzt das? Ja jeder Spieler braucht eine eigene Textdatei logisch? Da aber die Sprache bei allen Chars gleich ist, lass ich die Sprache im Account-Ordner (also der Ordner heißt wie die account-id des Spielers) speichern. Andere Daten die bei jedem Spieler unterschiedlich sind, kann ich in dem Ordner speichern, der im Account-Ordner ist aber die Player id als Name trägt. Ich hoffe ihr habt es einigermaßen verstanden ;) Genaue Leser ist sicher das os.execute aufgefallen. Mit dem Command kann man Befehle ausführen (also alle Befehle die man in putty so eingeben kann).. Jemand der weiter nachdenkt und geil auf neue Ranglisten ist dem fällt ggf das hier ein: PHP Code:
(Leider ungetestet bei größeren Servern) Quest States lassen sich natürlich auch so speichern: PHP Code:
Ich weiß nicht ob es schon alles in dieser Form bekannt ist, wenn ja dann sry ;) Ich bitte euch dies nicht als eigenes auszugeben, da ich einige Tage an den paar Zeilen gesessen bin. Danke ;) grüßle LordMampf2 |
Erstmal überflogen und sieht hilfreich aus. Werde mich mal weiter mit auseinandersetzen. Danke!
|
Unnötig für i-welchen Ranglisten die Festplatte zu beschreiben.
Das geht alles mit setqf und MySQL SELECT. :P |
Quote:
Quote:
Also Ranglisten kann man nicht verschachtelt speichern des kannste ja vergessen die wieder auzulesen (wenn man das so verschachtelt speichert wie oben) Mysql Select dauert bei vielen Einträgen wie schon gesagt etwas.. (Ich habs ingame wirklich gestestet und es gab Unterschiede) grüßle LordMampf2 |
mit dem kann man eigentlich noch viel mehr anstellen.. Wenn sich einer böse benimmt, könnte man per ox.execute pf dazu anweisen, ihn zu blockieren...^^
|
Quote:
Das beste ist immernoch ein Ban Button im Client.. Man klick kurz drauf der jeweilige Spieler bekommt ein kick und ist gebannt xD grüßle LordMampf2 |
Quote:
Auf jeden Fall nais Thread^^ MfG RealFreak |
Naja RealFreak, Hanashi Schnittstelle hat bei mir nich hingehauen ;-)
Aber auf die Idee gekommen, die Queries einfach per os.execute auszuführen, bin ich nicht xD Ich Dummkopf... Eigentlich kann man damit schon extrem viel machen :D Ich verrate auch nicht mehr :D Dass das hier epvpers hat, ist eigentlich schon schlimm genug :x xD |
nice nice, so kann man mysql etwas entlasten , danke!
|
Könntest du vieleicht mal ein Select beispiel machen vieleicht auhc mit ner while oder for schleife! kriegst ein thx :D
|
Wäre es damit möglich, einen Ingame Itemshop zu machen, der die Coins aus der Account Tabelle auslesen kann?
|
ja du kannst dann auf php ausführen via osexecute!!
|
Quote:
Aber das ist vorallem bei größeren Servern ziemlich resourcenintensiv (PHP-Interpreter), weshalb ich einen compilierten Daemon oder eine andere Skriptsprache (z.B. Perl) bevorzugen würde... Abgesehen davon kann man dank der io- und os-Schnittstelle so gut wie alles machen, was der Metin2-Systemuser (leider oft root) kann - also oft alles... @LordMampf2: FreeBSD ist nicht Linux, daher würde ich dir die Bezeichnung "unixoide und BSD-basierte Systeme" empfehlen. |
Es gibt eine spezielle SQL-Lib für Lua welche man benutzen kann.
Auf os.execute zurückzugreifen scheint mir ein wenig "overkill"-mäßig. Wenn du nen Hähnchen braten willst kommst du doch auch nicht gleich mit einem Flammenwerfer an, oder? |
Quote:
Lg |
its realy the best share! thank you
|
Quote:
mit dem overkill haste schon recht aber ich dachte besser als gar nix ;) Ich muss muss mich mal an die LUA SQL dransetzten @M@shkin Da haste Recht mit dem Linux.. Aber irgendwie sagt man immer dass es Linux ist ;) |
with that we can make nomarch with no bug and also the market the new option of 2011 tanks for that share
|
Super Sache, jedoch steh ich vor einem Problem, was ich nicht gelöst bekomme:
Man kann nur Werte eintragen, die Zahlen sind. Will ich zum Beispiel die Spalte "rot" auf 'beispiel' setzen will, geht das ja normal mit Code:
set rot = 'beispiel'Hat jemand dafür ne Lösung? |
Quote:
|
probiert mal
set rot = \'beispiel\' aus Ich weiß nicht ob das in Lua funzt aber in PHP gehts |
danke :)
|
Quote:
Quote:
|
Quote:
|
Quote:
Die Datenbank wird nicht upgedated, und ich bekomme keine Fehlermeldung via PuTTY! |
Quote:
Dann machst du was mit den Hochkommas " und ' falsch, variiere da mal. |
Quote:
Leider ohne Erfolg. [Only registered and activated users can see links. Click Here To Register...] Wärst du bereit, mir deinen String zu senden? |
| All times are GMT +2. The time now is 07:47. |
Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.