SA:MP Arizona Помощь с скриптом для репорта

Enotovichyt

Новичок
Автор темы
9
0
Нужна помощь с кодом, хочу сделать что бы после появления окна репорта на аризоне рп ориг авто ловля вырубалась, скину пример где он есть а где надо сделать выключение ловли
тут надо:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'
local vkeys = require 'vkeys'

local active = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do
        wait(0)
        if isKeyJustPressed(0x58) and not isSampfuncsConsoleActive() and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() then
            active = not active
            printString('AutoReport: '..(active and '~g~activated' or '~r~disabled'), 1500)
        end
    end
end

function sampev.onServerMessage(color, text)
    if text:find('%[(%W+)%] от (%w+_%w+)%[(%d+)%]:') and active then
        sampSendChat('/ot')
    end
end

а тут пример кода где есть оно:
local sampev = require('samp.events')
local lthreads = require("lthreads")
local spec = false
local wm = require('lib.windows.message')

local state = false

local ffi = require("ffi")
ffi.cdef[[
    typedef struct {int x; int y;} POINT;
    typedef struct {int cbSize; int flags; int hCursor; POINT ptScreenPos;} CURSORINFO, *PCURSORINFO;
    int GetCursorInfo(PCURSORINFO pci);
]]

function isCursorActive()
    local pci = ffi.new("CURSORINFO")
    pci.cbSize = ffi.sizeof("CURSORINFO")
    ffi.C.GetCursorInfo(pci)
    return (pci.flags == 1)
end

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand('fr', function()
        state = not state
        sms('Ловля репорта успешно ' .. (state and '{mc}включена{FFFFFF}!' or '{mc}выключена{FFFFFF}!'))
    end)

    lthreads.func(function (wait)
        while true do
            if state then
                wait(100)
                sampSendChat("/ot "..math.random(1000000, 9999999))
            end
            if state and isCursorActive() and not sampIsChatInputActive() then
                sms('Репорт успешно {mc}словлен{FFFFFF}!')
                state = not state
            end
            wait(0)
        end
    end)

    while true do
        wait(0)
        lthreads.checkThreads()
    end
end

function sms(text)
    local text = text:gsub('{mc}', '{3487ff}')
    sampAddChatMessage('[REPORT] {FFFFFF}' .. tostring(text), 0x3487ff)
end

-- function sampev.onServerMessage(color, text)
--     local text = text:gsub('{......}', '')
--     print(text)
--     if text:find('%[A%]') then
--         print(text)
--     end

--     local name = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)))

--     if text:match('^%[A%] ' .. name .. '%[%d+%] » ([%a%d_]+)%[%d+%]:') then
--         print('op')
--     end
-- end
 

kinamaster22

Известный
1,160
169
Нужна помощь с кодом, хочу сделать что бы после появления окна репорта на аризоне рп ориг авто ловля вырубалась, скину пример где он есть а где надо сделать выключение ловли
тут надо:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'
local vkeys = require 'vkeys'

local active = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do
        wait(0)
        if isKeyJustPressed(0x58) and not isSampfuncsConsoleActive() and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() then
            active = not active
            printString('AutoReport: '..(active and '~g~activated' or '~r~disabled'), 1500)
        end
    end
end

function sampev.onServerMessage(color, text)
    if text:find('%[(%W+)%] от (%w+_%w+)%[(%d+)%]:') and active then
        sampSendChat('/ot')
    end
end

а тут пример кода где есть оно:
local sampev = require('samp.events')
local lthreads = require("lthreads")
local spec = false
local wm = require('lib.windows.message')

local state = false

local ffi = require("ffi")
ffi.cdef[[
    typedef struct {int x; int y;} POINT;
    typedef struct {int cbSize; int flags; int hCursor; POINT ptScreenPos;} CURSORINFO, *PCURSORINFO;
    int GetCursorInfo(PCURSORINFO pci);
]]

function isCursorActive()
    local pci = ffi.new("CURSORINFO")
    pci.cbSize = ffi.sizeof("CURSORINFO")
    ffi.C.GetCursorInfo(pci)
    return (pci.flags == 1)
end

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand('fr', function()
        state = not state
        sms('Ловля репорта успешно ' .. (state and '{mc}включена{FFFFFF}!' or '{mc}выключена{FFFFFF}!'))
    end)

    lthreads.func(function (wait)
        while true do
            if state then
                wait(100)
                sampSendChat("/ot "..math.random(1000000, 9999999))
            end
            if state and isCursorActive() and not sampIsChatInputActive() then
                sms('Репорт успешно {mc}словлен{FFFFFF}!')
                state = not state
            end
            wait(0)
        end
    end)

    while true do
        wait(0)
        lthreads.checkThreads()
    end
end

function sms(text)
    local text = text:gsub('{mc}', '{3487ff}')
    sampAddChatMessage('[REPORT] {FFFFFF}' .. tostring(text), 0x3487ff)
end

-- function sampev.onServerMessage(color, text)
--     local text = text:gsub('{......}', '')
--     print(text)
--     if text:find('%[A%]') then
--         print(text)
--     end

--     local name = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)))

--     if text:match('^%[A%] ' .. name .. '%[%d+%] » ([%a%d_]+)%[%d+%]:') then
--         print('op')
--     end
-- end
Lua:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'
local vkeys = require 'vkeys'

local active = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do
        wait(0)
        if isKeyJustPressed(0x58) and not isSampfuncsConsoleActive() and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() then
            active = not active
            printString('AutoReport: '..(active and '~g~activated' or '~r~disabled'), 1500)
        end

        -- Офф авто ловли когда появляется окно репы
        if sampIsDialogActive() and active then
            active = false
            printString('AutoReport: ~r~disabled due to active report dialog', 1500)
        end
    end
end

function sampev.onServerMessage(color, text)
    if text:find('%[(%W+)%] от (%w+_%w+)%[(%d+)%]:') and active then
        sampSendChat('/ot')
    end
end
Типо такого? Или что ты имел в виду под "ориг ловля"?
 

Enotovichyt

Новичок
Автор темы
9
0
Lua:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'
local vkeys = require 'vkeys'

local active = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do
        wait(0)
        if isKeyJustPressed(0x58) and not isSampfuncsConsoleActive() and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() then
            active = not active
            printString('AutoReport: '..(active and '~g~activated' or '~r~disabled'), 1500)
        end

        -- Офф авто ловли когда появляется окно репы
        if sampIsDialogActive() and active then
            active = false
            printString('AutoReport: ~r~disabled due to active report dialog', 1500)
        end
    end
end

function sampev.onServerMessage(color, text)
    if text:find('%[(%W+)%] от (%w+_%w+)%[(%d+)%]:') and active then
        sampSendChat('/ot')
    end
end
Типо такого? Или что ты имел в виду под "ориг ловля"?
Имел ввиду на оригинальная аризона

И можно как-то то сделать что бы писало в чато любым цветом а не на экране, так будет намного лучше
 

Enotovichyt

Новичок
Автор темы
9
0
Lua:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'
local vkeys = require 'vkeys'

local active = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    while true do
        wait(0)
        if isKeyJustPressed(0x58) and not isSampfuncsConsoleActive() and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() then
            active = not active
            printString('AutoReport: '..(active and '~g~activated' or '~r~disabled'), 1500)
        end

        -- Офф авто ловли когда появляется окно репы
        if sampIsDialogActive() and active then
            active = false
            printString('AutoReport: ~r~disabled due to active report dialog', 1500)
        end
    end
end

function sampev.onServerMessage(color, text)
    if text:find('%[(%W+)%] от (%w+_%w+)%[(%d+)%]:') and active then
        sampSendChat('/ot')
    end
end
Типо такого? Или что ты имел в виду под "ориг ловля"?
Работает при открытии диалога, а мне надо когда если клик варп юзанул либо когда открывается окно репорта как в аризоне тулс
 

Stalcraft Product

Новичок
2
1
Работает при открытии диалога, а мне надо когда если клик варп юзанул либо когда открывается окно репорта как в аризоне тулс
Не легче компьютерным зрением проверять текст посередине экрана
 

Enotovichyt

Новичок
Автор темы
9
0