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

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

  1. xISRAPILx

    xISRAPILx Перепишу свою жизнь на PHP
    Проверенный

    Регистрация:
    27 фев 2018
    Сообщения:
    220
    Симпатии:
    100
    Я даже зажимал до появления следующей подсказки. Всё бестолку. :D Потом как-нибудь ещё раз попробую.
     
  2. Natami

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

    Регистрация:
    2 ноя 2018
    Сообщения:
    339
    Симпатии:
    21
    sampAddChatMessage("{цвет}text", -1) чет не понял, ты так хотел?
     
  3. xISRAPILx

    xISRAPILx Перепишу свою жизнь на PHP
    Проверенный

    Регистрация:
    27 фев 2018
    Сообщения:
    220
    Симпатии:
    100
    Тоже заметил, возможно дело в SAMP.lua. Цвет получается темнее.
     
  4. Wolfssohn

    Wolfssohn Участник

    Регистрация:
    2 дек 2017
    Сообщения:
    6
    Симпатии:
    0
    function sampev.onServerMessage(color, text)
        sampSendChat("/stats")
    end
    Когда я отсылаю какую-то команду во время "перехвата" сообщения с чата, то это сообщение в итоге в чате не появится, и в чатлоге его не будет. Получается я своим запросом sampSendChat("/stats") как то мешаю ему и входящая строчка просто не попадает на экран, сьедаеться.
    Шо делать? Какие варики пофиксить этот прикол? и важно чтобы перед sampSendChat("/stats") небыло вообще никаких задержек, абсолютно.

    я хотел передать функции тот цвет, который поймал из события. Но он нихера совсем не тот, который должен быть.
     
  5. Petr_Sergeevich

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

    Регистрация:
    25 июн 2017
    Сообщения:
    428
    Симпатии:
    105
    
    function sampev.onServerMessage(color, message)
        print(("{%06X}%s"):format(bit.rshift(color, 8), message))
    end
    
     
  6. astynk

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

    Регистрация:
    21 окт 2018
    Сообщения:
    186
    Симпатии:
    81
    Не будет работать как минимум из-за wait без потока. Как правильно обрабатывать нажатия кнопок в диалоге - пример есть тут https://blast.hk/wiki/lua:samphasdialogrespond
    И делать это надо вне sampRegisterChatCommand
     
  7. Wolfssohn

    Wolfssohn Участник

    Регистрация:
    2 дек 2017
    Сообщения:
    6
    Симпатии:
    0
    Вот такое решение, спасибо.
    function sampev.onServerMessage(color, text)
        sampAddChatMessage(text, bit.rshift(color, 8))
    end
    
    ---
    function sampev.onServerMessage(color, text)
        sampSendChat("/stats")
    end
    Когда я отсылаю какую-то команду во время "перехвата" сообщения с чата, то это сообщение в итоге в чате не появится, и в чатлоге его не будет. Получается я своим запросом sampSendChat("/stats") как то мешаю ему и входящая строчка просто не попадает на экран, сьедаеться.
    Шо делать? Какие варики пофиксить этот прикол? и важно чтобы перед sampSendChat("/stats") небыло вообще никаких задержек, абсолютно.


    Вот такое решение:
    function sampev.onServerMessage(color, text)
        sampSendChat("/stats")
        sampAddChatMessage(text, bit.rshift(color, 8))
    end
    в каждом подобном случае после команды дорисовываю исчезнувшую чат строку с помощью sampAddChatMessage
    Спасибо.
     
    #21462 Wolfssohn, 11 фев 2019
    Последнее редактирование: 11 фев 2019
  8. wizX

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

    Регистрация:
    27 янв 2019
    Сообщения:
    183
    Симпатии:
    41
    https://blast.hk/wiki/lua:render - почитай про рендер
     
    Natami нравится это.
  9. 1V4N M4RK3L0V

    Проверенный

    Регистрация:
    3 дек 2016
    Сообщения:
    626
    Симпатии:
    353
    Бляяя, можно же было просто создавать поток lua_thread.create и с небольшой задержкой отправлять этот твой /stats
     
    WebDim нравится это.
  10. FrosJ

    FrosJ Участник

    Регистрация:
    8 ноя 2018
    Сообщения:
    13
    Симпатии:
    0
    Как сделать так чтобы когда в чат приходит какое-то сообщение нажималась какая то кнопка?
     
  11. madrasso

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

    Регистрация:
    27 июл 2016
    Сообщения:
    486
    Симпатии:
    66
    Плохо пробовал :hah::monkey:

    local hook = require('lib.samp.events')
    
    
    function hook.onServerMessage(color, text)
        if text:find("text") then setGameKeyState(id, state) end
    end
     
  12. Shuma

    Shuma Новичок

    Регистрация:
    21 янв 2019
    Сообщения:
    2
    Симпатии:
    0
    Не работает всёровно, нужно чтобы нажав на"U", у меня заменялось на"N"
     
  13. FBenz

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

    Регистрация:
    12 дек 2018
    Сообщения:
    89
    Симпатии:
    3
    Как заставить sampev.onServerMessage работать в паузе корректно?
    Вот код:
    script_properties('work-in-pause')
    
    require "lib.moonloader"
    local sampev = require 'lib.samp.events'
    
    function sampev.onServerMessage(color, text)
    
    if string.find(text, 'Доров, братишка') then
      lua_thread.create(function ()
        wait(1)
           rtext = string.gsub(text, '{%x+}', '')
           sampAddChatMessage(rtext)
      end)
     end
    
    end
    Как итог, срабатывает, когда приходит строка, подходящая по условию, НО почему-то выдает строку совершенно иную, если строка пришла в Esc. То есть приходит строка "Даров, братишка" и наже строка "Ты плохой парень", если быть в esc в это время, то выведет сообщение "Ты плохой парень". То бишь последнюю строку, какая есть в чате.

    Создается ощущение, что функция в Esc срабатывает, но морозится и продолжает работу уже после выхода с ескейпа. Хотя я поставил script_properties('work-in-pause'). Вне ескейпа все работает шедеврально.

    Как пролечить? Помогите.
     
    #21468 FBenz, 11 фев 2019
    Последнее редактирование: 11 фев 2019
  14. Di3

    Di3 Знающий

    Регистрация:
    8 сен 2017
    Сообщения:
    225
    Симпатии:
    10
    Как менять координаты кнопки imgui.Button() относительно от другой кнопки/текста. Т.е координаты кнопки менялись относительно длины текста.
     
  15. DeMoN3D

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

    Регистрация:
    27 окт 2015
    Сообщения:
    159
    Симпатии:
    11
    после текста, перед кнопкой
    
    imgui.SameLine()
    
     
  16. Pakulichev

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

    Регистрация:
    28 окт 2017
    Сообщения:
    401
    Симпатии:
    110
    Объясните мне, дауну, что здесь не так и почему чертов диалог по факту не закрывается?
    При этом условие выполняется и пишет, что диалог закрылся. По факту в игре он остаётся открытым.
    Не надо рассказывать про чудесные свойства return'a, мне нужно отправлять данные по факту, а не закрывать его.
    [​IMG]
     
    #21471 Pakulichev, 11 фев 2019
    Последнее редактирование: 11 фев 2019
  17. Di3

    Di3 Знающий

    Регистрация:
    8 сен 2017
    Сообщения:
    225
    Симпатии:
    10
    Я так и делал,у меня почему то от начала окна двигается (
     
  18. Pakulichev

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

    Регистрация:
    28 окт 2017
    Сообщения:
    401
    Симпатии:
    110
    Без параметров нужно указывать. Пример.
    imgui.Text()
    imgui.SameLine()
    imgui.Text()
    Текст будет на одной линии, расстояние между ними будет 10 пикселей.
     
  19. Di3

    Di3 Знающий

    Регистрация:
    8 сен 2017
    Сообщения:
    225
    Симпатии:
    10
    Все сябки)))
     
  20. ufdhbi

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

    Регистрация:
    3 фев 2015
    Сообщения:
    789
    Симпатии:
    312
    ну типо делай sampSendDialogResponse, а на след строке return false
     
  21. Di3

    Di3 Знающий

    Регистрация:
    8 сен 2017
    Сообщения:
    225
    Симпатии:
    10
    Можно ли менять координаты текста внутри кнопки imgui.button?

    Как можно перенести текст на другую строку если он превышает определенное количество символов? в imgui.text()

    И как изменить длину и толщиту imgui.InputText()
     
    #21476 Di3, 11 фев 2019
    Последнее редактирование: 11 фев 2019
  22. Pakulichev

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

    Регистрация:
    28 окт 2017
    Сообщения:
    401
    Симпатии:
    110
    Вообще херня какая-то с sampSendDialogResponse. Через while true do пытался закрывать, тоже не помогает.
     
  23. xISRAPILx

    xISRAPILx Перепишу свою жизнь на PHP
    Проверенный

    Регистрация:
    27 фев 2018
    Сообщения:
    220
    Симпатии:
    100
    Возможно. Оно в начале раз 3 нажимало и всё :(

    Попробуй
    sampCloseCurrentDialogWithButton(1)
     
  24. DeMoN3D

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

    Регистрация:
    27 окт 2015
    Сообщения:
    159
    Симпатии:
    11
    
    imgui.PushItemWidth(100) -- со значением играй
    -- кнопка
    imgui.PopItemWidth()
    
     
  25. Di3

    Di3 Знающий

    Регистрация:
    8 сен 2017
    Сообщения:
    225
    Симпатии:
    10
    А есть флаг чтобы imgui.inputtext() сразу было активно для ввода при открытия?
     
  26. madrasso

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

    Регистрация:
    27 июл 2016
    Сообщения:
    486
    Симпатии:
    66
    Повторяющиеся нажатия по новому не приходят, если будет, например, 3 раза в ряд лкм, то инфа придёт только о одном.
     
  27. Pakulichev

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

    Регистрация:
    28 окт 2017
    Сообщения:
    401
    Симпатии:
    110
    Это просто гениально. Говорю, что нужно данные отправить, а не закрыть диалог. Закрытие просто для примера дал.
     
  28. astynk

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

    Регистрация:
    21 окт 2018
    Сообщения:
    186
    Симпатии:
    81
    Сталкивался с подобной проблемой, помог только перенос всех взаимодействий с диалогом в отдельный поток с задержкой (можно 0мс).

    
    function events.onShowDialog()
        if condition then
            lua_thread.create(function ()
                wait(1)
                -- do something here...
            end)
        end
        -- return не писать, иначе не будет работать код из потока
    end
    Вроде бы самп аддон конфликтует с диалогами как-то. Или тупо баг в самом мунлоадере.
     
  29. ufdhbi

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

    Регистрация:
    3 фев 2015
    Сообщения:
    789
    Симпатии:
    312
    зачем в цикле, в хуке отправил ответ и все
     
  30. NikoSaga

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

    Регистрация:
    10 авг 2015
    Сообщения:
    42
    Симпатии:
    0
    Почему кода данный код срабатывает, Enter в игре не нажимается? Логичнее всего даже сказать, н.. он не срабатывает
    
    setVirtualKeyDown(VK_RETURN, true)
            wait(200)
            setVirtualKeyDown(VK_RETURN, false)
    
    .
    [​IMG]Imgur(https://imgur.com/a/ksJuoIk)
     
  31. BBooGG

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

    Регистрация:
    22 фев 2015
    Сообщения:
    142
    Симпатии:
    134
    function sampev.onShowDialog(id,style,title,btn1,btn2,text)
        if text:find('Точное') then
            sampAddChatMessage('Диалог',-1)
            sampSendDialogResponse(id, 1, -1, '')
            return false
        end
    end
    local vk = requilre('lib.vkeys')
    setVirtualKeyDown(vk.VK_RETURN, true)
    wait(200)
    setVirtualKeyDown(vk.VK_RETURN, false)
     
  32. NikoSaga

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

    Регистрация:
    10 авг 2015
    Сообщения:
    42
    Симпатии:
    0
    Перестал скрипт вообще работать
     
  33. xISRAPILx

    xISRAPILx Перепишу свою жизнь на PHP
    Проверенный

    Регистрация:
    27 фев 2018
    Сообщения:
    220
    Симпатии:
    100
    Решил проверить твою догадку и что-то тут не так.
    [21:32:17] • {00CC00}[Успешно] {ffffff}Вы закинули удочку
    
    [21:32:23] • {FFC800}[Подсказка] {ffffff}Поплавок начал колебаться
    
    [21:32:23] • {FFC800}[Подсказка] {ffffff}Используйте кнопки выстрела или прицела для вытягивания рыбы
    
    [21:32:23] PED_LOCK_TARGET with time 3000
    
    [21:32:23] PED_LOCK_TARGET with time 3000
    
    [21:32:28] Нажата правая кнопка
    
    [21:32:28] PED_LOCK_TARGET with time 3000
    
    [21:32:29] Нажата правая кнопка
    
    [21:32:29] PED_LOCK_TARGET with time 3000
    
    [21:32:30] Нажата правая кнопка
    
    [21:32:31] PED_LOCK_TARGET with time 3000
    
    [21:32:31] Нажата правая кнопка
    
    [21:32:31] PED_LOCK_TARGET with time 3000
    
    [21:32:32] Нажата правая кнопка
    
    [21:32:32] PED_LOCK_TARGET with time 3000
    
    [21:32:32] Нажата правая кнопка
    
    [21:32:33] PED_FIREWEAPON with time 3000
    
    [21:32:33] Нажата левая кнопка
    
    [21:32:33] PED_LOCK_TARGET with time 3000
    
    [21:32:34] Нажата правая кнопка
    
    [21:32:34] PED_FIREWEAPON with time 3000
    
    [21:32:34] Нажата левая кнопка
    
    [21:32:35] PED_FIREWEAPON with time 3000
    
    [21:32:35] Нажата левая кнопка
    
    [21:32:35] PED_FIREWEAPON with time 3000
    
    [21:32:35] Нажата левая кнопка
    
    [21:32:36] PED_FIREWEAPON with time 3000
    
    [21:32:36] Нажата левая кнопка
    
    [21:32:36] PED_LOCK_TARGET with time 3000
    
    [21:32:37] Нажата правая кнопка
    
    [21:32:37] PED_FIREWEAPON with time 3000
    
    [21:32:37] Нажата левая кнопка
    
    [21:32:37] PED_FIREWEAPON with time 3000
    
    [21:32:38] Нажата левая кнопка
    
    [21:32:38] PED_FIREWEAPON with time 3000
    
    [21:32:39] Нажата левая кнопка
    
    [21:32:39] PED_LOCK_TARGET with time 3000
    
    [21:32:39] Нажата правая кнопка
    
    [21:32:39] PED_LOCK_TARGET with time 3000
    
    [21:32:40] Нажата правая кнопка
    
    [21:32:40] PED_LOCK_TARGET with time 3000
    
    [21:32:40] Нажата правая кнопка
    
    [21:32:40] PED_FIREWEAPON with time 3000
    
    [21:32:41] Нажата левая кнопка
    
    [21:32:41] PED_LOCK_TARGET with time 3000
    
    [21:32:41] Нажата правая кнопка
    
    [21:32:42] PED_FIREWEAPON with time 3000
    
    [21:32:42] Нажата левая кнопка
    
    [21:32:42] PED_LOCK_TARGET with time 3000
    
    [21:32:42] Нажата правая кнопка
    
    [21:32:43] PED_FIREWEAPON with time 3000
    
    [21:32:43] Нажата левая кнопка
    
    [21:32:43] PED_LOCK_TARGET with time 3000
    
    [21:32:43] Нажата правая кнопка
    
    [21:32:44] • {00CC00}[Успешно] {ffffff}Вы поймали рыбу: {1fc41f}Карась{FFFFFF}. Вес: {1fc41f}1.37 кг{00cdcd}.
    
    [21:32:44] PED_LOCK_TARGET with time 3000
     
  34. f0rtrix

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

    Регистрация:
    25 фев 2017
    Сообщения:
    176
    Симпатии:
    11
    По какой причине imgui окно не реагирует на мышку, оно появляется, но его нельзя перемещать, кнопки не работают
     
  35. NikoSaga

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

    Регистрация:
    10 авг 2015
    Сообщения:
    42
    Симпатии:
    0
    Теперь работает, но энтр всё так и не нажимается