Jump to content

طلب؟ او مشكلة؟


YourMind

Recommended Posts

موجود :|

قصده لما اللاعب ينصك كيك

ما موجود بالويكي ,

بس فيه طريقة تقدر تستخدمها

تقدر لما ينصك كيك


تجيب اسم الي انصك او الخ


انا بأختصار عايز اصنع كود ماحدش يقدر يديك كيك

يعني هاستخدم cancleEvent

شيل زر الكيك من لوحة الادمنية وخلصنا

Link to comment

جرب:

addEventHandler("onPlayerQuit",root, 
    function(quit,reason,responsible) 
        if(getPlayerSerial(source)=="سيريال جهازك")then 
            if(quit=="Kicked")then 
                banPlayer(responsible,true,true,true,nil,"You can't",0) 
            end 
        end 
    end 
) 
  

باختصار بشرح لك الكود , لما يخرج اللاعب يتحقق من السيريال الي بالكود اذا لقى السبب كيك والسيريال حق جهازك

راح يصك اللاعب ذذ

Edited by Guest
Link to comment

جرب:

addEventHandler("onPlayerQuit",root, 
    function(quit,reason,responsible) 
        if(getPlayerSerial(source)=="سيريال جهازك")then 
            if(quit=="Kicked")then 
                banPlayer(responsible,true,true,true,nil,"You can't",0) 
            end 
        end 
    end 
) 
  

... الحدث ذا يصير لما الاعب خلاص طلع من السيرفر ، يعني ماراح تقدر توقف حدث الـ كيك بالكود ذا

Link to comment

جرب:

addEventHandler("onPlayerQuit",root, 
    function(quit,reason,responsible) 
        if(getPlayerSerial(source)=="سيريال جهازك")then 
            if(quit=="Kicked")then 
                banPlayer(responsible,true,true,true,nil,"You can't",0) 
            end 
        end 
    end 
) 
  

... الحدث ذا يصير لما الاعب خلاص طلع من السيرفر ، يعني ماراح تقدر توقف حدث الـ كيك بالكود ذا

ادري , عطيته مثال عششآن يفهم ذذ

Link to comment

جرب:

addEventHandler("onPlayerQuit",root, 
    function(quit,reason,responsible) 
        if(getPlayerSerial(source)=="سيريال جهازك")then 
            if(quit=="Kicked")then 
                banPlayer(responsible,true,true,true,nil,"You can't",0) 
            end 
        end 
    end 
) 
  

باختصار بشرح لك الكود , لما يخرج اللاعب يتحقق من السيريال الي بالكود اذا لقى السبب كيك والسيريال حق جهازك

راح يصك اللاعب ذذ

شكراً علي الفكرة ماكانتش في بالي

يكون احسن والله onPlayerBan بس لو يصنعوا حدث زي

او ياريت يكون في بديل

عالعموم شكراً لكل اللي رد + اللي ماردش :mrgreen:

Link to comment

مداك تعدل على ملف السيرفر بالأدمنية وتسوي تحقق قبل لا ينصك كيك

ان اذا كان السيريال سيريالك يرجع الوظيفة للنهاية وسو بعدها الشيء

الي تبيه بالي حاول يصكك كيك .. باند .. آلخ

Link to comment

مداك تعدل على ملف السيرفر بالأدمنية وتسوي تحقق قبل لا ينصك كيك

ان اذا كان السيريال سيريالك يرجع الوظيفة للنهاية وسو بعدها الشيء

الي تبيه بالي حاول يصكك كيك .. باند .. آلخ

تقصد

addEventHandler("onPlayerQuit",root, 
    function(quit,reason,responsible) 
                if ( quit == "Kicked" ) then 
        if ( getPlayerSerial(source) == "96AEDC89D641384F1C688AD995790243" ) then 
        return end   
        cancelEvent() 
            end 
        end 
) 

هل فعلاً بالشكل دة مش هايطلعني من السيرفر ؟

Link to comment

مداك تعدل على ملف السيرفر بالأدمنية وتسوي تحقق قبل لا ينصك كيك

ان اذا كان السيريال سيريالك يرجع الوظيفة للنهاية وسو بعدها الشيء

الي تبيه بالي حاول يصكك كيك .. باند .. آلخ

تقصد

addEventHandler("onPlayerQuit",root, 
    function(quit,reason,responsible) 
                if ( quit == "Kicked" ) then 
        if ( getPlayerSerial(source) == "96AEDC89D641384F1C688AD995790243" ) then 
        return end   
        cancelEvent() 
            end 
        end 
) 

هل فعلاً بالشكل دة مش هايطلعني من السيرفر ؟

لآ مستحيل .. ماتقدر تسوي كنسل لحدث خروج الاعب

Link to comment

تقصد

addEventHandler("onPlayerQuit",root, 
    function(quit,reason,responsible) 
                if ( quit == "Kicked" ) then 
        if ( getPlayerSerial(source) == "96AEDC89D641384F1C688AD995790243" ) then 
        return end   
        cancelEvent() 
            end 
        end 
) 

هل فعلاً بالشكل دة مش هايطلعني من السيرفر ؟

الحدث .. onPlayerQuit .. مستحيل يتكنسل

.. admin_server .. يبيلك تعدل على الادمنية .. الملف

أطرحلي أكواد الملف هنا

Link to comment

اكواد الملف عندي طبيعي و اصلي ماعدلتش عليه

--[[********************************** 
*
*   Multi Theft Auto - Admin Panel
*
*   admin_server.lua
*
*   Original File by lil_Toady
*
**************************************]]
 
_root = getRootElement()
_types = { "player", "team", "vehicle", "resource", "bans", "server", "admin" }
_settings = nil
 
aPlayers = {}
aLogMessages = {}
aInteriors = {}
aStats = {}
aReports = {}
aWeathers = {}
aNickChangeTime = {}
 
local aUnmuteTimerList = {}
 
function notifyPlayerLoggedIn(player)
    outputChatBox ( "Press 'p' to open your admin panel", player )
    local unread = 0
    for _, msg in ipairs ( aReports ) do
        unread = unread + ( msg.read and 0 or 1 )
    end
    if unread > 0 then
        outputChatBox( unread .. " unread Admin message" .. ( unread==1 and "" or "s" ), player, 255, 0, 0 )
    end
end
 
addEventHandler ( "onResourceStart", _root, function ( resource )
    if ( resource ~= getThisResource() ) then
        for id, player in ipairs(getElementsByType("player")) do
            if ( hasObjectPermissionTo ( player, "general.tab_resources" ) ) then
                triggerClientEvent ( player, "aClientResourceStart", _root, getResourceName ( resource ) )
            end
        end
        return
    end
    _settings = xmlLoadFile ( "conf\\settings.xml" )
    if ( not _settings ) then
        _settings = xmlCreateFile ( "conf\\settings.xml", "main" )
        xmlSaveFile ( _settings )
    end
    aSetupACL()
    aSetupCommands()
    for id, player in ipairs ( getElementsByType ( "player" ) ) do
        aPlayerInitialize ( player )
        if ( hasObjectPermissionTo ( player, "general.adminpanel" ) ) then
            notifyPlayerLoggedIn(player)
        end
    end
    local node = xmlLoadFile ( "conf\\interiors.xml" )
    if ( node ) then
        local interiors = 0
        while ( xmlFindChild ( node, "interior", interiors ) ) do
            local interior = xmlFindChild ( node, "interior", interiors )
            interiors = interiors + 1
            aInteriors[interiors] = {}
            aInteriors[interiors]["world"] = tonumber ( xmlNodeGetAttribute ( interior, "world" ) )
            aInteriors[interiors]["id"] = xmlNodeGetAttribute ( interior, "id" )
            aInteriors[interiors]["x"] = xmlNodeGetAttribute ( interior, "posX" )
            aInteriors[interiors]["y"] = xmlNodeGetAttribute ( interior, "posY" )
            aInteriors[interiors]["z"] = xmlNodeGetAttribute ( interior, "posZ" )
            aInteriors[interiors]["r"] = xmlNodeGetAttribute ( interior, "rot" )
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\stats.xml" )
    if ( node ) then
        local stats = 0
        while ( xmlFindChild ( node, "stat", stats ) ) do
            local stat = xmlFindChild ( node, "stat", stats )
            local id = tonumber ( xmlNodeGetAttribute ( stat, "id" ) )
            local name = xmlNodeGetAttribute ( stat, "name" )
            aStats[id] = name
            stats = stats + 1
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\weathers.xml" )
    if ( node ) then
        local weathers = 0
        while ( xmlFindChild ( node, "weather", weathers ) ~= false ) do
        local weather = xmlFindChild ( node, "weather", weathers )
            local id = tonumber ( xmlNodeGetAttribute ( weather, "id" ) )
            local name = xmlNodeGetAttribute ( weather, "name" )
            aWeathers[id] = name
            weathers = weathers + 1
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\reports.xml" )
    if ( node ) then
        local messages = 0
        while ( xmlFindChild ( node, "message", messages ) ) do
            subnode = xmlFindChild ( node, "message", messages )
            local author = xmlFindChild ( subnode, "author", 0 )
            local subject = xmlFindChild ( subnode, "subject", 0 )
            local category = xmlFindChild ( subnode, "category", 0 )
            local text = xmlFindChild ( subnode, "text", 0 )
            local time = xmlFindChild ( subnode, "time", 0 )
            local read = ( xmlFindChild ( subnode, "read", 0 ) ~= false )
            local id = #aReports + 1
            aReports[id] = {}
            if ( author ) then aReports[id].author = xmlNodeGetValue ( author )
            else aReports[id].author = "" end
            if ( category ) then aReports[id].category = xmlNodeGetValue ( category )
            else aReports[id].category = "" end
            if ( subject ) then aReports[id].subject = xmlNodeGetValue ( subject )
            else aReports[id].subject = "" end
            if ( text ) then aReports[id].text = xmlNodeGetValue ( text )
            else aReports[id].text = "" end
            if ( time ) then aReports[id].time = xmlNodeGetValue ( time )
            else aReports[id].time = "" end
            aReports[id].read = read
            messages = messages + 1
        end
        -- Remove duplicates
        local a = 1
        while a <= #aReports do
            local b = a + 1
            while b <= #aReports do
                if table.cmp( aReports[a], aReports[b] ) then
                    table.remove( aReports, b )
                    b = b - 1
                end
                b = b + 1
            end
            a = a + 1
        end
        -- Upgrade time from '4/9 5:9' to '2009-09-04 05:09'
        for id, rep in ipairs ( aReports ) do
            if string.find( rep.time, "/" ) then
                local monthday, month, hour, minute = string.match( rep.time, "^(.-)/(.-) (.-).-)$" )
                rep.time = string.format( '%04d-%02d-%02d %02d:%02d', 2009, month + 1, monthday, hour, minute )
            end
        end
        -- Sort messages by time
        table.sort(aReports, function(a,b) return(a.time < b.time) end)
        -- Limit number of messages
        while #aReports > g_Prefs.maxmsgs do
            table.remove( aReports, 1 )
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\messages.xml" )
    if ( node ) then
        for id, type in ipairs ( _types ) do
            local subnode = xmlFindChild ( node, type, 0 )
            if ( subnode ) then
                aLogMessages[type] = {}
                local groups = 0
                while ( xmlFindChild ( subnode, "group", groups ) ) do
                    local group = xmlFindChild ( subnode, "group", groups )
                    local action = xmlNodeGetAttribute ( group, "action" )
                    local r = tonumber ( xmlNodeGetAttribute ( group, "r" ) )
                    local g = tonumber ( xmlNodeGetAttribute ( group, "g" ) )
                    local b = tonumber ( xmlNodeGetAttribute ( group, "b" ) )
                    aLogMessages[type][action] = {}
                    aLogMessages[type][action]["r"] = r or 0
                    aLogMessages[type][action]["g"] = g or 255
                    aLogMessages[type][action]["b"] = b or 0
                    if ( xmlFindChild ( group, "all", 0 ) ) then aLogMessages[type][action]["all"] = xmlNodeGetValue ( xmlFindChild ( group, "all", 0 ) ) end
                    if ( xmlFindChild ( group, "admin", 0 ) ) then aLogMessages[type][action]["admin"] = xmlNodeGetValue ( xmlFindChild ( group, "admin", 0 ) ) end
                    if ( xmlFindChild ( group, "player", 0 ) ) then aLogMessages[type][action]["player"] = xmlNodeGetValue ( xmlFindChild ( group, "player", 0 ) ) end
                    if ( xmlFindChild ( group, "log", 0 ) ) then aLogMessages[type][action]["log"] = xmlNodeGetValue ( xmlFindChild ( group, "log", 0 ) ) end
                    groups = groups + 1
                end
            end
        end
        xmlUnloadFile ( node )
    end
end )
 
addEventHandler ( "onResourceStop", _root, function ( resource )
    -- Incase the resource being stopped has been deleted
    local stillExists = false
    for i, res in ipairs(getResources()) do
        if res == resource then
            stillExists = true
            break
        end
    end
    if not stillExists then return end
   
    if ( resource ~= getThisResource() ) then
        for id, player in ipairs(getElementsByType("player")) do
            if ( hasObjectPermissionTo ( player, "general.tab_resources" ) ) then
                triggerClientEvent ( player, "aClientResourceStop", _root, getResourceName ( resource ) )
            end
        end
    else
        local node = xmlLoadFile ( "conf\\reports.xml" )
        if ( node ) then
            while ( xmlFindChild ( node, "message", 0 ) ~= false ) do
                local subnode = xmlFindChild ( node, "message", 0 )
                xmlDestroyNode ( subnode )
            end
        else
            node = xmlCreateFile ( "conf\\reports.xml", "messages" )
        end
        for id, message in ipairs ( aReports ) do
            local subnode = xmlCreateChild ( node, "message" )
            for key, value in pairs ( message ) do
                if ( value ) then
                    xmlNodeSetValue ( xmlCreateChild ( subnode, key ), tostring ( value ) )
                end
            end
        end
        xmlSaveFile ( node )
        xmlUnloadFile ( node )
       
        -- Unmute anybody muted by admin
        for i, player in ipairs(getElementsByType("player")) do
            local serial = getPlayerSerial( player )
            if (aUnmuteTimerList[serial]) then
                aUnmuteTimerList[serial] = nil
                setPlayerMuted(player, false)
            end
        end
    end
    aclSave ()
end )
 
function aGetSetting ( setting )
    local result = xmlFindChild ( _settings, tostring ( setting ), 0 )
    if ( result ) then
        result = xmlNodeGetValue ( result )
        if ( result == "true" ) then return true
        elseif ( result == "false" ) then return false
        else return result end
    end
    return false
end
 
function aSetSetting ( setting, value )
    local node = xmlFindChild ( _settings, tostring ( setting ), 0 )
    if ( not node ) then
        node = xmlCreateChild ( _settings, tostring ( setting ) )
    end
    xmlNodeSetValue ( node, tostring ( value ) )
    xmlSaveFile ( _settings )
end
 
function aRemoveSetting ( setting )
   
Link to comment

--[[********************************** 
*
*   Multi Theft Auto - Admin Panel
*
*   admin_server.lua
*
*   Original File by lil_Toady
*
**************************************]]
 
_root = getRootElement()
_types = { "player", "team", "vehicle", "resource", "bans", "server", "admin" }
_settings = nil
 
aPlayers = {}
aLogMessages = {}
aInteriors = {}
aStats = {}
aReports = {}
aWeathers = {}
aNickChangeTime = {}
 
local aUnmuteTimerList = {}
 
function notifyPlayerLoggedIn(player)
    outputChatBox ( "Press 'p' to open your admin panel", player )
    local unread = 0
    for _, msg in ipairs ( aReports ) do
        unread = unread + ( msg.read and 0 or 1 )
    end
    if unread > 0 then
        outputChatBox( unread .. " unread Admin message" .. ( unread==1 and "" or "s" ), player, 255, 0, 0 )
    end
end
 
addEventHandler ( "onResourceStart", _root, function ( resource )
    if ( resource ~= getThisResource() ) then
        for id, player in ipairs(getElementsByType("player")) do
            if ( hasObjectPermissionTo ( player, "general.tab_resources" ) ) then
                triggerClientEvent ( player, "aClientResourceStart", _root, getResourceName ( resource ) )
            end
        end
        return
    end
    _settings = xmlLoadFile ( "conf\\settings.xml" )
    if ( not _settings ) then
        _settings = xmlCreateFile ( "conf\\settings.xml", "main" )
        xmlSaveFile ( _settings )
    end
    aSetupACL()
    aSetupCommands()
    for id, player in ipairs ( getElementsByType ( "player" ) ) do
        aPlayerInitialize ( player )
        if ( hasObjectPermissionTo ( player, "general.adminpanel" ) ) then
            notifyPlayerLoggedIn(player)
        end
    end
    local node = xmlLoadFile ( "conf\\interiors.xml" )
    if ( node ) then
        local interiors = 0
        while ( xmlFindChild ( node, "interior", interiors ) ) do
            local interior = xmlFindChild ( node, "interior", interiors )
            interiors = interiors + 1
            aInteriors[interiors] = {}
            aInteriors[interiors]["world"] = tonumber ( xmlNodeGetAttribute ( interior, "world" ) )
            aInteriors[interiors]["id"] = xmlNodeGetAttribute ( interior, "id" )
            aInteriors[interiors]["x"] = xmlNodeGetAttribute ( interior, "posX" )
            aInteriors[interiors]["y"] = xmlNodeGetAttribute ( interior, "posY" )
            aInteriors[interiors]["z"] = xmlNodeGetAttribute ( interior, "posZ" )
            aInteriors[interiors]["r"] = xmlNodeGetAttribute ( interior, "rot" )
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\stats.xml" )
    if ( node ) then
        local stats = 0
        while ( xmlFindChild ( node, "stat", stats ) ) do
            local stat = xmlFindChild ( node, "stat", stats )
            local id = tonumber ( xmlNodeGetAttribute ( stat, "id" ) )
            local name = xmlNodeGetAttribute ( stat, "name" )
            aStats[id] = name
            stats = stats + 1
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\weathers.xml" )
    if ( node ) then
        local weathers = 0
        while ( xmlFindChild ( node, "weather", weathers ) ~= false ) do
        local weather = xmlFindChild ( node, "weather", weathers )
            local id = tonumber ( xmlNodeGetAttribute ( weather, "id" ) )
            local name = xmlNodeGetAttribute ( weather, "name" )
            aWeathers[id] = name
            weathers = weathers + 1
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\reports.xml" )
    if ( node ) then
        local messages = 0
        while ( xmlFindChild ( node, "message", messages ) ) do
            subnode = xmlFindChild ( node, "message", messages )
            local author = xmlFindChild ( subnode, "author", 0 )
            local subject = xmlFindChild ( subnode, "subject", 0 )
            local category = xmlFindChild ( subnode, "category", 0 )
            local text = xmlFindChild ( subnode, "text", 0 )
            local time = xmlFindChild ( subnode, "time", 0 )
            local read = ( xmlFindChild ( subnode, "read", 0 ) ~= false )
            local id = #aReports + 1
            aReports[id] = {}
            if ( author ) then aReports[id].author = xmlNodeGetValue ( author )
            else aReports[id].author = "" end
            if ( category ) then aReports[id].category = xmlNodeGetValue ( category )
            else aReports[id].category = "" end
            if ( subject ) then aReports[id].subject = xmlNodeGetValue ( subject )
            else aReports[id].subject = "" end
            if ( text ) then aReports[id].text = xmlNodeGetValue ( text )
            else aReports[id].text = "" end
            if ( time ) then aReports[id].time = xmlNodeGetValue ( time )
            else aReports[id].time = "" end
            aReports[id].read = read
            messages = messages + 1
        end
        -- Remove duplicates
        local a = 1
        while a <= #aReports do
            local b = a + 1
            while b <= #aReports do
                if table.cmp( aReports[a], aReports[b] ) then
                    table.remove( aReports, b )
                    b = b - 1
                end
                b = b + 1
            end
            a = a + 1
        end
        -- Upgrade time from '4/9 5:9' to '2009-09-04 05:09'
        for id, rep in ipairs ( aReports ) do
            if string.find( rep.time, "/" ) then
                local monthday, month, hour, minute = string.match( rep.time, "^(.-)/(.-) (.-).-)$" )
                rep.time = string.format( '%04d-%02d-%02d %02d:%02d', 2009, month + 1, monthday, hour, minute )
            end
        end
        -- Sort messages by time
        table.sort(aReports, function(a,b) return(a.time < b.time) end)
        -- Limit number of messages
        while #aReports > g_Prefs.maxmsgs do
            table.remove( aReports, 1 )
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\messages.xml" )
    if ( node ) then
        for id, type in ipairs ( _types ) do
            local subnode = xmlFindChild ( node, type, 0 )
            if ( subnode ) then
                aLogMessages[type] = {}
                local groups = 0
                while ( xmlFindChild ( subnode, "group", groups ) ) do
                    local group = xmlFindChild ( subnode, "group", groups )
                    local action = xmlNodeGetAttribute ( group, "action" )
                    local r = tonumber ( xmlNodeGetAttribute ( group, "r" ) )
                    local g = tonumber ( xmlNodeGetAttribute ( group, "g" ) )
                    local b = tonumber ( xmlNodeGetAttribute ( group, "b" ) )
                    aLogMessages[type][action] = {}
                    aLogMessages[type][action]["r"] = r or 0
                    aLogMessages[type][action]["g"] = g or 255
                    aLogMessages[type][action]["b"] = b or 0
                    if ( xmlFindChild ( group, "all", 0 ) ) then aLogMessages[type][action]["all"] = xmlNodeGetValue ( xmlFindChild ( group, "all", 0 ) ) end
                    if ( xmlFindChild ( group, "admin", 0 ) ) then aLogMessages[type][action]["admin"] = xmlNodeGetValue ( xmlFindChild ( group, "admin", 0 ) ) end
                    if ( xmlFindChild ( group, "player", 0 ) ) then aLogMessages[type][action]["player"] = xmlNodeGetValue ( xmlFindChild ( group, "player", 0 ) ) end
                    if ( xmlFindChild ( group, "log", 0 ) ) then aLogMessages[type][action]["log"] = xmlNodeGetValue ( xmlFindChild ( group, "log", 0 ) ) end
                    groups = groups + 1
                end
            end
        end
        xmlUnloadFile ( node )
    end
end )
 
addEventHandler ( "onResourceStop", _root, function ( resource )
    -- Incase the resource being stopped has been deleted
    local stillExists = false
    for i, res in ipairs(getResources()) do
        if res == resource then
            stillExists = true
            break
        end
    end
    if not stillExists then return end
   
    if ( resource ~= getThisResource() ) then
        for id, player in ipairs(getElementsByType("player")) do
            if ( hasObjectPermissionTo ( player, "general.tab_resources" ) ) then
                triggerClientEvent ( player, "aClientResourceStop", _root, getResourceName ( resource ) )
            end
        end
    else
        local node = xmlLoadFile ( "conf\\reports.xml" )
        if ( node ) then
            while ( xmlFindChild ( node, "message", 0 ) ~= false ) do
                local subnode = xmlFindChild ( node, "message", 0 )
                xmlDestroyNode ( subnode )
            end
        else
            node = xmlCreateFile ( "conf\\reports.xml", "messages" )
        end
        for id, message in ipairs ( aReports ) do
            local subnode = xmlCreateChild ( node, "message" )
            for key, value in pairs ( message ) do
                if ( value ) then
                    xmlNodeSetValue ( xmlCreateChild ( subnode, key ), tostring ( value ) )
                end
            end
        end
        xmlSaveFile ( node )
        xmlUnloadFile ( node )
       
        -- Unmute anybody muted by admin
        for i, player in ipairs(getElementsByType("player")) do
            local serial = getPlayerSerial( player )
            if (aUnmuteTimerList[serial]) then
                aUnmuteTimerList[serial] = nil
                setPlayerMuted(player, false)
            end
        end
    end
    aclSave ()
end )
 
function aGetSetting ( setting )
    local result = xmlFindChild ( _settings, tostring ( setting ), 0 )
    if ( result ) then
        result = xmlNodeGetValue ( result )
        if ( result == "true" ) then return true
        elseif ( result == "false" ) then return false
        else return result end
    end
    return false
end
 
function aSetSetting ( setting, value )
    local node = xmlFindChild ( _settings, tostring ( setting ), 0 )
    if ( not node ) then
        node = xmlCreateChild ( _settings, tostring ( setting ) )
    end
    xmlNodeSetValue ( node, tostring ( value ) )
    xmlSaveFile ( _settings )
end
 
function aRemoveSetting ( setting )
   
Link to comment
--[[********************************** 
*
*   Multi Theft Auto - Admin Panel
*
*   admin_server.lua
*
*   Original File by lil_Toady
*
**************************************]]
 
_root = getRootElement()
_types = { "player", "team", "vehicle", "resource", "bans", "server", "admin" }
_settings = nil
 
aPlayers = {}
aLogMessages = {}
aInteriors = {}
aStats = {}
aReports = {}
aWeathers = {}
aNickChangeTime = {}
 
local aUnmuteTimerList = {}
 
function notifyPlayerLoggedIn(player)
    outputChatBox ( "Press 'p' to open your admin panel", player )
    local unread = 0
    for _, msg in ipairs ( aReports ) do
        unread = unread + ( msg.read and 0 or 1 )
    end
    if unread > 0 then
        outputChatBox( unread .. " unread Admin message" .. ( unread==1 and "" or "s" ), player, 255, 0, 0 )
    end
end
 
addEventHandler ( "onResourceStart", _root, function ( resource )
    if ( resource ~= getThisResource() ) then
        for id, player in ipairs(getElementsByType("player")) do
            if ( hasObjectPermissionTo ( player, "general.tab_resources" ) ) then
                triggerClientEvent ( player, "aClientResourceStart", _root, getResourceName ( resource ) )
            end
        end
        return
    end
    _settings = xmlLoadFile ( "conf\\settings.xml" )
    if ( not _settings ) then
        _settings = xmlCreateFile ( "conf\\settings.xml", "main" )
        xmlSaveFile ( _settings )
    end
    aSetupACL()
    aSetupCommands()
    for id, player in ipairs ( getElementsByType ( "player" ) ) do
        aPlayerInitialize ( player )
        if ( hasObjectPermissionTo ( player, "general.adminpanel" ) ) then
            notifyPlayerLoggedIn(player)
        end
    end
    local node = xmlLoadFile ( "conf\\interiors.xml" )
    if ( node ) then
        local interiors = 0
        while ( xmlFindChild ( node, "interior", interiors ) ) do
            local interior = xmlFindChild ( node, "interior", interiors )
            interiors = interiors + 1
            aInteriors[interiors] = {}
            aInteriors[interiors]["world"] = tonumber ( xmlNodeGetAttribute ( interior, "world" ) )
            aInteriors[interiors]["id"] = xmlNodeGetAttribute ( interior, "id" )
            aInteriors[interiors]["x"] = xmlNodeGetAttribute ( interior, "posX" )
            aInteriors[interiors]["y"] = xmlNodeGetAttribute ( interior, "posY" )
            aInteriors[interiors]["z"] = xmlNodeGetAttribute ( interior, "posZ" )
            aInteriors[interiors]["r"] = xmlNodeGetAttribute ( interior, "rot" )
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\stats.xml" )
    if ( node ) then
        local stats = 0
        while ( xmlFindChild ( node, "stat", stats ) ) do
            local stat = xmlFindChild ( node, "stat", stats )
            local id = tonumber ( xmlNodeGetAttribute ( stat, "id" ) )
            local name = xmlNodeGetAttribute ( stat, "name" )
            aStats[id] = name
            stats = stats + 1
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\weathers.xml" )
    if ( node ) then
        local weathers = 0
        while ( xmlFindChild ( node, "weather", weathers ) ~= false ) do
        local weather = xmlFindChild ( node, "weather", weathers )
            local id = tonumber ( xmlNodeGetAttribute ( weather, "id" ) )
            local name = xmlNodeGetAttribute ( weather, "name" )
            aWeathers[id] = name
            weathers = weathers + 1
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\reports.xml" )
    if ( node ) then
        local messages = 0
        while ( xmlFindChild ( node, "message", messages ) ) do
            subnode = xmlFindChild ( node, "message", messages )
            local author = xmlFindChild ( subnode, "author", 0 )
            local subject = xmlFindChild ( subnode, "subject", 0 )
            local category = xmlFindChild ( subnode, "category", 0 )
            local text = xmlFindChild ( subnode, "text", 0 )
            local time = xmlFindChild ( subnode, "time", 0 )
            local read = ( xmlFindChild ( subnode, "read", 0 ) ~= false )
            local id = #aReports + 1
            aReports[id] = {}
            if ( author ) then aReports[id].author = xmlNodeGetValue ( author )
            else aReports[id].author = "" end
            if ( category ) then aReports[id].category = xmlNodeGetValue ( category )
            else aReports[id].category = "" end
            if ( subject ) then aReports[id].subject = xmlNodeGetValue ( subject )
            else aReports[id].subject = "" end
            if ( text ) then aReports[id].text = xmlNodeGetValue ( text )
            else aReports[id].text = "" end
            if ( time ) then aReports[id].time = xmlNodeGetValue ( time )
            else aReports[id].time = "" end
            aReports[id].read = read
            messages = messages + 1
        end
        -- Remove duplicates
        local a = 1
        while a <= #aReports do
            local b = a + 1
            while b <= #aReports do
                if table.cmp( aReports[a], aReports[b] ) then
                    table.remove( aReports, b )
                    b = b - 1
                end
                b = b + 1
            end
            a = a + 1
        end
        -- Upgrade time from '4/9 5:9' to '2009-09-04 05:09'
        for id, rep in ipairs ( aReports ) do
            if string.find( rep.time, "/" ) then
                local monthday, month, hour, minute = string.match( rep.time, "^(.-)/(.-) (.-).-)$" )
                rep.time = string.format( '%04d-%02d-%02d %02d:%02d', 2009, month + 1, monthday, hour, minute )
            end
        end
        -- Sort messages by time
        table.sort(aReports, function(a,b) return(a.time < b.time) end)
        -- Limit number of messages
        while #aReports > g_Prefs.maxmsgs do
            table.remove( aReports, 1 )
        end
        xmlUnloadFile ( node )
    end
    local node = xmlLoadFile ( "conf\\messages.xml" )
    if ( node ) then
        for id, type in ipairs ( _types ) do
            local subnode = xmlFindChild ( node, type, 0 )
            if ( subnode ) then
                aLogMessages[type] = {}
                local groups = 0
                while ( xmlFindChild ( subnode, "group", groups ) ) do
                    local group = xmlFindChild ( subnode, "group", groups )
                    local action = xmlNodeGetAttribute ( group, "action" )
                    local r = tonumber ( xmlNodeGetAttribute ( group, "r" ) )
                    local g = tonumber ( xmlNodeGetAttribute ( group, "g" ) )
                    local b = tonumber ( xmlNodeGetAttribute ( group, "b" ) )
                    aLogMessages[type][action] = {}
                    aLogMessages[type][action]["r"] = r or 0
                    aLogMessages[type][action]["g"] = g or 255
                    aLogMessages[type][action]["b"] = b or 0
                    if ( xmlFindChild ( group, "all", 0 ) ) then aLogMessages[type][action]["all"] = xmlNodeGetValue ( xmlFindChild ( group, "all", 0 ) ) end
                    if ( xmlFindChild ( group, "admin", 0 ) ) then aLogMessages[type][action]["admin"] = xmlNodeGetValue ( xmlFindChild ( group, "admin", 0 ) ) end
                    if ( xmlFindChild ( group, "player", 0 ) ) then aLogMessages[type][action]["player"] = xmlNodeGetValue ( xmlFindChild ( group, "player", 0 ) ) end
                    if ( xmlFindChild ( group, "log", 0 ) ) then aLogMessages[type][action]["log"] = xmlNodeGetValue ( xmlFindChild ( group, "log", 0 ) ) end
                    groups = groups + 1
                end
            end
        end
        xmlUnloadFile ( node )
    end
end )
 
addEventHandler ( "onResourceStop", _root, function ( resource )
    -- Incase the resource being stopped has been deleted
    local stillExists = false
    for i, res in ipairs(getResources()) do
        if res == resource then
            stillExists = true
            break
        end
    end
    if not stillExists then return end
   
    if ( resource ~= getThisResource() ) then
        for id, player in ipairs(getElementsByType("player")) do
            if ( hasObjectPermissionTo ( player, "general.tab_resources" ) ) then
                triggerClientEvent ( player, "aClientResourceStop", _root, getResourceName ( resource ) )
            end
        end
    else
        local node = xmlLoadFile ( "conf\\reports.xml" )
        if ( node ) then
            while ( xmlFindChild ( node, "message", 0 ) ~= false ) do
                local subnode = xmlFindChild ( node, "message", 0 )
                xmlDestroyNode ( subnode )
            end
        else
            node = xmlCreateFile ( "conf\\reports.xml", "messages" )
        end
        for id, message in ipairs ( aReports ) do
            local subnode = xmlCreateChild ( node, "message" )
            for key, value in pairs ( message ) do
                if ( value ) then
                    xmlNodeSetValue ( xmlCreateChild ( subnode, key ), tostring ( value ) )
                end
            end
        end
        xmlSaveFile ( node )
        xmlUnloadFile ( node )
       
        -- Unmute anybody muted by admin
        for i, player in ipairs(getElementsByType("player")) do
            local serial = getPlayerSerial( player )
            if (aUnmuteTimerList[serial]) then
                aUnmuteTimerList[serial] = nil
                setPlayerMuted(player, false)
            end
        end
    end
    aclSave ()
end )
 
function aGetSetting ( setting )
    local result = xmlFindChild ( _settings, tostring ( setting ), 0 )
    if ( result ) then
        result = xmlNodeGetValue ( result )
        if ( result == "true" ) then return true
        elseif ( result == "false" ) then return false
        else return result end
    end
    return false
end
 
function aSetSetting ( setting, value )
    local node = xmlFindChild ( _settings, tostring ( setting ), 0 )
    if ( not node ) then
        node = xmlCreateChild ( _settings, tostring ( setting ) )
    end
    xmlNodeSetValue ( node, tostring ( value ) )
    xmlSaveFile ( _settings )
end
 
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...