Исходник Pattern 1.0 | Свои шаблоны

Manuel Leon

Известный
Автор темы
266
166
Видел такое в Script Patrol. Но в общем доступе не нашёл ничего подобного.




Для регистрации шаблона используется -
Lua:
registerPattern(название шаблона, описание, функция возврата)
Для получения текста шаблона используется -
Lua:
getPatternKey(название шаблона)

Для начала подключаем библиотеку

Lua:
local Pattern = require('Pattern')

Регистрируем шаблон
Lua:
Pattern.registerPattern('test','Test Pattern',function()
    return 'Its Test Pattern'
end)

Теперь если мы используем его, то он вернёт нам 'Its Test Pattern'

Получаем информацию о шаблоне, изначально предназначалось для использования в Imgui. Может найдёте и другое применение.


Lua:
local getKey = Pattern.getPatternKey('test') -- вернёт 'Its Test Pattern'.

Если вам нужно использовать один шаблон в нескольких скриптах, то для этого есть система автозагрузки шаблона. Создаёте lua скрипт по пути moonloader/Pattern.
Библиотека автоматически загрузит его.

В архиве есть тестовый скрипт для ознакомления. Так же идут 2 готовых шаблона в папке Pattern - $myname$ $time$




Может иметься неоптимизированный код, вместо того, чтобы ругать, помогите улучшить :)
 

Вложения

  • Pattern.rar
    3.6 KB · Просмотры: 13

Fott

Простреленный
3,431
2,269
Объясните зачем это надо? Чтобы через месяц посмотреть в свой код и ахуеть в два раза больше? Чем оно поможет или упростит написание кода?
 

Manuel Leon

Известный
Автор темы
266
166
Объясните зачем это надо? Чтобы через месяц посмотреть в свой код и ахуеть в два раза больше? Чем оно поможет или упростит написание кода?
У меня есть вот такая допустим функция
1631120835393.png


Я её использую в нескольких скриптах и чтобы не писать эту функцию в этих нескольких скриптах просто использую шаблон $armynick$
 

Smeruxa

Известный
1,294
680
Видел такое в Script Patrol. Но в общем доступе не нашёл ничего подобного.





Для регистрации шаблона используется -
Lua:
registerPattern(название шаблона, описание, функция возврата)
Для получения текста шаблона используется -
Lua:
getPatternKey(название шаблона)

Для начала подключаем библиотеку
Lua:
local Pattern = require('Pattern')

Регистрируем шаблон
Lua:
Pattern.registerPattern('test','Test Pattern',function()
    return 'Its Test Pattern'
end)

Теперь если мы используем его, то он вернёт нам 'Its Test Pattern'

Получаем информацию о шаблоне, изначально предназначалось для использования в Imgui. Может найдёте и другое применение.

Lua:
local getKey = Pattern.getPatternKey('test') -- вернёт 'Its Test Pattern'.

Если вам нужно использовать один шаблон в нескольких скриптах, то для этого есть система автозагрузки шаблона. Создаёте lua скрипт по пути moonloader/Pattern.
Библиотека автоматически загрузит его.

В архиве есть тестовый скрипт для ознакомления. Так же идут 2 готовых шаблона в папке Pattern - $myname$ $time$



Может иметься неоптимизированный код, вместо того, чтобы ругать, помогите улучшить :)
зачем новую зависимость добавлять? gsub и вперед
Без лишних библиотек на скорую руку код ниже
Пример использования еще ниже
Lua:
local patterns = {}

createPattern = function(patternName, exit)
    table.insert(patterns, {
        name = patternName,
        result = exit
    })
    obj = {
        working = true
    }
    local samp = require 'lib.samp.events'
    function obj:set_state(tBool)
        self.working = tBool
    end
    function samp.onSendChat(msg)
        if obj.working then
            for k,v in pairs(patterns) do
                if msg:find(patterns[k].name) then
                    sampSendChat(msg:gsub(patterns[k].name, patterns[k].result))
                    return false
                end
            end
        end
    end
    function samp.onSendCommand(cmd)
        if obj.working then
            for k,v in pairs(patterns) do
                if cmd:find(patterns[k].name) then
                    sampSendChat(cmd:gsub(patterns[k].name, patterns[k].result))
                    return false
                end
            end
        end
    end
    function samp.onServerMessage(color, text)
        if obj.working then
            for k,v in pairs(patterns) do
                if text:find(patterns[k].name) then
                    return {color, text:gsub(patterns[k].name, patterns[k].result)}
                end
            end
        end
    end
    setmetatable(obj, {})
    return obj
end
Lua:
function main()
    while not isSampLoaded() do wait(100) end
    patterns = {
        first_pattern = createPattern("{xui}", "пизда"),
        last_pattern = createPattern("{pizda}", "хуй")
    }
    patterns.first_pattern:set_state(false)
    wait(-1)
end
Опять же, тот же gsub
можно улучшать и т д, только надо учесть что это тоже занимает место в коде)
 
Последнее редактирование:

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,765
11,213
У меня есть вот такая допустим функция Посмотреть вложение 113724

Я её использую в нескольких скриптах и чтобы не писать эту функцию в этих нескольких скриптах просто использую шаблон $armynick$
я правильно понял что это примерно то же самое что
Lua:
imgui.Text(get())

function get()
    local t = {}
    for k, v in ipairs(getAllChars()) do
        _, id = sampGetPlayerIdByCharHandle(v)
        table.insert(t, id)
    end
    return table.concat(t, ', ')
end
 

Manuel Leon

Известный
Автор темы
266
166
я правильно понял что это примерно то же самое что
Lua:
imgui.Text(get())

function get()
    local t = {}
    for k, v in ipairs(getAllChars()) do
        _, id = sampGetPlayerIdByCharHandle(v)
        table.insert(t, id)
    end
    return table.concat(t, ', ')
end
Тип того, функцию я со скрипт патрола взял, она не моя

зачем новую зависимость добавлять? gsub и вперед
Без лишних библиотек на скорую руку код ниже
Пример использования еще ниже
Lua:
local patterns = {}

createPattern = function(patternName, exit)
    table.insert(patterns, {
        name = patternName,
        result = exit
    })
    obj = {
        working = true
    }
    local samp = require 'lib.samp.events'
    function obj:set_state(tBool)
        self.working = tBool
    end
    function samp.onSendChat(msg)
        if obj.working then
            for k,v in pairs(patterns) do
                if msg:find(patterns[k].name) then
                    sampSendChat(msg:gsub(patterns[k].name, patterns[k].result))
                    return false
                end
            end
        end
    end
    function samp.onSendCommand(cmd)
        if obj.working then
            for k,v in pairs(patterns) do
                if cmd:find(patterns[k].name) then
                    sampSendChat(cmd:gsub(patterns[k].name, patterns[k].result))
                    return false
                end
            end
        end
    end
    function samp.onServerMessage(color, text)
        if obj.working then
            for k,v in pairs(patterns) do
                if text:find(patterns[k].name) then
                    return {color, text:gsub(patterns[k].name, patterns[k].result)}
                end
            end
        end
    end
    setmetatable(obj, {})
    return obj
end
Lua:
function main()
    while not isSampLoaded() do wait(100) end
    patterns = {
        first_pattern = createPattern("{xui}", "пизда"),
        last_pattern = createPattern("{pizda}", "хуй")
    }
    patterns.first_pattern:set_state(false)
    wait(-1)
end
Опять же, тот же gsub
можно улучшать и т д, только надо учесть что это тоже занимает место в коде)
Оно верно, но не в каждый же скрипт пихать такой код
 
Последнее редактирование:
  • Грустно
Реакции: Smeruxa