Jump to content

[Ayuda]Weapon por ColShape


Recommended Posts

Voy a suponer que la ColShape será un rectángulo.

createColRectangle 
setPedWeaponSlot 
takeWeapon 
  
"onColShapeHit" 
"onColShapeLeave" 
"onPlayerWeaponSwitch" 

Ahora, para que cuando cambie de arma el script reconozca si el jugador está dentro o fuera de la ColShape, se pueden usar muchos métodos, pero lo más sencillo sería:

local laColShape = createColRectangle (...) 
local IDprohibido1 = [NÚMERO] 
local IDprohibido2 = [NÚMERO] 
  
function EntrarColShape ( thePlayer ) 
--todo lo que quieras que haga... 
setElementData (thePlayer, "detectar_colshape", "dentro") 
if (getPedWeapon (thePlayer) == IDprohibido1) or (getPedWeapon (thePlayer) == IDprohibido2) then 
    setPedWeaponSlot (thePlayer, [SLOT PERMITIDO]) 
    end 
end 
addEventHandler("onColShapeHit", laColShape, EntrarColShape) 
  
function SalirColShape ( thePlayer ) 
--todo lo que quieras que haga... 
setElementData (thePlayer, "detectar_colshape", "fuera") 
end 
addEventHandler("onColShapeLeave", laColShape, SalirColShape) 
  
function CambioDeArma ( previousWeaponID, currentWeaponID ) 
if getElementData (thePlayer, "detectar_colshape") == "dentro" then 
     if (currentWeaponID == IDprohibido1) or (currentWeaponID == IDprohibido2) then 
         setPedWeaponSlot (thePlayer, [SLOT DEL ARMA QUE QUIERES]) 
         takeWeapon (thePlayer, IDprohibido1) 
         takeWeapon (thePlayer, IDprohibido2) 
     end 
end 
addEventHandler("onPlayerWeaponSwitch", getRootElement ( ), CambioDeArma) 

Debería ser algo así.

Link to comment
Voy a suponer que la ColShape será un rectángulo.
createColRectangle 
setPedWeaponSlot 
takeWeapon 
  
"onColShapeHit" 
"onColShapeLeave" 
"onPlayerWeaponSwitch" --debes tener en cuenta los IDs de slot, no del arma. 

Gracias me sirvio lo de "onPlayerWeaponSwitch" ahora lo que no puedo hacer es que automaticamente al tener esa arma se la saque por que esto solo me funciona cuando la cambia, pero en mi caso si se givea la arma y no la cambia, la puede usar tranquilamente... Trate de usar esto pero no me funciono igual creo que lo estoy usando mal :/

arma = getPedWeapon ( source) 
  if not arma == 34 then 
  takeAllWeapons(source) 

Link to comment
Voy a suponer que la ColShape será un rectángulo.
createColRectangle 
setPedWeaponSlot 
takeWeapon 
  
"onColShapeHit" 
"onColShapeLeave" 
"onPlayerWeaponSwitch" --debes tener en cuenta los IDs de slot, no del arma. 

Gracias me sirvio lo de "onPlayerWeaponSwitch" ahora lo que no puedo hacer es que automaticamente al tener esa arma se la saque por que esto solo me funciona cuando la cambia, pero en mi caso si se givea la arma y no la cambia, la puede usar tranquilamente... Trate de usar esto pero no me funciono igual creo que lo estoy usando mal :/

arma = getPedWeapon ( source) 
  if not arma == 34 then 
  takeAllWeapons(source) 

Prueba con el código que posteé arriba, creo que hace todo lo que quieres.

EDIT: respecto a lo de que si se givea el arma no funciona, eso ya lo esperaba, pero no sé qué se puede hacer al respecto... Hay varias formas pero no sabría decir cuál es la más eficiente. Podríamos usar:

setTimer + 
if getElementData (thePlayer, "detectar_colshape") == "dentro" then 
if (getPedWeapon(thePlayer) == IDprohibido1) or (getPedWeapon(thePlayer) == IDprohibido2) then 
setPedWeaponSlot (thePlayer, ID permitido) 
takeWeapon (thePlayer, IDprohibido1) 
takeWeapon (thePlayer, IDprohibido2) 
  
ó 
  
"onPlayerWeaponFire" + lo mismo 

Ambos métodos no son muy eficientes...

Edited by Guest
Link to comment

En el evento onColShapeHit, en la función agrega una condicional de que si el jugador posea esa arma, si lo hace usas takeWeapon. Te servirá cuando entres a un área.

PD: takeAllWeapons funciona para quitar TODAS las armas a un ped. usa takeWeapon por si solo quieres ser mas especifico.

arma = getPedWeapon (source) 
if arma == --[[ ID DEL ARMA PROHIBIDA ]] then 
     takeWeapon(source, arma) 
end 

EDIT: @Estrategia, en lugar de usar getElementData usa isElementWithinColShape.

Link to comment
En el evento onColShapeHit, en la función agrega una condicional de que si el jugador posea esa arma, si lo hace usas takeWeapon. Te servirá cuando entres a un área.

EDIT: @Estrategia, en lugar de usar getElementData usa isElementWithinColShape.

En el código que me tomé la molestia de realizar yo, incluí un condicional en onColShapeHit. Eso sí, lo pensé para que le establezca un arma que sea correcta, no para que le quites el arma ya del tirón, creía que eso era si insistían una vez dentro del colShape :P

Bueno, ya comenté que es lo más sencillo lo que yo hice, no caí en la cuenta de isElementWithinColShape y utilicé ElementData, que básicamente sirve para casi todo :mrgreen:

Link to comment
En el evento onColShapeHit, en la función agrega una condicional de que si el jugador posea esa arma, si lo hace usas takeWeapon. Te servirá cuando entres a un área.

PD: takeAllWeapons funciona para quitar TODAS las armas a un ped. usa takeWeapon por si solo quieres ser mas especifico.

arma = getPedWeapon (source) 
if arma == --[[ ID DEL ARMA PROHIBIDA ]] then 
     takeWeapon(source, arma) 
end 

EDIT: @Estrategia, en lugar de usar getElementData usa isElementWithinColShape.

Trate de usar esto

function sacar () 
arma = getPedWeapon (source) 
if arma == 24 then 
     takeWeapon(source, arma) 
end 
end 
addEventHandler("onColShapeHit", g_base_cols, sacar) 

aunque estoy seguro que lo estoy usando mal, no me funciona :(

Link to comment
Trate de usar esto
function sacar () 
arma = getPedWeapon (source) 
if arma == 24 then 
     takeWeapon(source, arma) 
end 
end 
addEventHandler("onColShapeHit", g_base_cols, sacar) 

aunque estoy seguro que lo estoy usando mal, no me funciona :(

function sacar ( thePlayer ) 
arma = getPedWeapon (thePlayer) 
if arma == 24 then 
     takeWeapon(thePlayer, arma) 
end 
end 
addEventHandler("onColShapeHit", g_base_cols, sacar) 

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...