Jump to content

Общий мини "HELP ME" топик по скриптингу


Recommended Posts

Привет всем, помогите привязать объект именно к руке педа, через attachElements это выйдет?

attachElements привязывает только к позиции элемента. Для того, чтобы объект всегда был в руке, в независимости от анимации, используются:

  
getPedBonePosition 
+ 
setElementPosition 
  

И все это дело нужно обрабатывать в onClientRender или onClientPreRender.

Но вообще, вы можете использовать данный ресурс, если не хотите делать сами:

https://community.multitheftauto.com/in ... ls&id=2540

Link to comment
Привет всем, помогите привязать объект именно к руке педа, через attachElements это выйдет?

attachElements привязывает только к позиции элемента. Для того, чтобы объект всегда был в руке, в независимости от анимации, используются:

  
getPedBonePosition 
+ 
setElementPosition 
  

И все это дело нужно обрабатывать в onClientRender или onClientPreRender.

Но вообще, вы можете использовать данный ресурс, если не хотите делать сами:

https://community.multitheftauto.com/in ... ls&id=2540

Спасибо!

Link to comment
Можно ли как-нибудь сохранять бинарные файлы(изображения, например) из-под Lua в бд MySQL ?

Читаешь изображение при помощи fileRead и сохраняешь полученный результат в БД. Потом через fileWrite можешь заного создать изображение

  
fileRead 
fileWrite 
  

Link to comment

А зачем на русском? Ты хочешь отображать в scoreboard'e? Если да, то вот функция

scoreboardAddColumn ( string name, [ element forElement = getRootElement(), int width = 70, string friendlyName = name, int priority = slot after "name" column ] )

Аргумент friendlyName как раз то что тебе нужно, его можно называть как угодно, хоть по русски. А в аргументе name указывай название элемент даты.

https://wiki.multitheftauto.com/wiki/Scoreboard

Link to comment

Всем привет, помогите сделать таймер в цикле, чтобы цикл начинал второй крут когда пройдет функция таймера, а не так что оно просто запускает таймер сразу подрят, ну я думаю вы поняли о чем я, заранее спасибо.

    while i >= 0 do 
    local randomTime = math.random(7000, 12000) 
    triggerServerEvent('runAnim', root, localPlayer, randomTime) 
     i = i-1 
    setTimer ( function() 
        if getElementData(localPlayer,'rightHand') == 3 then 
          antibag = nil 
          if i == 0 then 
                 triggerServerEvent("moveTrisEvent", root, tris )      
          end 
       end  
         
    end, randomTime, 1 )  
    end 

Link to comment
Всем привет, помогите сделать таймер в цикле, чтобы цикл начинал второй крут когда пройдет функция таймера, а не так что оно просто запускает таймер сразу подрят, ну я думаю вы поняли о чем я, заранее спасибо.
    while i >= 0 do 
    local randomTime = math.random(7000, 12000) 
    triggerServerEvent('runAnim', root, localPlayer, randomTime) 
     i = i-1 
    setTimer ( function() 
        if getElementData(localPlayer,'rightHand') == 3 then 
          antibag = nil 
          if i == 0 then 
                 triggerServerEvent("moveTrisEvent", root, tris )      
          end 
       end  
         
    end, randomTime, 1 )  
    end 

  
local f 
f = function() 
    local randomTime = math.random(7000, 12000) 
    triggerServerEvent('runAnim', root, localPlayer, randomTime) 
    i = i-1 
    setTimer(function() 
        if getElementData(localPlayer,'rightHand') == 3 then 
            antibag = nil 
            if i == 0 then 
                triggerServerEvent("moveTrisEvent", root, tris )      
            end 
        end  
        if(i >= 0) then  
            f() 
        end 
    end, randomTime, 1) 
end 
f() 
  

Link to comment
Всем привет, помогите сделать таймер в цикле, чтобы цикл начинал второй крут когда пройдет функция таймера, а не так что оно просто запускает таймер сразу подрят, ну я думаю вы поняли о чем я, заранее спасибо.
    while i >= 0 do 
    local randomTime = math.random(7000, 12000) 
    triggerServerEvent('runAnim', root, localPlayer, randomTime) 
     i = i-1 
    setTimer ( function() 
        if getElementData(localPlayer,'rightHand') == 3 then 
          antibag = nil 
          if i == 0 then 
                 triggerServerEvent("moveTrisEvent", root, tris )      
          end 
       end  
         
    end, randomTime, 1 )  
    end 

  
local f 
f = function() 
    local randomTime = math.random(7000, 12000) 
    triggerServerEvent('runAnim', root, localPlayer, randomTime) 
    i = i-1 
    setTimer(function() 
        if getElementData(localPlayer,'rightHand') == 3 then 
            antibag = nil 
            if i == 0 then 
                triggerServerEvent("moveTrisEvent", root, tris )      
            end 
        end  
        if(i >= 0) then  
            f() 
        end 
    end, randomTime, 1) 
end 
f() 
  

Спасибо огромное :D

Link to comment

Есть ли возможность прочесть кириллицу из .txt файла в игре? У меня функция возвращает пустое место из такого файла в любое ГУИ окно или чат, а если выводить результат в консоль, то там какие-то иероглифы. Если же текст на латинице, то все нормально. Что-то с кодировкой или я неправильно что-то делаю?

Link to comment
Есть ли возможность прочесть кириллицу из .txt файла в игре? У меня функция возвращает пустое место из такого файла в любое ГУИ окно или чат, а если выводить результат в консоль, то там какие-то иероглифы. Если же текст на латинице, то все нормально. Что-то с кодировкой или я неправильно что-то делаю?

Да есть. У меня прекрасно выводит кирилицу в Memo из текстового файла. И кодировка UTF-8 (без BOM). Покажите, как вы выводите

Link to comment

Каким-то странным образом все заработало, возможно все-таки до этого была другая кодировка. Или как вариант я считывал небольшое количество байтов с файла и оно показывало не полностью + иероглифы. В общем, уже все норм)

Link to comment

Приветствую, прошу помогите, не могу понять почему не работают функции Explode и Destroy, в других скриптах нечто подобное срабатывало (правда они были клиентские а этот серверный), а тут ни в какую. Причем функция Exit работает хорошо и не вызывает нареканий.

  
function Exit () 
unbindKey ( source, "k", "down", create ) 
if on == 1 then 
on=0 
killTimer(timer1) 
end 
end 
addEventHandler ( "onPlayerVehicleExit", getRootElement(), Exit ) 
  
  
function Explode () 
   unbindKey ( source, "k", "down", create ) 
        if on == 1 then 
           on=0 
           killTimer(timer1) 
        end 
end 
addEventHandler ( "onVehicleExplode", getRootElement(), Explode ) 
  
  
function Destroy () 
    if getElementType(source) == "vehicle" and getPedOccupiedVehicle(getLocalPlayer()) == source then 
    unbindKey ( source, "k", "down", create ) 
        if on == 1 then 
        on=0 
        killTimer(timer1) 
    end 
    end 
end 
addEventHandler ("onClientElementDestroy", getRootElement(), Destroy ) 
  

когда взрываю машину получаю ошибку в консоль server.lua:67: Bad 'player' pointer @ 'unbindKey'(1)

когда дестрою машину получаю бесконечно повторяющуюся ошибку таймера (таймер настроен на бесконечное повторение с интервалом 500)

простите за возможно глупый вопрос, я новичек в этом деле

Link to comment
  • 2 weeks later...

https://wiki.multitheftauto.com/index.php?title=RU/Element

Туда указывается элемент, который должен обрабатывать событие. root - корневой элемент иерархии, это значит что все события игроков/транспорта будут вызывать и его обработчики.

local vehicle = createVehicle( 455, x, y, z ) -- создали авто 
  
addEventHandler( 'onVehicleEnter', vehicle, function( )  
   -- повесили на него обработчик события входа в авто 
   -- источник события указан в переменной source 
   blowVehicle( source ) -- будет взорвана именно эта машина 
end ) 

Link to comment

Столкнулся с непонятным мне багом\механизмом. Заключается он в том, что если на машине была установлена гидравлика, но потом была удалена, то после изменения параметра хэндлинга "suspensionLowerLimit"(возможно не только этого) чудесным образом появляется эта самая гидравлика. При этом её ничем не пропалишь! Ни getVehicleUpgradeOnSlot(veh, 9) , ни getVehicleUpgrades(veh). Ни на клиенте, ни на сервере.

Этот код всё демонстрирует. На первый раз исполнения функции всё нормально. На второй появляется гидравлика.

addCommandHandler("hydra", 
    function(player) 
        local veh = getPedOccupiedVehicle(player) 
        addVehicleUpgrade(veh, 1087) 
        setTimer(removeVehicleUpgrade, 2000, 1, veh, 1087) 
        setTimer(setVehicleHandling, 4000, 1, veh, "suspensionLowerLimit", 0) 
    end 
) 

Кто-нибудь сталкивался вообще? Как лечить?

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...