part ii
returneaza playerul dupa o parte a numelui (useful af)
function getPlayerFromPartialName(name)
local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil
if name then
for _, player in ipairs(getElementsByType("player")) do
local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower()
if name_:find(name, 1, true) then
return player
end
end
end
return false
end
verifica daca contul player-ului este intr-un ACL Group
function isPlayerInACL ( player, acl )
local account = getPlayerAccount ( player )
if ( isGuestAccount ( account ) ) then
return false
end
return isObjectInACLGroup ( "user."..getAccountName ( account ), aclGetGroup ( acl ) )
end
verifica daca player-ul este intr-un team
function isPlayerInTeam(player, team)
return getPlayerTeam(player) == (type(team) == "string" and getTeamFromName(team) or (type(team) == "userdata" and team or (getPlayerTeam(player) or true)))
end
returneaza distanta dintre camera si element
function getElementDistanceFromCamera(element)
local cX, cY, cZ = getCameraMatrix()
local eX, eY, eZ = getElementPosition(element)
return getDistanceBetweenPoints3D(cX, cY, cZ, eX, eY, eZ)
end
returneaza viteza unui element in km/h
function getElementKMh(element)
if element and isElement(element) then
local v = {getElementVelocity(element)}
return math.floor(((v[1]^2 + v[2]^2 + v[3]^2)^(0.5))*180)
end
end
returneaza un string fara Hex color codes: #00FF00Player > Player
function unHex(string)
return (type(string) == "string" and string:gsub("#%x%x%x%x%x%x", "")) or false
end
recomandat pentru cei ce lucreaza cu functii dx, screenR returneaza raportul ecranului (de obicei 16/9 sau 1.(7))
local screenW, screenH = guiGetScreenSize()
local screenR, screenN = screenW/screenH, 1280/screenW
screenN il folositi pentru dx scaling, daca lucrati in rezolutia 1920/1080, folositi 1920/screenW, dupa va folositi de acea variabila de a inmulti fiecare constanta folosit in functiile dx (nu inmultiti screenN cu screenW sau screenH fiindca aceste 2 nu sunt constante)
exemplu:
local screenW, screenH = guiGetScreenSize()
local screenN, screenYnative = 1280/screenW, 720/screenH -- // a 2-a variabila este foarte putin folosita, dar o vom folosi aici doar ca exemplu
addEventHandler("onClientRender", root, function()
-- FOLOSIND DOAR CONSTANTE (rosu)
dxDrawRectangle(screenW/2 - sizeX/2, screenH/2 - sizeY/2, 100, 200, tocolor(255, 0, 0, 255))
-- //
-- FOLOSIND x*screenN, y*screenYnative (verde)
local sizeX, sizeY = 100*screenN, 200*screenYnative
dxDrawRectangle(screenW/2 - sizeX/2, screenH/2 - sizeY/2, sizeX, sizeY, tocolor(0, 255, 0, 150))
-- //
end)
acest script deseneaza doua dreptunghiuri (rosu si verde) in mijlocul ecranului, veti observa ca dreptunghiul verde va avea dimensiunile relative rezolutiei ecranului, try it out. evident, se poate folosi aceasta variabila si in pozitionarea *elementelor* dx