Как работать с CEF интерфейсом?(Клады)

BOBA_BO

Новичок
Автор темы
12
2
Версия MoonLoader
.027.0-preview
Всем привет! Хочу сделать скрипт на авто-откоп для новых Аризоновский кладов. Проблема в том что новая система откопа клада работает на CEF интерфейсе, а я с ним прежде не работал и не знаком. Пытался найти информацию как работать с CEF интерфейсом на бласт-хаке, но толком ничего не нашел, все что понял что Аризона используй 220 пакет входящих данных, и то что нужно как то с него прочитать входящию информаицю, но как это сделать информации я не нашел. Вобщемто, кому не лень, обьясните мне чайнику как мне при открытии меню клада перехватить и прочитать этот 220 пакет, и как мне достать от туда кнопку на которую нужно нажимать до определенного момента чтобы выкопать клад. И как мне эмулировать нажатие на эту кнопку до зеленой отметки (как на фото).
 

Вложения

  • 13.42.05.781.jpg
    13.42.05.781.jpg
    273.2 KB · Просмотры: 40
Решение
Выглядит очень обнадёживающее, буду пробывать, если все сработает, отмечу как решенее.


Вобщемто, проморочился с этой темкой 3 часа, скрипт реагирует на открытие меню клада, но сама эмуляция нажатия по кнопке почемуто не работает.
Lua-код:
local arizona = require('arizona-events')

function arizona.onArizonaDisplay(packet)
    print("text:" .. packet.text)
    print("Server_id:" .. packet.server_id)

    if packet.text:find("window.executeEvent%('event.setActiveView', `%[\"Excavations\"%]") then
        sampAddChatMessage("[DEBUG] Excavations открыт, эмулируем клики", -1)

        lua_thread.create(function()
            for i = 1, 10 do
                arizona.emul("onArizonaSend", {
                    text =...

alex.morozov

Участник
108
9
Всем привет! Хочу сделать скрипт на авто-откоп для новых Аризоновский кладов. Проблема в том что новая система откопа клада работает на CEF интерфейсе, а я с ним прежде не работал и не знаком. Пытался найти информацию как работать с CEF интерфейсом на бласт-хаке, но толком ничего не нашел, все что понял что Аризона используй 220 пакет входящих данных, и то что нужно как то с него прочитать входящию информаицю, но как это сделать информации я не нашел. Вобщемто, кому не лень, обьясните мне чайнику как мне при открытии меню клада перехватить и прочитать этот 220 пакет, и как мне достать от туда кнопку на которую нужно нажимать до определенного момента чтобы выкопать клад. И как мне эмулировать нажатие на эту кнопку до зеленой отметки (как на фото).
ищи в скриптах которые перехватывают cef, если поискать что и ответ найдется на твои вопросы
 

bfix

Участник
54
54
Попробуй поиграться с этой библиотекой - https://www.blast.hk/threads/235586/
Нужные тебе функции в ней - onArizonaDisplay(для поиска вот этого окна с скриншота) и onArizonaSend(для просмотра что ты отправляешь при виде строки с кладами)
Примерный код:

lua:
local arizona = require('arizona-events') -- подключаем библиотеку

function arizona.onArizonaDisplay(packet) -- Находим интерфейс
    print(packet.text) -- Выводим текст который получаем
    print(packet.server_id) -- Выводим сервер айди
    if packet.text:find('Раскопки') then -- Если в пакете находим текст "Раскопки" выполняем
        for i = 1, 10 do -- 10 раз эмулируем отправку прокликивания кнопки
            arizona.send("onArizonaSend", {
                text = 'clickMinigame',  
                server_id = 0
            })
        end
    end
end

function arizona.onArizonaSend(packet) -- Смотрим то что мы отправляем
    print(packet.text) -- Отправляемый текст, нужен будет выше в эмуляции
    print(packet.id) -- отправляемый сервер айди
end
 
Последнее редактирование:
  • Нравится
Реакции: BOBA_BO

BOBA_BO

Новичок
Автор темы
12
2
Попробуй поиграться с этой библиотекой - https://www.blast.hk/threads/235586/
Нужные тебе функции в ней - onArizonaDisplay(для поиска вот этого окна с скриншота) и onArizonaSend(для просмотра что ты отправляешь при виде строки с кладами)
Примерный код:

lua:
local arizona = require('arizona-events') -- подключаем библиотеку

function arizona.onArizonaDisplay(packet) -- Находим интерфейс
    print(packet.text) -- Выводим текст который получаем
    print(packet.server_id) -- Выводим сервер айди
    if packet.text:find('Раскопки') then -- Если в пакете находим текст "Раскопки" выполняем
        for i = 1, 10 do -- 10 раз эмулируем отправку прокликивания кнопки
            arizona.emul("onArizonaSend", {
                text = 'clickMinigame',  
                server_id = 0
            })
        end
    end
end

function arizona.onArizonaSend(packet) -- Смотрим то что мы отправляем
    print(packet.text) -- Отправляемый текст, нужен будет выше в эмуляции
    print(packet.id) -- отправляемый сервер айди
end
Выглядит очень обнадёживающее, буду пробывать, если все сработает, отмечу как решенее.

Попробуй поиграться с этой библиотекой - https://www.blast.hk/threads/235586/
Нужные тебе функции в ней - onArizonaDisplay(для поиска вот этого окна с скриншота) и onArizonaSend(для просмотра что ты отправляешь при виде строки с кладами)
Примерный код:

lua:
local arizona = require('arizona-events') -- подключаем библиотеку

function arizona.onArizonaDisplay(packet) -- Находим интерфейс
    print(packet.text) -- Выводим текст который получаем
    print(packet.server_id) -- Выводим сервер айди
    if packet.text:find('Раскопки') then -- Если в пакете находим текст "Раскопки" выполняем
        for i = 1, 10 do -- 10 раз эмулируем отправку прокликивания кнопки
            arizona.emul("onArizonaSend", {
                text = 'clickMinigame',  
                server_id = 0
            })
        end
    end
end

function arizona.onArizonaSend(packet) -- Смотрим то что мы отправляем
    print(packet.text) -- Отправляемый текст, нужен будет выше в эмуляции
    print(packet.id) -- отправляемый сервер айди
end
Вобщемто, проморочился с этой темкой 3 часа, скрипт реагирует на открытие меню клада, но сама эмуляция нажатия по кнопке почемуто не работает.
Lua-код:
local arizona = require('arizona-events')

function arizona.onArizonaDisplay(packet)
    print("text:" .. packet.text)
    print("Server_id:" .. packet.server_id)

    if packet.text:find("window.executeEvent%('event.setActiveView', `%[\"Excavations\"%]") then
        sampAddChatMessage("[DEBUG] Excavations открыт, эмулируем клики", -1)

        lua_thread.create(function()
            for i = 1, 10 do
                arizona.emul("onArizonaSend", {
                    text = "excavations.clickOnTrigger",
                    server_id = 18
                })
            end
        end)
    end
end
 
Последнее редактирование:

bfix

Участник
54
54
Выглядит очень обнадёживающее, буду пробывать, если все сработает, отмечу как решенее.


Вобщемто, проморочился с этой темкой 3 часа, скрипт реагирует на открытие меню клада, но сама эмуляция нажатия по кнопке почемуто не работает.
Lua-код:
local arizona = require('arizona-events')

function arizona.onArizonaDisplay(packet)
    print("text:" .. packet.text)
    print("Server_id:" .. packet.server_id)

    if packet.text:find("window.executeEvent%('event.setActiveView', `%[\"Excavations\"%]") then
        sampAddChatMessage("[DEBUG] Excavations открыт, эмулируем клики", -1)

        lua_thread.create(function()
            for i = 1, 10 do
                arizona.emul("onArizonaSend", {
                    text = "excavations.clickOnTrigger",
                    server_id = 18
                })
            end
        end)
    end
end
возможно сервера айди кривой тут, сервер айди там чисто под пакет там не конкретно сервер с которого ты играешь
так же у тебя зачем то поток тут, хотя ты время никакое не используешь
узнай серверный айди пакета (если конечно ты ввёл рандомный):

function arizona.onArizonaSend(packet)
print(packet.server_id)
end
или попробуй сделать так:

lua:
function arizona.onArizonaDisplay(packet)
    if packet.text:find("window.executeEvent%('event.setActiveView', `%[\"Excavations\"%]") then
        sampAddChatMessage("[DEBUG] Excavations открыт, эмулируем клики", -1)

        lua_thread.create(function()
            wait(333) -- Ждём для того чтобы все данные появились, бывает не сразу доступно нажатие клика
            for i = 1, 10 do
                wait(100) -- Клик каждые 100 мс
                arizona.send("onArizonaSend", { -- Заменил emul на send
                    text = "excavations.clickOnTrigger",
                    server_id = 1 -- Указал рандомный, в твоём случае может быть другой, или попробуй вовсе его не указывать удали server_id, в документации написано что не всегда обязательно использовать
                })
            end
        end)
    end
end
ИЛИ как ещё я предположил, в excavations.clickOnTrigger нужно экранировать точку
UPD 2 разобрался с управлением в этой библиотеке, попробуй использовать arizona.send(просто заменить слово emul на send)
 
Последнее редактирование:

wojciech?

Известный
Проверенный
407
361
server_id = 1 -- Указал рандомный, в твоём случае может быть другой, или попробуй вовсе его не указывать удали server_id, в документации написано что не всегда обязательно использовать
Не самое удачное название выбрано было, 0 - для аризоны, 1 - для родины. Указывать server_id обязательно нужно, это не ид пакета
 
  • Нравится
Реакции: bfix

BOBA_BO

Новичок
Автор темы
12
2
возможно сервера айди кривой тут, сервер айди там чисто под пакет там не конкретно сервер с которого ты играешь
так же у тебя зачем то поток тут, хотя ты время никакое не используешь
узнай серверный айди пакета (если конечно ты ввёл рандомный):

function arizona.onArizonaSend(packet)
print(packet.server_id)
end
или попробуй сделать так:

lua:
function arizona.onArizonaDisplay(packet)
    if packet.text:find("window.executeEvent%('event.setActiveView', `%[\"Excavations\"%]") then
        sampAddChatMessage("[DEBUG] Excavations открыт, эмулируем клики", -1)

        lua_thread.create(function()
            wait(333) -- Ждём для того чтобы все данные появились, бывает не сразу доступно нажатие клика
            for i = 1, 10 do
                wait(100) -- Клик каждые 100 мс
                arizona.send("onArizonaSend", { -- Заменил emul на send
                    text = "excavations.clickOnTrigger",
                    server_id = 1 -- Указал рандомный, в твоём случае может быть другой, или попробуй вовсе его не указывать удали server_id, в документации написано что не всегда обязательно использовать
                })
            end
        end)
    end
end
ИЛИ как ещё я предположил, в excavations.clickOnTrigger нужно экранировать точку
UPD 2 разобрался с управлением в этой библиотеке, попробуй использовать arizona.send(просто заменить слово emul на send)
Вобщемто, прошло еще 3 часа, сервер ни в какую не хочет принимать эту эмуляцию. То что нужно заменить emul на send я тоже заметил когда изучал библиотеку, и пробывал сделать так, в итоге все как не работало, так и не работает. В конечном итоге пожалел себя и остановился на самом простом решении, использовать
setVirtualKeyDown(1, true)
wait(0)
setVirtualKeyDown(1, false)
И о чудо, все заработало
 
  • Нравится
Реакции: bfix и kitsad