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

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

  1. DarkP1xel

    DarkP1xel #ТГК
    BH Team

    Регистрация:
    17.06.2013
    Сообщения:
    2.273
    Симпатии:
    1.420
    Репутация:
    344
    Нет секунд
     
  2. Dark_Knight

    Dark_Knight Мое лицо, когда человек верующий.
    Друг

    Регистрация:
    18.03.2013
    Сообщения:
    2.510
    Симпатии:
    763
    Репутация:
    208
    Клео не может иметь классы.
     
    4el0ve4ik нравится это.
  3. Bogach

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

    Регистрация:
    09.11.2015
    Сообщения:
    337
    Симпатии:
    14
    Репутация:
    5
    Подскажи как получить часы и минуты, пожалуйста.
     
  4. ИтеС

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

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

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

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

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

    Регистрация:
    12.11.2015
    Сообщения:
    1.337
    Симпатии:
    436
    Репутация:
    107
    Это не проблема, дело в том что UTF8 стоит как основная и именно она ставиться при открытии атома(можно изменить в настройках), файл сохранен на UTf8, весь русский текст заново перепиши на Cyrilic(Windows1251).
    upload_2016-12-13_14-44-48.png
     
    Bogach нравится это.
  7. Bogach

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

    Регистрация:
    09.11.2015
    Сообщения:
    337
    Симпатии:
    14
    Репутация:
    5
    Т.е, нужно просто не забывать при написании русских текстов переключать раскладку на Cyrillic(Windows1252) ?
     
  8. 4el0ve4ik

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

    Регистрация:
    12.11.2015
    Сообщения:
    1.337
    Симпатии:
    436
    Репутация:
    107
    Именно, добавил скрин в мое сообщение выше как изменить что бы сразу стояла Cyrillic(Windows1251)
     
    Последние данные очков репутации:
    Bogach: 1 Очко (Спасибо)) 13 дек 2016
    Bogach нравится это.
  9. mxmnklv

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

    Регистрация:
    15.06.2016
    Сообщения:
    5
    Симпатии:
    0
    Репутация:
    0
    Можно узнать скин другого игрока как то?
     
  10. 4el0ve4ik

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

    Регистрация:
    12.11.2015
    Сообщения:
    1.337
    Симпатии:
    436
    Репутация:
    107
    model = getCharModel(playerPed)
     
    Последние данные очков репутации:
    mxmnklv: 1 Очко (Спасибо) 14 дек 2016
    mxmnklv нравится это.
  11. Bogach

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

    Регистрация:
    09.11.2015
    Сообщения:
    337
    Симпатии:
    14
    Репутация:
    5
    После сравнения никнеймов в переменной и в текстовом документе, как в текстовом документе стереть никнейм?
    Upd: Уже не нужно.
     
    #611 Bogach, 19 дек 2016
    Последнее редактирование: 19 дек 2016
  12. Nexiq

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

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

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

    Регистрация:
    22.04.2016
    Сообщения:
    49
    Симпатии:
    1
    Репутация:
    1
    Зачем скрипт для этого? Сенсу нормально настрой
     
  14. Nexiq

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

    Регистрация:
    08.02.2016
    Сообщения:
    46
    Симпатии:
    3
    Репутация:
    0
    Мне удобно на моей сенсе т.к на мышке я гоняю на 5600 dpi, а скрипт мне нужен для другого.
     
  15. mac

    mac неки ван лав :3
    Друг

    Регистрация:
    06.09.2014
    Сообщения:
    1.400
    Симпатии:
    848
    Репутация:
    48
    for 360 MLG NOSCOPE :pidrila:
     
  16. Nexiq

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

    Регистрация:
    08.02.2016
    Сообщения:
    46
    Симпатии:
    3
    Репутация:
    0
    Не, наоброт не NOSCOPE а SCOPE в прицеле
     
  17. OtherWeather

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

    Регистрация:
    25.08.2014
    Сообщения:
    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
     
    #617 OtherWeather, 23 дек 2016
    Последнее редактирование: 23 дек 2016
  18. FYP

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

    Регистрация:
    09.03.2013
    Сообщения:
    1.152
    Симпатии:
    2.037
    Репутация:
    749
    потому что функция isKeyDown проверяет зажата ли клавиша. соответственно, сообщение будет выводиться каждый кадр, пока зажата клавиша, т.к. нет задержки. используй wasKeyPressed.
     
    Последние данные очков репутации:
    OtherWeather: 1 Очко 23 дек 2016
  19. Garrus

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

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

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

    Регистрация:
    25.08.2014
    Сообщения:
    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
     
  21. FYP

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

    Регистрация:
    09.03.2013
    Сообщения:
    1.152
    Симпатии:
    2.037
    Репутация:
    749
    нет
    в коде много ошибок
     
    Garrus нравится это.
  22. 4el0ve4ik

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

    Регистрация:
    12.11.2015
    Сообщения:
    1.337
    Симпатии:
    436
    Репутация:
    107
    Тебе нужно что бы ближайший игрок отображался или все игроки в стриме?
     
  23. OtherWeather

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

    Регистрация:
    25.08.2014
    Сообщения:
    39
    Симпатии:
    1
    Репутация:
    0
    Ближайший.
     
  24. iTz_W33Z7

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

    Регистрация:
    14.03.2016
    Сообщения:
    275
    Симпатии:
    46
    Репутация:
    8
    Как это правильно перевести в Луа
    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)
    
     
  25. 4el0ve4ik

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

    Регистрация:
    12.11.2015
    Сообщения:
    1.337
    Симпатии:
    436
    Репутация:
    107
    У тебя это не работает или что?
     
  26. iTz_W33Z7

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

    Регистрация:
    14.03.2016
    Сообщения:
    275
    Симпатии:
    46
    Репутация:
    8
    Вот смотри, я точно делаю не правильно..
    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
     
  27. iTz_W33Z7

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

    Регистрация:
    14.03.2016
    Сообщения:
    275
    Симпатии:
    46
    Репутация:
    8
    какого то хрена всё равно не получается :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
    
     
  28. NARVELL

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

    Регистрация:
    25.11.2014
    Сообщения:
    48
    Симпатии:
    1
    Репутация:
    1
    Что-то блокирует одинаковые php запросы через функцию downloadUrlToFile(). Как быть?
     
  29. FYP

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

    Регистрация:
    09.03.2013
    Сообщения:
    1.152
    Симпатии:
    2.037
    Репутация:
    749
    эта функция не предназначена для обычных get/post-запросов. скорее всего кеширование блокирует одинаковые запросы.
     
  30. Bogach

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

    Регистрация:
    09.11.2015
    Сообщения:
    337
    Симпатии:
    14
    Репутация:
    5
    Подскажите, почему не работает?
    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 его нет в скрипт менеджере тоже, что я не так сделал?
     
  31. FYP

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

    Регистрация:
    09.03.2013
    Сообщения:
    1.152
    Симпатии:
    2.037
    Репутация:
    749
    чекни лог
     
  32. Bogach

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

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

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

    Регистрация:
    09.03.2013
    Сообщения:
    1.152
    Симпатии:
    2.037
    Репутация:
    749
    отправку сообщения в чат. события, названия которых начинаются с 'onSend' выполняются при отправке клиентом какого-либо пакета.
     
  34. Bogach

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

    Регистрация:
    09.11.2015
    Сообщения:
    337
    Симпатии:
    14
    Репутация:
    5
    Учусь использовать 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+(.+)")
     
    #634 Bogach, 29 дек 2016
    Последнее редактирование: 29 дек 2016
  35. Bogach

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

    Регистрация:
    09.11.2015
    Сообщения:
    337
    Симпатии:
    14
    Репутация:
    5
    Как получить цвет определенного текста в репорте? когда игрок что - то напишет
    ник и некоторые символы - зеленым цветом, само сообщение - желтым..
    Но мне нужно узнать точный цвет которым выделяется ник в репорте, для условия.
     
  36. FYP

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

    Регистрация:
    09.03.2013
    Сообщения:
    1.152
    Симпатии:
    2.037
    Репутация:
    749
    парсить строку сообщения и оттуда извлекать цвета.
     
  37. Bogach

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

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

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

    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+.:(.+)")
    но под этот шаблон попадает не только репорт, а мне нужно чтобы только репорт, поэтому и хочу извлечь точный код цвета ника, чтобы прописать конкретное условие. Думаю понятно изложил суть)
    Вопрос решен.
     
    #637 Bogach, 30 дек 2016
    Последнее редактирование: 30 дек 2016
  38. Bogach

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

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

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

    Регистрация:
    09.11.2015
    Сообщения:
    337
    Симпатии:
    14
    Репутация:
    5
    Подскажите как string.lower юзать?
    юзаю так: message2 = string.lower(message)
    и дальше юзаю message2 и не работает
     
  40. FYP

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

    Регистрация:
    09.03.2013
    Сообщения:
    1.152
    Симпатии:
    2.037
    Репутация:
    749
    ты используешь правильно, просто string.lower с кириллицей не работает.