elchinooo98 Posted March 11, 2016 Share Posted March 11, 2016 hola queria saber como podria hacer que al entrar a una colshape solo se puedan usar 2 armas y si quiere usar otro tipo de arma se le cambie automaticamente a las habilitadas y esa arma que quiso usar se le borre ?? Desde ya Muchas gracias Link to comment
EstrategiaGTA Posted March 11, 2016 Share Posted March 11, 2016 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
elchinooo98 Posted March 11, 2016 Author Share Posted March 11, 2016 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
EstrategiaGTA Posted March 11, 2016 Share Posted March 11, 2016 (edited) 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 March 11, 2016 by Guest Link to comment
Enargy, Posted March 11, 2016 Share Posted March 11, 2016 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
EstrategiaGTA Posted March 11, 2016 Share Posted March 11, 2016 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 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 Link to comment
elchinooo98 Posted March 11, 2016 Author Share Posted March 11, 2016 si en este caso uso ElementData me parece mas comodo a la hora de detectar cosas ahora pruebo eso Gaberiel y te digo como me fue Gracias Link to comment
elchinooo98 Posted March 11, 2016 Author Share Posted March 11, 2016 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
EstrategiaGTA Posted March 11, 2016 Share Posted March 11, 2016 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
Recommended Posts