Jump to content

Colocar ACL em script


Recommended Posts

Sou muito leigo para isso, queria que só quem estivesse na ACL "Staff" usasse isso

function glue()
	local player = getLocalPlayer()
	if not getPlayerOccupiedVehicle(player) then
		local vehicle = getPlayerContactElement(player)
		if getElementType(vehicle) == "vehicle" then
			
			local px, py, pz = getElementPosition(player)
			local vx, vy, vz = getElementPosition(vehicle)
			local sx = px - vx
			local sy = py - vy
			local sz = pz - vz
			
			local rotpX = 0
			local rotpY = 0
			local rotpZ = getPlayerRotation(player)
			
			local rotvX,rotvY,rotvZ = getVehicleRotation(vehicle)
			
			local t = math.rad(rotvX)
			local p = math.rad(rotvY)
			local f = math.rad(rotvZ)
			
			local ct = math.cos(t)
			local st = math.sin(t)
			local cp = math.cos(p)
			local sp = math.sin(p)
			local cf = math.cos(f)
			local sf = math.sin(f)
			
			local z = ct*cp*sz + (sf*st*cp + cf*sp)*sx + (-cf*st*cp + sf*sp)*sy
			local x = -ct*sp*sz + (-sf*st*sp + cf*cp)*sx + (cf*st*sp + sf*cp)*sy
			local y = st*sz - sf*ct*sx + cf*ct*sy
			
			local rotX = rotpX - rotvX
			local rotY = rotpY - rotvY
			local rotZ = rotpZ - rotvZ
			
			local slot = getPlayerWeaponSlot(player)
			
			--outputDebugString("gluing ".. getPlayerName(player) .." to " .. getVehicleName(vehicle) .. "(offset: "..tostring(x)..","..tostring(y)..","..tostring(z).."; rotation:"..tostring(rotX)..","..tostring(rotY)..","..tostring(rotZ)..")")
			
			triggerServerEvent("gluePlayer", player, slot, vehicle, x, y, z, rotX, rotY, rotZ)
			
			unbindKey("x","down",glue)
			bindKey("x","down",unglue)
			bindKey("jump","down",unglue)
		end
	end
end

addCommandHandler("glue",glue)

function unglue ()
	local player = getLocalPlayer()
	triggerServerEvent("ungluePlayer", player)
	unbindKey("jump","down",unglue)
	unbindKey("x","down",unglue)
	bindKey("x","down",glue)
end

addCommandHandler("unglue",unglue)

bindKey("x","down",glue)
	
function gluePlayer(slot, vehicle, x, y, z, rotX, rotY, rotZ)
	attachElementToElement(source, vehicle, x, y, z, rotX, rotY, rotZ)
	setPlayerWeaponSlot(source, slot)
end
addEvent("gluePlayer",true)
addEventHandler("gluePlayer",getRootElement(),gluePlayer)

function ungluePlayer()
	detachElementFromElement(source)
end
addEvent("ungluePlayer",true)
addEventHandler("ungluePlayer",getRootElement(),ungluePlayer)

não sei em qual destes é mas acredito que seja no primeiro

Link to comment
  • Other Languages Moderators
  1. Troque todos os getLocalPlayer() pela variável predefinida localPlayer.
  2. Troque todos os getRootElement() pela variável predefinida root.
  3. Imagino que seu primeiro script seja client-side e o segundo script seja server-side. Verificar ACL só funciona em scripts server-side, ou seja, tem que ser no seu segundo script.
  4. Adicione uma nova linha antes do attachElementToElement e nela coloque isso:
    if not isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(source)), aclGetGroup ("Staff")) then return end -- Se o jogador não estiver na ACL Group "Staff", cancela essa função e nada acontece.

Obs: Limitar permissões de acesso para staffs e não staffs é mais inteligente fazer via permissão em vez de ACL Group. Dessa forma você não precisa ficar criando uma ACL Group genérica de Staff para colocar todos os seus staffs dentro. Você pode simplesmente verificar se o jogador tem permissão de mutar jogadores, se ele tiver essa permissão então ele é staff (moderador ou superior). Para verificar essa permissão, você pode fazer assim:

    if not hasObjectPermissionTo (source, "command.mute", false) then return end -- Se o jogador não tem permissão para mutar jogadores (não é staff), então cancela essa função e nada acontece.

 

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...