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

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

  1. LeonidDecart

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

    Регистрация:
    27 июн 2018
    Сообщения:
    49
    Симпатии:
    1
    
    function main
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(0) end
        sampAddChatMessage('{756767}[Скрипт успешно загружен]{FF4500} Создатель: vk.com/decartfamily ', -1)
       
    
    
        waint(-1)
        end
    
    function quest()
    local x,y,z = getCha Coordinates(player Ped)
    local dist = getDistCoord2d(x,y,z,xx,yy,zz)
    if dist < 1.0 then
        sampSendDialogRespond
        setVirtualKeyState
    end
    
    Скрипт не загружается в игру. И помогите сделать так, чтобы при подходе к квестовому персу на аризоне. Бот брал квест. А еще автоматическую активацию всех функций в скрипте.
     
  2. 1V4N M4RK3L0V

    Проверенный

    Регистрация:
    3 дек 2016
    Сообщения:
    623
    Симпатии:
    353
    Где буква "r" в функции getCharCoordinates
    Зачем пробел ставить? Сверхразум что ли?!
    Это ещё что за нахуй?
    Нет такой функции совсем. Или это твоя пользовательская? Откуда берёшь xx, yy, zz .
    Скобки куда дел?
    Ты издеваешься?
    Ты даже этот поток не создаёшь. И у этой функции просрал конец (end).
    Это нормальное дело, если скрипт пишет человек, который нихуя не понимает.

    У меня нервов не хватает, чтобы смотреть на это убожество. Если ты хочешь, чтоб тебе помогли, то скидывай полный код, а не какой-то высер.
    Да и строчка с ошибкой из moonloader.log не помешала бы. А то я не ванга, чтоб знать, какой из факторов ебланизма служит причиной того, что скрипт не работает.
     
    Infernus, Nishikinov и Stepanik537 нравится это.
  3. Liechtenstein

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

    Регистрация:
    15 июн 2018
    Сообщения:
    74
    Симпатии:
    8
    А как взять ник ближайшего игрока?
    :help:
     
    #18133 Liechtenstein, 6 дек 2018
    Последнее редактирование: 6 дек 2018
  4. Harryss

    Harryss Знающий

    Регистрация:
    7 мар 2015
    Сообщения:
    216
    Симпатии:
    17
    Каким образом можно делать записи в реестр на Lua? Существует ли какой-то пример? Хочу найти замену .ini файлу.
     
  5. mrdiimax

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

    Регистрация:
    24 янв 2016
    Сообщения:
    348
    Симпатии:
    43
     
  6. Liechtenstein

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

    Регистрация:
    15 июн 2018
    Сообщения:
    74
    Симпатии:
    8
    if active_update.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(450, 200), imgui.Cond.FirstUseEver)
                    imgui.Begin(u8('Обновление'), nil, imgui.WindowFlags.NoResize)
            imgui.Text(u8'Обнаружено обновление до версии: '..updatever)
            imgui.Separator()
            imgui.TextWrapped(u8("Для установки обновления необходимо подтверждение пользователя, разработчик настоятельно рекомендует принимать обновления ввиду того, что прошлые версии через определенное время отключаются и более не работают."))
            if imgui.Button(u8'Скачать и установить обновление', btn_size) then
                async_http_request('GET', 'https://gitlab.com/ThisCold/arx-helpers/raw/master/ARX-Helper_v0_1b.luac', nil,
                    function(response) -- вызовется при успешном выполнении и получении ответа
                    local f = assert(io.open(getWorkingDirectory() .. '/ARX-Helper_v0_1b.luac', 'wb'))
                    f:write(response.text)
                    f:close()
                    sampAddChatMessage("[Arx-Helper]{FFFFFF} Обновление успешно, перезагружаем скрипт.", 0x046D63)
                    thisScript():reload()
                end,
                function(err) -- вызовется при ошибке, err - текст ошибки. эту функцию можно не указывать
                    print(err)
                    sampAddChatMessage("[Arx-Helper]{FFFFFF} Произошла ошибка при обновлении, попробуйте позже.", 0x046D63)
                    active_update.v = not active_update.v
                    return
                end)
            end
            if imgui.Button(u8'Закрыть', btn_size) then active_update.v = not active_update.v end
            imgui.End()
        end
    Разъясните что как и где.. мне такая штука нужна (чекать обновы моих скриптов которые я пишу и при появлении обновы чтоб он загружал её и тд, можно без imgui)
     
  7. Shamanhcik

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

    Регистрация:
    26 апр 2016
    Сообщения:
    27
    Симпатии:
    3
    Каким образом можно сделать дополнительные анимации, с активацией и деактивацией?
     
  8. laz3r228

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

    Регистрация:
    24 ноя 2016
    Сообщения:
    359
    Симпатии:
    36
    как из слова получить первую букву?
     
  9. ufdhbi

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

    Регистрация:
    3 фев 2015
    Сообщения:
    792
    Симпатии:
    314
    name = "Vasya"
    name:sub(1,1)
     
    laz3r228 нравится это.
  10. vova2999

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

    Регистрация:
    1 янв 2018
    Сообщения:
    40
    Симпатии:
    1
    Расскажите о defCallAdd, о функции, примеры использования и все такое
     
  11. kAerain

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

    Регистрация:
    16 июн 2018
    Сообщения:
    52
    Симпатии:
    9
    Каким способом проверить открыт ли чат? sampIsDialogActive, похоже, другое. Проверяет на диалоговые окна. Просто к определенной клавише закреплена определенная функция и при вводе сообщения в чат данная функция активируется.
     
  12. trefa

    trefa 000011100010111000101010000011100010111100011100
    Проверенный

    Регистрация:
    5 фев 2015
    Сообщения:
    962
    Симпатии:
    382
    Советую поискать ,а не сразу спрашивать.
    https://blast.hk/wiki/lua:sampischatinputactive
     
  13. LuaMaster

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

    Регистрация:
    13 апр 2017
    Сообщения:
    49
    Симпатии:
    2
    как зделать что бы скрипт отключался когда тебе написал администратор? (в моём случае на дрп)
     
  14. 777qwerty777

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

    Регистрация:
    1 май 2017
    Сообщения:
    52
    Симпатии:
    16
    Условие в коде или выгружать скрипт
     
  15. utmpL

    utmpL Знающий

    Регистрация:
    20 апр 2018
    Сообщения:
    255
    Симпатии:
    53
    как отключить/выгрузить скрипт?
     
  16. LuaMaster

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

    Регистрация:
    13 апр 2017
    Сообщения:
    49
    Симпатии:
    2
    Уже нашёл решение
     
  17. utmpL

    utmpL Знающий

    Регистрация:
    20 апр 2018
    Сообщения:
    255
    Симпатии:
    53
    как в sampRegisterChatCommand получить 2 переменные?
    (типо когда команду пишешь, и через пробел значение, то это в переменную можно сделать, а как сделать 2? )
     
  18. 1V4N M4RK3L0V

    Проверенный

    Регистрация:
    3 дек 2016
    Сообщения:
    623
    Симпатии:
    353
    
    thisScript():unload()
    
    Хукать onServerMessage с помощью Samp.Lua, искать нужные слова и оффать.

    
    local param1, param2 = args:match("(.+)%s+(.+)")
     
  19. Supra

    Supra Участник

    Регистрация:
    20 мар 2013
    Сообщения:
    21
    Симпатии:
    21
    Почему не робит?

    
    local memory = require 'memory'
    
    memory.write(0xC812E8, 0.0, 4, false)
    
     
    #18149 Supra, 6 дек 2018
    Последнее редактирование: 6 дек 2018
  20. Frapsy

    Проверенный

    Регистрация:
    4 сен 2016
    Сообщения:
    319
    Симпатии:
    126
    А что должно работать? Ты может и записал данные по этому адресу, но быть может адрес не тот, который нужен тебе.
     
  21. Supra

    Supra Участник

    Регистрация:
    20 мар 2013
    Сообщения:
    21
    Симпатии:
    21
    По идеи должно отключать волны на воде. Адрес тот
     
    #18151 Supra, 7 дек 2018
    Последнее редактирование: 7 дек 2018
  22. utmpL

    utmpL Знающий

    Регистрация:
    20 апр 2018
    Сообщения:
    255
    Симпатии:
    53
    как по нажатию кнопки в имгуи сделать еще одно окно?
     
  23. kAerain

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

    Регистрация:
    16 июн 2018
    Сообщения:
    52
    Симпатии:
    9
    Как удалить файл скрипта через код?
     
  24. Stepanik537

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

    Регистрация:
    5 июл 2017
    Сообщения:
    135
    Симпатии:
    56
    Объявляй несколько буллианов по порядку:
    local firstwindow.v = imgui.ImBool(false)
    local secondwindow.v = imgui.ImBool(false)
    
    function main() ::
    imgui.Process = firstwindow.v or secondwindow.v
    function imgui.OnDrawFrame() ::
    
    if firstwindow.v then 
     -- code
    end
    if secondwindow.v then 
     -- code
    end
    
    ---

    os.remove('путь') forex: os.remove('moonloader/config/myfile.ini')
     
    kAerain и utmpL нравится это.
  25. mrdiimax

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

    Регистрация:
    24 янв 2016
    Сообщения:
    348
    Симпатии:
    43
    Как записать в переменную текст текстдрава и второй вопрос .. как записать в переменную то, что отправил в диалог человек
     
  26. Stepanik537

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

    Регистрация:
    5 июл 2017
    Сообщения:
    135
    Симпатии:
    56
    лови текстдрав с помощью хука
    local myvar = nil
    function sampevents.onShowTextDraw(id, data)
       if id == yourid then
          myvar == data.text
       end
    end;
    
    local myvar = nil
    --в цикле:
    re, button, _, input = sampHasDialogRespond(...) -- вместо ... id диалога
    
    if re and input then
       myvar = input
    end
    
     
  27. mrdiimax

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

    Регистрация:
    24 янв 2016
    Сообщения:
    348
    Симпатии:
    43
    Подскажи еще код пожалуйста на хук диалога, именно функцию и либрари же нужна samp events?
     
  28. Stepanik537

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

    Регистрация:
    5 июл 2017
    Сообщения:
    135
    Симпатии:
    56
    Верно.
    function sampev.onShowDialog(id, style, name, btn1, btn2, text)
     
    mrdiimax нравится это.
  29. kAerain

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

    Регистрация:
    16 июн 2018
    Сообщения:
    52
    Симпатии:
    9
    Каталог (директорию) таким же способом возможно удалить?
     
  30. utmpL

    utmpL Знающий

    Регистрация:
    20 апр 2018
    Сообщения:
    255
    Симпатии:
    53
    если
    нажаты одновременно л.альт + 1
    тогда...

    как сделать?
     
  31. LeonidDecart

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

    Регистрация:
    27 июн 2018
    Сообщения:
    49
    Симпатии:
    1
    Как сделать автопринятие квестов на аризоне?
     
  32. Stepanik537

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

    Регистрация:
    5 июл 2017
    Сообщения:
    135
    Симпатии:
    56
    таким же способом, os.remove. Если не удаляется, то может быть недостаток прав, тести: ok, message = os.remove(путь); print(message)
    upload_2018-12-7_16-42-45.png

    ---

    local key = require 'vkeys'
    if isKeyDown(key.VK_MENU) and wasKeyPressed(key.VK_1) then
    --code
    end

    подключаешь библиотеку samp.events, отлавливаешь диалог хуком, делаешь действие:
    
    local sampev = require 'lib.samp.events'
    
    function sampev.onShowDialog(id, style, name, btn1, btn2, text)
       if id == questID then -- questID - твой диалог с квестами
         sampSendDialogResponse(int id, int button, int listitem, zstring input) -- заполняешь под себя
       end
    end
    
    получить айди диалога можно этим же хуком, вне условия пишешь: sampAddChatMessage(id, -1)
     
    kAerain нравится это.
  33. mrdiimax

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

    Регистрация:
    24 янв 2016
    Сообщения:
    348
    Симпатии:
    43
    Что делать если окно имгуи не закрывается на крест?
     
  34. Stepanik537

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

    Регистрация:
    5 июл 2017
    Сообщения:
    135
    Симпатии:
    56
    указал не тот параметр в imgui.Begin(): должна передаваться bool-переменная окна

    if main_window.v then
    imgui.Begin('okno', main_window)
     
  35. utmpL

    utmpL Знающий

    Регистрация:
    20 апр 2018
    Сообщения:
    255
    Симпатии:
    53
    как набрать сообщение в чат, но не отправлять?
    (я про это)
    upload_2018-12-7_15-38-25.png