É uma classe meio loca, acho que o unico que n fuciona eo de ganhar munição a cada 2 segundos, ainda não testei.
Vejam ai, eu tinha algumas melhoras nele algumas funções melhores, mas me esqueci de salvar e salvei esse que era para quando eu errasse refazer.
Vejam ai, eu tinha algumas melhoras nele algumas funções melhores, mas me esqueci de salvar e salvei esse que era para quando eu errasse refazer.
Código:
/*================================================================================
|||||||| |||||||||||
|| DDDDDDDD || EEEEEEE TTTTTTTT OOOOOOOOO NNNN N AAAAAA DDDDDDD OOOOOOOOO |||||||| |||||||||||
|| D D || E T O O N N N A A D D O O || RRRRRR ||
|| D D || E T O O N N N AaaaaA D D O O || R R ||
|| D D || EEEEEEE T O O N N N A A D D O O || R R ||
|| D D || E T O O N N A A D D O O || R R ||
|| D D || E T O O N A A D D O O || R R R ||
|| D D || E T O O N A A D D O O || R R ||
||||| DDDDDDDD ||||| EEEEEEE T OOOOOOOOO N A A DDDDDDDD OOOOOOOOO ||||||| R R |||||||
================================================================================*/
/*================================================================================
-----------------------------------
[ZP] Addon : Classe Humana
-----------------------------------
Obrigado pelo uso do plugin e pela colaboração, é um plugin bem critico de se fazer, com a ajuda de: [P]erfec[T] [S]cr[@]s[H] e [D]etonado[R], essa classe de humano foi feita com sucesso !!.
Que esse plugin sirva para todos os servidores de zombie.
Espero que com a ajuda de todos continuemos a fazer otimos plugins.
Zplague 2014 Visite: www.zplague.forumeiro.com || Portal Mundial de Plugins, é considerado um dos melhores forum de plugins de zombie !,onde se encontra os Melhores !!.
Venha fazer parte !!, seja um Zplagueiro.
Lembre-se de uma coisa: Diga "NÃO" ao Riper.
Att: [D]etonado[R]
================================================================================*/
#include <amxmodx>
#include < fun >
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
new g_player_class[33]
#define TASK_HUMAN_MUNICAO 16432168
#define TASK_HUMAN_HEALTH 154831053
#define TASK_HUMAN_CSW_HEGRENADE 175856396
#define TASK_HUMAN_CSW_FLASHBANG 189215843
new g_humano_infinita[33]
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 }
public plugin_init()
{
register_plugin("[ZP] Classes Humanas", "1.1", "[D]etonado[R] | [P]erfec[T] [S]cr[@]s[H]")
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
}
/*================================================================================
[Oque acontecera a cada round]
=================================================================================*/
public event_round_start()
{
for (new id = 1; id <= get_maxplayers(); id++)
{
remove_task(id + TASK_HUMAN_MUNICAO)
remove_task(id + TASK_HUMAN_HEALTH)
set_task(5.0, "human_menu", id)
}
}
/*================================================================================
[Se for Infectado]
=================================================================================*/
public zp_user_infected_post(id)
{
remove_task(id + TASK_HUMAN_MUNICAO)
remove_task(id + TASK_HUMAN_HEALTH)
remove_task(id + TASK_HUMAN_CSW_HEGRENADE)
remove_task(id + TASK_HUMAN_CSW_FLASHBANG)
}
/*================================================================================
[Se usar antidoto]
=================================================================================*/
public zp_user_humanized_pre(id)
{
remove_task(id + TASK_HUMAN_MUNICAO)
remove_task(id + TASK_HUMAN_HEALTH)
remove_task(id + TASK_HUMAN_CSW_HEGRENADE)
remove_task(id + TASK_HUMAN_CSW_FLASHBANG)
}
/*================================================================================
[Menu Editavel]
=================================================================================*/
public human_menu(id)
{
new menu = menu_create("\wClasses \rHumanas", "human_menu_handler")
menu_additem(menu, "Human Elite \r[Ganha Municao 2s] \w[\d+2%\w] ", "1", 0)
menu_additem(menu, "Human Health \r[Ganha Vida 20s] \w[\d+5%\w] ", "2", 0)
menu_additem(menu, "Human Fire \r[Granada de Fogo] \w[\d+3%\w]", "3", 0)
menu_additem(menu, "Human Frost \r[Granada de Gelo] \w[\d+3%\w] ", "4", 0)
menu_additem(menu, "Human Armor \r[Ganha Colete] \w[\d+40%\w] ", "5", 0)
menu_additem(menu, "Human Gravity \r[Ganha Gravidade] \w[\d-30%\w] ", "6", 0)
menu_additem(menu, "Human Speed \r[Ganha Velocidade] \w[\d+20%\w] ", "7", 0)
menu_additem(menu, "Human Life \r[Ganha 50 de vida] \w[\d+50%\w] ", "8", 0)
menu_additem(menu, "Human VIP \r[Classe Especial VIP]", "9", 0, ADMIN_RESERVATION)
menu_additem(menu, "Human ADM \r[Classe Especial ADM]", "10", 0, ADMIN_MENU)
menu_setprop(menu, MPROP_EXITNAME, "Sair")
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
}
/*================================================================================
[Função que fara que os numeros pegue de acordo com o apertado]
=================================================================================*/
public human_menu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id))
return PLUGIN_HANDLED;
set_task(2.0 , "infinita", id + TASK_HUMAN_MUNICAO, "", 0, "b");
client_printcolor(id, "!g[ZP] !yVoce ganha !g2 !ybala a !t2 segundos")
}
case 2:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id))
return PLUGIN_HANDLED;
set_task(20.0 , "vida", id + TASK_HUMAN_HEALTH, "", 0, "b");
client_printcolor(id, "!g[ZP] !yVoce ganha !g5 !yde vida a !t20 segundos")
}
case 3:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id))
return PLUGIN_HANDLED;
cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + 3)
client_printcolor(id, "!g[ZP] !yVoce ganhou !g3 !tGranadas de Fogo")
}
case 4:
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id))
return PLUGIN_HANDLED;
cs_set_user_bpammo(id, CSW_FLASHBANG, cs_get_user_bpammo(id, CSW_FLASHBANG) + 3)
client_printcolor(id, "!g[ZP] !yVoce ganhou !g3 !tGranadas de Gelo")
}
case 5:
{
g_player_class[id] = 1
set_user_armor(id, 40)
client_printcolor(id, "!g[ZP] !yVoce ganhou !g+40 !yde colete ")
}
case 6:
{
g_player_class[id] = 1
set_user_gravity(id, 0.70)
client_printcolor(id, "!g[ZP] !ySua gravidade agora e !t0.70")
}
case 7:
{
g_player_class[id] = 1
set_user_maxspeed(id, get_cvar_float("zp_human_speed") + 20)
client_printcolor(id, "!g[ZP] !ySua velocidade foi aumentada em !g+20")
}
case 8:
{
g_player_class[id] = 1
set_user_health(id, get_user_health(id) + 50)
client_printcolor(id, "!g[ZP] !yVoce ganhou !g+50 !yde vida")
}
case 9:
{
g_player_class[id] = 1
set_user_health(id, get_user_health(id) + 50)
set_user_maxspeed(id, get_cvar_float("zp_human_speed") + 20)
set_user_gravity(id, 0.65)
set_user_armor(id, 100)
give_item(id,"weapon_awp")
cs_set_user_bpammo(id, CSW_AWP, 90)
client_printcolor(id, "!g[ZP] !yClasse *!gVIP!y*")
}
case 10:
{
g_player_class[id] = 1
set_user_health(id, get_user_health(id) + 50)
set_user_maxspeed(id, get_cvar_float("zp_human_speed") + 20)
set_user_gravity(id, 0.65)
set_user_armor(id, 100)
give_item(id,"weapon_awp")
cs_set_user_bpammo(id, CSW_AWP, 90)
give_item(id,"weapon_g3sg1")
cs_set_user_bpammo(id, CSW_G3SG1, 60)
client_printcolor(id, "!g[ZP] !yClasse !gADM")
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
/*================================================================================
[A Função de ganhar bala a cada 2 Segundos]
=================================================================================*/
public infinita(id)
{
if(zp_get_user_zombie(id) || zp_get_user_survivor(id) || zp_get_user_nemesis(id))
return PLUGIN_HANDLED;
id -= TASK_HUMAN_MUNICAO
cs_set_weapon_ammo(id, cs_get_weapon_ammo(id) + 2)
g_humano_infinita[id] = true
return PLUGIN_CONTINUE
}
/*================================================================================
[A Origem da Função]
=================================================================================*/
public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
if (!g_humano_infinita[msg_entity] || !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), clip + 2) // 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)
if(clip < MAXCLIP[weapon])
cs_set_weapon_ammo(weapon_ent, clip + 2)
}
}
}
/*================================================================================
[A Função de ganhar vida]
=================================================================================*/
public vida(id)
{
id -= TASK_HUMAN_HEALTH
set_user_health(id, get_user_health(id) + 5)
}
/*================================================================================
[Mensagem colorida (client_printcolor)
=================================================================================*/
stock client_printcolor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Chat Verde
replace_all(msg, 190, "!y", "^1") // Chat Normal
replace_all(msg, 190, "!t", "^3") // Chat Do Time Tr=Vermelho Ct=Azul Spec=Branco
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) {
new strtype[11] = "classname", ent = index;
switch (jghgtype) {
case 1: strtype = "target";
case 2: strtype = "targetname";
}
while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}
return ent;
}