[RELEASE] Whitelist


  • Herzlich Willkommen zur Vorstellung meiner MySQL basierten Whitelist Klasse.
    Diese Klasse sorgt, dass nur bestimme Spieler mit ihrer Serial auf den Server joinen können.
    Die Daten werden in Echtzeit gespeichert, sodass keine Daten verloren gehen können.
    Und noch vielen Dank an @Jusonex: für seine Hilfe.

    Der Code

    Die 'Whitelist' Klasse
    Lua
    Whitelist = {}Whitelist.__index = Whitelistfunction Whitelist:constructor( message, host, dbname, user, pass )	self.message = message	self.serials = {}	self.handle = new( MySQL, host, dbname, user, pass )	self.func = function( playerNick, playerIP, playerUsername, playerSerial ) self:serialCheck( playerSerial ) end		self:initialize()endfunction Whitelist:destructor()	delete( self.handle )	removeEventHandler( 'onPlayerConnect', root, self.func )endfunction Whitelist:initialize()	local str = [[ CREATE TABLE IF NOT EXISTS `whitelist` (		`ID` int(11) NOT NULL AUTO_INCREMENT,		`NAME` varchar(32) NOT NULL,		`SERIAL` varchar(32) NOT NULL,		PRIMARY KEY (`ID`)	) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; ]]		self.handle:query( -1, str )	self:loadData()	addEventHandler( 'onPlayerConnect', root, self.func )end-- //--|| SERIAL METHODEN-- \\function Whitelist:addSerial( serial, name )	if ( not self.serials[serial] ) then		self.serials[serial] = name		self.handle:query( -1, 'INSERT INTO `whitelist`( `SERIAL`, `NAME` ) VALUES(?, ?)', serial, name  )		outputDebugString( serial..' added to this Whitelist!' )	else		outputDebugString( serial..' is already in this Whitelist!' )	endendfunction Whitelist:removeSerial( serial ) 	if ( self.serials[serial] ) then		self.serials[serial] = nil		self.handle:query( -1, 'DELETE FROM `whitelist` WHERE SERIAL = ?', serial  )		outputDebugString( serial..' was removed from this Whitelist!' )	else		outputDebugString( serial..' is not in this Whitelist!' )	endendfunction Whitelist:serialCheck( playerSerial )	if ( not self.serials[playerSerial] ) then		cancelEvent( true, self.message )	endend-- //--|| SAVE/LOAD METHODEN-- \\function Whitelist:loadData()	local result = self.handle:query( -1, 'SELECT * FROM `whitelist`' )	if ( #result > 0 ) then		for k, v in ipairs( result ) do 			self.serials[v['SERIAL']] = v['NAME']		end	endend
    Die 'MySQL' Klasse
    Lua
    MySQL = {}MySQL.__index = MySQLfunction MySQL:constructor( host, dbname, user, pass )	self.handler = dbConnect( 'mysql', ('host=%s;dbname=%s;unix_socket=/var/run/mysqld/mysqld.sock'):format( host, dbname ), user, pass, 'autoreconnect=1;log=1;tag=wl' )	if ( not self.handler ) then		critical_error( 'Couldn\'t connect to the MySQL-Server!' )	endendfunction MySQL:destructor()	return ( destroyElement( self.handler ) )endfunction MySQL:exec( query, ... )	return ( dbExec( self.handler, query, ... ) )endfunction MySQL:query( timeout, query, ... )	local qh = dbQuery( self.handler, query, ... )	return ( dbPoll( qh, timeout ) )end
    Die 'Utils'
    Lua
    function new(class, ...)	local obj = setmetatable( {}, { __index = class } )	if obj.constructor then obj:constructor( ... ) end	return objendfunction delete(obj)	if obj.destructor then obj:destructor( ) end	obj = nilendfunction critical_error( reason )	outputServerLog( reason )	outputDebugString( reason, 1 )	stopResource( getThisResource() )end

    Die Anwendung

    Die Methoden
    Lua
    wl = new( Whitelist, string message, string host, string datenbank, string username, string password )wl:addSerial( string serial, string username )wl:removeSerial( string serial )

    Download: http://bit.ly/1bCqxeX
    MfG LarSoWiTsH von Codeart.

    Ignorance brings chaos, not knowledge ..

    2 Mal editiert, zuletzt von ronald dumb (9. Dezember 2015 um 16:03)

  • Dieses Thema enthält 5 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!