Проблема с тегом

$Mr.R1ch$

Активный
Автор темы
288
41
Версия MoonLoader
Другое
Приветствую, недавно начал делать теги для скрипта, и есть одна проблема. Я создал тег "{sex}", который возвращает пол игрока, если ввести строку например, "/me {sex:передал|передала} ключи", то в зависимости от переменной будет выводиться одна фраза из двух (если переменная равна 0, то выводится передал, а если 1 - передала).

Теперь к главному, нельзя использовать тег несколько раз, то есть в отыгровку вводить больше 1-го тега, и понять проблему я не могу, остальные теги у меня работают нормально, кроме этого.

Lua:
function sampev.OnServerMessage(color, msg)

  if msg:find("%{sex%:(.+)%|(.+)%}") then
        local man_case, woman_case = msg:match("%{sex%:(.+)%|(.+)%}")
        msg = msg:gsub("%{sex%:(.+)%|(.+)%}", ini.main.sex == 0 and man_case or woman_case)
    end
    
    return {color, msg}
end
 

wojciech?

Известный
Проверенный
355
237
Lua:
local str = "/me {sex:передал|передала} ключи и {sex:закрыл|закрыла} дверь"

str = str:gsub("{(%S+):(.-)|(.-)}", function(v, f, s)
    if ini.main[v] then
        return ini.main[v] == 0 and f or s
    end
end)

-- ini.main.sex == 0
print(str) -- /me передал ключи и закрыл дверь

function sampev.OnServerMessage(color, msg)
и правильно onServerMessage (но я не очень понимаю зачем ты в серверном сообщении вообще теги используешь, лучше бы onSendCommand обрабатывал)
 

$Mr.R1ch$

Активный
Автор темы
288
41
Lua:
local str = "/me {sex:передал|передала} ключи и {sex:закрыл|закрыла} дверь"

str = str:gsub("{(%S+):(.-)|(.-)}", function(v, f, s)
    if ini.main[v] then
        return ini.main[v] == 0 and f or s
    end
end)

-- ini.main.sex == 0
print(str) -- /me передал ключи и закрыл дверь


и правильно onServerMessage (но я не очень понимаю зачем ты в серверном сообщении вообще теги используешь, лучше бы onSendCommand обрабатывал)
мне нужно конкретно не одну строчку так делать, а использовать во всех отыгровках, в которых я смогу поместить теги, а то получается так:
/me {sex:передал|передала} ключи и {sex: закрыл|закрыла} двери

вывод в чат: Ivan_Ivanov[256]: передал|передала} ключи и {sex:закрыл|закрыла} двери (то есть 2 тега нельзя юзать почему то)
 

wojciech?

Известный
Проверенный
355
237
мне нужно конкретно не одну строчку так делать, а использовать во всех отыгровках, в которых я смогу поместить теги, а то получается так:
/me {sex:передал|передала} ключи и {sex: закрыл|закрыла} двери

вывод в чат: Ivan_Ivanov[256]: передал|передала} ключи и {sex:закрыл|закрыла} двери (то есть 2 тега нельзя юзать почему то)
?
1734949815726.png



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

local ini = {
    main = {
        sex = 0
    }
}

function samp.onServerMessage(color, message)
    local output = message:gsub("{(%S+):(.-)|(.-)}", function(v, f, s)
      if ini.main[v] then
        return ini.main[v] == 0 and f or s
      end
    end)
    return { color, output }
end