Jump to content

Pomoc z prefiksami przed nickiem


Recommended Posts

Witam otóż mam pewien problem. Kiedyś założyłem serwer mta i zrobiłem jakoś że na tabeli była grupa "[Gracz]" i każdy nowy miał przed nickiem (na chacie) to [Gracz] również jakos zrobiłem grupy administracyjne tj. [Admin] , [Moderator] , [Właściciel]. I teraz nie moge tego zrobic nie pamiętam czy był jakis plugin czy nie ale nie wydaje mi sie ze nie. Zgóry dziękuje za pomoc
 

Link to comment
  • 9 months later...
  • 2 weeks later...
local function onPlayerChat(msg, type)
    local accountLogin = getAccountName(getPlayerAccount(source)) -- ściągamy ewentualne konto source (gracza, który coś napisał)
    local support = isObjectInACLGroup("user." ..accountLogin, aclGetGroup("Support")) -- stała sprawdzająca czy source jest dodana do grupy o nazwie Support w ACL
    local admin = isObjectInACLGroup("user." ..accountLogin, aclGetGroup("Admin")) -- stała sprawdzająca czy source jest dodany do grupy o nazwie Admin w ACL

    if not isGuestAccount(getPlayerAccount(source)) then -- jeśli source nie jest gościem (jest zalogowany) to
      if admin then -- jeśli stała wyrzuci true, że source jest administratorem to
            outputChatBox("[Admin] " ..getPlayerName(source).. ": " ..msg, root, 255, 255, 255, true) -- pokaże to na czacie
        elseif support then -- jeśli stała wyrzuci true, że source jest supporterem to
            outputChatBox("[Support] " ..getPlayerName(source).. ": " ..msg, root, 255, 255, 255, true) -- pokaże to na czacie
        else -- w przeciwnym razie
            outputChatBox(getPlayerName(source).. ": " ..msg, root, 255, 255, 255, true) -- pokaże wiadomość gracza bez żadnego prefixu
        end
    end
end
addEventHandler("onPlayerChat", root, onPlayerChat) -- handler zaznaczający, że ma się to wykonać jeśli player napisze coś na czacie

Wyciąłem Ci napisany przeze mnie ułamek kodu. Możesz się nim pobawić. Opisałem Ci wewnątrz krótko jak, dlaczego i po co.

Edited by Paweł
Link to comment
  • 10 months later...
  • 1 year later...

Dodam również od siebie dla innych.
Napisałem kod w czytelny oraz optymalny sposób, aby nie bałaganić if'ami.

local prefixes = {
    [1] = {"[Wlasciciel]", 255, 0, 0},
    [2] = {"[Administrator]", 255, 0, 0},
    [3] = {"[Supporter]", 0, 255, 0},
    [4] = {"[Gracz]", 255, 255, 0},
}

function onPlayerChatPrefix(message, messageType)
    if messageType == 0 then -- typ 0 oznacza chat, a 1 to konsola
        local playerName = getPlayerName(source)
        local playerPrefix = ""
        for i, prefixData in ipairs(prefixes) do
            if hasObjectPermissionTo(source, "function." .. prefixData[1], false) then -- sprawdzenie, czy gracz ma uprawnienia do danego prefixu(acl)
                playerPrefix = "[" .. prefixData[1] .. "] "
                break
            end
        end
        local r, g, b = getPlayerNametagColor(source) -- pobranie koloru nicku
        local messageWithPrefix = playerPrefix .. playerName .. ": " .. message -- utworzenie nowej wiadomości z prefixem
        outputChatBox(messageWithPrefix, root, r, g, b, true) -- wysłanie nowej wiadomości na czacie
        cancelEvent() -- anulowanie oryginalnej wiadomości, aby nie została wyświetlona
    end
end
addEventHandler("onPlayerChat", root, onPlayerChatPrefix)

 

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...