Register for your free account! | Forgot your password?

You last visited: Today at 06:46

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

Advertisement



[RELEASE] Security-System - Lua / MySQL

Discussion on [RELEASE] Security-System - Lua / MySQL within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1

 
Mr. 'Avenue™'s Avatar
 
elite*gold: 222
The Black Market: 101/0/0
Join Date: Oct 2012
Posts: 2,369
Received Thanks: 3,389
[RELEASE] Security-System - Lua / MySQL

Funktionen (questlib.lua):
PHP Code:
pid pc.get_player_id()

function 
pc.set_auth(idpw)
    if 
string.len(id) > 12 or string.len(pw) > 12 then
        syschat
("Deine ID & dein Passwort dürfen max. 12 Zeichen haben!")
        return
    elseif 
string.len(id) < or string.len(pw) < 3 then
        syschat
("Deine ID & dein Passwort müssen mind. 3 Zeichen lang sein!")
        return
    
end
    mysql_query
("INSERT INTO player.auth VALUES ('"..pid.."','"..id.."','"..pw.."' ON DUPLICATE KEY UPDATE id='"..id.."', pw='"..pw.."' WHERE pid='"..pid.."';")
end

function pc.get_auth(idpw)
    
local IDFromDB mysql_query("SELECT id FROM player.auth WHERE pid='"..pid.."';")
    
local PWFromDB mysql_query("SELECT pw FROM player.auth WHERE pid='"..pid.."';")
    
local RetIDRetPW tonumber(IDFromDB), tonumber(PWFromDB)
    if 
id == RetID and pw == RetPW then
        
return true
    
else
        return 
false
    end
end 
Funktionen (quest_functions):
PHP Code:
pc.set_auth
pc
.get_auth 

Quest:
PHP Code:
quest al_security begin
    state start begin
        
function load_securityform()
            if 
get_time() < pc.getqf("security_aluna2"then
                
return
            
end
            say_title
("Aluna2 - Securitycheck")
            
say("Bitte gebe deine Security-ID ein:")
            
local ID input()
            
say_title("Aluna2 - Securitycheck")
            
say("Bitte gebe dein Security-PW ein:")
            
local PW input()
        
end
        when login with pc
.getqf("securitysys") < 1 begin
            say_title
("Aluna2 - Securitysystem")
            
say_reward("Zu deiner Sicherheit wird auf Aluna2 alle 12h[ENTER]nach deinen Security-Daten gefragt.")
            
say("[ENTER]Bitte gebe deine Security-ID ein:")
            
local SecID input()
            
say("[ENTER]Bitte gebe dein Security-PW ein:")
            
local SecPW input()
            
syschat("Deine Security-ID ist: "..SecID)
            
syschat("Dein Security-PW ist: "..SecPW)
            
pc.set_auth(SecIDSecPW)
            
pc.setqf("securitysys"1)
        
end
        when login with pc
.getqf("securitysys") == 1 begin
            local hIntervall 
12
            al_security
.load_securityform()
            if 
pc.get_auth(IDPW) == false then
                al_security
.load_securityform()
            else
                
pc.setqf("security_aluna2"get_time()+60*60*hIntervall)
                return
            
end
        end
        when ITEMVNUM
.use begin
            say_title
("Aluna2 - Securitysystem")
            
say_reward(" ~> Daten ändern")
            
say("[ENTER]Bitte gebe deine jetzige Security-ID ein:")
            
local OldID input()
            
say_title("Aluna2 - Securitysystem")
            
say_reward(" ~> Daten ändern")
            
say("[ENTER]Bitte gebe dein jetziges Security-PW ein:")
            
local OldPW input()
            
say_title("Aluna2 - Securitysystem")
            
say_reward(" ~> Daten ändern")
            
say_title("Bitte gebe nun deine neue Security-ID ein:")
            
local NewID input()
            
say_title("Aluna2 - Securitysystem")
            
say_reward(" ~> Daten ändern")
            
say_title("Bitte gebe nun dein neues Security-PW ein:")
            
local NewPW input()
            if 
pc.get_auth(OldIDOldPW) == false then
                
return
            
end
            pc
.set_auth(NewIDNewPW)
        
end
    end
end 
Die DB habe ich nicht, müsst ihr euch selbst machen.




#untested
Mr. 'Avenue™ is offline  
Thanks
15 Users
Old 11/09/2013, 21:21   #2
 
elite*gold: 26
Join Date: Oct 2011
Posts: 1,262
Received Thanks: 1,062
n1
He3o Crysis is offline  
Old 11/09/2013, 21:28   #3
 
elite*gold: 1
Join Date: Aug 2010
Posts: 579
Received Thanks: 300
Sieht gut aus, danke.
alpha-Atze is offline  
Old 11/09/2013, 21:33   #4
 
iYoshix3's Avatar
 
elite*gold: 0
Join Date: Jun 2010
Posts: 1,264
Received Thanks: 2,019
Haut man es im Client raus (Questfenster) und kann Problemlos spielen :P
Btw: Gib mal 2 mal falsche Daten ein, dann ist die Quest zuende.

Mfg,
Yoshix3
iYoshix3 is offline  
Thanks
1 User
Old 11/09/2013, 21:33   #5
 
Sphinx²'s Avatar
 
elite*gold: 1918
Join Date: Feb 2008
Posts: 1,368
Received Thanks: 1,287
Jetzt mal ne blöde frage....
Was soll das genau bringen?

Gruss
Sphinx
Sphinx² is offline  
Old 11/09/2013, 21:35   #6
 
.ProjektX²'s Avatar
 
elite*gold: 0
Join Date: Oct 2013
Posts: 194
Received Thanks: 83
du setzt doch nirgends die variable "pid".

Und du solltest das ganze im login mit nem timer machen, da es so garnit funzt.

Ist zwar ne nette Idee, aber so nicht release wuerdig..
.ProjektX² is offline  
Old 11/09/2013, 21:35   #7

 
Mr. 'Avenue™'s Avatar
 
elite*gold: 222
The Black Market: 101/0/0
Join Date: Oct 2012
Posts: 2,369
Received Thanks: 3,389
Quote:
Originally Posted by iYoshix3 View Post
Haut man es im Client raus (Questfenster) und kann Problemlos spielen :P
Btw: Gib mal 2 mal falsche Daten ein, dann ist die Quest zuende.

Mfg,
Yoshix3
Nein, ist sie nicht.
PHP Code:
            local hIntervall 12 
            al_security
.load_securityform() 
            if 
pc.get_auth(IDPW) == false then 
                al_security
.load_securityform() 
            else 
                
pc.setqf("security_aluna2"get_time()+60*60*hIntervall
                return 
            
end 
Und schau dir die pc.get_auth() funktion an


Aber naja, immernoch besser als gar nichts.


Quote:
Originally Posted by .ProjektX² View Post
du setzt doch nirgends die variable "pid".

Und du solltest das ganze im login mit nem timer machen, da es so garnit funzt.

Ist zwar ne nette Idee, aber so nicht release wuerdig..
Habs nun hinzugefügt (pid = pc.get_player_id())
Mr. 'Avenue™ is offline  
Old 11/09/2013, 21:49   #8
 
elite*gold: 748
Join Date: Jul 2012
Posts: 1,597
Received Thanks: 1,981
Ja, das ist mal nützlich.

Danke dafür :>
.Harlem² is offline  
Old 11/09/2013, 21:51   #9


 
MrTherzon's Avatar
 
elite*gold: 0
The Black Market: 180/0/1
Join Date: Dec 2012
Posts: 9,390
Received Thanks: 2,738
Danke, Sehr Nice von dir.
MrTherzon is offline  
Old 11/09/2013, 21:51   #10
 
elite*gold: 5
Join Date: Mar 2013
Posts: 1,986
Received Thanks: 2,254
Danke aber bei Inputs beim Login brechen Quests doch ab
xGr33n is offline  
Old 11/09/2013, 21:54   #11

 
Mr. 'Avenue™'s Avatar
 
elite*gold: 222
The Black Market: 101/0/0
Join Date: Oct 2012
Posts: 2,369
Received Thanks: 3,389
Quote:
Originally Posted by xGr33n View Post
Danke aber bei Inputs beim Login brechen Quests doch ab
Nein
Ist so ähnlich wie die 'wait' funktion.
Nach einem Input steht immer 'Weiter' ^^
Mr. 'Avenue™ is offline  
Old 11/09/2013, 21:54   #12
 
elite*gold: 0
Join Date: Oct 2013
Posts: 1,277
Received Thanks: 437
Danke <3
.Xelo™ is offline  
Old 11/09/2013, 22:01   #13
 
.ProjektX²'s Avatar
 
elite*gold: 0
Join Date: Oct 2013
Posts: 194
Received Thanks: 83
Quote:
Originally Posted by Mr. 'Avenue™ View Post
Nein
Ist so ähnlich wie die 'wait' funktion.
Nach einem Input steht immer 'Weiter' ^^
Du verstehst ihn glaube Falsch, das geht so nicht.

Setz das ganze was du im login abfragst in ein Timer.

Momentan kommste bis zum ersten Input, dann bricht der Code ab, weils beim login event einfach so nicht geht.
.ProjektX² is offline  
Thanks
2 Users
Old 11/09/2013, 22:20   #14
 
Mashkin's Avatar
 
elite*gold: 44
Join Date: May 2010
Posts: 2,053
Received Thanks: 1,747
Quote:
Originally Posted by .ProjektX² View Post
Du verstehst ihn glaube Falsch, das geht so nicht.

Setz das ganze was du im login abfragst in ein Timer.

Momentan kommste bis zum ersten Input, dann bricht der Code ab, weils beim login event einfach so nicht geht.
Die ganze Quest funktioniert sowieso nicht.

Es wird erst das "Formular" angezeigt, dann werden die Daten geprüft.
Wenn sie richtig sind wird der "Check" Timer gesetzt - ok soweit. Aber wenn die Daten falsch sind erscheint wieder das Formular. Danach passiert aber nichts mehr und die Quest ist zu Ende.

Wie Yoshix3 schon sagte, kann man zwei mal was falsches eingeben und man hat das System umgangen.

An der Stelle sollte vllt. eine while-Schleife stehen oder der Spieler sollte gekickt/gebannt (Zeitbann) werden.

Aber so wie es jetzt ist passiert einfach gar nichts.
Mashkin is offline  
Old 11/09/2013, 22:31   #15
 
.ProjektX²'s Avatar
 
elite*gold: 0
Join Date: Oct 2013
Posts: 194
Received Thanks: 83
ne while schleife wird glaub auch dann unterbrochen, einfach nen looptimer lieber reinhauen, da kannste dir sicher sein das es immer wieder kommt.
.ProjektX² is offline  
Reply

Tags
account, metin2, security, sicherheit, system


Similar Threads Similar Threads
[Release]Bank System über Mysql+Log System
09/06/2013 - Metin2 PServer Guides & Strategies - 16 Replies
Hallo, wie die Überschrift schon sagt Release ich euch heute ein Bank System von einem Freund von mir. Bevor ihr meckert, ich habe die Erlaubnis von ihm! Ich weiß es gibt viele Bank Systeme, aber so eins wie ich es euch Heute Release habe ich bis jetzt noch nicht gesehen. Features:
[Release] Login-System mit MySql Datenbank
01/04/2013 - AutoIt - 19 Replies
Hallo e*pvper :) ich habe mir aus langeweile mal ein kleines Login-System geschrieben, welches die Logindaten auf eine MySql Datenbank speichert. Inhaltsverzeichniss: 1. Webspace 2. MySql Datenbank
[Release] Fastest MySql System [C#]
04/18/2011 - CO2 PServer Guides & Releases - 51 Replies
Removed. Why do you think? Is it really THAT shocking to you that I removed it?
[Release] MySQL Insert system
07/18/2010 - CO2 PServer Guides & Releases - 18 Replies
Ello! First of all, this is NOT sourcedependent, which means you can use this on any source without modifying the code. This is an replacement for all of you who still uses normal MySQL queries. Use this code to clean up, make it easier and more orginazed. Here's how it looks: Example: (Original (LOTF for example))



All times are GMT +1. The time now is 06:46.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.