Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Приветствую, я бы хотел узнать каким образом можно отобразить информацию из диалогаi, приведу пример с аризоны, допyстим должно выводить информацию о текущем онлайне организации (/members), чтобы название окна было "Онлайн(и количество онлайна)" и ниже по списку шли ники людей которые в сети (Пример прикрепил)
Приветствую, я бы хотел узнать каким образом можно отобразить информацию из диалогаi, приведу пример с аризоны, допyстим должно выводить информацию о текущем онлайне организации (/members), чтобы название окна было "Онлайн(и количество онлайна)" и ниже по списку шли ники людей которые в сети (Пример прикрепил)
On Screen Members by Cosmo Описание: Выводит весь /members организации на экран Нет никаких ограничении и детальная настройка всего чего можно Так же может порадовать присутствие системы заметок, с их помощью вы можете записать любому сотруднику фракции что то важное, например "Повысить...
Скрипт, выводящий все активные квесты прямо на экран. Доступные команды: /osq /osqpos /osq - Включение/выключение рендера активных квестов на экран /osqpos - Изменение позиции текста. После изменения создастся ini-файл с настройками позиции, в который и сохраняются координаты текста. (...
On Screen Members by Cosmo Описание: Выводит весь /members организации на экран Нет никаких ограничении и детальная настройка всего чего можно Так же может порадовать присутствие системы заметок, с их помощью вы можете записать любому сотруднику фракции что то важное, например "Повысить...
Скрипт, выводящий все активные квесты прямо на экран. Доступные команды: /osq /osqpos /osq - Включение/выключение рендера активных квестов на экран /osqpos - Изменение позиции текста. После изменения создастся ini-файл с настройками позиции, в который и сохраняются координаты текста. (...
Мало подробностей. Те, кто на Аризоне не играют, не смогут тебе помочь, ибо не знают, как выглядит диалоговое окно members'а, чтобы оттуда игроков доставать. Да и вообще бесплатно тебе это мало кто сделает.
Lua:
require "lib.moonloader"
local imgui = require "mimgui"
local sampev = require "lib.samp.events"
local encoding = require "encoding"
local u8 = encoding.UTF8
encoding.default = "CP1251"
local window = imgui.new.bool(true)
local tbl = {}
local lastDialogWasActive = 0
imgui.OnInitialize(function()
imgui.GetIO().IniFilename = nil
end)
function main()
while not isSampAvailable() do wait(100) end
lua_thread.create(flooder)
while true do wait(0)
if sampIsDialogActive() then
lastDialogWasActive = os.clock()
end
end
end
function flooder() -- https://www.blast.hk/threads/59761/
while true do wait(0)
if sampIsLocalPlayerSpawned() then
while (os.clock() - lastDialogWasActive) < 2.00 do wait(0) end
sampSendChat("/members")
wait(10 * 1000)
end
end
end
imgui.OnFrame(function() return window[0] end, function(self)
local sizeX, sizeY = getScreenResolution()
self.HideCursor = true
imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 1.1, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(300, 200), imgui.Cond.FirstUseEver)
imgui.Begin("##", window, imgui.WindowFlags.NoTitleBar
+ imgui.WindowFlags.NoResize
+ imgui.WindowFlags.AlwaysAutoResize
+ imgui.WindowFlags.NoMove
+ imgui.WindowFlags.NoFocusOnAppearing)
imgui.Text((u8"Игроков в сети: %s"):format(#tbl))
if #tbl > 0 then
for _, v in pairs(tbl) do
imgui.TextUnformatted(("%s\n"):format(v))
end
end
imgui.End()
end)
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
if title:gsub("%{......%}", ""):find(".+%(В сети: %d+%) %| Организация") then
lua_thread.create(function() wait(50)
text = text:gsub("%{......%}", "")
tbl = {}
for line in text:gmatch("[^\n]+") do
if line:gsub("%{......%}", ""):find("(.-)%(%d+%)%s*.+%(%d+%)%s*.+%s*%d+ шт") then
local names = line:match("(.-)%(%d+%)%s*.+%(%d+%)%s*.+%s*%d+ шт")
table.insert(tbl, names)
end
end
sampSendDialogResponse(dialogId, 0, nil, nil)
end)
return false
end
end
Я тоже не изучал эту тему с members'ом, ибо играю на Аризоне меньше месяца и редко захожу, поэтому сделал так, как у меня показывало. Возможно, могут быть проблемы, если в members'е будет много игроков и если диалоговое окно разделится на страницы, тогда придётся уже менять код и сделать так, чтобы он и страницы листал. Но, как я уже сказал, я сделал так, как у меня показывало (потому что я не знаю, как выглядит диалоговое окно со страницами).
P.S Минут 15 стоял и смотрел, как будет вести себя скрипт. С задержкой в 2 секунды (на 32-й строке) через секунд 20-30 игру крашило. С 10-ю секундами, как я уже сказал, стоял минут 15 и ничего не произошло.
Мало подробностей. Те, кто на Аризоне не играют, не смогут тебе помочь, ибо не знают, как выглядит диалоговое окно members'а, чтобы оттуда игроков доставать. Да и вообще бесплатно тебе это мало кто сделает.
Lua:
require "lib.moonloader"
local imgui = require "mimgui"
local sampev = require "lib.samp.events"
local encoding = require "encoding"
local u8 = encoding.UTF8
encoding.default = "CP1251"
local window = imgui.new.bool(true)
local tbl = {}
local lastDialogWasActive = 0
imgui.OnInitialize(function()
imgui.GetIO().IniFilename = nil
end)
function main()
while not isSampAvailable() do wait(100) end
lua_thread.create(flooder)
while true do wait(0)
if sampIsDialogActive() then
lastDialogWasActive = os.clock()
end
end
end
function flooder() -- https://www.blast.hk/threads/59761/
while true do wait(0)
if sampIsLocalPlayerSpawned() then
while (os.clock() - lastDialogWasActive) < 2.00 do wait(0) end
sampSendChat("/members")
wait(10 * 1000)
end
end
end
imgui.OnFrame(function() return window[0] end, function(self)
local sizeX, sizeY = getScreenResolution()
self.HideCursor = true
imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 1.1, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(300, 200), imgui.Cond.FirstUseEver)
imgui.Begin("##", window, imgui.WindowFlags.NoTitleBar
+ imgui.WindowFlags.NoResize
+ imgui.WindowFlags.AlwaysAutoResize
+ imgui.WindowFlags.NoMove
+ imgui.WindowFlags.NoFocusOnAppearing)
imgui.Text((u8"Игроков в сети: %s"):format(#tbl))
if #tbl > 0 then
for _, v in pairs(tbl) do
imgui.TextUnformatted(("%s\n"):format(v))
end
end
imgui.End()
end)
function sampev.onShowDialog(dialogId, style, title, button1, button2, text)
if title:gsub("%{......%}", ""):find(".+%(В сети: %d+%) %| Организация") then
lua_thread.create(function() wait(50)
text = text:gsub("%{......%}", "")
tbl = {}
for line in text:gmatch("[^\n]+") do
if line:gsub("%{......%}", ""):find("(.-)%(%d+%)%s*.+%(%d+%)%s*.+%s*%d+ шт") then
local names = line:match("(.-)%(%d+%)%s*.+%(%d+%)%s*.+%s*%d+ шт")
table.insert(tbl, names)
end
end
sampSendDialogResponse(dialogId, 0, nil, nil)
end)
return false
end
end
Я тоже не изучал эту тему с members'ом, ибо играю на Аризоне меньше месяца и редко захожу, поэтому сделал так, как у меня показывало. Возможно, могут быть проблемы, если в members'е будет много игроков и если диалоговое окно разделится на страницы, тогда придётся уже менять код и сделать так, чтобы он и страницы листал. Но, как я уже сказал, я сделал так, как у меня показывало (потому что я не знаю, как выглядит диалоговое окно со страницами).
P.S Минут 15 стоял и смотрел, как будет вести себя скрипт. С задержкой в 2 секунды (на 32-й строке) через секунд 20-30 игру крашило. С 10-ю секундами, как я уже сказал, стоял минут 15 и ничего не произошло.