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

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

  1. SaF1n.cfg

    SaF1n.cfg Участник

    Регистрация:
    23 июн 2018
    Сообщения:
    6
    Симпатии:
    0
    Ребят, помогите с кодом, его цель при наведении клавишей ПКМ на игрока(TARGET) и нажатием клавиши R, отправлять команду /knockdown 'id игрока'
    function main()
       while not isSampAvailable() do wait(100) end
       while true do
       wait(-1)
       local result, target = getCharPlayerIsTargeting(playerHandle)
         if result then result, playerid = sampGetPlayerIdByCharHandle(target) end
           if result and isKeyDown(vkeys.VK_R) then
            name = sampGetPlayerNickname(playerid)
             if not isSampLoaded() or not isSampfuncsLoaded() then return end
                while not isSampAvailable() do wait(100) end
                 if result and isKeyDown(VK_82) then
                 sampSendChat(string.format("/knockdown playerid",
    getCharPlayerIsTargeting(sampGetPlayerIdByCharHandle(playerPed))))
         wait(-1)
            end
        end
    end
     
    #10781 SaF1n.cfg, 11 июл 2018 в 23:10
    Последнее редактирование: 13 июл 2018 в 15:24
  2. T1cK

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

    Регистрация:
    27 апр 2015
    Сообщения:
    96
    Симпатии:
    11
    
    local x, y, z = getCharCoordinates(ped)
    local posX, posY, posZ = getCharCoordinates(playerPed)
    local pX = posX - x
    local pY = posY - y
    local zAngle = getHeadingFromVector2d(pX, pY)
    setCameraPositionUnfixed(-0.1, zAngle)
    
    По сути прицел должен быть на игроке, или хотя бы хоть немного ближе к игроку, а тут вообще никак и никуда
    why pochemy?
     
  3. V3RC3TT1

    V3RC3TT1 Shitty code as a separate art form.
    Проверенный

    Регистрация:
    3 дек 2016
    Сообщения:
    437
    Симпатии:
    232
    и чё это за месиво ты скинул???
    
    require 'lib.moonloader'
    local vkeys = require 'lib.vkeys'
    
    function main()
        while not isSampAvailable() do wait(100) end
        if not isSampLoaded() or not isSampfuncsLoaded() then return end
        while true do
            wait(0)
            local result, target = getCharPlayerIsTargeting(playerHandle)
            if result then
                result2, playerid = sampGetPlayerIdByCharHandle(target) end
                if result2 and isKeyDown(vkeys.VK_R) then
                    name = sampGetPlayerNickname(playerid)
                    sampSendChat("/knockdown "..playerid) -- = sampSendChat(string.format("/knockdown %d", playerid))
                end
            end
        end
    end
     
    SaF1n.cfg нравится это.
  4. ShuffleBoy

    ShuffleBoy Шуффле
    Проверенный

    Регистрация:
    11 мар 2018
    Сообщения:
    542
    Симпатии:
    202
    setCameraPositionUnfixed принимает значения в радианах
     
    T1cK нравится это.
  5. GovnocodeLua

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

    Регистрация:
    24 июн 2018
    Сообщения:
    33
    Симпатии:
    0
    хз может поможет Полезные сниппеты и функции(https://blast.hk/threads/13380/) (Не мой код) (Автор: wqrasfasf)
    function SetAngle(x, y, z)
    local posX, posY, posZ = GetCoordinates()
    local pX = x - posX
    local pY = y - posY
    local zAngle = getHeadingFromVector2d(pX, pY)
    
    if isCharInAnyCar(playerPed) then
    local car = storeCarCharIsInNoSave(playerPed)
    setCarHeading(car, zAngle)
    else
    setCharHeading(playerPed, zAngle)
    end
    
    restoreCameraJumpcut()
    end
     
  6. SaF1n.cfg

    SaF1n.cfg Участник

    Регистрация:
    23 июн 2018
    Сообщения:
    6
    Симпатии:
    0
    Кр4, в логе: (error) XXX.lua: D:\Games\SAMP\moonloader\XXX.lua:19: 'end' expected (to close 'function' at line 4) near '<eof>'
     
  7. V3RC3TT1

    V3RC3TT1 Shitty code as a separate art form.
    Проверенный

    Регистрация:
    3 дек 2016
    Сообщения:
    437
    Симпатии:
    232
    
    require 'lib.moonloader'
    local vkeys = require 'lib.vkeys'
    
    function main()
        while not isSampAvailable() do wait(100) end
        if not isSampLoaded() or not isSampfuncsLoaded() then return end
        while true do
            wait(0)
            local result, target = getCharPlayerIsTargeting(playerHandle)
            if result then
                result2, playerid = sampGetPlayerIdByCharHandle(target)
                if result2 and isKeyDown(vkeys.VK_R) then
                    name = sampGetPlayerNickname(playerid)
                    sampSendChat("/knockdown "..playerid) -- = sampSendChat(string.format("/knockdown %d", playerid))
                end
            end
        end
    end
     
    SaF1n.cfg нравится это.
  8. GovnocodeLua

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

    Регистрация:
    24 июн 2018
    Сообщения:
    33
    Симпатии:
    0
    Что делает функция setCharCollision(Ped ped, bool enable), я так понял отвечает за коллизию?
     
  9. ShuffleBoy

    ShuffleBoy Шуффле
    Проверенный

    Регистрация:
    11 мар 2018
    Сообщения:
    542
    Симпатии:
    202
    да, но работает хуиева
     
  10. GovnocodeLua

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

    Регистрация:
    24 июн 2018
    Сообщения:
    33
    Симпатии:
    0
    Есть ли другая функция которая работает штатно?

    Не понимаю в чём дело. (Не работает)
    local collision = false
    
    function main()
        while not isSampAvailable() do
            wait(100)
        end
        sampRegisterChatCommand('collision', function() collision = not collision end)
        coll()
        while true do
            wait(0)
        end
    end
    function coll()
          wait(0)
           if collision then
               sampAddChatMessage("collision: on", 0xFF8000)
        end
    end
     
    #10790 GovnocodeLua, 12 июл 2018 в 00:03
    Последнее редактирование модератором: 12 июл 2018 в 15:23
  11. V3RC3TT1

    V3RC3TT1 Shitty code as a separate art form.
    Проверенный

    Регистрация:
    3 дек 2016
    Сообщения:
    437
    Симпатии:
    232
    Мб ты хотел такое?
    
    require 'lib.moonloader'
    local collision = false
    
    function main()
        while not isSampAvailable() do
            wait(100)
        end
        sampRegisterChatCommand('collision', function() collision = not collision end)
        lua_thread.create(coll)
        while true do
            wait(0)
        end
    end
    
    function coll()
        while true do
            wait(0)
            if collision then
                sampAddChatMessage("collision: on", 0xFF8000)
            end
        end
    end
     
    SaF1n.cfg нравится это.
  12. T1cK

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

    Регистрация:
    27 апр 2015
    Сообщения:
    96
    Симпатии:
    11
    Спасибо! Помогло, частично))
    Не спасибо! Не поможет
     
  13. MarkusGG

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

    Регистрация:
    14 июл 2016
    Сообщения:
    144
    Симпатии:
    57
    По какому принципу делать чтобы считывалась информация с того что пед в транспорте и название? И как чтобы выводился РендерКриэйтФонт а в него название транспорта?
     
  14. shamanije

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

    Регистрация:
    15 ноя 2017
    Сообщения:
    51
    Симпатии:
    8
    Если ты про локальный пед то делаешь проверку в цикле на isCharInAnyCar, получаешь информацию про транспорт и вбиваешь инфу в render
     
  15. Madrasso

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

    Регистрация:
    27 июл 2016
    Сообщения:
    124
    Симпатии:
    0
    Можно пример использования setCameraPositionUnfixed?
     
  16. Frapsy

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

    Регистрация:
    4 сен 2016
    Сообщения:
    135
    Симпатии:
    21
    Тепловизор и ночное видение как подрубить? :D Искал на вики, искал в гугле - нема чот
     
  17. yuy111

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

    Регистрация:
    22 фев 2017
    Сообщения:
    355
    Симпатии:
    14
    Получить его как оружие и использоватт
     
  18. T1cK

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

    Регистрация:
    27 апр 2015
    Сообщения:
    96
    Симпатии:
    11
    Как перевести переменную string в float?
     
  19. Frapsy

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

    Регистрация:
    4 сен 2016
    Сообщения:
    135
    Симпатии:
    21
    Как оружие оно на сервере недоступно, выдавать его - античит за дган подумать может, это не вариант. Клео как то без оружия обходится.
     
  20. Madrasso

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

    Регистрация:
    27 июл 2016
    Сообщения:
    124
    Симпатии:
    0
    Есть ли у кого код, с плавным поворотом в begintopoint ?
     
  21. T1cK

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

    Регистрация:
    27 апр 2015
    Сообщения:
    96
    Симпатии:
    11
    Пробуй так
    
    function runTo(x, y, z, radius, isSprint)
        while true do
            local posX, posY, posZ = getCharCoordinates(playerPed)
            local angle = GetAngleBeetweenTwoPoints(posX,posY, x,y)
            setCameraPositionUnfixed(0.0,angle)
            wait(0)
            local dist = getDistanceBetweenCoords3d(x, y, z, posX, posY, z)
            setGameKeyState(1, -255)
            if isSprint == true then
            setGameKeyState(16, 255)
            end
            if dist < radius then
            return
            end
            end
        end
    
    function GetAngleBeetweenTwoPoints(x1,y1,x2,y2)
      local plus = 0.0
        local mode = 1
        if x1 < x2 and y1 > y2 then plus = math.pi/2; mode = 2; end
        if x1 < x2 and y1 < y2 then plus = math.pi; end
        if x1 > x2 and y1 < y2 then plus = math.pi*1.5; mode = 2; end
        local lx = x2 - x1
        local ly = y2 - y1
        lx = math.abs(lx)
        ly = math.abs(ly)
        if mode == 1 then ly = ly/lx;
        else ly = lx/ly; end
        ly = math.atan(ly)
        ly = ly + plus
        return ly
    end
    
    Тип тут поворот камеры, а не перса
     
  22. yuy111

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

    Регистрация:
    22 фев 2017
    Сообщения:
    355
    Симпатии:
    14
    CLEO-справочник(http://gtascript.ru/opcodes/)
    тут есть опкоды cleo. Там есть тепловизор и прибор ночного видения, переписываешь опкод в поиск и находишь функцию
     
  23. Aralone

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

    Регистрация:
    22 дек 2014
    Сообщения:
    31
    Симпатии:
    4
    Подскажите, пож-та, откуда взялись эти 3 строчки? Работа в свернутом режиме
    memory.setuint8(7634870, 1)
    memory.setuint8(7635034, 1) -- эта
    memory.fill(7623723, 144, 8) -- эта
    memory.fill(5499528, 144, 6) -- и эта
    Если через CE найти значение для разморозки окна и изменить его, то окно размораживается, но если изменить память через скрипт, то ничего не работает) Видимо потому, что тут надо менять 4 значения, а не одно, как делал это я)
     
  24. Trefa_

    Trefa_ Знающий

    Регистрация:
    5 фев 2015
    Сообщения:
    271
    Симпатии:
    55
    Какие вообще опкоды, ты шо
    ААаа
    1 минута на вики и я нашёл эти функции
    setNightVision(bool enable) -- ночное видение
    setInfraredVision(bool enable) -- тепловизор
    :thinking:

    Мб string в number?
    var = tonumber(var)
     
    #10804 Trefa_, 12 июл 2018 в 10:49
    Последнее редактирование модератором: 12 июл 2018 в 15:26
  25. yuy111

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

    Регистрация:
    22 фев 2017
    Сообщения:
    355
    Симпатии:
    14
    Опкоды, по ним функцию можно найти, надеюсь я тебе помог
     
  26. Frapsy

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

    Регистрация:
    4 сен 2016
    Сообщения:
    135
    Симпатии:
    21
    Забыл про опкоды, по этому искал возможными названиями.
     
  27. Trefa_

    Trefa_ Знающий

    Регистрация:
    5 фев 2015
    Сообщения:
    271
    Симпатии:
    55
    Искал не по опкодам, а по названию. Написал "vision" и вот нашёл
     
  28. Madrasso

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

    Регистрация:
    27 июл 2016
    Сообщения:
    124
    Симпатии:
    0
    Можно ли отправлять локальные команды(которые создаются скриптами и плагинами) в самп?
    sampSendChat работает только на серверные
     
  29. laz3r228

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

    Регистрация:
    24 ноя 2016
    Сообщения:
    101
    Симпатии:
    1
    sampProcessChatInput(zstring text)  -- 0C8F
     
  30. Azller Lollison

    Azller Lollison Lua Dev | vk.com/azller
    Друг

    Регистрация:
    20 июл 2017
    Сообщения:
    548
    Симпатии:
    406
    sampProcessChatInput(zstring text)
     
  31. Madrasso

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

    Регистрация:
    27 июл 2016
    Сообщения:
    124
    Симпатии:
    0
    sampProcessChatInput(zstring text) - может передавать простые сообщения?

    Например:
    msgl = "Привет"
    sampProcessChatInput(msgl)

    ( переменная, потому что передаваемые команды хранятся в них )
     
  32. Azller Lollison

    Azller Lollison Lua Dev | vk.com/azller
    Друг

    Регистрация:
    20 июл 2017
    Сообщения:
    548
    Симпатии:
    406
    Да, может. И не обязательно переменную пихать. Можно sampProcessChatInput("Привет")
     
  33. yuy111

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

    Регистрация:
    22 фев 2017
    Сообщения:
    355
    Симпатии:
    14
    Ты раньше об этом не догадывался?
     
  34. Ken Block

    Ken Block Знающий

    Регистрация:
    22 май 2015
    Сообщения:
    252
    Симпатии:
    12
    Можно ли проверить команду на регистрацию?
     
  35. AndreyS

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

    Регистрация:
    27 май 2016
    Сообщения:
    115
    Симпатии:
    23
    Вылетает ексепшон при нажатии Х (открытии окна)

    
    local imgui = require 'imgui'
    local key = require 'vkeys'
    local notf = import 'imgui_notf.lua'
    
    local encoding = require 'encoding'
    encoding.default = 'CP1251'
    
    local notf_live = 3
    local notf_cunt = 1
    
    local main_window_state = imgui.ImBool(false)
    function imgui.OnDrawFrame()
      if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(150, 200), imgui.Cond.FirstUseEver)
    
        imgui.Begin(u8'Окно', main_window_state)
        if imgui.Button(u8'Тест уведомления') then
          notf.addNotification(string.format("Уведомление #%d\n\n\nВам повестка!", notf_cunt), notf_live)
          notf_cunt = notf_cunt + 1
        end
        imgui.End()
      end
    end
    
    function main()
      while true do
        wait(0)
        if wasKeyPressed(key.VK_X) then
            main_window_state.v = not main_window_state.v
        end
        imgui.Process = main_window_state.v
      end
    end