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

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

  1. 4el0ve4ik

    4el0ve4ik Валенок
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    943
    Лайки:
    237
    Репутация:
    61
    Зачем на три разбил? есть же многопоточность, по одному компилируй и все.
     
    #681
  2. NARVELL

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

    Регистрация:
    25.11.14
    Сообщения:
    24
    Лайки:
    1
    Репутация:
    0
    В одном не работает :) Многопоточность лень разбирать.
    Три скомпилированных тоже не пашут. Там инклуды.
     
    #682
    Последнее редактирование: 6 янв 2017
  3. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    149
    Лайки:
    7
    Репутация:
    2
    local hours, mins = getTimeOfDay()
    Почему минуты не получает? Часы получает, а в минутах 0.
     
    #683
  4. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    688
    Лайки:
    1.464
    Репутация:
    628
    функция require загружает только lua и dll файлы, поэтому скомпилированные файлы должны иметь расширение lua.
    скомпилировать несколько файлов в один нельзя (но это не точно).
    в сампе на серверах чаще всего не выставляются минуты.
     
    Последние данные очков репутации:
    NARVELL: 1 Очко 6 янв 2017
    Ромил: 1 Очко (помощь в разработке lua скриптов) 6 янв 2017
    #684
    Ромил, Garrus и NARVELL нравится это.
  5. NARVELL

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

    Регистрация:
    25.11.14
    Сообщения:
    24
    Лайки:
    1
    Репутация:
    0
    В функции script_version() указывается версия скрипта, а как её потом получить?
     
    #685
  6. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    688
    Лайки:
    1.464
    Репутация:
    628
    thisScript().version
     
    #686
  7. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    149
    Лайки:
    7
    Репутация:
    2
    Почему в файл ничего не записывается?

    Код (Lua):
    function sampev.onServerMessage(color, text)
        if ar == 1 then
                if color == 1724645631 then
                     perem = 0
                     id, message = string.match(text, "%a+_%a+%D(%d+)%D+%s+%D+%s+(.+)")
                     if message ~= nil then
                         local file = io.open('moonloader\\autoreport\\autoreport.txt', "a")
                          print(message)
                            file:write(message .. "\n")
    Никаких ошибок нет, но файл пуст.
    переменная message не пуста, в неё регулярно поступают сообщения, только не ведется запись в текст.файл. Папка и файл созданы, путь правильный и в названиях папки и файла ошибок нет.
     
    #687
  8. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    688
    Лайки:
    1.464
    Репутация:
    628
    у плагинов нет прав писать в каталог игры, если она находится в program files или других системных директориях.
     
    #688
  9. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    149
    Лайки:
    7
    Репутация:
    2
    На чела из списка names.txt (если он что - то напишет в рп чат) срабатывает обе проверки, подскажите как исправить, пожалуйста
    Код (Lua):
    function sampev.onChatMessage(playerId, text)
        if x == 1 then
            chat_mat = 0
            playerid2, mess2 = string.match(text, ".(%d+)..%s(.+)")
            nickname2 = sampGetPlayerNickname(playerid2)
            local file = io.open('moonloader\\autoreport\\names.txt', "r")
            local proverka = 0
            for line in file:lines() do
                 if line ~= nickname2 then
                    proverka = 2
                    else
                        sampAddChatMessage("test", 25023851)
                        proverka = 1
                 end
            end
            io.close(file)
            if proverka == 1 then
            elseif proverka == 2 then
                if string.find(mess2, "тест") then
                    print("test")
                end
            end
        end
    end
     
    #689
    Последнее редактирование: 13 янв 2017
  10. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    149
    Лайки:
    7
    Репутация:
    2
    Помощь все ещё требуется :(
     
    #690
  11. AppleThe

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

    Регистрация:
    18.07.13
    Сообщения:
    96
    Лайки:
    37
    Репутация:
    10
    Как получить хендлы всех машин в зоне стрима?
     
    #691
  12. 4el0ve4ik

    4el0ve4ik Валенок
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    943
    Лайки:
    237
    Репутация:
    61
    For a = 1, (тут максимальное кол во машин, не помню точно, но вроде 2000) do
    Полаешь хендл машины из ид(а)
    --все остальное.
     
    #692
  13. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    688
    Лайки:
    1.464
    Репутация:
    628
  14. ufdhbi

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

    Регистрация:
    03.02.15
    Сообщения:
    113
    Лайки:
    25
    Репутация:
    9
    Как отрендерить картинку в игру?
     
    #694
  15. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    149
    Лайки:
    7
    Репутация:
    2
    Все ещё требуется помощь.
     
    #695
  16. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    688
    Лайки:
    1.464
    Репутация:
    628
    Код (Lua):
    function sampev.onChatMessage(playerId, text)
        if x == 1 then
            chat_mat = 0
            playerid2, mess2 = string.match(text, ".(%d+)..%s(.+)")
            nickname2 = sampGetPlayerNickname(playerid2)
            local file = io.open('moonloader\\autoreport\\names.txt', "r")
            local found = false
            for line in file:lines() do
                 if line == nickname2 then
                        sampAddChatMessage("test", 25023851)
                        found = true
                        break
                 end
            end
            io.close(file)
            if not found then
                if string.find(mess2, "тест") then
                    print("test")
                end
            end
        end
    end
     
    Последние данные очков репутации:
    Bogach: 1 Очко (Спасибо, друг.) 16 янв 2017
    #696
    Bogach нравится это.
  17. ufdhbi

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

    Регистрация:
    03.02.15
    Сообщения:
    113
    Лайки:
    25
    Репутация:
    9
     
    #697
  18. 4el0ve4ik

    4el0ve4ik Валенок
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    943
    Лайки:
    237
    Репутация:
    61
    #698
  19. ufdhbi

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

    Регистрация:
    03.02.15
    Сообщения:
    113
    Лайки:
    25
    Репутация:
    9
    Есть файл, 3000 строк, как из него спарсить нужные данные, например строка:
    Код (PHP):
    <div class="uix_wrapperFix" style="height: 1px; margin-top: -1px;"></div>
    Как с помощью луа спарсить слово height из строки, точнее как прочитать файл, найти эту строку, вытащить слово из этой строки и в чат сампа вывести?
     
    #699
  20. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    688
    Лайки:
    1.464
    Репутация:
    628
    советую научиться пользоваться гуглом. http://lua-users.org/wiki/LuaXml
     
    #700
  21. ufdhbi

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

    Регистрация:
    03.02.15
    Сообщения:
    113
    Лайки:
    25
    Репутация:
    9
    Гляжу в книгу вижу фигу, по понятней что-то можно? :D

    Код (Lua):
    script_name("test")
    script_author("test")
    require("moonloader")
    require("sampfuncs")

    function main()
      while true do
        wait(40)
        if isKeyDown(113) then
          while isKeyDown(113) do wait(80) end
         downloadUrlToFile("http://orakul.com", "C:\\Users\\_\\Desktop\\File2.txt",statusCallback)
             file = io.open("C:\\Users\\_\\Desktop\\File2.txt")
             sampAddChatMessage(string.match(file, '<span class="name">........', 2),0xFFFFFF)
        end
      end
    end
    Вот есть код, по нажатию качает исходный текст страницы в txt, а в чат сампа ничего не выводит, почему?
     
    #701
  22. 4el0ve4ik

    4el0ve4ik Валенок
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    943
    Лайки:
    237
    Репутация:
    61
    io.read в помощь, не понимаю, зачем беск. цикл?
     
    #702
  23. ufdhbi

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

    Регистрация:
    03.02.15
    Сообщения:
    113
    Лайки:
    25
    Репутация:
    9
    ;D Он тут так и был)
     
    #703
  24. AIMP

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

    Регистрация:
    15.01.14
    Сообщения:
    23
    Лайки:
    0
    Репутация:
    0
    Что не так?
    Код (Lua):
    function main()
        if not isSampfuncsLoaded() or not isSampLoaded() then return end
        while true do
            wait(0)
                if sampIsDialogActive() and sampGetCurrentDialogId() = 1 then
                    sampSetCurrentDialogEditboxText("mypass")
                    sampCloseCurrentDialogWithButton(1)
                end
        end
    end
     
    #704
  25. 4el0ve4ik

    4el0ve4ik Валенок
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    943
    Лайки:
    237
    Репутация:
    61
    Знак = присваивает, для сравнения == юзай.
     
    #705
    AIMP нравится это.
  26. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    149
    Лайки:
    7
    Репутация:
    2
    Хочу сделать скан матов по текст.файлу, потом сравнение и далее действие, все в принципе работает, но есть одна загвостка, заготовленное действие срабатывает и на слова которых нет в текст.файле.
    Пытался делать разными способами и даже пытался повторить как делал мне FYP, но ничего не вышло.
    Помогите пожалуйста:sorry:
    Код (Lua):
    function sampev.onChatMessage(playerId, text)
        if x == 1 then
            chat_mat = 0
            playerid2, mess2 = string.match(text, ".(%d+)..%s(.+)")
            nickname2 = sampGetPlayerNickname(playerid2)
            local file = io.open('moonloader\\autoreport\\nick.txt', "r")
            local found = false
            for line in file:lines() do
                 if line == nickname2 then
                    sampAddChatMessage("administrator.", 25023851)
                    found = true
                    break
                 end
            end
            io.close(file)
            if not found then
                          -- na mat
                            local mats = io.open('moonloader\\autoreport\\mats.txt', "r")
                            local found1 = false
                            for line in mats:lines() do
                                    if string.find(mess2, line) then
                                            found1 = true
                                            break
                                    end
                            end
                            io.close(mats)
                            if found1 == true then
                                 chat_mat = 1
                            end
     
    #706
  27. VLnet

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

    Регистрация:
    02.11.15
    Сообщения:
    12
    Лайки:
    0
    Репутация:
    0
    Привет всем, обнаружил список уж очень интересных функций, но не могу найти описание\использование (а в идеале и пример ;D)
    Код (Lua):
    renderBegin(2)
    renderColor(0xFFFFFFFF)
    renderVertex(100.0, 100.0)
    renderVertex(120.0, 110.0)
    renderVertex(140.0, 140.0)
    renderEnd()

    renderSetTexCoord(float posX, float posY)
    renderBindTexture(int texture)

    При использовании (xp yp zp - xyz Player):
    Код (Lua):
    xt = representIntAsFloat(readMemory(13099016 , 4, true))
                yt = representIntAsFloat(readMemory(13099020 , 4, true))
                zt = representIntAsFloat(readMemory(13099024 , 4, true))
    if isKeyDown(93) then
        if xt ~= nil and yt ~= nil and zt ~= nil then
    if xp ~= xt and yp ~= yt and zp ~= zt then
                taskFollowPathNodesToCoord(playerPed, xt,yt,zt, 7,1)
            end end
    end
    рандомно игра вылетает с ошибкой Visual C++ "R6025"
     
    #707
    Последнее редактирование: 22 янв 2017 в 13:27
  28. legend2360

    legend2360 Ух как люблю скобочки
    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    1.990
    Лайки:
    645
    Репутация:
    412
    Для поиска подстроки используй string.find(str, substr, 1, true): http://www.lua.ru/doc/5.4.html (подробнее про эти параметры для этой функции можешь прочитать здесь)
     
    #708
  29. VLnet

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

    Регистрация:
    02.11.15
    Сообщения:
    12
    Лайки:
    0
    Репутация:
    0

    + Или я рак или не работают аудио функции (в консоль выводится Done но нету звука, в настройках все на макс):
    Код (Lua):
    b, audio = loadAudioStream("moonloader/res/audio/AppleDown.mp3")
    if b then sampfuncsLog("Done") else sampfuncsLog("Fuck")end
    setAudioStreamState(audio, 0)
    setAudioStreamVolume(audio, 1.0)
    setAudioStreamLooped(audio, true)
     
    #709
  30. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    688
    Лайки:
    1.464
    Репутация:
    628
    это функции из sampfuncs, они для рисования кастомных примитивов. документации по ним нету, но есть пара примеров:
    Код (Lua):
    require"lib.sampfuncs"

    function drawBorderedTriangle(x1, y1, x2, y2, x3, y3, color, borderColor)
      renderSetRenderState(176, 1)
      renderBegin(D3DPT_TRIANGLESTRIP)
       renderColor(color)
       renderVertex(x2, y2)
       renderVertex(x1, y1)
       renderVertex(x3, y3)
      renderEnd()
      renderBegin(D3DPT_LINESTRIP)
       renderColor(borderColor)
       renderVertex(x1, y1)
       renderVertex(x2, y2)
       renderVertex(x3, y3)
       renderVertex(x1, y1)
      renderEnd()
    end

    function drawBorderedQuad(x1, y1, x2, y2, x3, y3, x4, y4, color, borderColor)
      renderSetRenderState(176, 1)
      renderBegin(D3DPT_TRIANGLESTRIP)
       renderColor(color)
       renderVertex(x1, y1)
       renderVertex(x2, y2)
       renderVertex(x4, y4)
       renderVertex(x3, y3)
      renderEnd()
      renderBegin(D3DPT_LINESTRIP)
       renderColor(borderColor)
       renderVertex(x1, y1)
       renderVertex(x2, y2)
       renderVertex(x3, y3)
       renderVertex(x4, y4)
       renderVertex(x1, y1)
      renderEnd()
    end

    function drawStar(x, y, size, corners, cornerColor, centerColor, depthPercent)
      D3DRS_SHADEMODE        = 9
      D3DSHADE_GOURAUD        = 2
      corners = corners * 2
      local depth = size / 100 * depthPercent
      renderSetRenderState(161, 1)
      renderSetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD)
      renderBegin(D3DPT_TRIANGLEFAN)
       renderColor(centerColor)
       renderVertex(x, y) -- center point
       renderColor(cornerColor)
       for i = corners, 0, -1 do
        local vec = math.pi * 2 / corners * i
        local sz = size
        if math.fmod(i, 2) ~= 0 then
         sz = sz - depth
        end
        sz = -sz
        renderVertex(math.sin(vec) * sz + x, math.cos(vec) * sz + y)
       end
      renderEnd()
    end

    -- примеры вызова drawStar:
    -- drawStar(100, 100, 100, 5, 0xFFDD0000, 0xFFFFFFFF, 55)
    -- drawStar(50, 230, 45, 7, 0xFFDD0000, 0xFFFFFFFF, 65)
    -- drawStar(230, 200, 100, 4, 0xFFCC0000, 0xAAFF00FF, 65)
    в игре много проблемных опкодов, многие из которых в сампе вообще не работают, а другие требуют специальных условий для нормальной работы. к вылету приводит, скорее всего, taskFollowPathNodesToCoord. решение можно найти в каких-нибудь клео скриптах, в которых используется этот опкод.
    setAudioStreamState(audio, 1)
     
    #710
    Последнее редактирование: 23 янв 2017 в 13:06