TextDraw

Aizen Sosuke

Участник
Автор темы
120
20
Версия MoonLoader
.026-beta
Здравствуйте, узнаю айди текстдрава, после чего сравниваю. Вопрос, можно ли без имитации клавиш сделать нажатие клавиши во время, когда этот тект драв будет показан? Пытался кликать на сами текст дравы, но смысла нету, проверять через if data == "Press N", все равно не работает, работает только через циклы + виртуальные нажатия клавиш.
Код:
Lua:
script_name('[NGTeam] - Insurance Helper')
script_author('NGTeam')

require "lib.moonloader"
local sampev = require 'lib.samp.events'

local count
local onoff = false

function sampev.onShowTextDraw(id, data)
    lua_thread.create(function()
        if id == 199 and onoff == true then
            for count = 1, 11 do
                setVirtualKeyDown(VK_Y, true)
                wait(200)
                setVirtualKeyDown(VK_Y, false)
                wait(200)
                setVirtualKeyDown(VK_N, true)
                wait(200)
                setVirtualKeyDown(VK_N, false)
            end
        end
    end)
end


function sampev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
    if onoff == true then
        if dialogId == 15111 then      
            local xz = dialogText
                if xz ~= ''  then
                    xz = xz:gsub('\n', '')
                    if xz ~= '' then
                        xz = xz:match('¬ведите ник клиента:%{......%}(.+)')
                        if xz ~= '' then
                        sampSendDialogResponse(15111, 1, 0, xz)
                        lua_thread.create(function()
                            wait(200)
                            sampCloseCurrentDialogWithButton(0)
                        end)
                    end
                end
            end
        end
    end
   
    if onoff == true then
        if dialogId == 15112 then
            local xz = dialogText
                if xz ~= ''  then
                    xz = xz:gsub('\n', '')
                    if xz ~= '' then
                        xz = xz:match('”кажите тип имущества:%{......%}(.+)')
                        if xz ~= '' then
                        sampSendDialogResponse(15112, 1, 0, xz)
                        lua_thread.create(function()
                            wait(200)
                            sampCloseCurrentDialogWithButton(0)
                        end)
                    end
                end
            end
        end
    end
   
    if onoff == true then
        if dialogId == 15113 then
            local xz = dialogText
                if xz ~= ''  then
                    xz = xz:gsub('\n', '')
                    if xz ~= '' then
                        xz = xz:match('”кажите номер за¤вки:%{......%}(.+)')
                        if xz ~= '' then
                        sampSendDialogResponse(15113, 1, 0, xz)
                        lua_thread.create(function()
                            wait(200)
                            sampCloseCurrentDialogWithButton(0)
                        end)
                    end
                end
            end
        end  
    end
end

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then
        return
    end

    while not isSampAvailable() do
        wait(0)
       
    end
   
    sampRegisterChatCommand('ston', function()
        onoff = not onoff
        sampAddChatMessage(onoff and "{FFA500}[NGTeam] - {ffffff}Activated" or "{FFA500}[NGTeam] - {ffffff}Deactivated", -1)
    end)
   
    sampAddChatMessage("{FFA500}[NGTeam] {ffffff}Insurance Helper - Loaded!",-1)
    sampAddChatMessage("{FFA500}[NGTeam] {ffffff}Version - 0.1",-1)

    while true do
        wait(0)  
    end
end

Сами текст дравы.
GQvq_mH-Hts.jpg
 
Решение
Пробовал, даже пытался выводить сообщение в момент проверки текстдрава на нужный айди и отдельно на data.text
  1. юзаешь этот код
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    local x, y = math.floor(data.position.x), math.floor(data.position.y)
    print(id, x, y)
end
2. узнаешь айди нужного текстдрава
3. заходишь в мунлог
4. Ctrl + F
5. вводишь айди текстдрава
6. копируешь 2 последних числа (например если 1 1337 228 то копируй 1337 и 228)
7. вставляешь их в код ниже
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    local x, y = math.floor(data.position.x), math.floor(data.position.y)
    if x == 1337 and y == 228 then...

Aizen Sosuke

Участник
Автор темы
120
20
Нет, сервер ловит нажатие клавиш, а не нажатие на текстдрав
Хорошо, а как грамотно реализовать цикл можно? Просто, который я использую - иногда не подходит. Будет ли грамотно сделать беск.цикл, и во время того, как сервер напишет сообщение - перерывать его?
 

Rice.

Известный
Модератор
1,756
1,623
Здравствуйте, узнаю айди текстдрава, после чего сравниваю. Вопрос, можно ли без имитации клавиш сделать нажатие клавиши во время, когда этот тект драв будет показан? Пытался кликать на сами текст дравы, но смысла нету, проверять через if data == "Press N", все равно не работает, работает только через циклы + виртуальные нажатия клавиш.
Код:
Lua:
script_name('[NGTeam] - Insurance Helper')
script_author('NGTeam')

require "lib.moonloader"
local sampev = require 'lib.samp.events'

local count
local onoff = false

function sampev.onShowTextDraw(id, data)
    lua_thread.create(function()
        if id == 199 and onoff == true then
            for count = 1, 11 do
                setVirtualKeyDown(VK_Y, true)
                wait(200)
                setVirtualKeyDown(VK_Y, false)
                wait(200)
                setVirtualKeyDown(VK_N, true)
                wait(200)
                setVirtualKeyDown(VK_N, false)
            end
        end
    end)
end


function sampev.onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
    if onoff == true then
        if dialogId == 15111 then     
            local xz = dialogText
                if xz ~= ''  then
                    xz = xz:gsub('\n', '')
                    if xz ~= '' then
                        xz = xz:match('¬ведите ник клиента:%{......%}(.+)')
                        if xz ~= '' then
                        sampSendDialogResponse(15111, 1, 0, xz)
                        lua_thread.create(function()
                            wait(200)
                            sampCloseCurrentDialogWithButton(0)
                        end)
                    end
                end
            end
        end
    end
  
    if onoff == true then
        if dialogId == 15112 then
            local xz = dialogText
                if xz ~= ''  then
                    xz = xz:gsub('\n', '')
                    if xz ~= '' then
                        xz = xz:match('”кажите тип имущества:%{......%}(.+)')
                        if xz ~= '' then
                        sampSendDialogResponse(15112, 1, 0, xz)
                        lua_thread.create(function()
                            wait(200)
                            sampCloseCurrentDialogWithButton(0)
                        end)
                    end
                end
            end
        end
    end
  
    if onoff == true then
        if dialogId == 15113 then
            local xz = dialogText
                if xz ~= ''  then
                    xz = xz:gsub('\n', '')
                    if xz ~= '' then
                        xz = xz:match('”кажите номер за¤вки:%{......%}(.+)')
                        if xz ~= '' then
                        sampSendDialogResponse(15113, 1, 0, xz)
                        lua_thread.create(function()
                            wait(200)
                            sampCloseCurrentDialogWithButton(0)
                        end)
                    end
                end
            end
        end 
    end
end

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then
        return
    end

    while not isSampAvailable() do
        wait(0)
      
    end
  
    sampRegisterChatCommand('ston', function()
        onoff = not onoff
        sampAddChatMessage(onoff and "{FFA500}[NGTeam] - {ffffff}Activated" or "{FFA500}[NGTeam] - {ffffff}Deactivated", -1)
    end)
  
    sampAddChatMessage("{FFA500}[NGTeam] {ffffff}Insurance Helper - Loaded!",-1)
    sampAddChatMessage("{FFA500}[NGTeam] {ffffff}Version - 0.1",-1)

    while true do
        wait(0) 
    end
end

Сами текст дравы.
GQvq_mH-Hts.jpg
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    if data.text == 'Press Y' then
        --code
    end
end
 

Aizen Sosuke

Участник
Автор темы
120
20
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    if data.text == 'Press Y' then
        --code
    end
end
Пробовал, даже пытался выводить сообщение в момент проверки текстдрава на нужный айди и отдельно на data.text
 

chapo

чопа сребдс // @moujeek
Модератор
8,868
11,575
Пробовал, даже пытался выводить сообщение в момент проверки текстдрава на нужный айди и отдельно на data.text
  1. юзаешь этот код
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    local x, y = math.floor(data.position.x), math.floor(data.position.y)
    print(id, x, y)
end
2. узнаешь айди нужного текстдрава
3. заходишь в мунлог
4. Ctrl + F
5. вводишь айди текстдрава
6. копируешь 2 последних числа (например если 1 1337 228 то копируй 1337 и 228)
7. вставляешь их в код ниже
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    local x, y = math.floor(data.position.x), math.floor(data.position.y)
    if x == 1337 and y == 228 then
        sampAddChatMessage('Текстдрав появился', -1)
    end
end
 
  • Нравится
Реакции: Aizen Sosuke

Aizen Sosuke

Участник
Автор темы
120
20
  1. юзаешь этот код
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    local x, y = math.floor(data.position.x), math.floor(data.position.y)
    print(id, x, y)
end
2. узнаешь айди нужного текстдрава
3. заходишь в мунлог
4. Ctrl + F
5. вводишь айди текстдрава
6. копируешь 2 последних числа (например если 1 1337 228 то копируй 1337 и 228)
7. вставляешь их в код ниже
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    local x, y = math.floor(data.position.x), math.floor(data.position.y)
    if x == 1337 and y == 228 then
        sampAddChatMessage('Текстдрав появился', -1)
    end
end
Сделал, сообщене выводит каждый раз, но кнопки не нажимает. С чем может быть связано?

Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    local x, y = math.floor(data.position.x), math.floor(data.position.y)
    print(id, x, y)
    if x == 231 and y == 424 then
        lua_thread.create(function()
            sampAddChatMessage("test")
            setVirtualKeyDown(VK_Y, true)
            wait(200)
            setVirtualKeyDown(VK_Y, false)
            wait(200)
            setVirtualKeyDown(VK_N, true)
            wait(200)
            setVirtualKeyDown(VK_N, false)
        end)
    end
end

  1. юзаешь этот код
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    local x, y = math.floor(data.position.x), math.floor(data.position.y)
    print(id, x, y)
end
2. узнаешь айди нужного текстдрава
3. заходишь в мунлог
4. Ctrl + F
5. вводишь айди текстдрава
6. копируешь 2 последних числа (например если 1 1337 228 то копируй 1337 и 228)
7. вставляешь их в код ниже
Lua:
local sampev = require 'lib.samp.events'

function sampev.onShowTextDraw(id, data)
    local x, y = math.floor(data.position.x), math.floor(data.position.y)
    if x == 1337 and y == 228 then
        sampAddChatMessage('Текстдрав появился', -1)
    end
end
UPD. Разобрался, дай Бог тебе здоровья!