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

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

  1. mr.krabs

    mr.krabs Местный житель

    Регистрация:
    22 фев 2017
    Сообщения:
    1.286
    Симпатии:
    258
    Как загрузить скрипт без файла, но по его коду
     
  2. Phelarmad

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

    Регистрация:
    20 июл 2017
    Сообщения:
    182
    Симпатии:
    22
    когда пед лежит на земле после падения, это специальное действие? если да, то какой ид?
     
  3. TheNeitherStrike

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

    Регистрация:
    25 мар 2016
    Сообщения:
    118
    Симпатии:
    3
    Вообщем надо скриптом запускать EXE(AHK) файл, как это можно осуществить? Если не трудно, то пожалуйста напишите код. Заранее благодарю.
     
  4. earthlord

    earthlord Новичок

    Регистрация:
    7 янв 2019
    Сообщения:
    4
    Симпатии:
    0
    как написать скрипт, который бы сохранял чат игры в консоль SF с сохранением цвета чата?
     
  5. hhti

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

    Регистрация:
    27 авг 2018
    Сообщения:
    320
    Симпатии:
    28
    того кто стоит возле меня или передо мной

    не робит

    help
    imgui.Text(u8("TEST"))
       imgui.SameLine(365)
       if imgui.Button('BUTTON') then
           lua_thread.create(function()
             sampSendChat('Goodbye, ser!')
             wait(1000)
             sampSendChat('Hello,  ')
           end)
       end
    мне нужно чтобы после "Hello" писался ник человека
     
  6. crybaby

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

    Регистрация:
    29 июл 2017
    Сообщения:
    720
    Симпатии:
    211
    imgui.Text(u8("TEST"))
    imgui.SameLine(365)
    if imgui.Button('BUTTON') then
        lua_thread.create(function()
            sampSendChat('Goodbye, ser!')
            wait(1000)
            sampSendChat('Hello,  '..sampGetPlayerNickname(getClosestPlayerId())
        end)
    end
    
    function getClosestPlayerId()
        local minDist = 9999
        local closestId = -1
        local x, y, z = getCharCoordinates(PLAYER_PED)
        for i = 0, 999 do
            local streamed, pedID = sampGetCharHandleBySampPlayerId(i)
            if streamed then
                local xi, yi, zi = getCharCoordinates(pedID)
                local dist = math.sqrt( (xi - x) ^ 2 + (yi - y) ^ 2 + (zi - z) ^ 2 )
                if dist < minDist then
                    minDist = dist
                    closestId = i
                end
            end
        end
        return closestId
    end

    просто так тебе никто ничего не напишет, темой ошибся



    function sampev.onServerMessage(color, text)
        sampfuncsLog(text)
    end
     
  7. l Piko l

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

    Регистрация:
    5 окт 2017
    Сообщения:
    29
    Симпатии:
    8
    Как сравнить две переменные типа string? Заранее спасибо
     
  8. Wh1teY4rik

    Wh1teY4rik Участник

    Регистрация:
    27 июн 2017
    Сообщения:
    22
    Симпатии:
    1
    есть скрипт, в нём есть рендер текста, как можно сделать настройку положения этого через игру?
     
  9. crybaby

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

    Регистрация:
    29 июл 2017
    Сообщения:
    720
    Симпатии:
    211
    if 'говно' == 'говно' then
    или че

    создать переменную x, y и изменять её по команде
     
    l Piko l нравится это.
  10. Wh1teY4rik

    Wh1teY4rik Участник

    Регистрация:
    27 июн 2017
    Сообщения:
    22
    Симпатии:
    1
    я имею ввиду что бы человек не вводил а как бы кликнул в нужное место и координаты появились сами
     
  11. l Piko l

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

    Регистрация:
    5 окт 2017
    Сообщения:
    29
    Симпатии:
    8
    Получил я ники игроков в переменные NickName_One и NickName_Two и надо сравнить их
     
  12. Petr_Sergeevich

    Petr_Sergeevich Друг форума

    Регистрация:
    25 июн 2017
    Сообщения:
    511
    Симпатии:
    140
    Ну так бери и сравнивай, в чём проблема?
     
  13. crybaby

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

    Регистрация:
    29 июл 2017
    Сообщения:
    720
    Симпатии:
    211
    чем не подходит обычная проверка типа NickName_One == NickName_Two
     
    l Piko l нравится это.
  14. madrasso

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

    Регистрация:
    27 июл 2016
    Сообщения:
    496
    Симпатии:
    73
    if NickName_One == NickName_Two then
    --
    end
     
    l Piko l нравится это.
  15. astynk

    astynk Знающий

    Регистрация:
    21 окт 2018
    Сообщения:
    228
    Симпатии:
    103
    У разных букв разная ширина, например m в пять раз шире чем i, из-за этого отбивка пробелами неровная получится
     
  16. Жаба Азазина

    Жаба Азазина Участник

    Регистрация:
    11 июл 2016
    Сообщения:
    8
    Симпатии:
    0
    Как получить высоту земли на координатах x, y?
     
  17. astynk

    astynk Знающий

    Регистрация:
    21 окт 2018
    Сообщения:
    228
    Симпатии:
    103
    В общем нужно сделать так, чтобы не было такой залупы как на скрине: https://i.imgur.com/f91dRIi.png
    Т.е. выровнять табами все столбцы, сложность в том что длина строк заранее неизвестна. Ширина букв тоже разная, т.е. тупо посчитать кол-во символов и забить остаток пробелами не выйдет.
    Пробовал считать ширину строки, типа для m/w - 10 пикселей, i/j/l - 2 пикселя и т.д., потом складывать и делить на ширину таба, получая таким образом кол-во нужных табов - получалась дичь какая-то.
     
  18. crybaby

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

    Регистрация:
    29 июл 2017
    Сообщения:
    720
    Симпатии:
    211
    в диалогах насколько мне известно невозможно центрировать текст
     
  19. hhti

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

    Регистрация:
    27 авг 2018
    Сообщения:
    320
    Симпатии:
    28
    [ML] (system) Loading script 'D:\ss\GTA San Andreas\moonloader\falos.lua'...
    [ML] (error) mo.lua: D:\ss\GTA San Andreas\moonloader\falos.lua:266: ')' expected (to close '(' at line 265) near 'end'
    [ML] (error) mo.lua: Script died due to an error. (09B886EC)
     
  20. astynk

    astynk Знающий

    Регистрация:
    21 окт 2018
    Сообщения:
    228
    Симпатии:
    103
    Надо не центрировать, а отбить нужным кол-вом табов, чтобы все ровно было.
    На некоторых серверах такое реализовано, т.е. строчки всегда разные, но при этом все ровно и ничего никуда не заползает.
     
  21. laz3r228

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

    Регистрация:
    24 ноя 2016
    Сообщения:
    407
    Симпатии:
    46
    вместо пробелов юзай \t
     
  22. hhti

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

    Регистрация:
    27 авг 2018
    Сообщения:
    320
    Симпатии:
    28
    help
    imgui.Text(u8("TEST"))
       imgui.SameLine(365)
       if imgui.Button('BUTTON') then
          lua_thread.create(function()
            sampSendChat('Goodbye, ser!')
            wait(1000)
            sampSendChat('Hello,  ')
          end)
       end
       imgui.Text(u8("TEST123"))
       imgui.SameLine(365)
       if imgui.Button('BUTON') then
            lua_thread.create(function()
                sampSendChat('Что делаешь, ')
                wait(1500)
                sampSendChat('Как дела, ')
            end)
       end
    мне нужно чтобы после "Hello", "Что делаешь" и "Как дела" писался ник человека
     
  23. 777qwerty777

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

    Регистрация:
    1 май 2017
    Сообщения:
    58
    Симпатии:
    17
    Ник какого человека? Сорян, тут не ванги
     
  24. hhti

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

    Регистрация:
    27 авг 2018
    Сообщения:
    320
    Симпатии:
    28
    человека который стоит возле меня и я с ним общаюсь. Мне нужно чтобы при нажатии ПКМ + Х скрипт "запоминал" ник и потом его писал в sampSendChat. мучаюсь с этой фигнёй уже несколько дней
     
  25. Pakulichev

    Pakulichev vk.com/pavel.akulichev
    Проверенный

    Регистрация:
    28 окт 2017
    Сообщения:
    552
    Симпатии:
    173
    Ты скорее всего неправильно выразился.
    Получить координаты персонажа можно с помощью функции getCharCoordinates.
    x, y, z = getCharCoordinates(PLAYER_PED)
    local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
    if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
      local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
      if result then -- проверить, прошло ли получение ида успешно
        local nickname = sampGetPlayerNickname(id)
        sampSendChat(string.format("Как дела, %s?", nickname))
      end
    end
    Не забудь сделать проверку на нажатие X.
     
  26. astynk

    astynk Знающий

    Регистрация:
    21 окт 2018
    Сообщения:
    228
    Симпатии:
    103
    Кол-во табов каждый раз нужно разное в зависимости от длины ников, в этом и загвоздка.
     
  27. l Piko l

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

    Регистрация:
    5 окт 2017
    Сообщения:
    29
    Симпатии:
    8
    Это искал
    float Z = getGroundZFor3dCoord(X,Y, Z)
    ?
     
  28. Pakulichev

    Pakulichev vk.com/pavel.akulichev
    Проверенный

    Регистрация:
    28 окт 2017
    Сообщения:
    552
    Симпатии:
    173
    Нет там никакой загвоздки, в каждой строке должно быть такое же количество табов, сколько и в первой.
     
    astynk нравится это.
  29. ufdhbi

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

    Регистрация:
    3 фев 2015
    Сообщения:
    801
    Симпатии:
    319
    диалог со стилем 5 или 4 юзай
     
    astynk нравится это.
  30. astynk

    astynk Знающий

    Регистрация:
    21 окт 2018
    Сообщения:
    228
    Симпатии:
    103
    local z = getGroundZFor3dCoord(x, y, z)
     
  31. 777qwerty777

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

    Регистрация:
    1 май 2017
    Сообщения:
    58
    Симпатии:
    17
    4 и 5 стиль не подходит? там не будет проблем с этим
     
    astynk нравится это.
  32. hhti

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

    Регистрация:
    27 авг 2018
    Сообщения:
    320
    Симпатии:
    28
    куда это вписывать?
     
  33. Akionka

    Akionka Знающий

    Регистрация:
    2 фев 2018
    Сообщения:
    252
    Симпатии:
    109
    function sampev.onServerMessage(color, text)
        print(color, text)
    end
    Данный код выводит цвет и текст сообщения. Цвет, например такой: -290866945. Но что это за форма записи и куда делся привычный RBG?
     
  34. Pakulichev

    Pakulichev vk.com/pavel.akulichev
    Проверенный

    Регистрация:
    28 окт 2017
    Сообщения:
    552
    Симпатии:
    173
    В бесконечный цикл, т.е. после while true do.

    Если тебе нужно изменить текст, не изменяя цвет, то: return {color, text}
     
  35. Akionka

    Akionka Знающий

    Регистрация:
    2 фев 2018
    Сообщения:
    252
    Симпатии:
    109
    мне нужно понять каким образом и откуда появилось данное число.