создание переменной

yuxine

Новичок
Автор темы
20
3
Версия MoonLoader
.026-beta
в чате имеется строчка:
[20:05:35] {FF5E5E}[Новости Семьи]{FFFFFF} Член семьи: Bebrik_Brooks[321] доставил ящик с камнями на мероприятии. В семью начислена зловещая репутация.
Каждый раз ник меняется, мне надо чтобы этот ник записывался и записывалось сколько раз ник появлялся в чате.
Вот как примерно должно выглядить при выводе:
Lukas_Brooks - 2
Bebrik_Brooks - 2
Amphetamine_Brooks - 1
Записать ники заранее нет возможности.
 
Решение
Дарю скрипт всем сердцем и душой
Тут есть даже функа отправки статы по дворцу в сообщения в вк
/enableinfo - включение скрипта
/remplayer {id/nick} - удаление ника с таблица
/sendmessage - отправка сообщения в вк

Обрабатывал я и разделял ники вот так:
lua:
function event.onServerMessage(color, text)
    if text:find('доставил ящик с камнями на мероприятии.') then
        local player = string.match(text, "(%a+_%a+)")
        if table.concat(mas.player, ', '):find(player)  then
            for i = 1, #mas.player do
                if mas.player[i] == player then
                    mas.counts[i] = mas.counts[i] + 1
                    break
                end
            end
        else
            mas.player[#mas.player + 1] = player...

sat0ry

Известный
1,092
296
сделай проверку на текст, запиши его в переменную, выведи так как тебе надо

 

Rice.

Известный
Модератор
1,756
1,624
в чате имеется строчка:
[20:05:35] {FF5E5E}[Новости Семьи]{FFFFFF} Член семьи: Bebrik_Brooks[321] доставил ящик с камнями на мероприятии. В семью начислена зловещая репутация.
Каждый раз ник меняется, мне надо чтобы этот ник записывался и записывалось сколько раз ник появлялся в чате.
Вот как примерно должно выглядить при выводе:
Lukas_Brooks - 2
Bebrik_Brooks - 2
Amphetamine_Brooks - 1
Записать ники заранее нет возможности.
Lua:
local se = require 'lib.samp.events'
local name = {}

function se.onServerMessage(color, text)
    if text:find('Член семьи: .+%[%d+%] доставил ящик') then
        local arg = text:match('Член семьи: (.+)%[%d+%] доставил ящик')
        if has_value(name, arg) then
                name[arg] = {
                    num = name[arg].num + 1
                }
        else
                name[arg] = {
                    num = 1
                }
        end
    end
end

function has_value(tab, val)
    for k, v in pairs(tab) do
        if tostring(k) == tostring(val) then
            return true
        end
    end
    return false
end
 
Последнее редактирование:
  • Нравится
Реакции: yuxine

RedHolms

Известный
Проверенный
619
366
Lua:
local se = require 'lib.samp.events'
local name = {}

function se.onServerMessage(color, text)
    if text:find('Член семьи: .+%[%d+%] доставил ящик') then
        local arg = text:match('Член семьи: (.+)%[%d+%] доставил ящик')
        if has_value(name, arg) then
                name[arg] = {
                    num = name[arg].num + 1
                }
        else
                name[arg] = {
                    num = 1
                }
        end
    end
end

function has_value(tab, val)
    for k, v in pairs(tab) do
        if tostring(k) == tostring(val) then
            return true
        end
    end
    return false
end
К чему тут функция has_value?

Lua:
local se = require 'lib.samp.events'
local name = {}

function se.onServerMessage(color, text)
    if text:find('Член семьи: .+%[%d+%] доставил ящик') then
        local arg = text:match('Член семьи: (.+)%[%d+%] доставил ящик')
        if name[arg] and name[arg].num then -- Это не питухон, если в таблице нет значения с заданным ключом, вернётся nil
            name[arg].num = name[arg].num + 1
        else
            name[arg] = {
                num = 1
            }
        end
    end
end
 
  • Нравится
Реакции: yuxine и qdIbp

W.H.

Участник
25
65
Дарю скрипт всем сердцем и душой
Тут есть даже функа отправки статы по дворцу в сообщения в вк
/enableinfo - включение скрипта
/remplayer {id/nick} - удаление ника с таблица
/sendmessage - отправка сообщения в вк

Обрабатывал я и разделял ники вот так:
lua:
function event.onServerMessage(color, text)
    if text:find('доставил ящик с камнями на мероприятии.') then
        local player = string.match(text, "(%a+_%a+)")
        if table.concat(mas.player, ', '):find(player)  then
            for i = 1, #mas.player do
                if mas.player[i] == player then
                    mas.counts[i] = mas.counts[i] + 1
                    break
                end
            end
        else
            mas.player[#mas.player + 1] = player
            mas.counts[#mas.counts + 1] = 1
        end
        sum = sum+1
    end
end

Способ плохой, но рабочий
Разбирай скрипт и учись, как и с чем работать. Надеюсь, тебе пригодится)
 

Вложения

  • castle fino.lua
    3.6 KB · Просмотры: 26
  • Нравится
Реакции: yuxine