Repeat с указанием кол-ва повторений

Thomasya

Известный
Автор темы
67
2
Версия MoonLoader
.026-beta
Приветствую, занялся доработкой скрипта, появилась идея сделать скрипт который будет делать опредленное кол-во повторений, которое я введу аргументом
к примеру простейший интерфейс imgui.
Lua:
local delayrt = 300

if imgui.InputText(u8'Вводить кол-во повторений', text) then
    if imgui.Button("test") then
    sampSendChat("/s Продам шляпу мага")
  end
Это пример, но мне нужно что бы с промежутком 30 секунд сообщение отправлялось снова.
Штука будет полезна для барыг
До этого нашел штуку которая бы писала раз в 5 минут в чат с задержкой ивключением/выключением

Lua:
local workrt = false
local textrt
local delayrt = 150000


    function main()
        if not isSampLoaded() then return end
          while not isSampAvailable() do wait(100) end
        sampAddChatMessage('[AutoPiar] {FFFFFF}Script for Beretti Squad by  {5a90ce}No_Name {FFFFFF}- активирован.', 0x8A5EB6)
        sampAddChatMessage('[AutoPiar] {FFFFFF}для активации используйте команду{5a90ce} /autort', 0x8A5EB6)
      
        sampRegisterChatCommand("autort", function(arg)
            workrt = not workrt
            textrt = arg
            if workrt == true then
                sampAddChatMessage("[AutoRt] {FFFFFF}Скрипт {00ff38}включен", 0x8A5EB6)
                drt = delayrt / 1000
                sampAddChatMessage("[AutoRt] {FFFFFF}Задержка: "..drt.." секунд", 0x8A5EB6)
            else
                sampAddChatMessage("[AutoRt] {FFFFFF}Скрипт {ee0b0b}выключен", 0x8A5EB6)
                textrt = "Вводи промокод #beretti на 6-ом уровне и получай +600к и от меня еще 300к"
            end
        end)
            while true do
                wait(0)
                if workrt == true then
                    sampSendChat("/j Вводи промокод #beretti на 6-ом уровне и получай +600к и от меня еще 300к")
                    wait(delayrt) 
                end 
            end
        end
 
Последнее редактирование:
Решение
[ML] (error) Arizona Tools v1.1.lua: ...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua:31: attempt to index global 'text_buffer' (a nil value)
stack traceback:
...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua: in function <...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua:23>
[ML] (error) Arizona Tools v1.1.lua: Script died due to an error. (085C11BC)
Посмотреть вложение 79187
Вывело нормально, но только для первого повторения, после того как вывело вторую строку выдает ошибку которая выше
text_buffer поменяй на свой буфер у тебя это test_text_buffer
выше изменил

The End

Участник
29
6
Приветствую, занялся доработкой скрипта, появилась идея сделать скрипт который будет делать опредленное кол-во повторений, которое я введу аргументом
к примеру простейший интерфейс imgui.
Lua:
local delayrt = 300

if imgui.InputText(u8'Вводить кол-во повторений', text) then
    if imgui.Button("test") then
    sampSendChat("/s Продам шляпу мага")
  end
Это пример, но мне нужно что бы с промежутком 30 секунд сообщение отправлялось снова.
Штука будет полезна для барыг
До этого нашел штуку которая бы писала раз в 5 минут в чат с задержкой ивключением/выключением

Lua:
local workrt = false
local textrt
local delayrt = 150000


    function main()
        if not isSampLoaded() then return end
          while not isSampAvailable() do wait(100) end
        sampAddChatMessage('[AutoPiar] {FFFFFF}Script for Beretti Squad by  {5a90ce}No_Name {FFFFFF}- активирован.', 0x8A5EB6)
        sampAddChatMessage('[AutoPiar] {FFFFFF}для активации используйте команду{5a90ce} /autort', 0x8A5EB6)
     
        sampRegisterChatCommand("autort", function(arg)
            workrt = not workrt
            textrt = arg
            if workrt == true then
                sampAddChatMessage("[AutoRt] {FFFFFF}Скрипт {00ff38}включен", 0x8A5EB6)
                drt = delayrt / 1000
                sampAddChatMessage("[AutoRt] {FFFFFF}Задержка: "..drt.." секунд", 0x8A5EB6)
            else
                sampAddChatMessage("[AutoRt] {FFFFFF}Скрипт {ee0b0b}выключен", 0x8A5EB6)
                textrt = "Вводи промокод #beretti на 6-ом уровне и получай +600к и от меня еще 300к"
            end
        end)
            while true do
                wait(0)
                if workrt == true then
                    sampSendChat("/j Вводи промокод #beretti на 6-ом уровне и получай +600к и от меня еще 300к")
                    wait(delayrt)
                end
            end
        end
Lua:
    if imgui.InputText(u8'Вводить кол-во повторений', text) then
    end
    if imgui.Button("test") then
        a = 1
        repeat
           a = a + 1
           sampAddChatMessage("/s Продам шляпу мага", -1) --sampAddChatMessage() для демонстрации
        until a > tonumber(text.v)
    end
 

Thomasya

Известный
Автор темы
67
2
Lua:
    if imgui.InputText(u8'Вводить кол-во повторений', text) then
    end
    if imgui.Button("test") then
        a = 1
        repeat
           a = a + 1
           sampAddChatMessage("/s Продам шляпу мага", -1) --sampAddChatMessage() для демонстрации
        until a > tonumber(text.v)
    end
Спасибо огромное, его можно использовать для нескольких строк?
Я смогу использовать аргумент?
 

Thomasya

Известный
Автор темы
67
2
for i = 1, arg do
Космо подсказал использовать такой цикл
Lua:
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local testimgui = imgui.ImBool(false)
local test_text_buffer = imgui.ImBuffer(256)


function imgui.OnDrawFrame()
    if testimgui.v then
        local sw, sh = getScreenResolution()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(500, 250), imgui.Cond.FirstUseEver)
  imgui.Begin(u8'Основное окно') -- обратите внимание на u8 перед текстом, это и есть преобразование кодировки
 
      if imgui.InputText(u8'Вводить кол-во повторений', text) then
    end
    if imgui.Button("test") then
        for i = 1, arg do
        repeat
           a = a + 1
          
           sampAddChatMessage("/s Продам шляпу мага", -1) --sampAddChatMessage() для демонстрации
        until a > tonumber(text.v)
    end
end

  imgui.End()
end
end

function main()

    sampRegisterChatCommand("testing", function()
        testimgui.v = not testimgui.v
    end)
    while true do
        wait(0)
  imgui.Process = testimgui.v
end
end
Почему начало крашить?
 

Rei

Известный
Друг
1,611
1,668
for i = 1, arg do
Космо подсказал использовать такой цикл
Lua:
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local testimgui = imgui.ImBool(false)
local test_text_buffer = imgui.ImBuffer(256)


function imgui.OnDrawFrame()
    if testimgui.v then
        local sw, sh = getScreenResolution()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(500, 250), imgui.Cond.FirstUseEver)
  imgui.Begin(u8'Основное окно') -- обратите внимание на u8 перед текстом, это и есть преобразование кодировки

      if imgui.InputText(u8'Вводить кол-во повторений', text) then
    end
    if imgui.Button("test") then
        for i = 1, arg do
        repeat
           a = a + 1
         
           sampAddChatMessage("/s Продам шляпу мага", -1) --sampAddChatMessage() для демонстрации
        until a > tonumber(text.v)
    end
end

  imgui.End()
end
end

function main()

    sampRegisterChatCommand("testing", function()
        testimgui.v = not testimgui.v
    end)
    while true do
        wait(0)
  imgui.Process = testimgui.v
end
end
Почему начало крашить?
нахуя 2 цикла?
репит убери
arg ваще че за переменная
 

The End

Участник
29
6
for i = 1, arg do
Космо подсказал использовать такой цикл
Lua:
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local testimgui = imgui.ImBool(false)
local test_text_buffer = imgui.ImBuffer(256)


function imgui.OnDrawFrame()
    if testimgui.v then
        local sw, sh = getScreenResolution()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(500, 250), imgui.Cond.FirstUseEver)
  imgui.Begin(u8'Основное окно') -- обратите внимание на u8 перед текстом, это и есть преобразование кодировки

      if imgui.InputText(u8'Вводить кол-во повторений', text) then
    end
    if imgui.Button("test") then
        for i = 1, arg do
        repeat
           a = a + 1
         
           sampAddChatMessage("/s Продам шляпу мага", -1) --sampAddChatMessage() для демонстрации
        until a > tonumber(text.v)
    end
end

  imgui.End()
end
end

function main()

    sampRegisterChatCommand("testing", function()
        testimgui.v = not testimgui.v
    end)
    while true do
        wait(0)
  imgui.Process = testimgui.v
end
end
Почему начало крашить?
Зачем
for i = 1, arg do
добавил?
 

Thomasya

Известный
Автор темы
67
2
cosmo подсказал
Lua:
[ML] (error) Arizona Tools v1.1.lua: ...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua:26: attempt to index global 'text' (a nil value)
stack traceback:
    ...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua:26: in function 'OnDrawFrame'
    C:\Games\GTA 140K BY DAPO SHOW\moonloader\lib\imgui.lua:1377: in function <C:\Games\GTA 140K BY DAPO SHOW\moonloader\lib\imgui.lua:1366>
[ML] (error) Arizona Tools v1.1.lua: Script died due to an error. (085C0B9C)
 

Thomasya

Известный
Автор темы
67
2
Как добавить задержку для строк?
Lua:
      if imgui.InputText(u8'Вводить текст сюда', test_text_buffer) then
  end
  imgui.Text(u8'Введённый текст: ' .. test_text_buffer.v)

  if imgui.Button("test") then
        a = 1
        repeat
           a = a + 1
           lua_thread.create(function()
            sampSendChat(" •°•°•°•° Музыкальная заставка « Радиоцентра г.Лос-Сантос » •°•°•°•°•")
                wait(7500)
                    sampSendChat(" Приветствую вас, дорогие жители штата!")
                        wait(7500)
                wait(7500)
            mem.setuint8(sampGetBase() + 0x119CBC, 1)
            end)
        until a > tonumber(test_text_buffer.v)
    end
  imgui.End()
end
end
 

The End

Участник
29
6
Как добавить задержку для строк?
Lua:
      if imgui.InputText(u8'Вводить текст сюда', test_text_buffer) then
  end
  imgui.Text(u8'Введённый текст: ' .. test_text_buffer.v)

  if imgui.Button("test") then
        a = 1
        repeat
           a = a + 1
           lua_thread.create(function()
            sampSendChat(" •°•°•°•° Музыкальная заставка « Радиоцентра г.Лос-Сантос » •°•°•°•°•")
                wait(7500)
                    sampSendChat(" Приветствую вас, дорогие жители штата!")
                        wait(7500)
                wait(7500)
            mem.setuint8(sampGetBase() + 0x119CBC, 1)
            end)
        until a > tonumber(test_text_buffer.v)
    end
  imgui.End()
end
end
Тебе через for или repeat?
 

Thomasya

Известный
Автор темы
67
2
Мне как легче
Оно отправляет сразу по два сообщения
1607892003310.png

На сервере стоит значение что 2 одинаковых значения считаются флудом,это я попробовал через for
 
Последнее редактирование:

The End

Участник
29
6
Мне как легче
Оно отправляет сразу по два сообщения
Lua:
    if imgui.Button("test") then
        a = 1
        lua_thread.create(function()
            repeat
                a = a + 1
                wait(1000) --Свою задержку
                sampSendChat(" •°•°•°•° Музыкальная заставка « Радиоцентра г.Лос-Сантос » •°•°•°•°•")
                wait(7500) --Свою задержку
                sampSendChat(" Приветствую вас, дорогие жители штата!")
                wait(7500) --Свою задержку
                mem.setuint8(sampGetBase() + 0x119CBC, 1)
            until a > tonumber(test_text_buffer.v)
        end)
    end
 

Thomasya

Известный
Автор темы
67
2
Lua:
    if imgui.Button("test") then
        a = 1
        lua_thread.create(function()
            repeat
                a = a + 1
                wait(1000) --Свою задержку
                sampSendChat(" •°•°•°•° Музыкальная заставка « Радиоцентра г.Лос-Сантос » •°•°•°•°•")
                wait(7500) --Свою задержку
                sampSendChat(" Приветствую вас, дорогие жители штата!")
                wait(7500) --Свою задержку
                mem.setuint8(sampGetBase() + 0x119CBC, 1)
            until a > tonumber(test_text_buffer.v)
        end)
    end
[ML] (error) Arizona Tools v1.1.lua: ...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua:31: attempt to index global 'text_buffer' (a nil value)
stack traceback:
...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua: in function <...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua:23>
[ML] (error) Arizona Tools v1.1.lua: Script died due to an error. (085C11BC)
1607892226369.png

Вывело нормально, но только для первого повторения, после того как вывело вторую строку выдает ошибку которая выше
 

The End

Участник
29
6
[ML] (error) Arizona Tools v1.1.lua: ...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua:31: attempt to index global 'text_buffer' (a nil value)
stack traceback:
...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua: in function <...\GTA 140K BY DAPO SHOW\moonloader\Arizona Tools v1.1.lua:23>
[ML] (error) Arizona Tools v1.1.lua: Script died due to an error. (085C11BC)
Посмотреть вложение 79187
Вывело нормально, но только для первого повторения, после того как вывело вторую строку выдает ошибку которая выше
text_buffer поменяй на свой буфер у тебя это test_text_buffer
выше изменил