Bueno tengo tiempo que no solicito ayuda gracias a todos que me solucionan los errores.
pero esta vez esta dificil ya no encuentro que hacerle a este plugin que es el de tryder. lo edite y lo puse como Super Sayayin. le agrege el efecto de particulas y todo, funcionaba en zombie plague advance y se le cambiaba el model a Goku cuando lo compraban.
me cambie al zombie apocalypse y me mandaba este error.
y busco una manera efectiva para que se cambie el model al comprar el extra sin que se caiga el server.
el que colocare a continuacion no le sirve el model.
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieapocalypse>
#define VERSION "3.0"
#define MODEL_TRYDER "cabal_sayayin_3"
#define ID_MODEL (taskid - TASK_MODEL)
#define TASK_PARTICULAS 27000
#define MODELSET_TASK 100
// CS Offsets
#if cellbits == 32
const OFFSET_CLIPAMMO = 51
#else
const OFFSET_CLIPAMMO = 65
#endif
const OFFSET_LINUX_WEAPONS = 4
// Max Clip for weapons
new const MAXCLIP[] = { -1, 13, -1, 10, 1, 7, -1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20,
10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }
new g_fumado, g_has_unlimited_clip[33], g_tryder[33], g_maxplayers
new tryder_health, tryder_armor, tryder_model, tryder_glow, tryder_aura, cvar_particulas_on, cvar_maxsayan
new r, g, b
new g_has_tryder_model[33]
new g_tryder_model[33][32]
new g_max_sayan[33][4]
new bool:g_damage[33]
new Float:g_models_counter
public plugin_init()
{
g_fumado = za_register_extra_item("Super Sayayin \r[CCSO lvl10]", 10, 50, ZP_TEAM_HUMAN)
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_logevent("event_round_end", 2, "1=Round_End")
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
register_clcmd("drop", "clcmd_drop")
register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage");
tryder_health = register_cvar("zp_tryder_health", "666")
cvar_particulas_on = register_cvar("zp_particulas_on", "1")
tryder_armor = register_cvar("zp_tryder_armor", "666")
tryder_model = register_cvar("zp_tryder_model", "1")
tryder_glow = register_cvar("zp_tryder_glow", "1")
tryder_aura = register_cvar("zp_tryder_aura", "0")
r = register_cvar("zp_tryder_glow_red", "250")
g = register_cvar("zp_tryder_glow_green", "250")
b = register_cvar("zp_tryder_glow_blue", "0")
cvar_maxsayan = register_cvar("zp_max_sayan", "3")
register_cvar("zp_tryder_version", VERSION, FCVAR_SERVER)
g_maxplayers = get_maxplayers()
}
public ham_TakeDamage(victim, inflictor, attacker, Float:damage) {
if (victim == attacker || !is_user_connected(attacker)) return HAM_IGNORED;
if (g_damage[attacker]) {
damage *= 1.5;
SetHamParamFloat(4, damage);
}
return HAM_IGNORED;
}
public plugin_precache()
{
new modelpath[100]
formatex(modelpath, sizeof modelpath - 1, "models/player/%s/%s.mdl", MODEL_TRYDER, MODEL_TRYDER)
engfunc(EngFunc_PrecacheModel, modelpath)
}
// Item Selected forward
public zp_extra_item_selected(player, itemid)
{
// check if the selected item matches any of our registered ones
if (itemid == g_fumado)
{
if(g_max_sayan[player][0] >= get_pcvar_num(cvar_maxsayan))
{
client_print(player, print_center, "Has Comprado Sayayin 3 Maximo. son 3 Por Mapa")
return PLUGIN_CONTINUE;
}
static red, green, blue
red = get_pcvar_num(r)
green = get_pcvar_num(g)
blue = get_pcvar_num(b)
// Glow?
if (get_pcvar_num(tryder_glow))
{
fm_set_rendering(player, kRenderFxGlowShell, red, green, blue, kRenderNormal, 5)
}
// Aura?
if (get_pcvar_num(tryder_aura))
{
set_pev(player, pev_effects, pev(player, pev_effects) | EF_BRIGHTLIGHT)
}
//particulas?
if(get_pcvar_num(cvar_particulas_on))
{
set_task(0.1, "uqz_particulas", player + TASK_PARTICULAS, _, _, "b")
}
fm_set_user_model(player, MODEL_TRYDER)
set_user_maxspeed(player, get_cvar_float("zp_human_speed") + 100)
// Strip off from weapons
fm_strip_user_weapons(player)
// Equips
fm_give_item(player, "weapon_knife")
fm_give_item(player, "weapon_m4a1")
fm_give_item(player, "weapon_AK47")
fm_give_item(player, "weapon_XM1014")
fm_give_item(player, "weapon_m249")
fm_give_item(player, "weapon_awp")
fm_give_item(player, "weapon_scout")
fm_give_item(player, "weapon_deagle")
fm_give_item(player, "weapon_elite")
fm_give_item(player, "weapon_flashbang")
fm_give_item(player, "weapon_hegrenade")
// Clip
g_has_unlimited_clip[player] = true
// Dont Drop
g_tryder[player] = true
g_damage[player] = true
// HP
fm_set_user_health(player, get_pcvar_num(tryder_health))
// Armor
fm_set_user_armor(player, get_pcvar_num(tryder_armor))
new name[32]
get_user_name(player, name, 31)
set_hudmessage(255, 255, 0, 0.05, 0.45, 1, 0.0, 5.0, 1.0, 1.0, -1)
show_hudmessage(0, "%s Es Un SUPER SAYAYIN!!", name)
g_max_sayan[player][0]++
}
return PLUGIN_HANDLED;
}
public clcmd_drop(player)
{
if (g_tryder[player])
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public fw_PlayerKilled(victim, attacker, shouldgib, player)
{
if (g_tryder[victim])
{
fm_reset_user_model(victim)
}
}
public event_round_end()
{
g_models_counter = 0.0
}
public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
// Player doesn't have the unlimited clip upgrade
if (!g_has_unlimited_clip[msg_entity])
return;
// Player not alive or not an active weapon
if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1)
return;
static weapon, clip
weapon = get_msg_arg_int(2) // get weapon ID
clip = get_msg_arg_int(3) // get weapon clip
// Unlimited Clip Ammo
if (MAXCLIP[weapon] > 2) // skip grenades
{
set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon]) // HUD should show full clip all the time
if (clip < 2) // refill when clip is nearly empty
{
// Get the weapon entity
static wname[32], weapon_ent
get_weaponname(weapon, wname, sizeof wname - 1)
weapon_ent = fm_find_ent_by_owner(-1, wname, msg_entity)
// Set max clip on weapon
fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon])
}
}
}
// Set Weapon Clip Ammo
stock fm_set_weapon_ammo(entity, amount)
{
set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);
}
// Cuando el Usuario es Infectado:
public zp_user_infected_post(id)
{
remove_task(id + TASK_PARTICULAS) // Removemos el TASK de las PARTICULAS
g_damage[id] = false
}
// Cuando el Usuario se Desconecta:
public client_disconnect(id)
{
remove_task(id + TASK_PARTICULAS) // Removemos el TASK de las PARTICULAS
}
// Cuando empieza una Ronda Nueva:
public event_round_start()
{
for (new id; id <= 32; id++) g_has_unlimited_clip[id] = false;
for (new player; player <= 32; player++) g_tryder[player] = false;
for (new id; id <= g_maxplayers; id++)
for (new id; id <= 32; id++) remove_task(id + TASK_PARTICULAS)
}
public task_set_model(player)
{
// Get player id
player -= MODELSET_TASK
// Actually set the player's model
fm_set_user_model(player, g_tryder_model[player])
}
public fw_ClientUserInfoChanged(player)
{
if (g_tryder[player] && !zp_get_user_first_zombie(player) && !zp_get_user_zombie(player) && !zp_get_user_nemesis(player) && !zp_get_user_survivor(player))
{
// Player doesn't have a custom model
if (!g_has_tryder_model[player])
return FMRES_IGNORED;
// Get current model
static currentmodel[32]
fm_get_user_model(player, currentmodel, sizeof currentmodel - 1)
// Check whether it matches the custom model - if not, set it again
if (!equal(currentmodel, g_tryder_model[player]))
fm_set_user_model(player, g_tryder_model[player])
return FMRES_IGNORED;
}
return FMRES_IGNORED;
}
// Funcion de las Particulas:
public uqz_particulas(id)
{
id -= TASK_PARTICULAS
// Detectamos si el Usuario esta Vivo:
if (!is_user_alive(id))
return
// Registramos la Posicion del Usuario
static Float:Origin[3]
pev(id, pev_origin, Origin)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0) // Abrmios la Funcion
write_byte(TE_IMPLOSION) // TE Id
engfunc(EngFunc_WriteCoord, Origin[0]) // Posicion del Player
engfunc(EngFunc_WriteCoord, Origin[1]) // Posicion 'Y'
engfunc(EngFunc_WriteCoord, Origin[2]) // Posicion 'X'
write_byte(128) // Radio de las Particulas
write_byte(20) // Particulas por Segundo
write_byte(2) // Delay Rate = Tiempo que tarda en desaparecer las Particulas.
message_end() // Cerramos la Funcion.
}
stock fm_set_user_model(player, const modelname[])
{
// Set new model
engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname)
// Remember this player has a custom model
g_has_tryder_model[player] = true
}
stock fm_get_user_model(player, model[], len)
{
// Retrieve current model
engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)
}
stock fm_reset_user_model(player)
{
// Player doesn't have a custom model any longer
g_has_tryder_model[player] = false
dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))
}
XFAS EL QUE PUEDA. GRAX