Вопрос Ошибка в создании команды

  • 10
  • 0
Контакты для связи отсутствуют.
написал код, вообще не уверен что правильный, естественно гаррис моду не понравилось, суть была в том что должна была быть команда на анонимное сообщение, когда человек пишет /anon, команда срабатывает как ooc только не пишет ник игрока, соответсвенно перед сообщением пишется [Анонимно], нужно было для рп сервера. Гаррис мод выдал такую ошибку:

[DarkRP] gamemodes/darkrp/gamemode/modules/chat/sv_chat.lua:80: attempt to call field 'callback' (a nil value)
1. RP_PlayerChat - gamemodes/darkrp/gamemode/modules/chat/sv_chat.lua:80
2. unknown - gamemodes/darkrp/gamemode/modules/chat/sv_chat.lua:246
Остальные команды включая OOC и PM работают в штатном режиме.


Вот мой код самой команды:

Lua:
function SayAsAnonymous(ply, text, ooc) --вместо оос был teamchat, заменил для теста
    if string.sub(text, 1, 6) == "/anon " or string.sub(text, 1, 8) == "/anonym " then
        local anonymousText = string.sub(text, string.find(text, " ") + 1)
            for k,v in pairs(player.GetAll()) do
            v:PrintMessage(HUD_PRINTTALK, "[Анонимно] " .. anonymousText)
            end
        return true
        end
    end
hook.Add("PlayerSay", "SayAsAnonymous", "SayAsAnonymous")

Помогите понять что не так, и как сделать так чтобы команда работала!
 
  • 78
  • 1
  • 4
Контакты для связи отсутствуют.
написал код, вообще не уверен что правильный, естественно гаррис моду не понравилось, суть была в том что должна была быть команда на анонимное сообщение, когда человек пишет /anon, команда срабатывает как ooc только не пишет ник игрока, соответсвенно перед сообщением пишется [Анонимно], нужно было для рп сервера. Гаррис мод выдал такую ошибку:

[DarkRP] gamemodes/darkrp/gamemode/modules/chat/sv_chat.lua:80: attempt to call field 'callback' (a nil value)
1. RP_PlayerChat - gamemodes/darkrp/gamemode/modules/chat/sv_chat.lua:80
2. unknown - gamemodes/darkrp/gamemode/modules/chat/sv_chat.lua:246
Остальные команды включая OOC и PM работают в штатном режиме.


Вот мой код самой команды:

Lua:
function SayAsAnonymous(ply, text, ooc) --вместо оос был teamchat, заменил для теста
    if string.sub(text, 1, 6) == "/anon " or string.sub(text, 1, 8) == "/anonym " then
        local anonymousText = string.sub(text, string.find(text, " ") + 1)
            for k,v in pairs(player.GetAll()) do
            v:PrintMessage(HUD_PRINTTALK, "[Анонимно] " .. anonymousText)
            end
        return true
        end
    end
hook.Add("PlayerSay", "SayAsAnonymous", "SayAsAnonymous")

Помогите понять что не так, и как сделать так чтобы команда работала!
У тебя функция возвращает bool значение, а должна возврашать string. Поменяй вместо "return true" ставь "return '' ".
И зачем ты используешь "ooc" если она отвечает за то, пишешь ли ты в TeamChat?
 
  • 534
  • 17
  • 187
удали весь этот бред и делай так:

идёшь сюда addons\darkrpmodification\lua\darkrp_modules\anonsms - (ласт папку создаёшь)
тут создаешь 2 файла - sh_anon и sv_anon

туда след код

sh_anon:
local MetaPlayer = FindMetaTable("Player")

local Staff = {"dissable"}

AnoConfig = {
    colorprefixe = Color(255, 0, 0, 255),
    chatprefixe = "[Аноним]",
    cmd = "anon"
}

function MetaPlayer:IsStaff()
    for _, v in pairs(Staff) do
        if self:IsUserGroup(v) then
            return true
        end
    end

    return false
end


sv_anon:
local config = AnoConfig

local function Anonymous(ply, args)
    if args == "" then
        DarkRP.notify(ply, 1, 4, DarkRP.getPhrase("invalid_x", "argument", ""))
        return ""
    end
    local DoSay = function(text)
        if text == "" then
            DarkRP.notify(ply, 1, 4, DarkRP.getPhrase("invalid_x", "argument", ""))
            return
        end
        if ply:IsStaff() then
            for k,v in pairs(player.GetAll()) do   
                DarkRP.talkToPerson(v, config.colorprefixe, config.chatprefixe .. " " .. ply:Nick(), Color(255, 255, 255, 255), text, ply)
            end
        else
            for k,v in pairs(player.GetAll()) do
                DarkRP.talkToPerson(v, config.colorprefixe, config.chatprefixe, Color(255, 255, 255, 255), text, ply)

            end
        end

    end
    return args, DoSay
end
DarkRP.defineChatCommand(config.cmd, Anonymous, 1.5)



DarkRP.declareChatCommand{
    command = config.cmd,
    description = "Анонимное сообщение в OOC",
    delay = 1.5
}
 
Сверху Снизу