13/10/2013, 09:59 AM
(Última modificación: 13/10/2013, 11:18 AM por alan_el_more.)
[CS/CZ] Tiempo de recarga de cada arma
Con el siguiente plugin, podemos saber algo que a muchos nos inquietaba.
Si, el tiempo de recarga de cada arma.
Este plugin lo que hace es que al recargar un arma, te muestra un mensaje donde te dice el tiempo
(segundos en decimales) que necesitamos para poder disparar con el arma portada.
Gracias a Ven por su plugin 'Reload Bar' que me ayudo
Gracias a RauliTop por la sugerencia
Sin más vueltas, los dejo con el plugin:
Si quieren, pueden hacer una lista de cuanto dura la recarga de cada arma para ponerlo en el post
Si tienen alguna sugerencia, duda o encontraron un error, por favor, no dudes en postearlo
Con el siguiente plugin, podemos saber algo que a muchos nos inquietaba.
Si, el tiempo de recarga de cada arma.
Este plugin lo que hace es que al recargar un arma, te muestra un mensaje donde te dice el tiempo
(segundos en decimales) que necesitamos para poder disparar con el arma portada.
Gracias a Ven por su plugin 'Reload Bar' que me ayudo
Gracias a RauliTop por la sugerencia
Sin más vueltas, los dejo con el plugin:
Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
// Definimos los offsets para entender mejor los códigos
// Estos offsets lo podes sacar de la siguiente página
// http://wiki.alliedmods.net/Category:CS_Class_List
#define OFFSET_WEAPON_CBASE_PLAYER_WIN32 41
#define OFFSET_WEAPON_ID_WIN32 43
#define OFFSET_WEAPON_IN_RELOAD_WIN32 54
#define OFFSET_PLAYER_NEXT_ATTACK_WIN32 83
#define OFFSET_WEAPON_LINUX_DIFFERENCE 4
// Esta función nos sirve para comprobar si el jugador esta recargando balas
// Si no tiene cargadores, devolverá 0 (cero)
#define IsWeaponInReload(%1) !!get_pdata_int(%1, OFFSET_WEAPON_IN_RELOAD_WIN32, OFFSET_WEAPON_LINUX_DIFFERENCE)
// Definimos las armas que no serán hookeadas porque no se pueden recargar
// Las escopetas son un caso especial porque se puede disparar mientras recargas y aunque
// hookeemos las escopetas, no hará nada
#define WEAPONS_SHOTGUNS_NONGUNS ((1<<CSW_HEGRENADE) | (1<<CSW_XM1014) | (1<<CSW_C4) | (1<<CSW_SMOKEGRENADE) | (1<<CSW_M3) | (1<<CSW_FLASHBANG) | (1<<CSW_KNIFE))
public plugin_init()
{
register_plugin("Tiempo de recarga", "1.0", "alan_el_more")
// Creamos unas variables para llevar a cabo el loop
new i, NameWeap[20]
// Hacemos un loop para todas las armas
// CSW_P228 = 1 y CSW_P90 = 30, entre esos números están todos los índices de las armas
for(i = CSW_P228;i <= CSW_P90;i++)
{
// Si el arma es una escopeta o no es un arma, salteamos al arma siguiente
if((1<<i) & WEAPONS_SHOTGUNS_NONGUNS)
continue
// Tomamos el nombre del arma (weapon_*)
// get_weaponname() devuelve 0 (cero) si el índice del arma no existe
// Esto es para saltear el índice 2 (dos) que no existe y, de paso, ya tomamos el nombre
if(get_weaponname(i, NameWeap, 19))
// Hookeamos la función sobre weapon_* para que llame la función cuando
// se recarga un arma.
RegisterHam(Ham_Weapon_Reload, NameWeap, "HamWeaponReloadPost", 1)
}
}
// Hook de recarga de armas
public HamWeaponReloadPost(ent)
{
// Si no puede recargar (sin cargadores), ignoramos todo el hook
if(!IsWeaponInReload(ent))
return HAM_IGNORED
// Tomamos el índice del jugador que porta el arma
new id = get_pdata_cbase(ent, OFFSET_WEAPON_CBASE_PLAYER_WIN32, OFFSET_WEAPON_LINUX_DIFFERENCE)
// Tomamos el weapon_* para mostrarlo en el mensaje solo para que quede mejor visualmente e.e
// Aclaración: En el primer parámetro, tomamos el índice del arma (CSW_*)
static WeaponName[20]
get_weaponname(get_pdata_int(ent, OFFSET_WEAPON_ID_WIN32, OFFSET_WEAPON_LINUX_DIFFERENCE), WeaponName, 19)
// Mostramos el mensaje
// Primera Aclaración: WeaponName[7] se usa para mostrar solo el nombre del arma sin el weapon_
// Por ejemplo: Si tenemos 'weapon_m249', mostrara 'm249'
// Segunda aclaración: %0.2f muestra un float como lo hace %f, con la diferencia que
// muestra solo dos dígitos despues de la coma
client_print(id, print_center, "Tiempo de recarga [%s]: %0.2f", WeaponName[7], get_pdata_float(id, OFFSET_PLAYER_NEXT_ATTACK_WIN32))
return HAM_HANDLED
}
Si quieren, pueden hacer una lista de cuanto dura la recarga de cada arma para ponerlo en el post
Si tienen alguna sugerencia, duda o encontraron un error, por favor, no dudes en postearlo
Mis plugins públicos
Batalla de cuchillos 2.1 [18/10/13] [Aprobado]
Crear botones 1.1b [09/09/14] [Aprobado]
Vencimiento de admins 1.0d [09/09/14] [Aprobado]
Batalla de cuchillos 2.1 [18/10/13] [Aprobado]
Crear botones 1.1b [09/09/14] [Aprobado]
Vencimiento de admins 1.0d [09/09/14] [Aprobado]
Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Gracias por su atención.