17/09/2014, 02:50 PM (Última modificación: 23/09/2014, 02:57 AM por NikKOo31.)
Dropeo de balas al morir
Descripción del plugin
Como dice el título, al morir un jugador dropea un pack de balas que puede ser pickeado por cualquier otro jugador que disponga de un arma primaria o secundaria en su inventario y que no tenga al máximo la munición de la misma.
Cvar drop_porcentaje(default: 10.0)
- Valores menores o iguales a 0 desactivan el plugin el funcionamiento del plugin.
- Valores entre 0 y 100 serán el porcentaje de posibilidades de que se dropee el pack de balas.
- Valores mayores o iguales a 100 hará que se dropeen balas siempre.
drop_por_tipo(default: 1)
- En 0, permite pickear cualquier pack de balas.
- Valores distintos de 0, solo permite pickear balas si son del mismo tipo que usa alguna de las armas del inventario.
drop_max_cajas(default: 50)
- Valores menores o iguales a 0 desactivan el spawn de cajas.
- Valores mayores que 0 definen la máxima cantidad de cajas a spawnear.
Utilidad
Para cualquier modalidad de juego donde se deba sobrevivir suficiente tiempo y no se disponga de munición infinita o buyzones en todo el mapa.
Requerimientos del plugin
Los dos models usados por el plugin son del half life, y el sonido viene por defecto con el CS, por lo que no es necesario instalarlos. Sin embargo, están adjuntos en caso de que alguien los requiera.
Capturas
Cosas para hacer
* Guardado de balas por tipo.
* Permitir guardado de más de un tipo de ammo en la misma caja de balas.
* Esperar más sugerencias.
Créditos
* meTaLiCroSS (compresión de dígitos)
* Nanox (testing )
Código:
Changelog:
v 1.0
- Primer release.
v 1.1
- Removido el model T.
- Removido los bitsum innecesarios.
- Se cambio el deathmessage por ham_killed para checkear que tenga balas para dropear.
v 1.2
- Removidas las funciones de fakemeta.
- Ajustado el size de la entidad al del model.
v 1.3
- Agregada cvar para configurar si las balas pickeadas son por tipo o no.
- Removidas las funciones de fun.
- Cambiado el stock de checkeo.
- Agregado el sound del pickup.
v 1.4
- Disminuido el size de la entidad para evitar posibles stuck en muros.
- Agregado guardado de múltiples tipos de bala en una sola caja.
- Agregado limite de cajas spawneadas.
Si bien el plugin es muy simple, se aceptan sugerencias y críticas constructivas
Esta bien el plugin pero ya lo dijo metal mejor en el classname el tipo de ammo para que en el touch si el usuario que la toco tiene una arma con el mismo ammo le des el ammo y tambien guarda en iuser o lo que sea cuantas balas tenia y el sonidito al comprar balas ponerselo en el touch no estaria mal
Todos los MODS VHL totalmente gratuitosDescarga Aqui
(18/09/2014, 09:36 PM)Metrikcz escribió: Esta bien el plugin pero ya lo dijo metal mejor en el classname el tipo de ammo para que en el touch si el usuario que la toco tiene una arma con el mismo ammo le des el ammo y tambien guarda en iuser o lo que sea cuantas balas tenia y el sonidito al comprar balas ponerselo en el touch no estaria mal
Gracias Metrikcz!
Ahora discrimina por tipo de ammo; guarda y setea la cantidad exacta de bpammo que tenia el arma. Y como tuve que remover el fun, agregué el sonido
(20/09/2014, 12:59 AM)meTaLiCroSS escribió: Con el cambio del tamaño de la entidad, revisaste si la caja se buguea si mueres pegado a una muralla?
Estuve testeando con los bot por lo menos una hora y no vi qe suceda eso ( y ellos suelen estar campeando en los rincones D: ). Igual planeo cambiar el tipo de solid en la proxima versión.
(20/09/2014, 12:59 AM)meTaLiCroSS escribió: Con el cambio del tamaño de la entidad, revisaste si la caja se buguea si mueres pegado a una muralla?
Estuve testeando con los bot por lo menos una hora y no vi qe suceda eso ( y ellos suelen estar campeando en los rincones D: ). Igual planeo cambiar el tipo de solid en la proxima versión.
Sea trigger o bbox puede buguearse. Si fuera yo, le pondria trigger y los tamaños x e y los reduciria a la mitad. No influira en nada, de todas maneras los jugadores deberian pasar por arriba de la cajita.
(20/09/2014, 01:29 AM)meTaLiCroSS escribió: Sea trigger o bbox puede buguearse. Si fuera yo, le pondria trigger y los tamaños x e y los reduciria a la mitad. No influira en nada, de todas maneras los jugadores deberian pasar por arriba de la cajita.
Roger that! Había usado trigger en la primer versión, no recuerdo porqué lo cambie a bbox.
Todavía estoy buscando la forma de poder guardar los 10 tipos distinto de ammo en una sola caja. Apenas tenga nueva versión, actualizo el post.
(20/09/2014, 01:29 AM)meTaLiCroSS escribió: Sea trigger o bbox puede buguearse. Si fuera yo, le pondria trigger y los tamaños x e y los reduciria a la mitad. No influira en nada, de todas maneras los jugadores deberian pasar por arriba de la cajita.
Roger that! Había usado trigger en la primer versión, no recuerdo porqué lo cambie a bbox.
Todavía estoy buscando la forma de poder guardar los 10 tipos distinto de ammo en una sola caja. Apenas tenga nueva versión, actualizo el post.
Creo que ya lo leiste. Ya que la maxima cantidad de ammo que puede tener un arma es la M249 con 200 balas, seria 1 byte por ammotype, 8*10 = 80, con 3 entvars puedes almacenar todo. Si se me quita el hambre te doy un code.
Creo que ya lo leiste. Ya que la maxima cantidad de ammo que puede tener un arma es la M249 con 200 balas, seria 1 byte por ammotype, 8*10 = 80, con 3 entvars puedes almacenar todo. Si se me quita el hambre te doy un code.
Sos el primer chileno que entra a mi lista de gente favorita (?)
Lo leí muy por arriba y no se me ocurrió darle uso xD
Ahora me pongo a probar :3
Te daría un :bacon: pero no sé si esta en este foro
Edit* No, no esta el bacon
StoreAmmo(const iEntity, const iAmmoId, iAmount) { new iPos = GetAmmoIdPosition(iAmmoId)
if(iPos == -1) // ocurriria en casos que iAmmoId sea mayor a 12, que no deberia suceder... return 0;
// algo complicado este algoritmo // aqui obtengo cuantos bits a la izquierda debo mover // es por eso que saco el total de bits ((iAmmoId-1)*AMMO_BITS) // y dependiendo de iPos (0,1,2) // es la cantidad de veces que le restare 32 (iPos*INT_BYTES*8) // (el iAmmoId-1 va ahi porque el primero corre 0 bits a la izquierda new iLeftBits = ( (iAmmoId-1) * AMMO_BITS ) - ( iPos * INT_BYTES*8 ); new iCurrentAmmoValue = entity_get_int(iEntity, EV_INT_AMMOVARS[iPos]);
if(iRightBits > ((INT_BYTES*8) - AMMO_BITS)) // en teoria estoy preguntando // si la cantidad de bits que muevo a la derecha // es suficiente para obtener a lo mas 8 bits { iRightBits = 0; iPos++
Lo que si, cuando llenes la caja de balas, verifica que no repita el seteo de ammo. Un ejemplo muy claro, es cuando un user tiene una MP5 y unas Elites. Ambas son del mismo tipo de ammo.
Con StoreAmmo guardas en la caja el monto de ammo segun su ID, y con GetPackedAmmo obtienes en un array de tamaño 10+1 el monto de balas guardado, en la casilla respectiva a su ammoID.
(20/09/2014, 03:13 AM)meTaLiCroSS escribió: Con StoreAmmo guardas en la caja el monto de ammo segun su ID, y con GetPackedAmmo obtienes en un array de tamaño 10+1 el monto de balas guardado, en la casilla respectiva a su ammoID.
Ahora, ingeniatelas para adaptarlo.
Gracias totales!
Ya tenia armada la compresión pero me estaba quemando la cabeza con el inverso
Código PHP:
new Var[3], i for(i = 0; i < 4; i++) { Var[0] |= (total[i] << (8 * i)) Var[1] |= (total[i + 4] << (8 * i))
Asi guardo todas las balas más rápido y de una sola vez.
Con tu stock tenia que crear la entidad primero y luego ir agregando la cantidad de balas una por una (y si no tenia balas para dropear, luego remover la entidad)
Y respecto al GetPackedAmmo me comí la cabeza
Código PHP:
if(iRightBits > ((INT_BYTES*8) - AMMO_BITS))
->
Código PHP:
if(iRightBits >= ((INT_BYTES*8) - AMMO_BITS))
Hice un stock basado en el tuyo () que descomprime, guarda el número que me interesa, y luego comprime de nuevo.
Asi guardo todas las balas más rápido y de una sola vez.
Con tu stock tenia que crear la entidad primero y luego ir agregando la cantidad de balas una por una (y si no tenia balas para dropear, luego remover la entidad)
Y respecto al GetPackedAmmo me comí la cabeza
Código PHP:
if(iRightBits > ((INT_BYTES*8) - AMMO_BITS))
->
Código PHP:
if(iRightBits >= ((INT_BYTES*8) - AMMO_BITS))
Hice un stock basado en el tuyo () que descomprime, guarda el número que me interesa, y luego comprime de nuevo.
Ya subí la nueva versión. Gracias por la ayudita
Estas usando mal el loop, haces 4 iteraciones cuando solo necesitas 3 lol
La redaccion que hiciste de tu code es más chino que los tutoriales que he hecho
El chequeo de GetPackedAmmo está bien. En el caso de iRightBits cuando valga 24, el chequeo "segun tu" seria
Código PHP:
if(24 >= 24) { /* resetear */ }
Lo cual no tiene sentido, y creo que ni lo ruteaste
Y si te doy un stock con constantes es para que lo uses tal cual, para que lo hardcodeas si al final es la misma mierda y no tiene nada de malo crear la entidad antes, se quemara el PC?
Se un poco más flexible.
EDIT: Sabes que un player no solo tiene el ammo de las balas que actualmente lleva? Puede contener mas, de armas anteriores que haya recogido.