di3g0 Posted July 7, 2019 Share Posted July 7, 2019 quiero que cuando este en un interior no se pueda disparar, ahí mi intento function PlayerInteriorWarped ( source, commandName, interior ) if ( getElementInterior() == 11 ) then toggleControl ( source, "fire", false ) end end addEventHandler ( "onPlayerInteriorWarped", resourceRoot, PlayerInteriorWarped ) Link to comment
aka Blue Posted July 7, 2019 Share Posted July 7, 2019 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 ) 1 Link to comment
di3g0 Posted July 7, 2019 Author Share Posted July 7, 2019 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 ,en realidad me queda asi al pegar el codigo aqui no se porque... Link to comment
di3g0 Posted July 7, 2019 Author Share Posted July 7, 2019 45 minutes ago, elmoxxx666 said: Gracias ,en realidad me queda asi al pegar el codigo aqui no se porque... no me funcionó entro al interior 11 y dispara igual Link to comment
aka Blue Posted July 7, 2019 Share Posted July 7, 2019 (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 July 7, 2019 by aka Blue Link to comment
di3g0 Posted July 7, 2019 Author Share Posted July 7, 2019 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
di3g0 Posted July 7, 2019 Author Share Posted July 7, 2019 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
KaMi Posted July 7, 2019 Share Posted July 7, 2019 (edited) ¿ Creaste la función que inicia el evento "onPlayerInteriorWarped" ? ¿ Si es así, podrías pasarlo ? Edited July 7, 2019 by <~KaMiKaZe~> Link to comment
aka Blue Posted July 7, 2019 Share Posted July 7, 2019 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
di3g0 Posted July 7, 2019 Author Share Posted July 7, 2019 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 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 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
KaMi Posted July 7, 2019 Share Posted July 7, 2019 (edited) 39 minutes ago, elmoxxx666 said: No habia puesto nada aparte del codigo que me diste no sabia 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 Edited July 7, 2019 by <~KaMiKaZe~> 1 Link to comment
aka Blue Posted July 7, 2019 Share Posted July 7, 2019 (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 July 7, 2019 by aka Blue 1 Link to comment
di3g0 Posted July 7, 2019 Author Share Posted July 7, 2019 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 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
aka Blue Posted July 8, 2019 Share Posted July 8, 2019 Peds y jugadores es algo distinto eh. Peds son los "bots" y los jugadores pues son los jugadores. Link to comment
di3g0 Posted July 8, 2019 Author Share Posted July 8, 2019 (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 July 8, 2019 by elmoxxx666 Link to comment
aka Blue Posted July 8, 2019 Share Posted July 8, 2019 (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 July 8, 2019 by aka Blue 1 Link to comment
di3g0 Posted July 8, 2019 Author Share Posted July 8, 2019 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 Link to comment
aka Blue Posted July 8, 2019 Share Posted July 8, 2019 Disparar vas a poder disparar, lo q no vas a poder es matarlo. 1 Link to comment
KaMi Posted July 8, 2019 Share Posted July 8, 2019 (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 July 9, 2019 by <~KaMiKaZe~> 1 Link to comment
di3g0 Posted July 9, 2019 Author Share Posted July 9, 2019 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 Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now