imgui.Button на каждый пункт

Cypher

Активный
Автор темы
224
55
Версия MoonLoader
.026-beta
1673529808393.png

Нужно сделать так чтобы возле каждой терры в имгуи окне была кнопка которая после нажатия напишет что то в чат (в нашем случае /findfamzone идтерры)


Lua:
require 'lib.moonloader'
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
array = {}

local window = imgui.ImBool(false)

function main()
   while not isSampAvailable() do wait(200) end
   sampRegisterChatCommand('fz',fz)
   sampRegisterChatCommand('ff',ff)
   while true do
      wait(0)
      imgui.Process = window.v
   end
end

function imgui.OnDrawFrame()
   if window.v then
      imgui.SetNextWindowPos(imgui.ImVec2(670.0, 220.0), imgui.Cond.FirstUseEver)
      imgui.SetNextWindowSize(imgui.ImVec2(600.0, 700.0), imgui.Cond.FirstUseEver)
      imgui.Begin('Window Title', window)
      for k,v in ipairs(array) do
         if k == 1 and v == '' or v == nil then
            imgui.Text(u8'ПУСТО!')
         end
         imgui.Text(u8(v))
      end
      imgui.End()
   end
end

function fz()
   window.v = not window.v
end

function ff(arg)
   if arg == nil then
      sampSendChat('/findfamzone')
   else
      sampSendChat('/findfamzone '.. arg)
   end
end


require 'lib.samp.events'.onShowDialog = function(id, style, title, button1, button2, text)
   if title:find('Куда установить') then
      array = {}
      for line in text:gmatch('[^\n]+') do
         count, kolvo, symma = line:match('Территория №(%d+) .+ (%d+)шт .+$(%d+)')
         table.insert(array, line)
        
      end
      window.v = true
   end
end
 
  • Эм
Реакции: YarikVL и qdIbp

VRush

https://t.me/vrushscript
Проверенный
2,378
1,138
Lua:
require 'lib.moonloader'
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
dialogg = nil
array = {}

local window = imgui.ImBool(false)

function main()
   while not isSampAvailable() do wait(200) end
   while true do
      wait(0)
      imgui.Process = window.v
   end
end

function imgui.OnDrawFrame()
   if window.v then
      imgui.SetNextWindowPos(imgui.ImVec2(350.0, 250.0), imgui.Cond.FirstUseEver)
      imgui.SetNextWindowSize(imgui.ImVec2(280.0, 70.0), imgui.Cond.FirstUseEver)
      imgui.Begin('Window Title', window)
      for k,v in ipairs(array) do
         if k == 1 and v == '' or v == nilthen
            imgui.Text(u8'ПУСТО!')
         end
         imgui.Text(u8(v))
         imgui.Button(u8'Пункт '..k..'##'..k)
      end
      imgui.End()
   end
end

require 'lib.samp.events'.onShowDialog = function(id, style, title, button1, button2, text)
   if title:find('Куда установить') then
      array = {}
      for line in text:gmatch('[^\n]+') do
         line = line:gsub('{......}','')
         table.insert(array, text)
      end
      window.v = true
   end
end
 
  • Нравится
Реакции: qdIbp

qdIbp

Автор темы
Проверенный
1,388
1,146
Lua:
require('lib.moonloader')
local imgui = require('imgui')

local encoding = require('encoding')
encoding.default = 'CP1251'
u8 = encoding.UTF8

array = {}

local window = imgui.ImBool(false)

function main()
   while not isSampAvailable() do wait(200) end
       sampRegisterChatCommand('fz',fz)
       sampRegisterChatCommand('ff',ff)
   while true do
      wait(0)
      imgui.Process = window.v
   end
end

function imgui.OnDrawFrame()
   if window.v then
      imgui.SetNextWindowPos(imgui.ImVec2(670.0, 220.0), imgui.Cond.FirstUseEver)
      imgui.SetNextWindowSize(imgui.ImVec2(600.0, 700.0), imgui.Cond.FirstUseEver)
      imgui.Begin('Window Title', window)
          for k,v in ipairs(array) do
             if k == 1 and v == '' or v == nil then
                imgui.Text(u8'ПУСТО!')
            else
                imgui.Text(u8(v))
                imgui.SameLine()
                if imgui.Button('xz_'..k) then
                    if sampIsDialogActive() then
                        sampSendDialogResponse(sampGetCurrentDialogId(), 1, k-1, nil)
                    else
                        print('диалог закрыт увалень')
                    end
                end
             end
      end
      imgui.End()
   end
end

function fz()
   window.v = not window.v
end

function ff(arg)
    sampSendChat(not arg and '/findfamzone' or '/findfamzone '.. arg)
end

require('lib.samp.events').onShowDialog = function(id, style, title, button1, button2, text)
   if title:find('Куда установить') then
      for line in text:gmatch('[^\n]+') do
         count, kolvo, symma = line:match('Территория №(%d+) .+ (%d+)шт .+$(%d+)')
         table.insert(array, line)
      end
      window.v = true
   end
end
 
  • Нравится
Реакции: хуега)