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

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

  1. V3RC3TT1

    V3RC3TT1 Lua Dev | vk.me/mytarev2019
    Проверенный

    Регистрация:
    3 дек 2016
    Сообщения:
    334
    Симпатии:
    196
    
    local --[[float]] posX1, --[[float]] posY1, --[[float]] posZ1 = getCharCoordinates(playerPed)
    local --[[float]] posX2, --[[float]] posY2, --[[float]] posZ2 = getCharCoordinates(LeftPed2)
    local --[[float]] distance = getDistanceBetweenCoords3d(posX1, posY1, posZ1, posX2, posY2, posZ2)
    
     
  2. #Northn

    #Northn Знаток

    Регистрация:
    10 авг 2017
    Сообщения:
    304
    Симпатии:
    55
    Как использовать imgui.Selectable? Полазил в чужих кодах, и всё, чего добился - краш.
     
  3. imring

    imring колечконуп
    Проверенный

    Регистрация:
    3 авг 2016
    Сообщения:
    930
    Симпатии:
    477
    -- script: spur imgui 9.0
    imgui.BeginChild(1, imgui.ImVec2(imgui.GetWindowWidth()/5, 0), true)
    if imgui.Selectable(u8(language.names[4])) then add_spur = true end
    if imgui.Selectable(u8(language.names[18])) then
        edit_pos_x.v = config.pos.x
        edit_pos_y.v = config.pos.y
        edit_size_x.v = config.size.x
        edit_size_y.v = config.size.y
        -- other code
    end
    imgui.EndChild()
     
  4. qojqva

    qojqva Пользователь

    Регистрация:
    18 янв 2017
    Сообщения:
    23
    Симпатии:
    0
  5. Jason2222

    Jason2222 Известный пользователь

    Регистрация:
    20 янв 2018
    Сообщения:
    72
    Симпатии:
    0
    Подскажите в чем ошибка, код ниже, когда вызываю диалог и выбираю из спика, сразу не высвечивается новое окно, а когда заново вызываю первое окно - открывается второе окно (которое я выбрал из списка). Как исправить можно? Заранее спасибо!

    
    function main()
    -- разыне проверки
    sampRegisterChatCommand('start', start)
    wait(-1)
    end
    
    function start()
        sampShowDialog(100, 'Menu', '1. First\n2. Second\0', 'Выбрать', 'Закрыть', 2)
        result, button, list, input = sampHasDialogRespond(100)
            if result and button == 1 then
                if list == 0 then firstfunc()
                elseif list == 1 then secondfunc()
                end
    end
    end
    
    function firstfunc()
    sampShowDialog(8989, "", 'Hello\n\tMy name is Johathan\0', "Закрыть", "", 0)
    end
    
     
  6. qojqva

    qojqva Пользователь

    Регистрация:
    18 янв 2017
    Сообщения:
    23
    Симпатии:
    0
  7. Shuffle

    Shuffle Знаток

    Регистрация:
    11 мар 2018
    Сообщения:
    324
    Симпатии:
    96
    sampHasDialogRespond в цикл, до result
    imgui
     
    Jason2222 нравится это.
  8. Trefa_

    Trefa_ Знаток

    Регистрация:
    5 фев 2015
    Сообщения:
    157
    Симпатии:
    21
    Как узнать куда целится локальный игрок (т.е. я)?
     
  9. Shuffle

    Shuffle Знаток

    Регистрация:
    11 мар 2018
    Сообщения:
    324
    Симпатии:
    96
    float angle = getCharHeading(Ped ped)
     
  10. Trefa_

    Trefa_ Знаток

    Регистрация:
    5 фев 2015
    Сообщения:
    157
    Симпатии:
    21
    Возвращает Z-угол(поворот) персонажа. ХМ
     
  11. Shuffle

    Shuffle Знаток

    Регистрация:
    11 мар 2018
    Сообщения:
    324
    Симпатии:
    96
    Так а что ты хотел
     
  12. Shuffle

    Shuffle Знаток

    Регистрация:
    11 мар 2018
    Сообщения:
    324
    Симпатии:
    96
    Если занопить сетплееранимайтион, то со третьего лица будет видна анимка?
    И как занопить сетплееранимайтион?
     
  13. DonHomka

    DonHomka Lua Developer | http://vk.com/DonHomka
    Проверенный

    Регистрация:
    8 ноя 2017
    Сообщения:
    1.259
    Симпатии:
    638
    Нет не должна проигрываться. Работает это так - сервер говорит проиграть - ты получаешь сет аниматион - отправляешь что у тебя идет анимка - все получают твою инфу.
    Если прервать цепь, никто не увидит анимку.

    Нопнуть в SAMP.Lua )
     
    Shuffle нравится это.
  14. Shuffle

    Shuffle Знаток

    Регистрация:
    11 мар 2018
    Сообщения:
    324
    Симпатии:
    96
    function onApplyPlayerAnimation(id, _, _, _, _, _, _, _, _)
        _, pid = sampGetPlayerIdByCharHandle(playerPed)
       if id == pid then return false end
    end
    Проверил, работает, спасибо
    Так получается?
     
    #7049 Shuffle, 16 май 2018
    Последнее редактирование: 16 май 2018
    DonHomka нравится это.
  15. N1ghT

    N1ghT Активный пользователь

    Регистрация:
    14 мар 2015
    Сообщения:
    33
    Симпатии:
    1
    Извиняюсь за минус глаза от говнокода, просто не шарю...
    После движения ползунка и нажатия кнопки пропадает меню, замораживается камера и ничего не происходит. хелп.
    function imgui.OnDrawFrame()
      if main_window_state.v then -- чтение и запись значения такой переменной осуществляется через поле v (или Value)
        imgui.SetNextWindowSize(imgui.ImVec2(150, 200), imgui.Cond.FirstUseEver) -- меняем размер
        -- но для передачи значения по указателю - обязательно напрямую
        -- тут main_window_state передаётся функции imgui.Begin, чтобы можно было отследить закрытие окна нажатием на крестик
        if main_window_state.v then
        imgui.Begin('AutoMeds', main_window_state.v)
        imgui.Text('Kol-vo hp')
        imgui.SliderFloat('Kol-vo hp', slider_float, 1, 100)
        end
            if imgui.Button('Accept') then
            local porog = slider_float
            sampAddChatMessage(string.format"Кол-во жизней для автоприменения = %i", slider_float, 0xC1C1C1)
            end
        end
        imgui.End()
      end
    
    function main()
      while true do
        wait(0)
        if wasKeyPressed(key.VK_X) then -- активация по нажатию клавиши X
            main_window_state.v = not main_window_state.v -- переключаем статус активности окна, не забываем про .v
        end
        imgui.Process = main_window_state.v -- теперь значение imgui.Process всегда будет задаваться в зависимости от активности основного окна
      end
    end
    
    function asd()
        if getCharHealth(PLAYER_PED) <= 'porog' then
        sampSendChat('/udc')
        end
    end
    
     
  16. DubStep_

    DubStep_ Знаток

    Регистрация:
    20 мар 2013
    Сообщения:
    295
    Симпатии:
    83
    Подскажите почему не работает код, на своем персонаже работает, на других не выставляет камеру
            pChar = sampGetCharHandleBySampPlayerId(pId)
            pointCameraAtChar(pChar, 0, 1)
     
  17. imring

    imring колечконуп
    Проверенный

    Регистрация:
    3 авг 2016
    Сообщения:
    930
    Симпатии:
    477
    sampGetCharHandleBySampPlayerId выводит результат и хендл.
     
  18. V3RC3TT1

    V3RC3TT1 Lua Dev | vk.me/mytarev2019
    Проверенный

    Регистрация:
    3 дек 2016
    Сообщения:
    334
    Симпатии:
    196
    sampGetCharHandleBySampPlayerId возвращает два параметра.
    Первый - результат получения хендла, второй - сам хендл игрока
    
    sampRegisterChatCommand('cam', 
    function(args)
    	if #args > 0 then
    		pId = tonumber(args)
    		result, pChar = sampGetCharHandleBySampPlayerId(pId)
    		if result then
    			pointCameraAtChar(pChar, 0, 1)
    		end
    	end
    end)
     
    DubStep_ нравится это.
  19. Trefa_

    Trefa_ Знаток

    Регистрация:
    5 фев 2015
    Сообщения:
    157
    Симпатии:
    21
    
    slider_float = imgui.ImInt(0) -- в самое начало
    sampAddChatMessage("Кол-во жизней для автоприменения = "..slider_float.v, 0xC1C1C1)
    
     
  20. DubStep_

    DubStep_ Знаток

    Регистрация:
    20 мар 2013
    Сообщения:
    295
    Симпатии:
    83
    Спасибо, помог. А на машину как навести? В которой этот парень сидит
     
  21. V3RC3TT1

    V3RC3TT1 Lua Dev | vk.me/mytarev2019
    Проверенный

    Регистрация:
    3 дек 2016
    Сообщения:
    334
    Симпатии:
    196
    Вроде бы вот так
    
    sampRegisterChatCommand('cam',
    function(args)
    	if #args > 0 then
    		pId = tonumber(args)
    		result, pChar = sampGetCharHandleBySampPlayerId(pId)
    		if result then
    			result2 = isCharInAnyCar(pChar)
    			if result2 then
    				cHandle = storeCarCharIsInNoSave(pChar)
    				pointCameraAtCar(cHandle, int mode, int switchstyle) -- тут уж сам ставь, я хз
    			else
    				pointCameraAtChar(pChar, 0, 1)
    			end
    		end
    	end
    end)
     
  22. Parmynkyl

    Parmynkyl Пользователь

    Регистрация:
    6 авг 2017
    Сообщения:
    9
    Симпатии:
    0
    local sampev = require 'lib.samp.events'
    local memory = require "memory"
    local ScriptState = false

    function main()
    if not isSampLoaded() and not isSampfuncsLoaded then return end
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('bbot', Activate)
    wait(-1)
    end

    function sampev.onShowDialog(id, style, title, btn, btn, text)
    if title:find('Материалы') and ScriptState then
    for line in text:gmatch('[^\r\n]+') do
    if not line:find('100%%') then
    _, num = line:match('{(.-)}(%d+)')
    sampSendDialogResponse(id, 1, num-1, '')
    return false
    end
    end
    end
    end

    function Activate()
    ScriptState = not ScriptState
    if ScriptState then
    sampAddChatMessage('{FB7B1F}[BUILDERBOT]: {FFFFFF}Скрипт активирован.', -1)
    setCharCoordinates(playerPed, 1481.1748,-1349.2417,113.1293+0.2)
    else
    sampAddChatMessage('{FB7B1F}[BUILDERBOT]: {FFFFFF}Скрипт дективирован.', -1)
    end
    end

    function sampev.onSetCheckpoint(Coordinates, Radius)
    if ScriptState then
    setCharCoordinatesNoOffset(playerPed, Coordinates.x, Coordinates.y, Coordinates.z+0.2)
    end
    end

    Ребят, хелпаните, плез. Как сюда прикрутить синхру?
     
  23. Shuffle

    Shuffle Знаток

    Регистрация:
    11 мар 2018
    Сообщения:
    324
    Симпатии:
    96
    function NoCols()
        lua_thread.create(function()
            for i=0, 1000 do
                wait(0)
                local ObjHandle = sampGetObjectHandleBySampId(i)
                if ObjHandle ~= nil then
                    setObjectCollision(ObjHandle, true)
                end
            end
        end)
    end
    
    Что тут не так? Вообще не понимаю, скрипт крашится
    [01:47:33.848441] (error)    BuilderBot.lua: opcode '0382' call caused an unhandled exception
    stack traceback:
        [C]: in function 'setObjectCollision'
        D:\Games\GTA San Andreas\moonloader\BuilderBot.lua:61: in function <D:\Games\GTA San Andreas\moonloader\BuilderBot.lua:58>
     
  24. imring

    imring колечконуп
    Проверенный

    Регистрация:
    3 авг 2016
    Сообщения:
    930
    Симпатии:
    477
    замени ObjHandle ~= nil на ObjHandle ~= -1
    какую синхру?
    замени на tonumber(args)
     
    Shuffle нравится это.
  25. Parmynkyl

    Parmynkyl Пользователь

    Регистрация:
    6 авг 2017
    Сообщения:
    9
    Симпатии:
    0
    которая отправляет фейк данные о моей позиции.
     
  26. imring

    imring колечконуп
    Проверенный

    Регистрация:
    3 авг 2016
    Сообщения:
    930
    Симпатии:
    477
  27. f0rtrix

    f0rtrix Знаток

    Регистрация:
    25 фев 2017
    Сообщения:
    101
    Симпатии:
    3
    Что тут не так?
    
            targeting = false
    
            -- в main
            while true do
                wait(0)
                local result, ped = getCharPlayerIsTargeting(playerPed)
                if result and wasKeyReleased(0x47) and not targeting then
                            show_main_dop_menu.v = not show_main_dop_menu.v
                            imgui.Process = show_main_dop_menu.v
                            targeting = true
                        elseif not result and targeting then
                            targeting = false
                end
            end
    
     
  28. rraggerr

    rraggerr проверенный какой-то
    Проверенный

    Регистрация:
    16 мар 2017
    Сообщения:
    666
    Симпатии:
    246
    Как можно заменить определенное слово в тексте?
    Например есть такой текст:
    Привет ENEMY, я PLAYER
    нужно заменить ENEMY на другую строчку например Kek_Kekov
    а PLAYER на мой ник(функци знаю, а как заменять хз)
     
  29. Shuffle

    Shuffle Знаток

    Регистрация:
    11 мар 2018
    Сообщения:
    324
    Симпатии:
    96
    string.gsub('text dlya zameni', 'chto zamenit', 'na chto zamenit')
     
  30. rraggerr

    rraggerr проверенный какой-то
    Проверенный

    Регистрация:
    16 мар 2017
    Сообщения:
    666
    Симпатии:
    246
    string.gsub(text, 'PLAYER', 'moi_NIK') ?
     
  31. N1ghT

    N1ghT Активный пользователь

    Регистрация:
    14 мар 2015
    Сообщения:
    33
    Симпатии:
    1
    А можно чтобы оно было целочисленным, а не типа float?
    и не работает функция /udc, что не так?
     
    #7066 N1ghT, 17 май 2018
    Последнее редактирование: 17 май 2018
  32. imring

    imring колечконуп
    Проверенный

    Регистрация:
    3 авг 2016
    Сообщения:
    930
    Симпатии:
    477
    ну так это и есть целым числом.
     
  33. N1ghT

    N1ghT Активный пользователь

    Регистрация:
    14 мар 2015
    Сообщения:
    33
    Симпатии:
    1
    если я ставлю
    slider_float = imgui.ImInt(0)
    то оно выводит числа по типу 1115869676
     
  34. rraggerr

    rraggerr проверенный какой-то
    Проверенный

    Регистрация:
    16 мар 2017
    Сообщения:
    666
    Симпатии:
    246
    Ты ставишь Int , Int - целое число, замени на Float и будет число с плавающей точкой
     
  35. N1ghT

    N1ghT Активный пользователь

    Регистрация:
    14 мар 2015
    Сообщения:
    33
    Симпатии:
    1
    Это понятно. Я ставлю инт, в слайдере числа все равно остаются с точкой, а в чат, допустим, вместо числа 33.5, выводится 123321312. Мне надо чтобы слайдер менялся с шагом в 1 и был без точки.