Помогите я написанием луа скрипта

bruskin

Участник
Автор темы
148
12
Версия MoonLoader
Другое
Я начинающий скрипте и хочу попробовать сделать скрипт по типу админ тулса, и я столкнулся с проблемой, а именно выдачей наказаний.
Мне нужно сделать так, чтоб когда я пишу /ои (id игрока) писалась команда /mute (тот самый id) 10 Оск. игроков. Помогите пожалуйста.
 
Решение
в таблице не может быть 2 поля с названием mute
подзабыл, значит бахаем так:
Lua:
local sampev = require("samp.events")

local patterns = {
    {orig = "mute", pattern = "oск (%d+)", time = "10", reason = "Оск. игроков"},
    {orig = "mute", pattern = "оскадм (%d+)", time = "30", reason = "Оск. Администрации"}
}

function sampev.onSendCommand(command)
    for _, data in ipairs(patterns) do
        if command:find(data.pattern) then
            command = ("/%s %s %s %s"):format(data.orig, command:match(data.pattern), data.time, data.reason)
            return {command}
        end
    end
end

why ega

РП игрок
Модератор
2,539
2,233
Я начинающий скрипте и хочу попробовать сделать скрипт по типу админ тулса, и я столкнулся с проблемой, а именно выдачей наказаний.
Мне нужно сделать так, чтоб когда я пишу /ои (id игрока) писалась команда /mute (тот самый id) 10 Оск. игроков. Помогите пожалуйста.
Lua:
local sampev = require("samp.events")

local patterns = {
    mute = "/o (%d)+" -- тут хранится кастомная команда
}

function sampev.onSendCommand(command) -- тут перехватываешь отправляемую команду
    if command:find(patterns.mute) then -- проверяешь команду
        command = ("/mute %s"):format(command:match(patterns.mute)) -- тут из команды, которую ты отправил, делаешь нужную серверу
        return {command}
    end
end
 
  • Нравится
Реакции: фидарза

bruskin

Участник
Автор темы
148
12
Lua:
local sampev = require("samp.events")

local patterns = {
    mute = "/o (%d)+" -- тут хранится кастомная команда
}

function sampev.onSendCommand(command) -- тут перехватываешь отправляемую команду
    if command:find(patterns.mute) then -- проверяешь команду
        command = ("/mute %s"):format(command:match(patterns.mute)) -- тут из команды, которую ты отправил, делаешь нужную серверу
        return {command}
    end
end
А можно ещё пожалуйста на каком-нибудь примере? (К примеру тоже оскорбление)
 

why ega

РП игрок
Модератор
2,539
2,233
если ты хочешь добавить несколько команд, то это должно выглядить как-то так:
Lua:
local sampev = require("samp.events")

local patterns = {
    ["mute"] = "o (%d+) (.+)", -- /mute id причина
    ["ban"] = "b (%d+) (.+)", -- /ban id причина
}

function sampev.onSendCommand(command) -- тут перехватываешь отправляемую команду
    for cmd, pattern in pairs(patterns) do
        if command:find(cmd) then -- проверяешь команду
            command = ("%s"):format(command:match(pattern))
            return {command}
        end
    end
end
 
Последнее редактирование:

bruskin

Участник
Автор темы
148
12
если ты хочешь добавить несколько команд, то это должно выглядить как-то так:
Lua:
local sampev = require("samp.events")

local patterns = {
    ["mute"] = "o (%d+) (.+)", -- /mute id причина
    ["ban"] = "b (%d+) (.+)", -- /ban id причина
}

function sampev.onSendCommand(command) -- тут перехватываешь отправляемую команду
    for cmd, pattern in pairs(patterns) do
        if command:find(pattern) then -- проверяешь команду
            command = ("/%s %s"):format(cmd, command:match(pattern))
            return {command}
        end
    end
end
А чтоб именно если бы я прописал к примеру /оск id и прописалась команда /mute id 10 Оск игроков, вот можно такой пример?
 

why ega

РП игрок
Модератор
2,539
2,233
А чтоб именно если бы я прописал к примеру /оск id и прописалась команда /mute id 10 Оск игроков, вот можно такой пример?
Lua:
local sampev = require("samp.events")

local patterns = {
    ["mute"] = {pattern = "oск (%d+)", reason = "Оскорбление"}
}

function sampev.onSendCommand(command)
    for cmd, data in pairs(patterns) do
        if command:find(data.pattern) then
            command = ("/%s %s %s"):format(cmd, command:match(data.pattern), data.reason)
            return {command}
        end
    end
end
 

bruskin

Участник
Автор темы
148
12
Lua:
local sampev = require("samp.events")

local patterns = {
    ["mute"] = {pattern = "oск (%d+)", reason = "Оскорбление"}
}

function sampev.onSendCommand(command)
    for cmd, data in pairs(patterns) do
        if command:find(data.pattern) then
            command = ("/%s %s %s"):format(cmd, command:match(data.pattern), data.reason)
            return {command}
        end
    end
end
Т.е. я пишу /оск id и выдается мут на 10 минут? Просто мне кажется что тут время не указано.

Lua:
local sampev = require("samp.events")

local patterns = {
    ["mute"] = {pattern = "oск (%d+)", reason = "Оскорбление"}
}

function sampev.onSendCommand(command)
    for cmd, data in pairs(patterns) do
        if command:find(data.pattern) then
            command = ("/%s %s %s"):format(cmd, command:match(data.pattern), data.reason)
            return {command}
        end
    end
end
Верно ли я все сделал? Должно быть 2 команды которые дают:
1. мут на 10 минут за оск игроков
2. мут на 30 минут за оск администрации
Lua:
local sampev = require("samp.events")

local patterns = {
    ["mute"] = {pattern = "oск (%d+)", time = "10", reason = "Оск. игроков"}
    ["mute"] = {pattern = "оскадм (%d+)", time = "30", reason = "Оск. Администрации"}
}

function sampev.onSendCommand(command)
    for cmd, data in pairs(patterns) do
        if command:find(data.pattern) then
            command = ("/%s %s %s"):format(cmd, command:match(data.pattern), data.time, data.reason)
            return {command}
        end
    end
end
 
Последнее редактирование:

why ega

РП игрок
Модератор
2,539
2,233
Т.е. я пишу /оск id и выдается мут на 10 минут? Просто мне кажется что тут время не указано.


Верно ли я все сделал? Должно быть 2 команды которые дают:
1. мут на 10 минут за оск игроков
2. мут на 30 минут за оск администрации
Lua:
local sampev = require("samp.events")

local patterns = {
    ["mute"] = {pattern = "oск (%d+)", time = "10", reason = "Оск. игроков"}
    ["mute"] = {pattern = "оскадм (%d+)", time = "30", reason = "Оск. Администрации"}
}

function sampev.onSendCommand(command)
    for cmd, data in pairs(patterns) do
        if command:find(data.pattern) then
            command = ("/%s %s %s"):format(cmd, command:match(data.pattern), data.time, data.reason)
            return {command}
        end
    end
end
почти все верно, только забыл в 11 строке добавить еще один "%s", который будет означать time. Вот готовый код:
Lua:
local sampev = require("samp.events")

local patterns = {
    ["mute"] = {pattern = "oск (%d+)", time = "10", reason = "Оск. игроков"}
    ["mute"] = {pattern = "оскадм (%d+)", time = "30", reason = "Оск. Администрации"}
}

function sampev.onSendCommand(command)
    for cmd, data in pairs(patterns) do
        if command:find(data.pattern) then
            command = ("/%s %s %s %s"):format(cmd, command:match(data.pattern), data.time, data.reason)
            return {command}
        end
    end
end
 
  • Bug
  • Нравится
Реакции: bruskin и chapo

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,770
11,214
почти все верно, только забыл в 11 строке добавить еще один "%s", который будет означать time. Вот готовый код:
Lua:
local sampev = require("samp.events")

local patterns = {
    ["mute"] = {pattern = "oск (%d+)", time = "10", reason = "Оск. игроков"}
    ["mute"] = {pattern = "оскадм (%d+)", time = "30", reason = "Оск. Администрации"}
}

function sampev.onSendCommand(command)
    for cmd, data in pairs(patterns) do
        if command:find(data.pattern) then
            command = ("/%s %s %s %s"):format(cmd, command:match(data.pattern), data.time, data.reason)
            return {command}
        end
    end
end
в таблице не может быть 2 поля с названием mute
 

why ega

РП игрок
Модератор
2,539
2,233
в таблице не может быть 2 поля с названием mute
подзабыл, значит бахаем так:
Lua:
local sampev = require("samp.events")

local patterns = {
    {orig = "mute", pattern = "oск (%d+)", time = "10", reason = "Оск. игроков"},
    {orig = "mute", pattern = "оскадм (%d+)", time = "30", reason = "Оск. Администрации"}
}

function sampev.onSendCommand(command)
    for _, data in ipairs(patterns) do
        if command:find(data.pattern) then
            command = ("/%s %s %s %s"):format(data.orig, command:match(data.pattern), data.time, data.reason)
            return {command}
        end
    end
end
 
  • Нравится
Реакции: bruskin