Register for your free account! | Forgot your password?

You last visited: Today at 06:00

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

Advertisement



[R]Quest für Spieler(GK)

Discussion on [R]Quest für Spieler(GK) within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old 03/04/2013, 12:51   #16
 
elite*gold: 0
Join Date: Mar 2012
Posts: 765
Received Thanks: 535
Quote:
Originally Posted by Anohros View Post
Hallo,

an der Quest muss noch so einiges verbessert werden.

Alleine für die Gilden-Statistiken wurden 4 unnötige Abfragen aufgewendet, das kann besser gelöst werden:

Code:
SELECT
	win,
	loss,
	draw,
	COUNT(pid) AS members,
	player.name AS master,
	player.online AS masterOnline
FROM
	player.guild
JOIN
	player.guild_member
ON (
	guild_member.guild_id = guild.id
)
JOIN
	player.player
ON (
	player.id = guild.master
)
WHERE
	guild.name = '" .. guildName .. "'
Du bist dir schon bewusst, das mit deinen 6 Abfragen für die Gilden-Statistiken auch 6 Prozesse gestartet werden?


Mit freundlichen Grüßen
Anohros

ich habe nicht wirklich Ahnung von mysql, habe es auch seit kurzem gelernt.
Die quest habe ich nicht für mich geschrieben sondern für euch, mit der Hoffnung das man es noch erweitern kann.

mfg Noa

€.@ dstyl kann folgende gründe habe
-Du hast deine eigene Gilde ausgewählt
-Du hast die Gilde anderer falsch eingegeben
-Du hast eine Leere Tabelle ausgewählt
-Der wer in der Tabelle beträgt nil<- existiert nicht
©by Noa is offline  
Old 03/04/2013, 13:50   #17
 
elite*gold: 120
Join Date: Mar 2009
Posts: 3,409
Received Thanks: 1,738
Wenn man kein 12 MB Root/Hamachi/locale hat, sollten die paar Abfragen MySQL nichts ausmachen.

Danke für's Release.
.Remix is offline  
Old 03/04/2013, 13:53   #18
 
dstyl's Avatar
 
elite*gold: 0
Join Date: Oct 2009
Posts: 428
Received Thanks: 192
@Noa:
Danke für deine Antwort.

Also eigene Gilde auszuwählen habe ich versucht, kam halt die besagte Meldung jedoch geht es bei anderen ebenfalls nicht.
Die Eingabe der anderen Gilde/n war 100% richtig, ging trotzdem nicht. :/
Was genau meinst du mit "Leere Tabelle" ?
Mit "nil" meinst du, denke ich mal, ebenfalls eine falsche Eingabe bzw. keine Eingabe oder?
dstyl is offline  
Old 03/04/2013, 14:47   #19
 
elite*gold: 0
Join Date: Mar 2012
Posts: 765
Received Thanks: 535
vll benutzt du einfach die falschen mysql funktionen, hier ist meine

PHP Code:
mysql_query = function(query)     --2
    local rt 
io.open('CONFIG','r'):read('*all'
    
local prestring.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4'
    
math.randomseed(os.time()) 
    
local fi,t,out 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{} 
    
os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi)   
    for 
av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) endos.remove(fi); 
    for 
2table.getn(t) do table.foreach(t[i],function(a,b
        
out[i-1]        = out[i-1] or {} 
        
out[i-1][a]        = 
        out
[t[1][a]]    = out[t[1][a]] or {} 
        
out[t[1][a]][i-1]    = 
    end
end 
    
return out 
end 
©by Noa is offline  
Old 03/04/2013, 14:51   #20


 
Zevion's Avatar
 
elite*gold: 906
Join Date: Sep 2009
Posts: 17,295
Received Thanks: 4,399
Sehr gutes Release! Sehr gut, danke dafür, kann man gebrauchen.
Zevion is offline  
Old 03/04/2013, 15:25   #21
 
elite*gold: 252
Join Date: Mar 2008
Posts: 3,111
Received Thanks: 3,911
man braucht die tabelle nicht bearbeiten, alles was man braucht, ist schon drin.
Solltest drüber nachdenken, schließlich gibt es auch online statistiken.. Man kann ganz einfach mittels "last_play"-Spalte auch so den onlinestatus des Gildenleaders überprüfen.
.Alessa is offline  
Thanks
3 Users
Old 03/04/2013, 15:43   #22
 
dstyl's Avatar
 
elite*gold: 0
Join Date: Oct 2009
Posts: 428
Received Thanks: 192
Quote:
Originally Posted by ©by Noa View Post
vll benutzt du einfach die falschen mysql funktionen, hier ist meine

PHP Code:
mysql_query = function(query)     --2
    local rt 
io.open('CONFIG','r'):read('*all'
    
local prestring.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4'
    
math.randomseed(os.time()) 
    
local fi,t,out 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{} 
    
os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi)   
    for 
av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) endos.remove(fi); 
    for 
2table.getn(t) do table.foreach(t[i],function(a,b
        
out[i-1]        = out[i-1] or {} 
        
out[i-1][a]        = 
        out
[t[1][a]]    = out[t[1][a]] or {} 
        
out[t[1][a]][i-1]    = 
    end
end 
    
return out 
end 
Habe nur die Schnittstelle von Hanashi drinne..
dstyl is offline  
Old 03/04/2013, 16:04   #23
 
.Risan.'s Avatar
 
elite*gold: 30
Join Date: Jul 2010
Posts: 1,627
Received Thanks: 1,450
Quote:
Originally Posted by .Alessa View Post
man braucht die tabelle nicht bearbeiten, alles was man braucht, ist schon drin.
Solltest drüber nachdenken, schließlich gibt es auch online statistiken.. Man kann ganz einfach mittels "last_play"-Spalte auch so den onlinestatus des Gildenleaders überprüfen.
Oder, wenn es nicht so tragisch iss oder Lebenswichtig..
Find_pc_name oder wie es heisst..
.Risan. is offline  
Old 03/04/2013, 16:18   #24

 
IgorGlock's Avatar
 
elite*gold: 1862
Join Date: Jan 2009
Posts: 3,725
Received Thanks: 7,671
Channelübergreifend sind solche Befehle wie z.B. "find_pc_name" nicht immer oder garnicht.
IgorGlock is offline  
Old 03/04/2013, 17:07   #25
 
elite*gold: 5
Join Date: Oct 2010
Posts: 1,692
Received Thanks: 1,772
PHP Code:
        when login with pc.is_guild_master() begin
            mysql_query
("UPDATE player.player SET GuiM='Online' WHERE name='"..pc.get_name().."';")
        
end
        when logout with pc
.is_guild_master() begin
            mysql_query
("UPDATE player.player SET GuiM='Offline' WHERE name='"..pc.get_name().."';")
        
en 
Überlastet das nicht total?
DasKuchen is offline  
Old 03/04/2013, 17:29   #26
 
elite*gold: 120
Join Date: Mar 2009
Posts: 3,409
Received Thanks: 1,738
Quote:
Originally Posted by DasKuchen View Post
PHP Code:
        when login with pc.is_guild_master() begin
            mysql_query
("UPDATE player.player SET GuiM='Online' WHERE name='"..pc.get_name().."';")
        
end
        when logout with pc
.is_guild_master() begin
            mysql_query
("UPDATE player.player SET GuiM='Offline' WHERE name='"..pc.get_name().."';")
        
en 
Überlastet das nicht total?
Wie man's nimmt.
Hängt von der Root Leistung ab.

Nehmen wir mal an, ein Server hat 500 Spieler (gleichzeitig online).
Demnach haben die auch keinen "Überroot".
Aber das sollte, denke ich mal, nichts überlasten, weil ja nicht alle ADHS haben und einloggen,ausloggen,einloggen,ausloggen usw.

Hat ein Server ca 1500-2000 Spieler, haben die auch ein dementsprechenden Root.
Kann sein, dass auf solchen Servern viele ADHS-Kinder rumrennen, aber wenn man einen erfolgreichen Server hat, wird man schon 'ne Lösung finden.
.Remix is offline  
Old 03/04/2013, 17:31   #27
 
elite*gold: 0
Join Date: Mar 2012
Posts: 765
Received Thanks: 535
Quote:
Originally Posted by DasKuchen View Post
PHP Code:
        when login with pc.is_guild_master() begin
            mysql_query
("UPDATE player.player SET GuiM='Online' WHERE name='"..pc.get_name().."';")
        
end
        when logout with pc
.is_guild_master() begin
            mysql_query
("UPDATE player.player SET GuiM='Offline' WHERE name='"..pc.get_name().."';")
        
en 
Überlastet das nicht total?
deswegen ist es auch auf pc.is_guild_master() beschränkt
©by Noa is offline  
Old 03/04/2013, 18:21   #28


 
elite*gold: 0
Join Date: Feb 2010
Posts: 7,221
Received Thanks: 6,758
when login / logout ist übrigens bei jedem Mapwechsel aktiv - daher sehr lastig.
#SoNiice is offline  
Old 03/04/2013, 19:18   #29
 
sema1995's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 254
Received Thanks: 68
Very Nice!!!!
sema1995 is offline  
Old 03/04/2013, 21:51   #30
 
Pаylasici's Avatar
 
elite*gold: 99
Join Date: Aug 2009
Posts: 4,296
Received Thanks: 5,092
Quote:
Originally Posted by IgorGlock View Post
Ich würde nie einen "String" bzw. Zeichenkette abspeichern für eine 0/1 Abfrage.
Dafür gibt's "boolean", kannst "true" oder "false" setzen. Sehr sparsame Variante.
Alternativ gibt's Int (tinyint?) Variante, hier speicherst du einfach eine 0 oder eine 1 o.ä. Zahlen.

Für ca. 100 000 Charaktere wäre das Wort "Offline" ein Resourcenlastiges Wort.
Beschäftige dich damit
Pаylasici is offline  
Reply


Similar Threads Similar Threads
[Quest-Release]Wartungsmodus Quest /Kick all Player/Spieler login nach Char..W. kick
04/02/2018 - Metin2 PServer Guides & Strategies - 30 Replies
Hallo da mir langweilig war und ich eine quest auf meinem PC gesehn habe durch diese eine Idee ausgelöst wurde Release ich nun die Idee falls public Sry -.- Ablauf Beim NPC Wartungsmodus aktivieren eine Zeit (minuten) angeben über 30.. alle 5 minuten wird ein notice all ausgegeben nach der angebenen Zeit werden alle Spieler gekickt und Und das Spielen Ingame gesperrt...



All times are GMT +2. The time now is 06:00.


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.