Jump to content

Como deixo os veiculos indestrutiveis, quando o jogador estiver no modo passivo


Recommended Posts

Quero deixar todos os veículos que um jogador com o modo passivo ativo pegar, fique indestrutível e transparente. 
Acho que se eu colocar "setVehicleDamageProof(thePlayer, true)" na hora que o jogador entrar no modo passivo, só vai ativar pro veiculo que ele esta no momento, oque eu quero fazer eh deixar indestrutível e trasnparente todos os veiculos que ele entrar

------------------------------.------------------------------
local acls = { "Everyone" }
local cmd = "passivo" -- Comando Pra Desativar / Ativar o modo Passivo
local AtivarBind = false -- Ativar / Desativar o Uso de Bind Pra Desativar / Ativar o modo Passivo ( true = Ativado ) / ( false = Desativado )
local LetraOuNumeroParaBind = "b"


------------------------------.------------------------------ 
addEventHandler( "onResourceStart", resourceRoot,
	function()
		for _,v in pairs(getElementsByType("player")) do
		    if AtivarBind == true then
			bindKey(v, LetraOuNumeroParaBind, "down", toggleGodMode)
			end
		end
	end
)

------------------------------.------------------------------
addEventHandler( "onPlayerJoin", root,
	function()
	    if AtivarBind == true then
		bindKey(source, LetraOuNumeroParaBind, "down", toggleGodMode)
	end
  end
)

------------------------------.------------------------------
function toggleGodMode(thePlayer)
    local account = getPlayerAccount(thePlayer)
		if (not account or isGuestAccount(account)) then return end
		local accountName = getAccountName(account)
			for i, v in pairs ( acls ) do
				if ( isObjectInACLGroup ( "user.".. accountName, aclGetGroup ( v ) ) ) then
		
				if getElementData(thePlayer,"Desativando>ModoPassivo") == true then outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF]• Aguarde o Tempo de Desativar o Modo Passivo Para Usar esse Comando', thePlayer, 255, 255, 255, true ) return end
        
				if getElementData(thePlayer,"Ativando>ModoPassivo") == true then outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF]• Aguarde o Tempo de Ativação do Modo Passivo Para Usar esse Comando', thePlayer, 255, 255, 255, true ) return end
		
				if getElementData(thePlayer,"Ativado>Start15Segundos") == true then outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF]• Aguarde 15 Segundos Para Utilizar esse Comando Novamente', thePlayer, 255, 255, 255, true ) return end
				
				if getElementData(thePlayer,"Desativado>Start5Minutos") == true then outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF] • Aguarde 5 Minutos Para Utilizar esse Comando Novamente', thePlayer, 255, 255, 255, true ) return end
				
				if getElementData(thePlayer,"isPolice",true) then outputChatBox ( "#000000[#FF0000 Erro #000000]#FFFFFF Voce e um policial, nao pode ativar o modo passivo!", thePlayer, 255, 255, 255, true ) return end
				if getElementData(thePlayer,"emEvento",true) then outputChatBox ( "#000000[#FF0000 Erro #000000]#FFFFFF Voce esta em um evento!", thePlayer, 255, 255, 255, true ) return end
				if getElementData(thePlayer,"emArena",true) then outputChatBox ( "#000000[#FF0000 Erro #000000]#FFFFFF Voce esta em uma arena!", thePlayer, 255, 255, 255, true ) return end
		
					if getElementData(thePlayer,"ModoPassivo") == true then
					outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF] • Desativando Modo Passivo em 15 Segundos', thePlayer, 255, 255, 255, true )
					setTimer ( DesativarPassivo, 10000, 1, thePlayer)
					setElementData ( thePlayer, "Desativando>ModoPassivo", true )
						
				else
					
					outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF] • Ativando Modo Passivo em 10 Segundos', thePlayer, 255, 255, 255, true )
					setTimer ( AtivarPassivo, 10000, 1, thePlayer)
					setElementData ( thePlayer, "Ativando>ModoPassivo", true )
				end
            break
        end
    end
end
addCommandHandler ( cmd, toggleGodMode )

------------------------------DesativarModoPassivo------------------------------
function DesativarPassivo (thePlayer)

    setElementData ( thePlayer, "Desativando>ModoPassivo", false )

    setElementData(thePlayer,"ModoPassivo",false)
	
    toggleControl (thePlayer, "fire", true)
    toggleControl (thePlayer, "next_weapon", true)
    toggleControl (thePlayer, "previous_weapon", true)
    toggleControl (thePlayer, "aim_weapon", true)
    toggleControl (thePlayer, "vehicle_fire", true)
	setVehicleDamageProof(thePlayer,false)
	setElementAlpha(thePlayer, 255)
    
    outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF] Modo Passivo #FF0000( Desativado )', thePlayer, 255, 255, 255, true )
    
--    outputChatBox ( "• O Jogador "..getPlayerName(thePlayer).." #ffffffDesativou o Modo Passivo", root, 255, 255, 255, true ) -- Msg Para Todos
	
	setElementData ( thePlayer, "Desativado>Start5Minutos", true )
	setTimer ( setElementData, 300000, 1, thePlayer, "Desativado>Start5Minutos", false )
	
end

------------------------------AtivarModoPassivo------------------------------
function AtivarPassivo (thePlayer)

    setElementData ( thePlayer, "Ativando>ModoPassivo", false )

    setElementData(thePlayer,"ModoPassivo", true)
    toggleControl (thePlayer, "fire", false)
    toggleControl (thePlayer, "next_weapon", false)
    toggleControl (thePlayer, "previous_weapon", false)
    toggleControl (thePlayer, "aim_weapon", false)
    toggleControl (thePlayer, "vehicle_fire", false)
    setPedWeaponSlot (thePlayer, 0 )
	setVehicleDamageProof(thePlayer, true)
	setElementAlpha(thePlayer, 145)

	outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF]  Modo Passivo #00FF00( Ativado )', thePlayer, 255, 255, 255, true )

--	outputChatBox ( "• O Jogador "..getPlayerName(thePlayer).." #ffffffAtivou o Modo Passivo", root, 255, 255, 255, true ) -- Msg Para Todos
	
	setElementData ( thePlayer, "Ativado>Start15Segundos", true )
	setTimer ( setElementData, 15000, 1, thePlayer, "Ativado>Start15Segundos", false )
	
end

------------------------------.------------------------------
function VerificarModo (player)
	if getElementData ( player,"ModoPassivo" ) == true then
		toggleControl ( player, "fire", false)
		toggleControl ( player, "next_weapon", false)
		toggleControl ( player, "previous_weapon", false)
		toggleControl ( player, "aim_weapon", false)
		toggleControl ( player, "vehicle_fire", false)
		setPedWeaponSlot ( player, 0 )
	else
		if not getElementData (player, "EmAreaVerde") == true then
			toggleControl ( player, "fire", true )
			toggleControl ( player, "next_weapon", true )
			toggleControl ( player, "previous_weapon", true )
			toggleControl ( player, "aim_weapon", true )
			toggleControl ( player, "vehicle_fire", true )
		end
	end
end

------------------------------Timer------------------------------
setTimer(
function()
	for i, player in pairs(getElementsByType("player")) do
		if player ~= (false or nil) then
			VerificarModo(player)
		end
	end
end,
1000,0)

------------------------------OutroMod------------------------------
function outputMessage (text, player, r, g, b)
	return exports["Mod-MPLIB"]:outputMessage(player, text, r, g, b);
end

setElementData ( localPlayer, "Timer:Passivo", false )
setElementData ( localPlayer, "ModoPassivo", false )
setElementData ( localPlayer, "Ativando>ModoPassivo", false )
setElementData ( localPlayer, "Desativando>ModoPassivo", false )
setElementData ( localPlayer, "Desativado>Start5Minutos", false )
setElementData ( localPlayer, "Ativado>Start15Segundos", false )

--------------------------------------------------------------------------------------------------------
addEventHandler ( "onClientPlayerDamage",root,
function ()
	if getElementData(source,"ModoPassivo") then
		cancelEvent()
	end
end
)

--------------------------------------------------------------------------------------------------------
addEventHandler("onClientPlayerStealthKill",localPlayer,
function (targetPlayer)
	if getElementData(targetPlayer,"ModoPassivo") then
		cancelEvent()
	end
end
)

--------------------------------------------------------------------------------------------------------
addEventHandler ( "onClientPlayerDamage",root,
    function ()
        if getElementData(source,"ModoPassivo") then
            cancelEvent()
        end
    end
)

--------------------------------------------------------------------------------------------------------
addEventHandler("onClientPlayerStealthKill",localPlayer,
function (targetPlayer)
	if getElementData(targetPlayer,"ModoPassivo") then
		cancelEvent()
	end
end
)

--------------------------------------------------------------------------------------------------------
addEventHandler( 'onClientRender', root,
function( )
	for _, player in ipairs( getElementsByType( 'player') ) do
		if isElementOnScreen( player ) and getElementData( player, 'ModoPassivo' ) then
			local cx, cy, cz, x, y, z, dist
			local x, y, z = getElementPosition( player );
			local cx, cy, cz = getCameraMatrix( );
			dist = math.sqrt( ( cx - x ) ^ 2 + ( cy - y ) ^ 2 + ( cz - z ) ^ 2 )
			if dist < 32.0 then
			if isLineOfSightClear( cx, cy, cz, x, y, z, true, false, false, true, false, false, false,localPlayer ) then
				local sx, sy, sz = getPedBonePosition( player, 2 )
				local x,y = getScreenFromWorldPosition( sx, sy, sz + 0.15 )
					if x then
						dxDrawText("Modo Passivo", x, y, 30, 30, tocolor(255, 255, 255, 200), 1, "default-bold", "left", "top")
					end
				end
			end
		end
	end
end
);

 

Edited by Maaster342
Link to comment
1 hour ago, Maaster342 said:

Quero deixar todos os veículos que um jogador com o modo passivo ativo pegar, fique indestrutível e transparente. 
Acho que se eu colocar "setVehicleDamageProof(thePlayer, true)" na hora que o jogador entrar no modo passivo, só vai ativar pro veiculo que ele esta no momento, oque eu quero fazer eh deixar indestrutível e trasnparente todos os veiculos que ele entrar


------------------------------.------------------------------
local acls = { "Everyone" }
local cmd = "passivo" -- Comando Pra Desativar / Ativar o modo Passivo
local AtivarBind = false -- Ativar / Desativar o Uso de Bind Pra Desativar / Ativar o modo Passivo ( true = Ativado ) / ( false = Desativado )
local LetraOuNumeroParaBind = "b"


------------------------------.------------------------------ 
addEventHandler( "onResourceStart", resourceRoot,
	function()
		for _,v in pairs(getElementsByType("player")) do
		    if AtivarBind == true then
			bindKey(v, LetraOuNumeroParaBind, "down", toggleGodMode)
			end
		end
	end
)

------------------------------.------------------------------
addEventHandler( "onPlayerJoin", root,
	function()
	    if AtivarBind == true then
		bindKey(source, LetraOuNumeroParaBind, "down", toggleGodMode)
	end
  end
)

------------------------------.------------------------------
function toggleGodMode(thePlayer)
    local account = getPlayerAccount(thePlayer)
		if (not account or isGuestAccount(account)) then return end
		local accountName = getAccountName(account)
			for i, v in pairs ( acls ) do
				if ( isObjectInACLGroup ( "user.".. accountName, aclGetGroup ( v ) ) ) then
		
				if getElementData(thePlayer,"Desativando>ModoPassivo") == true then outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF]• Aguarde o Tempo de Desativar o Modo Passivo Para Usar esse Comando', thePlayer, 255, 255, 255, true ) return end
        
				if getElementData(thePlayer,"Ativando>ModoPassivo") == true then outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF]• Aguarde o Tempo de Ativação do Modo Passivo Para Usar esse Comando', thePlayer, 255, 255, 255, true ) return end
		
				if getElementData(thePlayer,"Ativado>Start15Segundos") == true then outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF]• Aguarde 15 Segundos Para Utilizar esse Comando Novamente', thePlayer, 255, 255, 255, true ) return end
				
				if getElementData(thePlayer,"Desativado>Start5Minutos") == true then outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF] • Aguarde 5 Minutos Para Utilizar esse Comando Novamente', thePlayer, 255, 255, 255, true ) return end
				
				if getElementData(thePlayer,"isPolice",true) then outputChatBox ( "#000000[#FF0000 Erro #000000]#FFFFFF Voce e um policial, nao pode ativar o modo passivo!", thePlayer, 255, 255, 255, true ) return end
				if getElementData(thePlayer,"emEvento",true) then outputChatBox ( "#000000[#FF0000 Erro #000000]#FFFFFF Voce esta em um evento!", thePlayer, 255, 255, 255, true ) return end
				if getElementData(thePlayer,"emArena",true) then outputChatBox ( "#000000[#FF0000 Erro #000000]#FFFFFF Voce esta em uma arena!", thePlayer, 255, 255, 255, true ) return end
		
					if getElementData(thePlayer,"ModoPassivo") == true then
					outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF] • Desativando Modo Passivo em 15 Segundos', thePlayer, 255, 255, 255, true )
					setTimer ( DesativarPassivo, 10000, 1, thePlayer)
					setElementData ( thePlayer, "Desativando>ModoPassivo", true )
						
				else
					
					outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF] • Ativando Modo Passivo em 10 Segundos', thePlayer, 255, 255, 255, true )
					setTimer ( AtivarPassivo, 10000, 1, thePlayer)
					setElementData ( thePlayer, "Ativando>ModoPassivo", true )
				end
            break
        end
    end
end
addCommandHandler ( cmd, toggleGodMode )

------------------------------DesativarModoPassivo------------------------------
function DesativarPassivo (thePlayer)

    setElementData ( thePlayer, "Desativando>ModoPassivo", false )

    setElementData(thePlayer,"ModoPassivo",false)
	
    toggleControl (thePlayer, "fire", true)
    toggleControl (thePlayer, "next_weapon", true)
    toggleControl (thePlayer, "previous_weapon", true)
    toggleControl (thePlayer, "aim_weapon", true)
    toggleControl (thePlayer, "vehicle_fire", true)
	setVehicleDamageProof(thePlayer,false)
	setElementAlpha(thePlayer, 255)
    
    outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF] Modo Passivo #FF0000( Desativado )', thePlayer, 255, 255, 255, true )
    
--    outputChatBox ( "• O Jogador "..getPlayerName(thePlayer).." #ffffffDesativou o Modo Passivo", root, 255, 255, 255, true ) -- Msg Para Todos
	
	setElementData ( thePlayer, "Desativado>Start5Minutos", true )
	setTimer ( setElementData, 300000, 1, thePlayer, "Desativado>Start5Minutos", false )
	
end

------------------------------AtivarModoPassivo------------------------------
function AtivarPassivo (thePlayer)

    setElementData ( thePlayer, "Ativando>ModoPassivo", false )

    setElementData(thePlayer,"ModoPassivo", true)
    toggleControl (thePlayer, "fire", false)
    toggleControl (thePlayer, "next_weapon", false)
    toggleControl (thePlayer, "previous_weapon", false)
    toggleControl (thePlayer, "aim_weapon", false)
    toggleControl (thePlayer, "vehicle_fire", false)
    setPedWeaponSlot (thePlayer, 0 )
	setVehicleDamageProof(thePlayer, true)
	setElementAlpha(thePlayer, 145)

	outputMessage ( '#FFFFFF [#FFFF00INFO#FFFFFF]  Modo Passivo #00FF00( Ativado )', thePlayer, 255, 255, 255, true )

--	outputChatBox ( "• O Jogador "..getPlayerName(thePlayer).." #ffffffAtivou o Modo Passivo", root, 255, 255, 255, true ) -- Msg Para Todos
	
	setElementData ( thePlayer, "Ativado>Start15Segundos", true )
	setTimer ( setElementData, 15000, 1, thePlayer, "Ativado>Start15Segundos", false )
	
end

------------------------------.------------------------------
function VerificarModo (player)
	if getElementData ( player,"ModoPassivo" ) == true then
		toggleControl ( player, "fire", false)
		toggleControl ( player, "next_weapon", false)
		toggleControl ( player, "previous_weapon", false)
		toggleControl ( player, "aim_weapon", false)
		toggleControl ( player, "vehicle_fire", false)
		setPedWeaponSlot ( player, 0 )
	else
		if not getElementData (player, "EmAreaVerde") == true then
			toggleControl ( player, "fire", true )
			toggleControl ( player, "next_weapon", true )
			toggleControl ( player, "previous_weapon", true )
			toggleControl ( player, "aim_weapon", true )
			toggleControl ( player, "vehicle_fire", true )
		end
	end
end

------------------------------Timer------------------------------
setTimer(
function()
	for i, player in pairs(getElementsByType("player")) do
		if player ~= (false or nil) then
			VerificarModo(player)
		end
	end
end,
1000,0)

------------------------------OutroMod------------------------------
function outputMessage (text, player, r, g, b)
	return exports["Mod-MPLIB"]:outputMessage(player, text, r, g, b);
end


setElementData ( localPlayer, "Timer:Passivo", false )
setElementData ( localPlayer, "ModoPassivo", false )
setElementData ( localPlayer, "Ativando>ModoPassivo", false )
setElementData ( localPlayer, "Desativando>ModoPassivo", false )
setElementData ( localPlayer, "Desativado>Start5Minutos", false )
setElementData ( localPlayer, "Ativado>Start15Segundos", false )

--------------------------------------------------------------------------------------------------------
addEventHandler ( "onClientPlayerDamage",root,
function ()
	if getElementData(source,"ModoPassivo") then
		cancelEvent()
	end
end
)

--------------------------------------------------------------------------------------------------------
addEventHandler("onClientPlayerStealthKill",localPlayer,
function (targetPlayer)
	if getElementData(targetPlayer,"ModoPassivo") then
		cancelEvent()
	end
end
)

--------------------------------------------------------------------------------------------------------
addEventHandler ( "onClientPlayerDamage",root,
    function ()
        if getElementData(source,"ModoPassivo") then
            cancelEvent()
        end
    end
)

--------------------------------------------------------------------------------------------------------
addEventHandler("onClientPlayerStealthKill",localPlayer,
function (targetPlayer)
	if getElementData(targetPlayer,"ModoPassivo") then
		cancelEvent()
	end
end
)

--------------------------------------------------------------------------------------------------------
addEventHandler( 'onClientRender', root,
function( )
	for _, player in ipairs( getElementsByType( 'player') ) do
		if isElementOnScreen( player ) and getElementData( player, 'ModoPassivo' ) then
			local cx, cy, cz, x, y, z, dist
			local x, y, z = getElementPosition( player );
			local cx, cy, cz = getCameraMatrix( );
			dist = math.sqrt( ( cx - x ) ^ 2 + ( cy - y ) ^ 2 + ( cz - z ) ^ 2 )
			if dist < 32.0 then
			if isLineOfSightClear( cx, cy, cz, x, y, z, true, false, false, true, false, false, false,localPlayer ) then
				local sx, sy, sz = getPedBonePosition( player, 2 )
				local x,y = getScreenFromWorldPosition( sx, sy, sz + 0.15 )
					if x then
						dxDrawText("Modo Passivo", x, y, 30, 30, tocolor(255, 255, 255, 200), 1, "default-bold", "left", "top")
					end
				end
			end
		end
	end
end
);

 

Use: onClientVehicleDamage

  • Confused 1
Link to comment

Deu problema, pois o source nesse evento seria o veiculo, não o player.

addEventHandler("onVehicleDamage",root,function()
    local player = getVehicleOccupant(source) -- / Pegou o player que está dentro daquele veiculo, caso não tenha um player ele retornaria false
    if player then -- / Vi se encontrou um player naquele veiculo, para caso caso ele retorne um valor boolean
        if getElementData(player,"ModoPassivo") then -- vi se o player que está dentro do carro está com esse elementdata
            cancelEvent() -- se estiver ele vai cancelar o evento.
        end
    end
end

Utilize no Server-Side !!

  • Thanks 1
Link to comment
4 hours ago, LucasST said:

Deu problema, pois o source nesse evento seria o veiculo, não o player.


addEventHandler("onVehicleDamage",root,function()
    local player = getVehicleOccupant(source) -- / Pegou o player que está dentro daquele veiculo, caso não tenha um player ele retornaria false
    if player then -- / Vi se encontrou um player naquele veiculo, para caso caso ele retorne um valor boolean
        if getElementData(player,"ModoPassivo") then -- vi se o player que está dentro do carro está com esse elementdata
            cancelEvent() -- se estiver ele vai cancelar o evento.
        end
    end
end

Utilize no Server-Side !!

--------------------------------------------------------------------------------------------------------
addEventHandler("onVehicleEnter",root,
function()
    local player = getVehicleOccupant(source) 
		if player then
			if getElementData(player,"ModoPassivo") then
				setElementAlpha(player,145)
			end
		end
    end
)

--------------------------------------------------------------------------------------------------------
addEventHandler("onVehicleExit",root,
function()
	if getElementData(player,"ModoPassivo") then -- vi se o player que está dentro do carro está com esse elementdata
		setElementAlpha(player,255)
    end
end
)

Deu certo, obrigado! e sobre a parte da invisibilidade no veiculo, como faço? tentei isso ai mais nao deu certo,  e se possível ja ensina tambem como remover a colisão do veiculo

Link to comment

Sobre a questão de 'invisibilidade do veículo' e deixar sem colisão você pode utilizar setElementAlpha & setElementCollisionsEnabled.

exemplo:
 

addEventHandlerAdded('onVehicleStartEnter',
  function(player, vei)
    if (getElementData(player, 'ModoPassivo')) then
      setElementAlpha(vei, 50)
      setElementCollisionsEnabled(vei, false)
    end
  end
)

addEventHandlerAdded('onVehicleStartExit',
  function(player, vei)
    if (getElementData(player, 'ModoPassivo')) then
      setElementAlpha(vei, 255)
      setElementCollisionsEnabled(vei, true)
    end
  end
)

 

Edited by Caiozin11
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...