Помогите передать скрипт под цр

Limе

Активный
Автор темы
185
51
Я пытался переделать скрипт по цр чапо (https://www.blast.hk/threads/122504/) под скупку, не смог, нашел у (https://www.blast.hk/threads/132643/#post-1038468) тоже чота не смог, может кто помочь (что я пытался сделать)
Lua:
local checkName = false --
local players = {
    'Maniac',
}

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local sampev = require 'lib.samp.events'

local url = ''
local data = {
    ['username'] = 'Arizona Jail',
    ['avatar_url'] = 'https://www.meme-arsenal.com/memes/fc1463861b8df575ed60d5f3b2ffac53.jpg',
    ['content'] = '',
    ['embeds'] = {
        {
            ['title'] = '',
            ['description'] = '',
            ['color'] = 8453970
        }
    }
}


function isNameInList(name)
    for i = 1, #players do
        if players[i]:lower() == name:lower() then
            return true
        end
    end
    return false
end

function sampev.onServerMessage(color, text)
    local PATTERN = 'Вы купили .+ у игрока .+ за %$%d+'
    if text:find(PATTERN) then
        local product, name, money = text:match('^Вы купили (.+) у игрока (.+) за %$(%d+)')(PATTERN)
        local reg_text = 'Вы купили: "'..product..'" за '..money..'$ У игрока: '..name..'.'
            writeStatistic(reg_text)
            asyncHttpRequest('POST', url, {headers = {['content-type'] = 'application/json'}, data = u8(encodeJson(data))},
            function(r)
                print(r.text)
            end,
            function(r)
                print(r)
            end)
        end
    end

local effil = require 'effil' -- В начало скрипта
function asyncHttpRequest(method, url, args, resolve, reject)
   local request_thread = effil.thread(function (method, url, args)
      local requests = require 'requests'
      local result, response = pcall(requests.request, method, url, args)
      if result then
         response.json, response.xml = nil, nil
         return true, response
      else
         return false, response
      end
   end)(method, url, args)
   -- Если запрос без функций обработки ответа и ошибок.
   if not resolve then resolve = function() end end
   if not reject then reject = function() end end
   -- Проверка выполнения потока
   lua_thread.create(function()
      local runner = request_thread
      while true do
         local status, err = runner:status()
         if not err then
            if status == 'completed' then
               local result, response = runner:get()
               if result then
                  resolve(response)
               else
                  reject(response)
               end
               return
            elseif status == 'canceled' then
               return reject(status)
            end
         else
            return reject(err)
         end
         wait(0)
      end
   end)
end
Код:

Памагити
 
Последнее редактирование:
Решение
1. заходишь сюда: https://discohook.org/
2. настраиваешь вид сообщения
1665862914458.png

3. копируешь JSON
1665862938975.png

1665862951868.png

4. вставляешь этот код:
Lua:
local effil = require('effil')
local encoding = require('encoding')
local u8 = encoding.UTF8
encoding.default = 'CP1251'

function SendWebhook(URL, DATA, callback_ok, callback_error)
    local function asyncHttpRequest(method, url, args, resolve, reject)
        local request_thread = effil.thread(function (method, url, args)
           local requests = require 'requests'
           local result, response = pcall(requests.request, method, url, args)
           if result then
              response.json, response.xml = nil, nil
              return true, response
           else...

YarikVL

Известный
Проверенный
4,814
1,820
Я пытался переделать скрипт по цр чапо (https://www.blast.hk/threads/122504/) под скупку, не смог, нашел у (https://www.blast.hk/threads/132643/#post-1038468) тоже чота не смог, может кто помочь (что я пытался сделать)
Lua:
local checkName = false --
local players = {
    'Maniac',
}

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local sampev = require 'lib.samp.events'

local url = ''
local data = {
    ['username'] = 'Arizona Jail',
    ['avatar_url'] = 'https://www.meme-arsenal.com/memes/fc1463861b8df575ed60d5f3b2ffac53.jpg',
    ['content'] = '',
    ['embeds'] = {
        {
            ['title'] = '',
            ['description'] = '',
            ['color'] = 8453970
        }
    }
}


function isNameInList(name)
    for i = 1, #players do
        if players[i]:lower() == name:lower() then
            return true
        end
    end
    return false
end

function sampev.onServerMessage(color, text)
    local PATTERN = 'Вы купили .+ у игрока .+ за %$%d+'
    if text:find(PATTERN) then
        local product, name, money = text:match('^Вы купили (.+) у игрока (.+) за %$(%d+)')(PATTERN)
        local reg_text = 'Вы купили: "'..product..'" за '..money..'$ У игрока: '..name..'.'
            writeStatistic(reg_text)
            asyncHttpRequest('POST', url, {headers = {['content-type'] = 'application/json'}, data = u8(encodeJson(data))},
            function(r)
                print(r.text)
            end,
            function(r)
                print(r)
            end)
        end
    end

local effil = require 'effil' -- В начало скрипта
function asyncHttpRequest(method, url, args, resolve, reject)
   local request_thread = effil.thread(function (method, url, args)
      local requests = require 'requests'
      local result, response = pcall(requests.request, method, url, args)
      if result then
         response.json, response.xml = nil, nil
         return true, response
      else
         return false, response
      end
   end)(method, url, args)
   -- Если запрос без функций обработки ответа и ошибок.
   if not resolve then resolve = function() end end
   if not reject then reject = function() end end
   -- Проверка выполнения потока
   lua_thread.create(function()
      local runner = request_thread
      while true do
         local status, err = runner:status()
         if not err then
            if status == 'completed' then
               local result, response = runner:get()
               if result then
                  resolve(response)
               else
                  reject(response)
               end
               return
            elseif status == 'canceled' then
               return reject(status)
            end
         else
            return reject(err)
         end
         wait(0)
      end
   end)
end
Код:

Памагити
В чем проблема? Скрипт крашиться? Или скрипт работает, но не находит строчку твою?
В последнем случае - ты скорее всего сохранил скрипт не в кодировке Windows1251 и при повторном открытии у тебя скорее всего место русских символов сделаются иероглифы.

Если я не помог, то можешь упомянуть чапу @chapo ( он вообще любит когда его кучу раз какие-то новореги Тапают )
 

Limе

Активный
Автор темы
185
51
В чем проблема? Скрипт крашиться? Или скрипт работает, но не находит строчку твою?
В последнем случае - ты скорее всего сохранил скрипт не в кодировке Windows1251 и при повторном открытии у тебя скорее всего место русских символов сделаются иероглифы.

Если я не помог, то можешь упомянуть чапу @chapo ( он вообще любит когда его кучу раз какие-то новореги Тапают )
Я ни наварег, а если нормально, то вот
send discord punish: ...0\Desktop\samp\moonloader\open_roulettes.lua:25: attempt to get length of global 'players' (a nil value)
stack traceback:
...0\Desktop\samp\moonloader\open_roulettes.lua:25: in function 'isNameInList'
...0\Desktop\samp\moonloader\open_roulettes.lua:37: in function 'callback'
...top\samp\moonloader\lib\samp\events\core.lua:77: in function 'process_event'
...top\samp\moonloader\lib\samp\events\core.lua:100: in function 'process_packet'
...top\samp\moonloader\lib\samp\events\core.lua:127: in function <...top\sampmoonloader
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,763
11,199
1. заходишь сюда: https://discohook.org/
2. настраиваешь вид сообщения
1665862914458.png

3. копируешь JSON
1665862938975.png

1665862951868.png

4. вставляешь этот код:
Lua:
local effil = require('effil')
local encoding = require('encoding')
local u8 = encoding.UTF8
encoding.default = 'CP1251'

function SendWebhook(URL, DATA, callback_ok, callback_error)
    local function asyncHttpRequest(method, url, args, resolve, reject)
        local request_thread = effil.thread(function (method, url, args)
           local requests = require 'requests'
           local result, response = pcall(requests.request, method, url, args)
           if result then
              response.json, response.xml = nil, nil
              return true, response
           else
              return false, response
           end
        end)(method, url, args)
        -- Если запрос без функций обработки ответа и ошибок.
        if not resolve then resolve = function() end end
        if not reject then reject = function() end end
        -- Проверка выполнения потока
        lua_thread.create(function()
            local runner = request_thread
            while true do
                local status, err = runner:status()
                if not err then
                    if status == 'completed' then
                        local result, response = runner:get()
                        if result then
                           resolve(response)
                        else
                           reject(response)
                        end
                        return
                    elseif status == 'canceled' then
                        return reject(status)
                    end
                else
                    return reject(err)
                end
                wait(0)
            end
        end)
    end
    asyncHttpRequest('POST', URL, {headers = {['content-type'] = 'application/json'}, data = u8(DATA)}, callback_ok, callback_error)
end
5. подключаешь хук и выстраиваешь все условия
Lua:
require('lib.samp.events').onServerMessage = function(color, text)
    if text:find('Вы купили (.+) у игрока (.+) за %$(%d+)') then
        local ItemName, Player, Price = text:match('Вы купили (.+) у игрока (.+) за %$(%d+)')
         
    end
end
6. вызываешь функцию SendWebhook, в качестве аргументов вписываешь URL и JSON (json надо вставить в [[*json*]])
Пример:
Lua:
local effil = require('effil')
local encoding = require('encoding')
local u8 = encoding.UTF8
encoding.default = 'CP1251'

function SendWebhook(URL, DATA, callback_ok, callback_error)
    local function asyncHttpRequest(method, url, args, resolve, reject)
        local request_thread = effil.thread(function (method, url, args)
           local requests = require 'requests'
           local result, response = pcall(requests.request, method, url, args)
           if result then
              response.json, response.xml = nil, nil
              return true, response
           else
              return false, response
           end
        end)(method, url, args)
        -- Если запрос без функций обработки ответа и ошибок.
        if not resolve then resolve = function() end end
        if not reject then reject = function() end end
        -- Проверка выполнения потока
        lua_thread.create(function()
            local runner = request_thread
            while true do
                local status, err = runner:status()
                if not err then
                    if status == 'completed' then
                        local result, response = runner:get()
                        if result then
                           resolve(response)
                        else
                           reject(response)
                        end
                        return
                    elseif status == 'canceled' then
                        return reject(status)
                    end
                else
                    return reject(err)
                end
                wait(0)
            end
        end)
    end
    asyncHttpRequest('POST', URL, {headers = {['content-type'] = 'application/json'}, data = u8(DATA)}, callback_ok, callback_error)
end

require('lib.samp.events').onServerMessage = function(color, text)
    if text:find('Вы купили (.+) у игрока (.+) за %$(%d+)') then
        local ItemName, Player, Price = text:match('Вы купили (.+) у игрока (.+) за %$(%d+)')
        sampAddChatMessage('ok', -1)
        SendWebhook('ЮРЛ ТВОЕГО ВЕБХУКА', ([[{
            "content": null,
            "username": "Скупка",
            "avatar_url": "https://sun1-56.userapi.com/impg/t8jwzNgmIJDLhe2KXi4BGnhmQMR-mzjy_slJjg/XFdw0obpGnc.jpg?size=369x379&quality=96&sign=797799e4b7a8150ab3e375e2b03ffc2c&type=album",
            "embeds": [
              {
                "title": "Куплен новый предмет:",
                "description": "**Название:** `%s`\n**Цена:** `%s`\n**Продавец:** `%s`",
                "color": 16711757,
                "author": {
                  "name": "Уведомления о скупке"
                }
              }
            ],
            "attachments": []
        }]]):format(ItemName, Price, Player))
    end
end
1665863078057.png

1665862887616.png
 
  • Влюблен
  • Нравится
Реакции: VanoKLR, Limе и YarikVL

Limе

Активный
Автор темы
185
51
1. заходишь сюда: https://discohook.org/
2. настраиваешь вид сообщения
Посмотреть вложение 173182
3. копируешь JSON
Посмотреть вложение 173183
Посмотреть вложение 173184
4. вставляешь этот код:
Lua:
local effil = require('effil')
local encoding = require('encoding')
local u8 = encoding.UTF8
encoding.default = 'CP1251'

function SendWebhook(URL, DATA, callback_ok, callback_error)
    local function asyncHttpRequest(method, url, args, resolve, reject)
        local request_thread = effil.thread(function (method, url, args)
           local requests = require 'requests'
           local result, response = pcall(requests.request, method, url, args)
           if result then
              response.json, response.xml = nil, nil
              return true, response
           else
              return false, response
           end
        end)(method, url, args)
        -- Если запрос без функций обработки ответа и ошибок.
        if not resolve then resolve = function() end end
        if not reject then reject = function() end end
        -- Проверка выполнения потока
        lua_thread.create(function()
            local runner = request_thread
            while true do
                local status, err = runner:status()
                if not err then
                    if status == 'completed' then
                        local result, response = runner:get()
                        if result then
                           resolve(response)
                        else
                           reject(response)
                        end
                        return
                    elseif status == 'canceled' then
                        return reject(status)
                    end
                else
                    return reject(err)
                end
                wait(0)
            end
        end)
    end
    asyncHttpRequest('POST', URL, {headers = {['content-type'] = 'application/json'}, data = u8(DATA)}, callback_ok, callback_error)
end
5. подключаешь хук и выстраиваешь все условия
Lua:
require('lib.samp.events').onServerMessage = function(color, text)
    if text:find('Вы купили (.+) у игрока (.+) за %$(%d+)') then
        local ItemName, Player, Price = text:match('Вы купили (.+) у игрока (.+) за %$(%d+)')
        
    end
end
6. вызываешь функцию SendWebhook, в качестве аргументов вписываешь URL и JSON (json надо вставить в [[*json*]])
Пример:
Lua:
local effil = require('effil')
local encoding = require('encoding')
local u8 = encoding.UTF8
encoding.default = 'CP1251'

function SendWebhook(URL, DATA, callback_ok, callback_error)
    local function asyncHttpRequest(method, url, args, resolve, reject)
        local request_thread = effil.thread(function (method, url, args)
           local requests = require 'requests'
           local result, response = pcall(requests.request, method, url, args)
           if result then
              response.json, response.xml = nil, nil
              return true, response
           else
              return false, response
           end
        end)(method, url, args)
        -- Если запрос без функций обработки ответа и ошибок.
        if not resolve then resolve = function() end end
        if not reject then reject = function() end end
        -- Проверка выполнения потока
        lua_thread.create(function()
            local runner = request_thread
            while true do
                local status, err = runner:status()
                if not err then
                    if status == 'completed' then
                        local result, response = runner:get()
                        if result then
                           resolve(response)
                        else
                           reject(response)
                        end
                        return
                    elseif status == 'canceled' then
                        return reject(status)
                    end
                else
                    return reject(err)
                end
                wait(0)
            end
        end)
    end
    asyncHttpRequest('POST', URL, {headers = {['content-type'] = 'application/json'}, data = u8(DATA)}, callback_ok, callback_error)
end

require('lib.samp.events').onServerMessage = function(color, text)
    if text:find('Вы купили (.+) у игрока (.+) за %$(%d+)') then
        local ItemName, Player, Price = text:match('Вы купили (.+) у игрока (.+) за %$(%d+)')
        sampAddChatMessage('ok', -1)
        SendWebhook('ЮРЛ ТВОЕГО ВЕБХУКА', ([[{
            "content": null,
            "username": "Скупка",
            "avatar_url": "https://sun1-56.userapi.com/impg/t8jwzNgmIJDLhe2KXi4BGnhmQMR-mzjy_slJjg/XFdw0obpGnc.jpg?size=369x379&quality=96&sign=797799e4b7a8150ab3e375e2b03ffc2c&type=album",
            "embeds": [
              {
                "title": "Куплен новый предмет:",
                "description": "**Название:** `%s`\n**Цена:** `%s`\n**Продавец:** `%s`",
                "color": 16711757,
                "author": {
                  "name": "Уведомления о скупке"
                }
              }
            ],
            "attachments": []
        }]]):format(ItemName, Price, Player))
    end
end
Посмотреть вложение 173185
Посмотреть вложение 173181
Спасибо Чапик, еще кое что если не трудно, можешь подсказать как добавить в 4 строчку время когда мне продали что-то, брать время с /timestamp например, подскажи если не трудно
 

YarikVL

Известный
Проверенный
4,814
1,820
Спасибо Чапик, еще кое что если не трудно, можешь подсказать как добавить в 4 строчку время когда мне продали что-то, брать время с /timestamp например, подскажи если не трудно
Так тебе же приходит сообщение в дискорд в то время как кто-то что-то купил, ты можешь посмотреть на время прихода сообщения в дискорде?🤔
 
  • Вау
Реакции: TheUnity

Limе

Активный
Автор темы
185
51
Так тебе же приходит сообщение в дискорд в то время как кто-то что-то купил, ты можешь посмотреть на время прихода сообщения в дискорде?🤔
Да, но оно идёт друг за другом и показывает только время первого сообщения
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,763
11,199
Да, но оно идёт друг за другом и показывает только время первого сообщения
наведи курсор на сообщение
1665907702758.png


вот хук с добавлением времени:
Lua:
require('lib.samp.events').onServerMessage = function(color, text)
    if text:find('Вы купили (.+) у игрока (.+) за %$(%d+)') then
        local ItemName, Player, Price = text:match('Вы купили (.+) у игрока (.+) за %$(%d+)')
        sampAddChatMessage('ok', -1)
        SendWebhook('ЮРЛ ТВОЕГО ВЕБХУКА', ([[{
            "content": null,
            "username": "Скупка",
            "avatar_url": "https://sun1-56.userapi.com/impg/t8jwzNgmIJDLhe2KXi4BGnhmQMR-mzjy_slJjg/XFdw0obpGnc.jpg?size=369x379&quality=96&sign=797799e4b7a8150ab3e375e2b03ffc2c&type=album",
            "embeds": [
              {
                "title": "Куплен новый предмет:",
                "description": "**Название:** `%s`\n**Цена:** `%s`\n**Продавец:** `%s`\n**Время:** `%s`",
                "color": 16711757,
                "author": {
                  "name": "Уведомления о скупке"
                }
              }
            ],
            "attachments": []
        }]]):format(ItemName, Price, Player, os.date('%H:%M:%S')))
    end
end
 
  • Нравится
Реакции: Limе и YarikVL