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

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

  1. VLnet

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

    Регистрация:
    02.11.15
    Сообщения:
    16
    Лайки:
    0
    Репутация:
    0
    Привет всем, обнаружил список уж очень интересных функций, но не могу найти описание\использование (а в идеале и пример ;D)
    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):
    
    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"
     
    #681
    Последнее редактирование: 22 янв 2017
  2. legend2360

    legend2360 Лятим в космос
    Всефорумный модератор

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

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

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

    + Или я рак или не работают аудио функции (в консоль выводится Done но нету звука, в настройках все на макс):
    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)
     
    #683
  4. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    1.020
    Лайки:
    1.875
    Репутация:
    717
    это функции из sampfuncs, они для рисования кастомных примитивов. документации по ним нету, но есть пара примеров:
    
    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)
     
    Последние данные очков репутации:
    VLnet: 1 Очко 23 янв 2017
    #684
    Последнее редактирование: 23 янв 2017
    VLnet нравится это.
  5. VLnet

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

    Регистрация:
    02.11.15
    Сообщения:
    16
    Лайки:
    0
    Репутация:
    0
    Можно чуть по подробней, какие значения могут принимать эти функции?
    
    renderBegin(D3DPT_TRIANGLEFAN)
    renderSetRenderState(176, 1)
    
    function drawStar(x, y, a,status, color)
      renderDrawBox(x, y, a,a,0xFF000000)
        renderSetRenderState(176, 1)
      renderBegin(D3DPT_TRIANGLEFAN)
            renderColor(color)
            renderVertex(x + (a / 2), y + (a / 2))
            renderVertex(x + (a / 2), y)
    
            if status > 1/8 then renderVertex(x + a, y) end
            if status > 3/8 then renderVertex(x + a, y + a) end
            if status > 5/8 then renderVertex(x, y+ a) end
            if status > 7/8 then renderVertex(x, y) end
            local angle = 2 * status * math.pi
    
            if status > 7/8 or status < 1/8 then
                renderVertex((math.tan(angle) * a /2) + x + (a/2), y)
            end
            if status > 1/8 and status < 3/8 then
                renderVertex(x + a,  y + (a/2) + ( math.tan(angle - (math.pi/2)) * a / 2))
            end
            if status > 3/8 and status < 5/8 then
                renderVertex(x + (a/2) - (math.tan(angle - math.pi) * a /2), y + a)
            end
            if status > 5/8 and status < 7/8 then
                renderVertex(x, y + (a/2) - (math.tan(angle - (math.pi*1.5)) * a /2))
            end
    
            renderEnd()
    end
    
    --[[
    Пример вызова: 
    for i = 0, 1.0,0.005 do
                drawStar(500, 500, 200, i,  0xFF59a9df)
                wait(10)
                end
    
     
    #685
    Последнее редактирование: 23 янв 2017
  6. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    319
    Лайки:
    14
    Репутация:
    3
    Подскажите пожалуйста как получить игроков в зоне стрима
     
    #686
  7. RedBoxWhite

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

    Регистрация:
    06.03.16
    Сообщения:
    283
    Лайки:
    13
    Репутация:
    5
    Проверяй всех игроков doesCharExist(pedhandle ped)
     
    #687
  8. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    319
    Лайки:
    14
    Репутация:
    3
    Что не так?
    script_name("Nickname")
    script_author("_")
    
    require("lib.moonloader")
    require "lib.sampfuncs"
    
    function main()
        while isSampAvailable() do wait(100) end
        local rfonts = renderCreateFont("Arial", 15, 1)
        while true do
            wait(0)
            for i = 0, 1000 do
                if sampIsPlayerConnected(i) then
                     local _, actor = sampGetCharHandleBySampPlayerId(i)
                     if doesCharExist(actor) then
                          ahealth = sampGetPlayerHealth(i)
                         local posX, posY, posZ = getCharCoordinates(actor)
                         wposX, wposY = convert3DCoordsToScreen(posX, posY, posZ)
                         renderFontDrawText(rfonts, ahealth, wposX, wposY, -1)
                     end
                end
            end
        end
    end
    [ML] (error) Nickname: cannot resume non-suspended coroutine
    [ML] (error) Nickname: Script died due to error. (01A62E6C)
     
    #688
  9. legend2360

    legend2360 Лятим в космос
    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    2.284
    Лайки:
    805
    Репутация:
    462
    1. while not isSampAvailable()
    2. renderFontDrawText(rfonts, tostring(ahealth), wposX, wposY, -1)
     
    #689
  10. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    319
    Лайки:
    14
    Репутация:
    3
    что такое tostring ?
     
    #690
  11. VLnet

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

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

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

    Регистрация:
    09.11.15
    Сообщения:
    319
    Лайки:
    14
    Репутация:
    3
    Как сделать так, чтобы ники были четко закреплены над головой?
    Сейчас это выглядит пиздец не красиво, ещё когда в машине человека 4 сидит их ники в одном месте показываются крч пиздец)
    script_name("Nickname")
    script_author("_")
    
    require("lib.moonloader")
    require "lib.sampfuncs"
    
    function main()
        while not isSampAvailable() do wait(100) end
        local rfonts = renderCreateFont("Arial", 10, 1)
        local rfonts2 = renderCreateFont("Arial", 8, 1)
        while true do
            wait(0)
            for i = 0, 1000 do
                if sampIsPlayerConnected(i) then
                     local _, actor = sampGetCharHandleBySampPlayerId(i)
                     if doesCharExist(actor) then
                          local ahealth = sampGetPlayerHealth(i)
                         local anickname = sampGetPlayerNickname(i)
                         local posX, posY, posZ = getCharCoordinates(actor)
                         local hwposX, hwposY = convert3DCoordsToScreen(posX, posY, posZ)
                         local nwposX, nwposY = convert3DCoordsToScreen(posX, posY, posZ+1)
                         local fnickname = string.format("%s{FFFFFF}(%d)", anickname, i)
                         renderFontDrawText(rfonts, tostring(ahealth), wposX, wposY, -1)
                         local PColor = sampGetPlayerColor(i)
                         renderFontDrawText(rfonts2, fnickname, nwposX, nwposY, PColor)
                     end
                end
            end
        end
    end
     
    #692
  13. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    1.020
    Лайки:
    1.875
    Репутация:
    717
    вместо позиции игрока использовать позицию кости. пример получения костей уже постили в этой теме.
     
    #693
  14. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    319
    Лайки:
    14
    Репутация:
    3
    Пересмотрел все страницы в этой теме и не нашел :C
     
    #694
  15. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    1.020
    Лайки:
    1.875
    Репутация:
    717
    #695
  16. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    319
    Лайки:
    14
    Репутация:
    3
    Япона мать, как тут все сложно:blink:

    script_name("Nickname")
    script_author("_")
    
    require("lib.moonloader")
    require "lib.sampfuncs"
    
    local playernick = ""
    local fplayernick = ""
    local wallnick
    local playercolor
    
    function main()
        while not isSampAvailable() do wait(100) end
        while true do
            wait(0)
            for i = 0, 1000 do
                if sampIsPlayerConnected(i) then
                     local _, actor = sampGetCharHandleBySampPlayerId(i)
                     if doesCharExist(actor) then
                          local ahealth = sampGetPlayerHealth(i)
                         playernick = sampGetPlayerNickname(i)
                         fplayernick = string.format("%s(%d)", playernick, i)
                         playercolor = sampGetPlayerColor(i)
                         wallnick = sampCreate3dText(fplayernick, 0xFFFFFF, 0.0, 0.0, 0.5, 300.0, true, i, -1)
                         print(fplayernick)
                     end
                end
            end
        end
    end
    Не показывает текст над игроком, ошибок нет, переменная fplayernick в print нормально показывает и ид и ник как отформатил, а wallnick nil
    можете подсказать что не так?
    UPD: Все уже не нужно,оказалось первым аргументом надо было указывать "i"

    Есть ли какая-нибудь функция для отключения отображения никнеймов?
     
    #696
    Последнее редактирование модератором: 5 фев 2017
  17. VLnet

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

    Регистрация:
    02.11.15
    Сообщения:
    16
    Лайки:
    0
    Репутация:
    0
    Что за адская штука BitStream? Как с ним работать? Есть ли список id-ов входящих пакетов\рпс?
     
    #697
  18. 4el0ve4ik

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

    Регистрация:
    12.11.15
    Сообщения:
    1.300
    Лайки:
    379
    Репутация:
    97
    штука на самом деле не очень то и адская, вот тут есть некоторые пакеты и рпс с их битстримом https://docs.google.com/spreadsheets/d/1iIxEk7yR8r7ZLGiSAL4ndtz_N1k0p3Wt7TE5bei6ztU/edit?pli=1#gid=1
    еще можно юзать вот такую шикарную библиотеку: http://blast.hk/threads/14624/
     
    #698
  19. Garrus

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

    Регистрация:
    08.01.16
    Сообщения:
    120
    Лайки:
    10
    Репутация:
    1
    Есть какая-то понятная библиотека для шифрования/расшифрования данных (md5, sha1 и т.д.)? Пробовал загуглить - там без 100 грамм не разобраться, а я ж не пью совсем)
     
    #699
  20. legend2360

    legend2360 Лятим в космос
    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    2.284
    Лайки:
    805
    Репутация:
    462
    А что тебе не понятно? Метод использования шифрования в библиотеке или не знаешь как пользоваться функциями библиотеки?
     
    #700
  21. Garrus

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

    Регистрация:
    08.01.16
    Сообщения:
    120
    Лайки:
    10
    Репутация:
    1
    Не могу подключить библиотеку. Постоянно ругается на что-то.
     
    #701
  22. legend2360

    legend2360 Лятим в космос
    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    2.284
    Лайки:
    805
    Репутация:
    462
    Дай ссылку на эту библиотеку.
     
    #702
  23. Garrus

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

    Регистрация:
    08.01.16
    Сообщения:
    120
    Лайки:
    10
    Репутация:
    1
    #703
  24. legend2360

    legend2360 Лятим в космос
    Всефорумный модератор

    Регистрация:
    23.03.13
    Сообщения:
    2.284
    Лайки:
    805
    Репутация:
    462
    Слишком накручено. Попроще нельзя было выбрать? К тому же, там понятно расписано на английском языке и в проекте даже есть примеры.
    Ну допустим пример с SHA-1:
    
    local Lockbox = require("lockbox") -- подключаем библиотеку
    Lockbox.ALLOW_INSECURE = true; -- https://github.com/somesocks/lua-lockbox#security-concerns
    
    local Stream = require("lockbox.util.stream"); -- для конвертирования (функции не поддерживают прямиком текст, нужно будет конвертировать его)
    local sha1 = require("lockbox.digest.sha1")(); -- загружаем алгоритм шифрования SHA1 (возвращается сразу же таблица с необходимыми функциями)
    
    sha1.init() -- инициализируем, но по-моему оно не нужно здесь, тупо для того, чтобы было понятно, хз
    sha1.update(Stream.fromString("test")) -- вводим необходимую строку для шифровки (при помощи функции update; fromString конвертирует строку в массив байт вроде как)
    sha1.finish() -- завершаем шифрование
    print(sha1.asHex()) -- выводим результат в HEX виде
    
    HMAC (то, что ты судя по всему хотел применить - "поддерживает шифрование/расшифрование по ключу"):
    
    local Lockbox = require("lockbox")
    Lockbox.ALLOW_INSECURE = true; -- https://github.com/somesocks/lua-lockbox#security-concerns
    
    local Stream = require("lockbox.util.stream");
    local hmac = require("lockbox.mac.hmac")();
    local SHA1 = require("lockbox.digest.sha1"); -- для указания в функции setDigest (здесь уже просто возвращается функция, не как в предыдущем примере - возвращалась таблица с функциями)
    
    hmac.setBlockSize(64) -- без понятия что это, но каким-то образом влияет на результат шифрования
    hmac.setDigest(SHA1) -- тип шифрования
    hmac.setKey(Stream.toArray(Stream.fromString("SomeKey"))) -- ключ (преобразуем строку в массив байт, массив байт в таблицу с байтами (я сам запутался))
    
    hmac.init() -- инициализируем (если не произвести - повлияет на результат шифрования, и каким образом - не знаю)
    hmac.update(Stream.fromString("Some Message Here")) -- строка для шифрования
    hmac.finish()
    print(hmac.asHex()) -- вывод
    
     
    #704
    FYP и Garrus нравится это.
  25. Garrus

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

    Регистрация:
    08.01.16
    Сообщения:
    120
    Лайки:
    10
    Репутация:
    1
    Спасибо. Нашел еще библиотеку попроще, буду пробовать и то, и то (https://github.com/bighil/aeslua).
     
    #705
    Bogach нравится это.
  26. AIMP

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

    Регистрация:
    15.01.14
    Сообщения:
    126
    Лайки:
    22
    Репутация:
    5
    что не так? :(
    function main()
        if not isSampfuncsLoaded() or not isSampLoaded() then return end
            while not isSampAvailable() do
            wait(200)
        end
        while true do
            if sampGetGamestate() == 0
                sampDisconnectWithReason(quit)
                wait("16000")
                sampSetGamestate(1)
            end
        end
    end
     
    #706
  27. Garrus

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

    Регистрация:
    08.01.16
    Сообщения:
    120
    Лайки:
    10
    Репутация:
    1
    Как получить серийный номер жесткого диска?


    function main()
        if not isSampfuncsLoaded() or not isSampLoaded() then return end
            while not isSampAvailable() do
            wait(200)
        end
        while true do
    wait(0)
            if sampGetGamestate() == 0
    then
                sampDisconnectWithReason(quit)
                wait("16000")
                sampSetGamestate(1)
            end
        end
    end
     
    #707
    Последнее редактирование: 31 янв 2017
    AIMP нравится это.
  28. Rama

    Rama Новичок

    Регистрация:
    07.01.17
    Сообщения:
    1
    Лайки:
    0
    Репутация:
    0
    подскажите как мне получить координаты чекпоинта (который на ферме)
     
    #708
  29. subbotaaa

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

    Регистрация:
    17.02.15
    Сообщения:
    6
    Лайки:
    0
    Репутация:
    0
    Тоже ищу
     
    #709
  30. hnnssy

    Друг

    Регистрация:
    23.03.13
    Сообщения:
    1.794
    Лайки:
    1.098
    Репутация:
    187
    http://blast.hk/threads/13380/#post-119165
     
    Последние данные очков репутации:
    Rama: 1 Очко 1 фев 2017
    #710
    Rama нравится это.
  31. hnnssy

    Друг

    Регистрация:
    23.03.13
    Сообщения:
    1.794
    Лайки:
    1.098
    Репутация:
    187
    http://blast.hk/threads/13380/#post-135697
     
    #711
    Rama и Garrus нравится это.
  32. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    319
    Лайки:
    14
    Репутация:
    3
    Не подскажете как получше сделать?
    if koord == 0 then
                  local posX, posY, posZ = getCharCoordinates(playerPed)
                local posX2 = math.floor(posX)
                local posY2 = math.floor(posY)
                   if posX2 == 145 and posY2 == 1875 then
                       print(posX2, posY2)
                       sampSendChat("/takem 6")
                          koord = 1
                             print(koord)
                             wait(5000)
                             koord = 0
                      end
                end
    Чтобы без задержки,без флуда.
     
    #712
  33. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    319
    Лайки:
    14
    Репутация:
    3
    Скрипт не показывает ник у 0-го ида, т.е не ник и не ид, как быть? Что не так?
    script_name("Nickname")
    script_author("_")
    
    require("lib.moonloader")
    require "lib.sampfuncs"
    
    local playernick = ""
    local fplayernick = ""
    local wallnick
    local playercolor
    local fahealth
    local ahealth
    local armor = 0
    
    function main()
        while not isSampAvailable() do wait(100) end
        while true do
            wait(0)
            for i = 0, 1001 do
                if sampIsPlayerConnected(i) then
                     local _, actor = sampGetCharHandleBySampPlayerId(i)
                     if doesCharExist(actor) then
                          ahealth = sampGetPlayerHealth(i) -- получаем здоровье
                         playernick = sampGetPlayerNickname(i) -- получаем ник
                         playercolor = sampGetPlayerColor(i)
                         armor = sampGetPlayerArmor(i)
                         if armor > 0 then
                                 fplayernick = string.format("%s {FFFFFF}(%d)\n{662b00}Бронежилет: {FFFFFF}%d\n{db143c}Здоровье: {FFFFFF}%d", playernick, i, armor, ahealth)
                         else
                                 fplayernick = string.format("%s {FFFFFF}(%d)\n{db143c}Здоровье: {FFFFFF}%d", playernick, i, ahealth)
                         end
                         if playercolor == 301989887 then
                              playercolor = 0xFFFFFFFF
                         end
                         if playercolor == 2236962 and armor == 0 then
                              playercolor = 0xFFFFFFFF
                                fplayernick = string.format("{99ff99}%s {FFFFFF}(%d)\n{db143c}Здоровье: {FFFFFF}%d", playernick, i, ahealth)
                         elseif playercolor == 2236962 and armor > 0 then
                                 playercolor = 0xFFFFFFFF
                                 fplayernick = string.format("{99ff99}%s {FFFFFF}(%d)\n{662b00}Бронежилет: {FFFFFF}%d\n{db143c}Здоровье: {FFFFFF}%d", playernick, i, armor, ahealth)
                         end
                         wallnick = sampCreate3dText(i, fplayernick, playercolor, 0.0, 0.0, 0.2, 300.0, true, i, -1)
                     else
                         sampDestroy3dText(wallnick)
                     end
                end
            end
        end
    end
    
     
    #713
    Последнее редактирование: 3 фев 2017
  34. Garrus

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

    Регистрация:
    08.01.16
    Сообщения:
    120
    Лайки:
    10
    Репутация:
    1
    Библиотеки можно ведь загружать из функции main()? Хочу сделать функцию, которая будет загружать библиотеку из инета, в случае, если она будет отсутствовать.
     
    #714
  35. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    1.020
    Лайки:
    1.875
    Репутация:
    717
    @Bogach потому что нельзя создавать 3d-текст с нулевым идом
    @Garrus можно
     
    #715
    Garrus нравится это.
  36. Garrus

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

    Регистрация:
    08.01.16
    Сообщения:
    120
    Лайки:
    10
    Репутация:
    1
    Только вот с Samp.Lua так не получается - функции ругаются на то, что не определена переменная sampev.
     
    #716
  37. FYP

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

    Регистрация:
    09.03.13
    Сообщения:
    1.020
    Лайки:
    1.875
    Репутация:
    717
    можно делать так:
    function sampOnSendChat(msg)
    end
    
    function main()
    local sampev = require 'lib.samp.events'
    sampev.onSendChat = sampOnSendChat
    end
     
    #717
    Garrus нравится это.
  38. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    319
    Лайки:
    14
    Репутация:
    3
    @FYP Подскажи пожалуйста.
     
    #718
    Последнее редактирование: 5 фев 2017
  39. Bogach

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

    Регистрация:
    09.11.15
    Сообщения:
    319
    Лайки:
    14
    Репутация:
    3
    Привет. Подскажите как правильно такое написать?
    Вот тело команды:
    function posts(args)
        nomer = string.match(args, "%d+")
        nomer = tonumber(nomer)
        if nomer == nil then
             sampAddChatMessage("Используйте: /posts (1-3)", 0xcc7722FF)
        elseif nomer == 1 then
             local postrueX, postrueY, postrueZ = getCharCoordinates(playerPed)
             postrueX2 = math.floor(postrueX)
              postrueY2 = math.floor(postrueY)
             reslocate = locateCharAnyMeans2d(playerPed, postrueX2, postrueY2, postrueX2+2.0, postrueY2+2.0, true)
             print(possX2, possY2)
        end
    end
    получает координаты первые координаты места где я стою вводя /posts 1-3, где должен быть пост к примеру.
    В main / while true do написан к нему такой код
    local posfalseX, posfalseY, posfalseZ = getCharCoordinates(playerPed)
              local posfalseX2 = math.floor(posfalseX)
              local posfalseY2 = math.floor(posfalseY)
                if postrueX2 == posfalseX2 and postrueY2 == posfalseY2 then
                    if reslocate == true then
                           sampAddChatMessage("на коордах", -1)
                      end
                else
                    if reslocate == false then
                         sampAddChatMessage("не на коордах", -1)
                    end
                end
    В идеале должно было писать текст "на коордах" если я находился на координатах поста
    А если нет, то писало бы "не на коордах", но получилось не совсем то, когда я встаю на координаты и прописываю /posts 1 пишет что я на коордах, когда отхожу перестает флудить вместо того чтобы писать,что я не на коордах.
     
    #719
  40. AppleThe

    AppleThe print("Hello World")
    Проверенный

    Регистрация:
    18.07.13
    Сообщения:
    157
    Лайки:
    83
    Репутация:
    37
    > local getBonePosition = ffi.cast("int (__thiscall*)(void*, Vec3D*, int, bool)", 0x5E4280)
    declaration specifier expected near 'Vec3D'
     
    #720