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

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

  1. ИтеС

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

    Регистрация:
    24.08.13
    Сообщения:
    62
    Лайки:
    5
    Репутация:
    2
    Как получить время сервера - Час:Минуты:Секунды?
    Час и минуты знаю как получить, а вот с секундами траблы.
    Хелп плис.
     
    #601
  2. DarkP1xel

    DarkP1xel #ТГК
    BH Team

    Регистрация:
    17.06.13
    Сообщения:
    2.104
    Лайки:
    1.272
    Репутация:
    329
    Нет секунд
     
    #602
  3. Dark_Knight

    Dark_Knight РКН Тян на страже твоей анальной девственности.
    Друг

    Регистрация:
    18.03.13
    Сообщения:
    2.385
    Лайки:
    681
    Репутация:
    204
    Клео не может иметь классы.
     
    #603
    4el0ve4ik нравится это.
  4. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    Подскажи как получить часы и минуты, пожалуйста.
     
    #604
  5. ИтеС

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

    Регистрация:
    24.08.13
    Сообщения:
    62
    Лайки:
    5
    Репутация:
    2
    --[[int]] hours, --[[int]] mins = getTimeOfDay()  -- 00BF
     
    Последние данные очков репутации:
    Bogach: 1 Очко (Спасибо)) 13 дек 2016
    #605
    Bogach нравится это.
  6. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    Ребят, мб кто - нибудь из вас сможет подсказать в чем трабла?
    Пишу скрипт в Атоме, кодировку переключаю на Cyrillic(Windows1251)
    Вроде бы все нормально было, переключая кодировку на Cyrillic(Windows1251) у меня снова отображались нормально русские буквы как в Атоме так и в игре
    Закрываю Атом и снова открываю - кодировка на UTF8, (показывает крякозябры) переключаю на Cyrillic(Windows1251) и снова становится все нормально (русские буквы в программе и в игре ). Но сегодня, в очередной раз открыв Атом, увидел, что кодировка UTF показывает в программе русские буквы (а в игре крякозябры), а при переключении на Cyrillic(Windows1251) и в программе и в игре крякозябры показывает, кто-нибудь знает как исправить эту проблему и из-за чего он появляется?
     
    #606
  7. 4el0ve4ik

    4el0ve4ik Дилер картошки
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    1.294
    Лайки:
    372
    Репутация:
    97
    Это не проблема, дело в том что UTF8 стоит как основная и именно она ставиться при открытии атома(можно изменить в настройках), файл сохранен на UTf8, весь русский текст заново перепиши на Cyrilic(Windows1251).
    upload_2016-12-13_14-44-48.png
     
    #607
    Bogach нравится это.
  8. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    Т.е, нужно просто не забывать при написании русских текстов переключать раскладку на Cyrillic(Windows1252) ?
     
    #608
  9. 4el0ve4ik

    4el0ve4ik Дилер картошки
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    1.294
    Лайки:
    372
    Репутация:
    97
    Именно, добавил скрин в мое сообщение выше как изменить что бы сразу стояла Cyrillic(Windows1251)
     
    Последние данные очков репутации:
    Bogach: 1 Очко (Спасибо)) 13 дек 2016
    #609
    Bogach нравится это.
  10. mxmnklv

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

    Регистрация:
    15.06.16
    Сообщения:
    5
    Лайки:
    0
    Репутация:
    0
    Можно узнать скин другого игрока как то?
     
    #610
  11. 4el0ve4ik

    4el0ve4ik Дилер картошки
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    1.294
    Лайки:
    372
    Репутация:
    97
    model = getCharModel(playerPed)
     
    Последние данные очков репутации:
    mxmnklv: 1 Очко (Спасибо) 14 дек 2016
    #611
    mxmnklv нравится это.
  12. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    После сравнения никнеймов в переменной и в текстовом документе, как в текстовом документе стереть никнейм?
    Upd: Уже не нужно.
     
    #612
    Последнее редактирование: 19 дек 2016
  13. Nexiq

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

    Регистрация:
    08.02.16
    Сообщения:
    42
    Лайки:
    3
    Репутация:
    0
    Как можно сделать скрипт, что бы в прицеле при нажатии клавиши, делался поворот 360 градусов и в тоже место куда ты целился, и все это действие происходило в прицеле?
     
    #613
  14. stfbee22

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

    Регистрация:
    22.04.16
    Сообщения:
    45
    Лайки:
    1
    Репутация:
    0
    Зачем скрипт для этого? Сенсу нормально настрой
     
    #614
  15. Nexiq

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

    Регистрация:
    08.02.16
    Сообщения:
    42
    Лайки:
    3
    Репутация:
    0
    Мне удобно на моей сенсе т.к на мышке я гоняю на 5600 dpi, а скрипт мне нужен для другого.
     
    #615
  16. mac

    mac ща как ебну копытом
    Друг

    Регистрация:
    06.09.14
    Сообщения:
    1.311
    Лайки:
    787
    Репутация:
    41
    for 360 MLG NOSCOPE :pidrila:
     
    #616
  17. Nexiq

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

    Регистрация:
    08.02.16
    Сообщения:
    42
    Лайки:
    3
    Репутация:
    0
    Не, наоброт не NOSCOPE а SCOPE в прицеле
     
    #617
  18. OtherWeather

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

    Регистрация:
    25.08.14
    Сообщения:
    39
    Лайки:
    1
    Репутация:
    0
    Почему при использовании в окно чата выводит 3 одинаковых сообщения вместо 1?
    script_name("Example script")
    
    require "lib.moonloader"
    require "lib.sampfuncs"
    
    function main()
       while not isSampAvailable() do wait(100) end
       while true do
       wait(0)
       local result, target = getCharPlayerIsTargeting(playerHandle)
       if result then result, playerid = sampGetPlayerIdByCharHandle(target) end -- Если зажата пкм на игроке, то получаем ID.
         if result and isKeyDown(VK_1) then -- Если зажата пкм и кнопка 1 на игроке, то...
            name = sampGetPlayerNickname(playerid) -- получаем nickname игрока по ранее полученному ID.
          sampAddChatMessage(string.format("%s", name, 0x0099FF)) -- Выводим nickname в окно чата.
         end
       end
    end
     
    #618
    Последнее редактирование: 23 дек 2016
  19. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.927
    Репутация:
    731
    потому что функция isKeyDown проверяет зажата ли клавиша. соответственно, сообщение будет выводиться каждый кадр, пока зажата клавиша, т.к. нет задержки. используй wasKeyPressed.
     
    Последние данные очков репутации:
    OtherWeather: 1 Очко 23 дек 2016
    #619
  20. Garrus

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

    Регистрация:
    08.01.16
    Сообщения:
    121
    Лайки:
    10
    Репутация:
    2
    При перезапуске скрипта функцией reloadScripts() или script:reload(), необходимо ли предварительно завершить поток, созданный функцией lua_thread.create(firstThread)?
     
    #620
    Последнее редактирование: 24 дек 2016
  21. OtherWeather

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

    Регистрация:
    25.08.14
    Сообщения:
    39
    Лайки:
    1
    Репутация:
    0
    Почему ID игрока отображается с задержкой и один рендер накладывается на другой?

    [​IMG]

    require "lib.moonloader"
    require "lib.SAMPFUNCS"
    
    function main()
         while not isSampAvailable() do wait(100) end
         font = renderCreateFont("Times New Roman", 20, 5);
         while true do
         wait(0)
         if not isPauseMenuActive() and not isKeyDown(VK_F8) then
         for i = 0, 1001 do -- перебираем все иды в зоне стрима и выбираем ближайший
             if sampIsPlayerConnected(i) then name = sampGetPlayerNickname(i) end
             instream, handle = sampGetCharHandleBySampPlayerId(i)
             if instream then
                 pedX, pedY, pedZ = getCharCoordinates(handle)
                 myX, myY, myZ = getCharCoordinates(playerPed)
                 distance = getDistanceBetweenCoords3d(pedX, pedY, pedZ, myX, myY, myZ)
                 distanceInteger = math.floor(distance)
                 result, id = sampGetPlayerIdByCharHandle(handle)
                 renderFontDrawText(font, string.format("ID: %s", id), 700, 500, -1) -- отрисовка ида
                     end
                 end
             end
         end
    end
     
    #621
  22. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.927
    Репутация:
    731
    нет
    в коде много ошибок
     
    #622
    Garrus нравится это.
  23. 4el0ve4ik

    4el0ve4ik Дилер картошки
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    1.294
    Лайки:
    372
    Репутация:
    97
    Тебе нужно что бы ближайший игрок отображался или все игроки в стриме?
     
    #623
  24. OtherWeather

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

    Регистрация:
    25.08.14
    Сообщения:
    39
    Лайки:
    1
    Репутация:
    0
    Ближайший.
     
    #624
  25. iTz_W33Z7

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

    Регистрация:
    14.03.16
    Сообщения:
    267
    Лайки:
    40
    Репутация:
    7
    Как это правильно перевести в Луа
    04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 -1.0
    00A1: put_actor $PLAYER_ACTOR at 0@ 1@ 2@ 
    Только начал вникать, а тут переменные нарисовались с которыми в луа я еще не очень дружу.

    X,  Y, Z = getOffsetFromCharInWorldCoords(playerPed, 0.0, 0.0, -1.0)
     setCharCoordinates(playerPed, X, Y, Z)
    
     
    #625
  26. 4el0ve4ik

    4el0ve4ik Дилер картошки
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    1.294
    Лайки:
    372
    Репутация:
    97
    У тебя это не работает или что?
     
    #626
  27. iTz_W33Z7

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

    Регистрация:
    14.03.16
    Сообщения:
    267
    Лайки:
    40
    Репутация:
    7
    Вот смотри, я точно делаю не правильно..
    while true do
            wait (0)
                local result = isCurrentCharWeapon(playerPed, 24)
                  setCharAnimSpeed(playerPed, python_crouchfire, 3.0)
                setCharAnimSpeed(playerPed, python_crouchreload, 3.0)
                setCharAnimSpeed(playerPed, python_fire, 3.0)
                setCharAnimSpeed(playerPed, python_fire_poor, 3.0)
                local result = isCharShooting(playerPed)
                local X,  Y, Z = getOffsetFromCharInWorldCoords(playerPed, 0.0, 0.0, -1.0)
                setCharCoordinates(playerPed, X, Y, Z)
                        end
                    end
     
    #627
  28. iTz_W33Z7

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

    Регистрация:
    14.03.16
    Сообщения:
    267
    Лайки:
    40
    Репутация:
    7
    какого то хрена всё равно не получается :sad_frog:

    :Noname_11
    0001: wait 0 ms
    02D8:   actor $PLAYER_ACTOR current_weapon == 24
    004D: jump_if_false @Noname_11
    0393: actor $PLAYER_ACTOR perform_animation "python_crouchfire" at 3.0 times_normal_rate
    0393: actor $PLAYER_ACTOR perform_animation "python_crouchreload" at 3.0 times_normal_rate
    0393: actor $PLAYER_ACTOR perform_animation "python_fire" at 3.0 times_normal_rate
    0393: actor $PLAYER_ACTOR perform_animation "python_fire_poor" at 3.0 times_normal_rate
    02E0:   actor $PLAYER_ACTOR firing_weapon
    004D: jump_if_false @Noname_11
    04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 -1.0
    00A1: put_actor $PLAYER_ACTOR at 0@ 1@ 2@
    0002: jump @Noname_11 
    script_name("No Name")
    script_version_number(1)
    script_version("v.1.0")
    script_authors("iTz_Weezy")
    
    require"lib.moonloader"
    require"lib.sampfuncs"
    
    function main()
      if not isSampfuncsLoaded() or not isSampLoaded() then return end
      while not isSampAvailable() do
          wait(200)
                end
          sampAddChatMessage("{44D5C7}[Lua] {FFFFFF}+C BUG {44FF68}Loaded",0xFFFFFF)
                while true do
            wait (0)
                if isCurrentCharWeapon(playerPed, 24) then
                  setCharAnimSpeed(playerPed, python_crouchfire, 3.0)
                setCharAnimSpeed(playerPed, python_crouchreload, 3.0)
                setCharAnimSpeed(playerPed, python_fire, 3.0)
                setCharAnimSpeed(playerPed, python_fire_poor, 3.0)
                if isCharShooting(playerPed) then
                local X,  Y, Z = getOffsetFromCharInWorldCoords(playerPed, 0.0, 0.0, -1.0)
                local result = setCharCoordinates(playerPed, X, Y, Z)
                        end
                    end
                end
            end
    
     
    #628
  29. NARVELL

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

    Регистрация:
    25.11.14
    Сообщения:
    37
    Лайки:
    1
    Репутация:
    0
    Что-то блокирует одинаковые php запросы через функцию downloadUrlToFile(). Как быть?
     
    #629
  30. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.927
    Репутация:
    731
    эта функция не предназначена для обычных get/post-запросов. скорее всего кеширование блокирует одинаковые запросы.
     
    #630
  31. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    Подскажите, почему не работает?
    script_name("test")
    
    require("lib.moonloader")
    local sampev = require("lib.samp.events")
    
    function main()
        while not isSampAvailable() do wait(100) end
        while true do
            wait(0)
        end
    end
    
    function sampev.onServerMessage(color, text)
       print('onServerMessage:', color, text)
    end
    Сам скрипт не загружается, в консоле sampfuncs его нет в скрипт менеджере тоже, что я не так сделал?
     
    #631
  32. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.927
    Репутация:
    731
    чекни лог
     
    #632
  33. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    Виноват. Я постоянно забываю новым расширение .lua приписывать.
    Я так понял вот это:
    function sampev.onServerMessage(color, text)
       print('onServerMessage:', color, text)
    end
    перехватывает все что поступает в чат. А что тогда ловит вот это:
    function sampev.onSendChat(message)
       print('onSendChat:', message)
    end
     
    #633
  34. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.927
    Репутация:
    731
    отправку сообщения в чат. события, названия которых начинаются с 'onSend' выполняются при отправке клиентом какого-либо пакета.
     
    #634
  35. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    Учусь использовать string.match
    script_name("test")
    
    require("lib.moonloader")
    local sampev = require("lib.samp.events")
    
    function main()
        while not isSampAvailable() do wait(100) end
        while true do
            wait(0)
        end
    end
    
    function sampev.onServerMessage(color, text)
         local name, message = string.match(text, "[R] %s+(.+)[%d]: (.+)")
         print('onServerMessage:', name, message)
    end
    В консоль отправляet "onServerMessage: nil nil" даже когда в чате появляется строка которую описал тут
    string.match(text, "[R] %s+(.+)[%d]: (.+)")
    Под %s+ - название должности.
    В скобочках () под .+ - ник игрока, .+ потому что ник с "_"
    В скобочках [] под %d - id игрока
    Дальше, в скобочках () под .+ - сообщение
    Вроде бы как все правильно должно быть.
    Вопрос решен, правильно вот так:
    string.match(text, "%S+%s+%S+%A+(%S+)%d+%S:%s+(.+)")
     
    #635
    Последнее редактирование: 29 дек 2016
  36. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    Как получить цвет определенного текста в репорте? когда игрок что - то напишет
    ник и некоторые символы - зеленым цветом, само сообщение - желтым..
    Но мне нужно узнать точный цвет которым выделяется ник в репорте, для условия.
     
    #636
  37. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.927
    Репутация:
    731
    парсить строку сообщения и оттуда извлекать цвета.
     
    #637
  38. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    А по подробнее пожалуйста)
    Я только учусь и плохо понимаю, что да как)

    ну вот допустим есть код:

    function sampev.onServerMessage(color, text)
           print('onServerMessage:', color, text)
    end
    Сам репорт состоит из двух частей ник[id]: сообщение
    ник[id]: - эта часть зеленым цветом выделяется, мне нужно узнать точный код цвета, чтобы сделать конкретное условие
    я знаю, что чтобы парсить конкретный текст с чата, нужно использовать регулярные выражение
    вот это:
    local nick = string.match(text, "(%a+_%a+).%d+.:.+")
    не уверен, что правильно, но вроде бы будет парсить чисто ник.
    -----
    Что вообще требуется мне
    Мне нужно парсить допустим ник с репорта и сообщение:
    local nick, message = string.match(text, "(%a+_%a+).%d+.:(.+)")
    но под этот шаблон попадает не только репорт, а мне нужно чтобы только репорт, поэтому и хочу извлечь точный код цвета ника, чтобы прописать конкретное условие. Думаю понятно изложил суть)
    Вопрос решен.
     
    #638
    Последнее редактирование: 30 дек 2016
  39. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    string.find учитывает регистр букв? Т.е, если я например задам действие, если скрипт увидит в чате слово "Тест", то действие среагирует и на слово "тест", если увидит его в чате?
    Upd: Проверил уже - учитывает. А можно ли сделать так, чтобы не учитывал?
     
    #639
    Последнее редактирование: 31 дек 2016
  40. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    324
    Лайки:
    14
    Репутация:
    3
    Подскажите как string.lower юзать?
    юзаю так: message2 = string.lower(message)
    и дальше юзаю message2 и не работает
     
    #640