Вопросы по Lua скриптингу

Тема в разделе "Lua", создана пользователем FYP, 8 авг 2016.

  1. BH:Pchela

    BH:Pchela Активный участник

    Регистрация:
    17 авг 2015
    Сообщения:
    27
    Симпатии:
    0
    Как делать команды с двумя аргументами? К примеру, /uninvte [id] [reason] ?
     
  2. social enemy

    social enemy $$$$$$$$$$$$$$$$$$$$$$$
    Проверенный

    Регистрация:
    2 авг 2018
    Сообщения:
    625
    Симпатии:
    212
    здрасте, есть 6 чисел, к примеру 123456, как эти числа разделить? было 123456, сделать 1, чтобы с ней работать можно было, 2, 3, 4, 5, 6?
     
  3. utmpL

    utmpL Знающий

    Регистрация:
    20 апр 2018
    Сообщения:
    266
    Симпатии:
    55
    function uninvte(param)
        id, reason = param:match("(.+)%s+(.+)")
        sampSendChat('/uninvite '..id..' '..reason)
    end
     
    BH:Pchela нравится это.
  4. ufdhbi

    ufdhbi уфдхби
    Проверенный

    Регистрация:
    3 фев 2015
    Сообщения:
    801
    Симпатии:
    319
    local tNumbers = {}
    
    for int in ("123456"):gmatch("%d") do
        table.insert(tNumbers, tonumber(int))
    end
    в таблице будет каждая цифра по отдельности
     
    social enemy нравится это.
  5. Glockersik

    Glockersik Постоянный участник

    Регистрация:
    6 дек 2018
    Сообщения:
    85
    Симпатии:
    3
    Почему не работает??? Окошко пропало тут
    function main()
        while not isSampAvailable() do wait(100) end
        wait(-1)
    end
    
    function onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
        if dialogTitle:find("Вход") then
    
                sampSendDialogResponse(dialogId, 1, 0, "")
                sampSendChat('/log business')
            end
        return false
    
    end
    end
     
  6. hhti

    hhti Свой человек

    Регистрация:
    27 авг 2018
    Сообщения:
    320
    Симпатии:
    28
    ребята как сделать чтобы шёл текст и в какой-то момент он останавливается и если нажать допустим кнопку "U" он продолжит один текст, а если нажать "L" то другой?
     
  7. Natami

    Natami Свой человек

    Регистрация:
    2 ноя 2018
    Сообщения:
    363
    Симпатии:
    21
    убери return false
     
  8. Phelarmad

    Phelarmad Интересующийся

    Регистрация:
    20 июл 2017
    Сообщения:
    182
    Симпатии:
    22
    Тебе уже 3 раза ответили. УБЕРИ RETURN FALSE
     
    utmpL нравится это.
  9. Glockersik

    Glockersik Постоянный участник

    Регистрация:
    6 дек 2018
    Сообщения:
    85
    Симпатии:
    3
    Все рано не работает

    Окей , почему не работает?
    function main()
        while not isSampAvailable() do wait(100) end
        wait(-1)
    end
    
    function onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
        if dialogTitle:find("Вход") then
    
                sampSendDialogResponse(dialogId, 1, 0, "")
                sampSendChat('/log')
            end
       
    
    end
    
     
  10. hhti

    hhti Свой человек

    Регистрация:
    27 авг 2018
    Сообщения:
    320
    Симпатии:
    28
    если ты хочешь диалоговое окно создать то вот:
    function main()
      repeat wait(0) until isSampAvailable()
      wait(2000)
      sampRegisterChatCommand('dialog', dialog)
      sampAddChatMessage('Loaded!', -1)
      while true do
        wait(0)
      end
    end
    
    function dialog()
      sampShowDialog(1337, '{00FF00}Заголовок', '{FFFF00}TEST', 'button1', 'button3', 0)
      lua_thread.create(checker)
    end
    
    function checker()
      while sampIsDialogActive() do
        wait(0)
        local result, button, list, input = sampHasDialogRespond(1337)
        if result and button == 1 then
          sampAddChatMessage('Как дела?', -1)
        elseif result and button == 0 then
          sampAddChatMessage('Ух, кукуку', -1)
        end
      end
    end  
     
  11. Glockersik

    Glockersik Постоянный участник

    Регистрация:
    6 дек 2018
    Сообщения:
    85
    Симпатии:
    3
    Не , мне нужно нажать на левую кнопку
     
  12. Natami

    Natami Свой человек

    Регистрация:
    2 ноя 2018
    Сообщения:
    363
    Симпатии:
    21
    Кодировка Windows 1251?

    Вообщем сделал, что при нажатии на кнопку "Дигл", пишется команда /gun и берет 100пт.
    Как реализовать подобное на М4, ведь там выберется в диалоге 3 пункт и 100 пт, а я хочу чтобы 6 пункт и 200 пт.. (Это для М4)

    if imgui.Button(u8"Desert Eagle") then
        sampSendChat("/gun")
    end
    
    function sampev.onShowDialog(id, style, title, button1, button2)
        if title:find('Собираем') then
            sampSendDialogResponse(id, 1, 3, '100')
            return false
        end
    end
    
     
  13. m3448671

    m3448671 Активный участник

    Регистрация:
    25 ноя 2018
    Сообщения:
    35
    Симпатии:
    4
    Не работает, 3D текст не изменился.
     
  14. BlackGoblin

    BlackGoblin Интересующийся

    Регистрация:
    13 май 2018
    Сообщения:
    122
    Симпатии:
    14
    Судя по всему так)
     
  15. Natami

    Natami Свой человек

    Регистрация:
    2 ноя 2018
    Сообщения:
    363
    Симпатии:
    21
    Там будет 2 кнопки (deagle и м4), а не 1.
     
  16. TheDed

    TheDed Постоянный участник

    Регистрация:
    22 авг 2018
    Сообщения:
    96
    Симпатии:
    7
    Баг с Имгуи.
    Когда делаю 2+ InputText'a первый из них работает нормально, но у второго такое же значение как и у первого + нельзя изменить значение во втором (нажать на поле для ввода и вписать что-то).
    Код:
    
    one = imgui.ImBuffer(15)
    two = imgui.ImBuffer(15)
    imgui.Text(u8'Первый', imgui.SetCursorPosX(20))
    if imgui.InputText(u8'', one, imgui.SetCursorPosX(20)) then
    print(one.v)
    end
    imgui.Text(u8'Второй', imgui.SetCursorPosX(20))
    if imgui.InputText(u8'', two, imgui.SetCursorPosX(20)) then
    print(two.v)
    end
    
     
  17. Petr_Sergeevich

    Petr_Sergeevich Друг форума

    Регистрация:
    25 июн 2017
    Сообщения:
    511
    Симпатии:
    140
    Измени название инпутов (u8("##разныйтекст"))
     
    TheDed нравится это.
  18. social enemy

    social enemy $$$$$$$$$$$$$$$$$$$$$$$
    Проверенный

    Регистрация:
    2 авг 2018
    Сообщения:
    625
    Симпатии:
    212
    а если это в хуке? то что, вот так?
    local tNumbers = {}
    
    for int in (txt):gmatch("%d") do
        table.insert(tNumbers, tonumber(int))
    end
     
  19. ufdhbi

    ufdhbi уфдхби
    Проверенный

    Регистрация:
    3 фев 2015
    Сообщения:
    801
    Симпатии:
    319
    txt:gmatch
     
    social enemy нравится это.
  20. doradojka

    doradojka Участник

    Регистрация:
    5 сен 2018
    Сообщения:
    20
    Симпатии:
    0
    Как 2 скрипта, которые скрывает 2 разных чата, записать в одном файле?
    В файлах 5 и 25 строках код цвета строк, которые скрывает скрипт.


    
    sf = require 'sampfuncs'
    local q = require 'lib.samp.events'
    isMenu = false
    _colors = {}
    for line in io.lines('moonloader\\colors\\reklama.txt') do
        table.insert(_colors, tonumber(line))
    end
    function main()
        repeat wait(0) until isSampAvailable()
        sampRegisterChatCommand('reklama',
            function()
                disable = not disable
            end)
        wait(-1)
    end
    function q.onServerMessage(color, text)
        if disable then
            for i = 1, #_colors do
                if color == _colors[i] then return false end
            end
        end
    end
    -- начала второго скрипта
    _colors = {}
    for line in io.lines('moonloader\\colors\\ach.txt') do
        table.insert(_colors, tonumber(line))
    end
    function main()
        repeat wait(0) until isSampAvailable()
        sampRegisterChatCommand('ach',
            function()
                disable = not disable
            end)
        wait(-1)
    end
    function q.onServerMessage(color, text)
        if disable then
            for i = 1, #_colors do
                if color == _colors[i] then return false end
            end
        end
    end
    end
     
  21. Natami

    Natami Свой человек

    Регистрация:
    2 ноя 2018
    Сообщения:
    363
    Симпатии:
    21
    Крч есть серверный диалог и там "Статистика\Репорт\Настройки", как мне отсканировать пункт "репорт", чтобы выполнилось действие
     
  22. crybaby

    crybaby TIME IS TICKIN.
    Проверенный

    Регистрация:
    29 июл 2017
    Сообщения:
    720
    Симпатии:
    211
    text = 'Статистика\Репорт\Настройки'
    print(text:match('.+\(.+)\.+'))
     
  23. Bogach

    Bogach Друг форума

    Регистрация:
    9 ноя 2015
    Сообщения:
    519
    Симпатии:
    32
    Ребят. Есть скрипт, в котором реализована такая система: Не открывая чат, набираешь (например) id игрока на нумпаде и нажимаешь плюсик, после на кнопку x можно открыть меню взаимодействия с тем игроком, чей id ты указал на нумпаде. Как такое реализовывается, не подскажите?
     
  24. crybaby

    crybaby TIME IS TICKIN.
    Проверенный

    Регистрация:
    29 июл 2017
    Сообщения:
    720
    Симпатии:
    211
    sf = require 'sampfuncs'
    local q = require 'lib.samp.events'
    isMenu = false
    _colors = {}
    _colors2 = {}
    
    for line in io.lines('moonloader\\colors\\reklama.txt') do
        table.insert(_colors, tonumber(line))
    end
    for line2 in io.lines('moonloader\\colors\\ach.txt') do
        table.insert(_colors2, tonumber(line2))
    end
    
    function main()
        repeat wait(0) until isSampAvailable()
        sampRegisterChatCommand('reklama', function() disable = not disable end)
        sampRegisterChatCommand('ach', function() disable2 = not disable2 end)
        wait(-1)
    end
    
    function q.onServerMessage(color, text)
        if disable then
            for i = 1, #_colors do
                if color == _colors[i] then return false end
            end
        end
        if disable2 then
            for i = 1, #_colors2 do
                if color == _colors2[i] then return false end
            end
        end
    end
    еч
     
  25. madrasso

    madrasso Свой человек

    Регистрация:
    27 июл 2016
    Сообщения:
    496
    Симпатии:
    73
    sf = require 'sampfuncs'
    local q = require 'lib.samp.events'
    _colorsReklama = {}
    _colorsAch = {}
    arrays()
    function main()
        repeat wait(0) until isSampAvailable()
        sampRegisterChatCommand('ach', function() disable1 = not disable1 end)
        sampRegisterChatCommand('reklama', function() disable = not disable end)
        wait(-1)
    end
    
    function q.onServerMessage(color, text)
        if disable then
            for i = 1, #_colorsReklama do
                if color == _colorsReklama[i] then return false end
            end
        elseif disable1 then
            for i = 1, #_colorsAch do
                if color == _colorsAch[i] then return false end
            end
        end
    end
    
    function arrays()
        for line in io.lines('moonloader\\colors\\reklama.txt') do
            table.insert(_colorsReklama, tonumber(line))
        end
        for line in io.lines('moonloader\\colors\\ach.txt') do
            table.insert(_colorsAch, tonumber(line))
        end
    end
     
  26. Natami

    Natami Свой человек

    Регистрация:
    2 ноя 2018
    Сообщения:
    363
    Симпатии:
    21
    Тип так?
    function sampev.onShowDialog(id, style, title, button1, button2, text)
    text = 'Desert Eagle\M4'
    if text:find('Desert Eagle') then
        lua_thread.create(function()
        wait(100)
        sampSendDialogResponse(id, 1, 3, '100')
    end)
     
  27. crybaby

    crybaby TIME IS TICKIN.
    Проверенный

    Регистрация:
    29 июл 2017
    Сообщения:
    720
    Симпатии:
    211
    в твоём коде если он в тексте найдет дигл то выполнит действие


    как можно решить конфликт имгуи и ассинхронных запросов?
     
  28. Natami

    Natami Свой человек

    Регистрация:
    2 ноя 2018
    Сообщения:
    363
    Симпатии:
    21
    Я и спрашиваю,чтобы он в диалоге искал пункт "дигл".
    Диалог выглядит,как обычное /menu на серверах
     
  29. madrasso

    madrasso Свой человек

    Регистрация:
    27 июл 2016
    Сообщения:
    496
    Симпатии:
    73
    function sampev.onShowDialog(id, style, title, button1, button2, text)
        if text:find('Desert Eagle') then
            sampSendDialogResponse(id, 1, 3, '100')
            return false
        end
    end
    
    
     
  30. suouca

    suouca Постоянный участник

    Регистрация:
    21 ноя 2018
    Сообщения:
    67
    Симпатии:
    8
    как при помощи setGameKeyState(int key, int state) я могу сесть в авто за место пассажира ?
    Если это невозможно, то какие есть альтернативы помимо использования setVirtualKeyDown(int vkey, bool down) ?
     
  31. Natami

    Natami Свой человек

    Регистрация:
    2 ноя 2018
    Сообщения:
    363
    Симпатии:
    21
    Патроны (100) в диалог не вводятся
     
  32. madrasso

    madrasso Свой человек

    Регистрация:
    27 июл 2016
    Сообщения:
    496
    Симпатии:
    73
    Какой сервер?
     
  33. suouca

    suouca Постоянный участник

    Регистрация:
    21 ноя 2018
    Сообщения:
    67
    Симпатии:
    8
    Подскажите, какое число в keysData означает "G" ?
     
  34. Natami

    Natami Свой человек

    Регистрация:
    2 ноя 2018
    Сообщения:
    363
    Симпатии:
    21
    Не важно, при нажатии на "Дигл" открывается еще диалог где ты водишь кол-во пт
     
  35. Glockersik

    Glockersik Постоянный участник

    Регистрация:
    6 дек 2018
    Сообщения:
    85
    Симпатии:
    3
    Почему не работает??? Окошко пропало тут
    function main()
        while not isSampAvailable() do wait(100) end
        wait(-1)
    end
    
    function onShowDialog(dialogId, dialogStyle, dialogTitle, okButtonText, cancelButtonText, dialogText)
        if dialogTitle:find("Вход") then
    
                sampSendDialogResponse(dialogId, 1, 0, "")
                sampSendChat('/log')
            end
      
    
    end