Lesen und Verstehen
Was habe ich daran nicht verstanden dass er ein Ultimate Edit benutzt?
Woher willst das wissen ?
Ich glaube nicht dass eine Logfile eine MySQL Speicherung abbrechen lässt.
Lesen und Verstehen
Was habe ich daran nicht verstanden dass er ein Ultimate Edit benutzt?
Woher willst das wissen ?
Ich glaube nicht dass eine Logfile eine MySQL Speicherung abbrechen lässt.
Dann vermutlich wohl nicht richtig.
Sonst würde es ja funktionieren.
Das hat dann nichts mit dem Log-Script zu tun sondern mit den Mysql Zugangsdaten.
allround_log.lua
Ersetze die allround_log.lua durch diesen Code:
local logsArray = {}
local logsTypes = { ["allround"] = 1, ["admin"] = 2, ["damage"] = 3, ["Heilung"] = 4, ["Chat"] = 5, ["aktion"] = 6, ["Armor"] = 7, ["autodelete"] = 8, ["b-Chat"] = 9, ["casino"] = 10,
["death"] = 11, ["dmg"] = 12, ["drogen"] = 13, ["explodecar"] = 14, ["fguns"] = 15, ["fkasse"] = 15, ["gangwar"] = 16, ["Geld"] = 17, ["house"] = 18, ["kill"] = 19,
["pwchange"] = 20, ["sellcar"] = 21, ["vehicle"] = 21, ["tazer"] = 22, ["Team-Chat"] = 23, ["weed"] = 24, ["werbung"] = 25 }
function outputLog ( text, logname )
local logname = logname or "allround"
logsArray[#logsArray+1] = { logsTypes[logname], logTimestamp()..": "..text, getRealTime().timestamp }
end
function logTimestamp ()
local logtime = getRealTime()
local year = tostring ( logtime.year + 1900 )
local month = tostring ( logtime.month + 1 )
local day = tostring ( logtime.monthday )
local hour = tostring ( logtime.hour )
local minute = tostring ( logtime.minute )
local second = tostring ( logtime.second + 1 )
if #month == 1 then
month = "0"..month
end
if #day == 1 then
day = "0"..day
end
if #hour == 1 then
hour = "0"..hour
end
if #minute == 1 then
minute = "0"..minute
end
if #second == 1 then
second = "0"..second
end
return "["..day.."-"..month.."-"..year.." "..hour..":"..minute..":"..second.."]"
end
function putTheLogIntoMySQL ( )
for i=1, #logsArray do
dbExec ( handler, "INSERT INTO ?? (??,??,??) VALUE (?,?,?)", "logs", "Typ", "Text", "Timestamp", logsArray[i][1], logsArray[i][2], logsArray[i][3] )
end
logsArray = {}
end
setTimer ( putTheLogIntoMySQL, 1*60*1000, 0 )
addEventHandler ( "onResourceStop", resourceRoot, putTheLogIntoMySQL )
Alles anzeigen
Server:
local ggMysqlHost = "localhost"
local ggMysqlUser = "root"
local ggMysqlPass = ""
local ggMysqlDatabase = "ultimate"
hhandler = dbConnect ( "mysql", "dbname=".. ggMysqlDatabase .. ";host="..ggMysqlHost..";port=3306", ggMysqlUser, ggMysqlPass )
alvl = {
[0] = "User",
[1] = "VIP",
[2] = "Ticket-Supporter",
[3] = "Supporter",
[4] = "Moderator",
[5] = "Administrator",
[6] = "Projektleiter"
}
addEvent("dbRequest", true)
local function dbRequest(player)
local qh = dbQuery( hhandler, "SELECT * FROM userdata WHERE Adminlevel >= 2" )
local result,rows = dbPoll( qh, -1 )
triggerClientEvent(player, "cAdminListe", player, qh, result, rows)
end
addEventHandler("dbRequest", getRootElement(), dbRequest)
Alles anzeigen
Client:
local x,y = guiGetScreenSize()
local sx,sy = (x/1280),(y/800)
alvl = {
[0] = "User",
[1] = "VIP",
[2] = "Ticket-Supporter",
[3] = "Supporter",
[4] = "Moderator",
[5] = "Administrator",
[6] = "Projektleiter"
}
adminliste = {
gridlist = {},
window = {},
button = {}
}
addEventHandler("onClientResourceStart", resourceRoot,
function()
triggerServerEvent("dbRequest", getLocalPlayer(), getLocalPlayer())
adminliste.window[1] = guiCreateWindow(357*sx, 205*sy, 462*sx, 401*sy, "Adminliste", false)
guiWindowSetSizable(adminliste.window[1], false)
adminliste.gridlist[1] = guiCreateGridList(9*sx, 26*sy, 443*sx, 327*sy, false, adminliste.window[1])
guiGridListAddColumn(adminliste.gridlist[1], "Rang", 0.3)
guiGridListAddColumn(adminliste.gridlist[1], "Spieler", 0.3)
guiGridListAddColumn(adminliste.gridlist[1], "Status", 0.3)
adminliste.button[1] = guiCreateButton(11*sx, 362*sy, 441*sx, 29*sy, "Schließen", false, adminliste.window[1])
end
)
addEventHandler( "onClientResourceStart", getRootElement( ),
function ( )
guiSetVisible (adminliste.window[1], false)
end
)
addEventHandler ( "onClientGUIClick", getResourceRootElement(getThisResource()),
function ( )
if (source == adminliste.button[1]) then
guiSetVisible(adminliste.window[1], false)
showCursor(false)
end
end)
function AdminListe()
if guiGetVisible(adminliste.window[1]) == false then
showCursor(true)
guiSetVisible(adminliste.window[1], true)
triggerServerEvent("dbRequest", getLocalPlayer(), getLocalPlayer())
end
end
addCommandHandler("admins", AdminListe)
row = 0
addEvent("cAdminListe", true)
function cAdminListe(qh, result, rows)
for i = 1, rows, 1 do
row = row + 1
if getPlayerFromName(result[i].Name) ~= false then
guiGridListAddRow(adminliste.gridlist[1])
guiGridListSetItemText(adminliste.gridlist[1], row, 1, alvl[result[i].Adminlevel], false, false)
guiGridListSetItemText(adminliste.gridlist[1], row, 2, result[i].Name, false, false)
guiGridListSetItemText(adminliste.gridlist[1], row, 3, "Online", false, false)
guiGridListSetItemColor(adminliste.gridlist[1], row, 3, 0, 200, 0)
end
if getPlayerFromName(result[i].Name) == false then
guiGridListAddRow(adminliste.gridlist[1])
guiGridListSetItemText(adminliste.gridlist[1], row, 1, alvl[result[i].Adminlevel], false, false)
guiGridListSetItemText(adminliste.gridlist[1], row, 2, result[i].Name, false, false)
guiGridListSetItemText(adminliste.gridlist[1], row, 3, "Offline", false, false)
guiGridListSetItemColor(adminliste.gridlist[1], row, 3, 200, 0, 0)
end
end
row = 0
end
addEventHandler("cAdminListe", getRootElement(), cAdminListe)
Alles anzeigen
Ja kann man.
Benutzt du ein Vio Script?
Script wurde verkauft.
closed
Preis wurde auf 15€ reduziert.
Das Script wird nur 1x verkauft.
Arroganz
Ok du auch
Du bist das höchste Wesen was es gibt Bonus.
Über eine Konversation konntest du das nicht schreiben?
Da kommt mir der Begriff aufmerksamkeitsgeil in den Sinn..
Die Texturen werden denke ich mal nicht geladen, da du wie ich auf dem ersten Bild sehe mit Texturen gemappt hast.
Sehr gute Grafiken nach Wunsch.
Ebenfalls schnelle Antworten und Erstellung
In der Datenbank sind mehrere Einträge von deinem Profil.
z.B "userdata", "player" usw.
Am besten löscht du beim nächsten Mal dein Account Ingame per "/delacc [Spielername]".