19/05/2020, 11:40 AM
Este plugin capaz le sirva a aquellos que no saben poner clases humanas en un zombie plague.. O bueno esto les puede servir para otra cosa, en si creo que ya esta fixeado porque si le dabas a la E o cambiabas arma se te ponía la velocidad en default, si encuentran algún bug avisan, capaz me haya olvidado uno que otro por fixear...
Saludos.
Código PHP:
/*
== DESCRIPCION ==
- Estaba aburrido.
== CARACTERISTICAS DE LOS PJ ==
- Velocidad
- Daño
- Gravedad
- Modelo
== FIN ==
*/
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cc>
#include <fun>
#include <fakemeta>
#include <cstrike>
#define PLUGIN "[AMXX] Plugin"
#define VERSION "1.0.0"
#define AUTHOR "Nazy.-"
enum _:PJ_Data
{
PJ[50],
PJ_MODEL[80],
Float:PJ_SPEED,
Float:PJ_GRAVITY,
Float:PJ_DAMAGE
}
new const g_szPersonajes[][PJ_Data] =
{
{ "Predeterminado", "sas", 250.0, 0.8, 1.0 },
{ "Halo Master", "dg_master", 270.0, 0.6, 5.0 },
{ "Chikenator", "dg_c_chicken", 300.0, 0.5, 10.0 },
{ "Tu Mama Enojada", "zombie", 600.0, 0.3, 100.0 }
}
new g_iPJSelected[33];
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /personajes", "Clcmd_Personajes")
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1)
RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeed_Post", 1)
register_clcmd("+use", "Clcmd__Use")
}
public plugin_precache() {
static szBuffer[101];
for(new i = 0; i < sizeof(g_szPersonajes); i++) {
formatex(szBuffer, charsmax(szBuffer), "models/player/%s/%s.mdl", g_szPersonajes[i][PJ_MODEL], g_szPersonajes[i][PJ_MODEL])
precache_model(szBuffer);
}
}
public client_putinserver(id) {
g_iPJSelected[id] = 0
}
public Clcmd_Personajes(id) {
new menu = menu_create("Personajes", "HM_Personajes")
static szBuffer[101];
for(new i = 0; i < sizeof(g_szPersonajes); i++) {
if(i == g_iPJSelected[id])
formatex(szBuffer, charsmax(szBuffer), "\w%s \y(En uso)", g_szPersonajes[i][PJ])
else
formatex(szBuffer, charsmax(szBuffer), "\w%s", g_szPersonajes[i][PJ])
menu_additem(menu, szBuffer);
}
menu_display(id, menu, 0)
}
public HM_Personajes(id, menu, item) {
switch(item) {
case 0: menu_destroy(menu);
default: {
if(g_iPJSelected[id] == item) return PLUGIN_HANDLED;
new menu = menu_create("Personajes", "HM_PersonajesPS")
static szBuffer[101], szPJSpeed[101], szPJGrav[101], szPJDmg[101];
g_iPJSelected[id] = item
formatex(szBuffer, charsmax(szBuffer), "\w%s \d(%d)", g_szPersonajes[item][PJ], g_iPJSelected[id])
menu_additem(menu, szBuffer)
menu_addtext(menu, "\wCARACTERISTICAS:")
formatex(szPJSpeed, charsmax(szPJSpeed), "\d• \wVelocidad: \y%0.2f%%", g_szPersonajes[item][PJ_SPEED])
menu_addtext(menu, szPJSpeed, 0)
formatex(szPJGrav, charsmax(szPJGrav), "\d• \wGravedad: \y%0.2f%%", g_szPersonajes[item][PJ_GRAVITY])
menu_addtext(menu, szPJGrav, 0)
formatex(szPJDmg, charsmax(szPJDmg), "\d• \wDaño: \y%0.2f%%^n^n^n", g_szPersonajes[item][PJ_DAMAGE])
menu_addtext(menu, szPJDmg, 0)
menu_additem(menu, "\wSeleccionar")
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
menu_display(id, menu, 0)
}
}
return PLUGIN_HANDLED;
}
public HM_PersonajesPS(id, menu, item) {
switch(item) {
case 0: menu_display(id, menu, 0)
default: {
set_task(0.1, "Task__SetPJ", id)
colorChat(id, print_chat, "!g[PJ] !yHas seleccionado a !g%s", g_szPersonajes[g_iPJSelected[id]][PJ])
}
}
}
public fw_PlayerSpawn(id) {
if(g_iPJSelected[id] == 0) {
return HAM_IGNORED;
} else if(g_iPJSelected[id] >= 1) {
if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED;
set_user_gravity(id, g_szPersonajes[g_iPJSelected[id]][PJ_GRAVITY])
ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
cs_set_user_model(id, g_szPersonajes[g_iPJSelected[id]][PJ_MODEL])
}
return HAM_IGNORED;
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type) {
if(g_iPJSelected[attacker] == 0) {
return HAM_IGNORED;
} else if(g_iPJSelected[attacker] >= 1) {
if(!is_user_alive(attacker) || !is_user_connected(attacker)) return HAM_IGNORED;
SetHamParamFloat(4, damage *= g_szPersonajes[g_iPJSelected[attacker]][PJ_DAMAGE])
}
return HAM_IGNORED;
}
public Task__SetPJ(id) {
if(g_iPJSelected[id] == 0) {
return HAM_IGNORED;
} else if(g_iPJSelected[id] >= 1) {
if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED;
set_user_gravity(id, g_szPersonajes[g_iPJSelected[id]][PJ_GRAVITY])
cs_set_user_model(id, g_szPersonajes[g_iPJSelected[id]][PJ_MODEL])
set_pev(id, pev_fov, 120.0)
ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
}
return PLUGIN_HANDLED;
}
public fw_ResetMaxSpeed_Post(id) {
if(!is_user_alive(id)) return HAM_IGNORED;
if(g_iPJSelected[id] == 0) {
return HAM_IGNORED;
} else if(g_iPJSelected[id] >= 1) {
set_pev(id, pev_maxspeed, g_szPersonajes[g_iPJSelected[id]][PJ_SPEED])
}
return HAM_IGNORED;
}
public ResetStats(id) {
if(!is_user_alive(id)) return HAM_IGNORED;
if(g_iPJSelected[id] == 0) {
return HAM_IGNORED;
} else if(g_iPJSelected[id] >= 1) {
set_pev(id, pev_gravity, g_szPersonajes[g_iPJSelected[id]][PJ_GRAVITY])
}
return HAM_IGNORED;
}
public Clcmd__Use(id) {
ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
ResetStats(id)
return PLUGIN_CONTINUE;
}
Saludos.