elmoxxx666

Disparar en interiores, Ayuda

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 )

Share this post


Link to post

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

Share this post


Link to post
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...

Share this post


Link to post
45 minutes ago, elmoxxx666 said:

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

no me funcionó entro al interior 11 y dispara igual

Share this post


Link to post
Posted (edited)

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

Share this post


Link to post
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...

Share this post


Link to post
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...

Share this post


Link to post
Posted (edited)

¿ Creaste la función que inicia el evento "onPlayerInteriorWarped" ? ¿ Si es así, podrías pasarlo ?

Edited by <~KaMiKaZe~>

Share this post


Link to post

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.

Share this post


Link to post
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í...

Share this post


Link to post
Posted (edited)

 

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

Share this post


Link to post
Posted (edited)

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

Share this post


Link to post
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...

Share this post


Link to post

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

Share this post


Link to post
Posted (edited)
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

Share this post


Link to post
Posted (edited)

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

Share this post


Link to post
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

 

Share this post


Link to post

Disparar vas a poder disparar, lo q no vas a poder es matarlo.

  • Thanks 1

Share this post


Link to post
Posted (edited)

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

Share this post


Link to post
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

Share this post


Link to post

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.