Jump to content

Disparar en interiores, Ayuda


di3g0

Recommended Posts

quiero que cuando este en un interior no se pueda disparar, ahí mi intento xD
 
function PlayerInteriorWarped ( source, commandName, interior )
if ( getElementInterior() == 11 ) then
toggleControl ( source, "fire", false )
    end
end
addEventHandler ( "onPlayerInteriorWarped", resourceRoot, PlayerInteriorWarped )
Link to comment

Mi pregunta es, ¿con qué scripteas? Porque dejas una separación entre líneas que es brutal y de la tabulación ni hablemos. 

function PlayerInteriorWarped ( player, commandName, interior )
	if ( getElementInterior( player ) == 11 ) then
		toggleControl ( player, "fire", false ) -- Si entra al 11, apagamos el fire 
	else
		toggleControl ( player, "fire", true ) -- Si entra a otro, encendemos el fire
	end
end
addEventHandler ( "onPlayerInteriorWarped", resourceRoot, PlayerInteriorWarped )

 

  • Thanks 1
Link to comment
3 hours ago, aka Blue said:

Mi pregunta es, ¿con qué scripteas? Porque dejas una separación entre líneas que es brutal y de la tabulación ni hablemos. 


function PlayerInteriorWarped ( player, commandName, interior )
	if ( getElementInterior( player ) == 11 ) then
		toggleControl ( player, "fire", false ) -- Si entra al 11, apagamos el fire 
	else
		toggleControl ( player, "fire", true ) -- Si entra a otro, encendemos el fire
	end
end
addEventHandler ( "onPlayerInteriorWarped", resourceRoot, PlayerInteriorWarped )

 

Gracias xD   ,en realidad me queda asi al pegar el codigo aqui no se porque...

Link to comment

Prueba esto, no sé

function PlayerInteriorWarped ( player, commandName, interior )
	if ( interior == 11 ) then
		toggleControl ( player, "fire", false ) -- Si entra al 11, apagamos el fire 
	else
		toggleControl ( player, "fire", true ) -- Si entra a otro, encendemos el fire
	end
end
addEventHandler ( "onPlayerInteriorWarped", getRootElement(), PlayerInteriorWarped )

Es que ese evento es personalizado así que...

Edited by aka Blue
Link to comment
26 minutes ago, aka Blue said:

Prueba esto, no sé


function PlayerInteriorWarped ( player, commandName, interior )
	if ( interior == 11 ) then
		toggleControl ( player, "fire", false ) -- Si entra al 11, apagamos el fire 
	else
		toggleControl ( player, "fire", true ) -- Si entra a otro, encendemos el fire
	end
end
addEventHandler ( "onPlayerInteriorWarped", getRootElement(), PlayerInteriorWarped )

Es que ese evento es personalizado así que...

nop, sigue disparando...

Link to comment
22 minutes ago, elmoxxx666 said:

nop, sigue disparando...

deberia funcionarme desde el panel admin no? esto

toggleControl ( player, "fire", false ) ,

porque me funciona si lo pongo asi: toggleControl ( source, "fire", false ) , pero nada mas , si lo cambio dentro del codigo no me funciona...

Link to comment

Es que no tiene sentido poner source, se supone que es el jugador el que se tpea entonces cambias el 'source' por otro nombre para no tener algún problema al tirar el evento desde cliente al servidor.

Como te han dicho, si puedes pasar el cómo funciona onPlayerInteriorWarped estaría bien.

Link to comment
8 minutes ago, aka Blue said:

Es que no tiene sentido poner source, se supone que es el jugador el que se tpea entonces cambias el 'source' por otro nombre para no tener algún problema al tirar el evento desde cliente al servidor.

Como te han dicho, si puedes pasar el cómo funciona onPlayerInteriorWarped estaría bien.

No habia puesto nada aparte del codigo que me diste no sabia :S

seria algo asi?

function resourceStart()
    addEventHandler( "onPlayerInteriorWarped", getRootElement(), onInteriorEnter )
    end
    
    addEventHandler( "onResourceStart", getResourceRootElement( getThisResource() ), resourceStart )
    
    function onInteriorEnter( interior )
    outputChatBox( tostring(getElementInterior( source ) ) ) --it output always 0
    outputChatBox( getElementType ( interior ) )
    --outputChatBox( tostring(getPlayerName( source ) ), source )
    end

 

Just now, elmoxxx666 said:

No habia puesto nada aparte del codigo que me diste no sabia :S

seria algo asi?

function resourceStart()
    addEventHandler( "onPlayerInteriorWarped", getRootElement(), onInteriorEnter )
    end
    
    addEventHandler( "onResourceStart", getResourceRootElement( getThisResource() ), resourceStart )
    
    function onInteriorEnter( interior )
    outputChatBox( tostring(getElementInterior( source ) ) ) --it output always 0
    outputChatBox( getElementType ( interior ) )
    --outputChatBox( tostring(getPlayerName( source ) ), source )
    end

 

Perdonen se me estira el codigo al pegarlo aquí...

Link to comment

 

39 minutes ago, elmoxxx666 said:

No habia puesto nada aparte del codigo que me diste no sabia :S

seria algo asi?

function resourceStart()
    addEventHandler( "onPlayerInteriorWarped", getRootElement(), onInteriorEnter )
    end
    
    addEventHandler( "onResourceStart", getResourceRootElement( getThisResource() ), resourceStart )
    
    function onInteriorEnter( interior )
    outputChatBox( tostring(getElementInterior( source ) ) ) --it output always 0
    outputChatBox( getElementType ( interior ) )
    --outputChatBox( tostring(getPlayerName( source ) ), source )
    end

 

Perdonen se me estira el codigo al pegarlo aquí...

  Amigo, tu código no tiene mucho sentido...

  Te daré una pequeña ayuda con este y después lo continuarás tú para que puedas aprender.

--CLIENT

addEventHandler("onClientRender", root,
    function() -- Con esta función se tomara el interior del jugador constantemente.
        local int = getElementInterior(localPlayer) -- Se toma el interior del jugador.
        setElementData( localPlayer, "Interior", int ) -- El dato "Interior" guarda en que interior se encuentra el jugador.
    end
)  

addEventHandler("onClientElementDataChange", root,
    function(key,oV,nV)-- Esta función se iniciara cuando se detecte un cambio de interior por el jugador.
        if key == "Interior" then -- Detecta si el dato que cambia es "Interior".
            triggerServerEvent( "onPlayerInteriorWarped", source, oV, nV ) -- Inicia un evento enviado al lado del servidor donde source es el jugador que cambió de interior, oV es el antiguo interior y nV es el nuevo interior.
        end
    end
)  

--SERVER SIDE

addEvent("onPlayerInteriorWarped", true) -- Añade el evento 'onPlayerInteriorWarped' al lado del servidor.
addEventHandler("onPlayerInteriorWarped", root,
    function(oldInterior,newInterior) -- Tu función.
        --TU CODIGO
    end
)  
    

 

Te aviso que no probé el script así que, si hay un error, dime.

Mucha suerte :D 

Edited by <~KaMiKaZe~>
  • Like 1
Link to comment

No puedes inventarte eventos...

¿No es más fácil utilizar onPlayerDamage y añadirle el 'loss' a la vida? No sé...

function cancelarDisparos ( attacker, weapon, bodypart, loss )
	if weapon == 0 and getElementInterior(attacker) == 11 and getElementInterior(source) == 11 then
		setElementHealth( source, getElementHealth(source) + loss )
		cancelEvent()
	end
end
addEventHandler ( "onPlayerDamage", getRootElement (), cancelarDisparos )

 

Edited by aka Blue
  • Like 1
Link to comment
1 hour ago, <~KaMiKaZe~> said:

 

  Amigo, tu código no tiene mucho sentido...

  Te daré una pequeña ayuda con este y después lo continuarás tú para que puedas aprender.


--CLIENT

addEventHandler("onClientRender", root,
    function() -- Con esta función se tomara el interior del jugador constantemente.
        local int = getElementInterior(localPlayer) -- Se toma el interior del jugador.
        setElementData( localPlayer, "Interior", int ) -- El dato "Interior" guarda en que interior se encuentra el jugador.
    end
)  

addEventHandler("onClientElementDataChange", root,
    function(key,oV,nV)-- Esta función se iniciara cuando se detecte un cambio de interior por el jugador.
        if key == "Interior" then -- Detecta si el dato que cambia es "Interior".
            triggerServerEvent( "onPlayerInteriorWarped", source, oV, nV ) -- Inicia un evento enviado al lado del servidor donde source es el jugador que cambió de interior, oV es el antiguo interior y nV es el nuevo interior.
        end
    end
)  

--SERVER SIDE

addEvent("onPlayerInteriorWarped", true) -- Añade el evento 'onPlayerInteriorWarped' al lado del servidor.
addEventHandler("onPlayerInteriorWarped", root,
    function(oldInterior,newInterior) -- Tu función.
        --TU CODIGO
    end
)  
    

 

Te aviso que no probé el script así que, si hay un error, dime.

Mucha suerte :D 

Gracias crack, lo estudiaré hasta ahora no me ha funcionado pero lo estoy intentando xDDD

44 minutes ago, aka Blue said:

No puedes inventarte eventos...

¿No es más fácil utilizar onPlayerDamage y añadirle el 'loss' a la vida? No sé...


function cancelarDisparos ( attacker, weapon, bodypart, loss )
	if weapon == 0 and getElementInterior(attacker) == 11 and getElementInterior(source) == 11 then
		setElementHealth( source, getElementHealth(source) + loss )
		cancelEvent()
	end
end
addEventHandler ( "onPlayerDamage", getRootElement (), cancelarDisparos )

 

es que ya tengo peds invencibles en interiores del lado del server , solo que para agregarle mas realismo queria quitar la opcion de poder dispararles...

Link to comment
14 hours ago, aka Blue said:

Peds y jugadores es algo distinto eh. Peds son los "bots" y los jugadores pues son los jugadores.

no bueno no dispararles a ellos , sinó quitar el poder disparar dentro del interior donde estan peds y players

Edited by elmoxxx666
Link to comment

Lo que te he pasado yo funciona. Lo tengo yo puesto en mi servidor... Fijate que lo has copiado bien y lo has puesto bien.

function cancelarDisparos ( attacker, weapon, bodypart, loss )
	if getElementInterior(attacker) == 11 and getElementInterior(source) == 11 then
		setElementHealth( source, getElementHealth(source) + loss )
		cancelEvent()
	end
end
addEventHandler ( "onPlayerDamage", getRootElement (), cancelarDisparos )

 

Edited by aka Blue
  • Thanks 1
Link to comment
2 hours ago, aka Blue said:

Lo que te he pasado yo funciona. Lo tengo yo puesto en mi servidor... Fijate que lo has copiado bien y lo has puesto bien.


function cancelarDisparos ( attacker, weapon, bodypart, loss )
	if getElementInterior(attacker) == 11 and getElementInterior(source) == 11 then
		setElementHealth( source, getElementHealth(source) + loss )
		cancelEvent()
	end
end
addEventHandler ( "onPlayerDamage", getRootElement (), cancelarDisparos )

 

lo puse tal cual pero sigue disparando :C igual ya no importa ya me han ayudado bastante con esto gracias xD

 

Link to comment

Intentá esto

--CLIENT

addEventHandler("onClientRender", root,
    function() -- Con esta función se tomará el interior del jugador constantemente.
        local int = getElementInterior(localPlayer) -- Se toma el interior del jugador.
        setElementData( localPlayer, "Interior", int ) -- El dato "Interior" guarda en que interior se encuentra el jugador.
    end
)  

addEventHandler("onClientElementDataChange", root,
    function(key,oV,nV)-- Esta función se iniciara cuando se detecte un cambio de interior por el jugador.
        if key == "Interior" then -- Detecta si el dato que cambia es "Interior".
            triggerServerEvent( "onPlayerInteriorWarped", source, oV, nV ) -- Inicia un evento enviado al lado del servidor donde source es el jugador que cambió de interior, oV es el antiguo interior y nV es el nuevo interior.
        end
    end
)  

--SERVER

addEvent("onPlayerInteriorWarped", true) -- Añade el evento 'onPlayerInteriorWarped' al lado del servidor.
addEventHandler("onPlayerInteriorWarped", root,
    function(oldInterior,newInterior) -- Tu función.
        if oldInterior == 0 then
        toggleControl( source, "fire", false )
        elseif newInterior == 0 then
        toggleControl( source, "fire", true )      
        end
    end
)

Si no funciona es porque capaz tenés algo mal en el meta porque el que te pasaron estaba perfecto.

Edited by <~KaMiKaZe~>
  • Thanks 1
Link to comment
28 minutes ago, <~KaMiKaZe~> said:

Intentá esto


--CLIENT

addEventHandler("onClientRender", root,
    function() -- Con esta función se tomara el interior del jugador constantemente.
        local int = getElementInterior(localPlayer) -- Se toma el interior del jugador.
        setElementData( localPlayer, "Interior", int ) -- El dato "Interior" guarda en que interior se encuentra el jugador.
    end
)  

addEventHandler("onClientElementDataChange", root,
    function(key,oV,nV)-- Esta función se iniciara cuando se detecte un cambio de interior por el jugador.
        if key == "Interior" then -- Detecta si el dato que cambia es "Interior".
            triggerServerEvent( "onPlayerInteriorWarped", source, oV, nV ) -- Inicia un evento enviado al lado del servidor donde source es el jugador que cambió de interior, oV es el antiguo interior y nV es el nuevo interior.
        end
    end
)  

--SERVER

addEvent("onPlayerInteriorWarped", true) -- Añade el evento 'onPlayerInteriorWarped' al lado del servidor.
addEventHandler("onPlayerInteriorWarped", root,
    function(oldInterior,newInterior) -- Tu función.
        if oldInterior == 0 then
        toggleControl( source, "fire", false )
        elseif newInterior == 0 then
        toggleControl( source, "fire", true )      
        end
    end
)

Si no funciona es porque capaz tenés algo mal en el meta porque el que te pasaron estaba perfecto.

Funcionó enseguida gracias crack xD

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