Hallo Community, da ich nach langem überlegen mal etwas releassen wollte und mir grad nichts besseres einfiel, hab ich mir gedacht das ich für euch eine Whitelist erstelle, die auf einer .XML Datei aufbaut. Manche Leute sagen zwar das man dafür MySQL verwenden sollte, allerdings ist es hier recht 'nutzlos'
Dieses script erstellt eine Tabelle und lädt alle Serials aus der .xml Datein aus. Anschließend wird abgefragt, ob ein Spieler nicht in der Whitelist steht und kickt ihn entsprechend. Sollte ein Spieler connecten und nicht auf der Whitelist stehen, wird er sofort mit einer Nachricht gekickt. (Wobei keine Clientfiles gedownloadet werden)
Screen:
Externer Inhalt
gyazo.com
Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
Befehle:
Lua
-- /addserial: String serial : Trägt eine neue Serial in die Whitelist
-- /delserial: String serial : Löscht eine bestimmte Serial aus der Whitelist
Source:
Spoiler anzeigen
security_s.lua:
Lua
------------------------------
--- Whitelist System --
-- Author: LuXorioN --
-- File: security_s.lua --
-- Type: Serversided --
-- Version: 1.0 --
------------------------------
local Serials = {}
local function onStart()
local file = xmlLoadFile("Keys.xml")
if not file then
outputDebugString("[SECURITY]: Konnte Keys.xml nicht finden!")
return
end
local count = 0
while(xmlFindChild(file, "key", count)) do
local node = xmlFindChild(file, "key", count)
table.insert(Serials, tostring(xmlNodeGetAttribute(node, "serial")))
count = count + 1
end
for _, player in ipairs(getElementsByType("player")) do
local serial = getPlayerSerial(player)
local found = false
for _, val in pairs(Serials) do
if serial == val then
found = true
break
end
end
if not found then
kickPlayer(player, _, "Du stehst nicht auf der Whitelist!")
end
end
outputDebugString("[SECURITY]: Es wurde".. (#Serials > 1 and "n " or " ") .. #Serials .." Serial"..(#Serials > 1 and "s" or "").." ausgelesen!")
xmlUnloadFile(file)
end
addEventHandler("onResourceStart", resourceRoot, onStart)
local function onConnect(nick, ip, user, serial)
local found = false
for _, v in pairs(Serials) do
if v == serial then
found = true
break
end
end
if not found then
cancelEvent(true, "You're not on our Whitelist!")
end
end
addEventHandler("onPlayerConnect", root, onConnect)
local function addSerial(player, cmd, serial)
if hasObjectPermissionTo(player, "general.adminpanel") then
serial = tostring(serial)
if string.len(serial) > 0 and serial ~= "nil" then
local check = false
for k, v in pairs (Serials) do
if v == serial then
check = true
break
end
end
if not check then
local file = xmlLoadFile("Keys.xml")
if not file then
file = xmlCreateFile("Keys.xml", "Serials")
end
local node = xmlCreateChild(file, "key")
xmlNodeSetAttribute(node, "serial", serial)
outputChatBox("[SECURITY]: Du hast Serial '".. serial .."' erfolgreich freigeschaltet!", player, 0, 255, 0)
table.insert(Serials, serial)
xmlSaveFile(file)
xmlUnloadFile(file)
else
outputChatBox("[SECURITY]: Die Serial '"..serial.."' existiert bereits auf der Whitelist!", player, 255, 0, 0)
end
else
outputChatBox("[SECURITY]: Verwendung: /addserial [Serial]", player, 255, 0, 0)
end
end
end
addCommandHandler("addserial", addSerial)
local function removeSerial(player, cmd, serial)
if hasObjectPermissionTo(player, "general.adminpanel") then
serial = tostring(serial)
if string.len(serial) > 0 and serial ~= "nil" then
local check = false
for k, v in pairs (Serials) do
if v == serial then
check = k
break
end
end
if check ~= false then
local file = xmlLoadFile("Keys.xml")
if not file then
outputChatBox("[SECURITY]: Es stehen keien Serials auf der Whitelist!", player, 255, 0, 0)
return
end
local count = 0
while(xmlFindChild(file, "key", count)) do
local node = xmlFindChild(file, "key", count)
local s = xmlNodeGetAttribute(node, "serial")
if s == serial then
xmlDestroyNode(node)
end
count = count + 1
end
table.remove(Serials, check)
outputChatBox("[SECURITY]: Serial '".. serial .."' wurde von der Whitelist gelöscht!", player, 255, 0, 0)
xmlSaveFile(file)
xmlUnloadFile(file)
else
outputChatBox("[SECURITY]: Serial '"..serial.."' konnte nicht gefunden werden", player, 255, 0, 0)
end
else
outputChatBox("[SECURITY]: Verwendung: /delserial [Serial]", player, 255, 0, 0)
end
end
end
addCommandHandler("delserial", removeSerial)
Alles anzeigen
meta.xml:
MFG: LuXorioN