|
Member
|

01-07-2016
, 06:55
2 Issues :D plz help
|
#1
|
PHP Code:
#include <amxmodx> #include <engine> #include <fakemeta> #include <zombieplague> #include <fun>
#define PLUGIN "[ZP] Class - Hunter" #define VERSION "1.1" #define AUTHOR "HoRRoR"
// Zombie Attributes new const zclass_name[] = "Hunter" // name new const zclass_info[] = "- Can run very fast" // description new const zclass_model[] = "zombie_hunter2" // model new const zclass_clawmodel[] = "models/zombie_plague/v_zombieknife_hunter.mdl" // claw model const zclass_health = 2000 // health const zclass_speed = 260 // speed const Float:zclass_gravity = 1.15 // gravity const Float:zclass_knockback = 2.5 // knockback
// --- config ------------------------ // #define TRAIL_LIFE 2 #define TRAIL_WIDTH 10 #define TRAIL_RED 200 #define TRAIL_GREEN 0 #define TRAIL_BLUE 0 #define TRAIL_BRIGTHNESS 220
new Float:g_fastspeed = 1000.0 // sprint speed new Float:g_normspeed = 260.0 // norm speed. must be as zclass_speed new Float:g_abilonecooldown = 20.0 // cooldown time new Float:g_abilonelenght = 2.0 // time of sprint new const sound_hunter_sprint[] = "zombie_plague/spells/zombie_hunter/sprint.wav" //sprint sound // ----------------------------------- //
new i_cooldown_time[33] new g_zclass_hunter new g_speeded[33] = 0 new g_abil_one_used[33] = 0 new gTrail new g_maxplayers
public plugin_precache() { g_zclass_hunter = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback) precache_sound(sound_hunter_sprint) }
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("ability1", "use_ability_one") register_concmd("ability1", "use_ability_one") register_forward( FM_PlayerPreThink, "client_prethink" ) register_logevent("roundStart", 2, "1=Round_Start") g_maxplayers = get_maxplayers()
gTrail = engfunc(EngFunc_PrecacheModel,"sprites/smoke.spr") }
public client_prethink(id) { if (zp_get_user_zombie_class(id) == g_zclass_hunter) { if(is_user_alive(id) && zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_hunter) && !zp_get_user_nemesis(id)) Action(id); } }
public Action(id) { if (g_speeded[id] == 1) { set_user_maxspeed(id , g_fastspeed); } else { set_user_maxspeed(id , g_normspeed); } return PLUGIN_HANDLED; }
public roundStart() { for (new i = 1; i <= g_maxplayers; i++) { i_cooldown_time[i] = floatround(g_abilonecooldown) g_abil_one_used[i] = 0 g_speeded[i] = 0 remove_task(i) client_cmd(i,"cl_forwardspeed 400") client_cmd(i,"cl_backspeed 400") } }
public ShowHUD(id) { if(is_user_alive(id)) { i_cooldown_time[id] = i_cooldown_time[id] - 1; set_hudmessage(200, 100, 0, 0.75, 0.92, 0, 1.0, 1.1, 0.0, 0.0, -1) show_hudmessage(id, "Sprint cooldown: %d",i_cooldown_time[id]) }else{ remove_task(id) } }
public use_ability_one(id) { if (is_user_alive(id) && (zp_get_user_zombie_class(id) == g_zclass_hunter) && zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) { if(g_abil_one_used[id] == 0) { client_cmd(id,"cl_forwardspeed 1600") client_cmd(id,"cl_backspeed 1600") message_begin (MSG_BROADCAST,SVC_TEMPENTITY) write_byte (TE_BEAMFOLLOW) write_short (id) write_short (gTrail) write_byte (TRAIL_LIFE) write_byte (TRAIL_WIDTH) write_byte (TRAIL_RED) write_byte (TRAIL_GREEN) write_byte (TRAIL_BLUE) write_byte (TRAIL_BRIGTHNESS) message_end()
g_speeded[id] = 1 emit_sound(id, CHAN_STREAM, sound_hunter_sprint, 1.0, ATTN_NORM, 0, PITCH_NORM) g_abil_one_used[id] = 1 set_task(g_abilonelenght,"set_normal_speed",id) i_cooldown_time[id] = floatround(g_abilonecooldown) set_task(1.0, "ShowHUD", id, _, _, "a",i_cooldown_time[id]) // client_print(id,print_chat,"[dev] - use ability") } } }
public set_normal_speed(id) { if ((zp_get_user_zombie_class(id) == g_zclass_hunter) && zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) { g_speeded[id] = 0 client_cmd(id,"cl_forwardspeed 400") client_cmd(id,"cl_backspeed 400") set_task(g_abilonecooldown,"set_ability_one_cooldown",id) // client_print(id,print_chat,"[dev] - executed 'set normal speed' task") } }
public set_ability_one_cooldown(id) { if ((zp_get_user_zombie_class(id) == g_zclass_hunter) && zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) { g_abil_one_used[id] = 0 new text[100] format(text,99,"^x04[ZP]^x01 Your ability ^x04Sprint^x01 is ready.") message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id) write_byte(id) write_string(text) message_end() } }
public zp_user_infected_post(id, infector) { if ((zp_get_user_zombie_class(id) == g_zclass_hunter) && !zp_get_user_nemesis(id)) { new text[100] new note_cooldown = floatround(g_abilonecooldown) format(text,99,"^x04[ZP]^x01 Your ability is ^x04Sprint^x01. Cooldown:^x04 %d ^x01seconds.",note_cooldown) message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id) write_byte(id) write_string(text) message_end() i_cooldown_time[id] = floatround(g_abilonecooldown) remove_task(id) g_speeded[id] = 0 g_abil_one_used[id] = 0 client_cmd(id,"bind F1 ability1") } }
public zp_user_humanized_post(id) { remove_task(id) client_cmd(id,"cl_forwardspeed 400") client_cmd(id,"cl_backspeed 400") }
Soooo... in this one how i activate the skill as a button? when i type ability1 in console it starts . But which button? or there is no button?
can i make it button? for example R?
PHP Code:
#include <amxmodx> #include <fakemeta> #include <fun> #include <hamsandwich> #include <zombieplague> #include <zmvip>
enum (+=1337) { TASK_AURA, TASK_GLOW }
#define ID_AURA (taskid - TASK_AURA) #define ID_GLOW (taskid - TASK_GLOW)
#define CHAT_PREFIX "[ZP]"
new const VERSION[] = "1.3"
new const RAGE_SOUND[] = "zombie_plague/zombie_rage.wav" new const TRAIL_SPRITE[] = "sprites/laserbeam.spr"
new const zclass_name[] = "Rage Zombie" new const zclass_info[] = " - Hot tempered" new const zclass_model[] = "destroyer_vip" new const zclass_clawmodel[] = "models/zombie_plague/v_m001_2.mdl" const zclass_health = 3000 const zclass_speed = 150 const Float:zclass_gravity = 1.0 const Float:zclass_knockback = 1.0
const OFFSET_PAINSHOCK = 108 const OFFSET_LINUX = 5
const Float: RENDERING_DELAY = 3.0
new g_zclass_rage, g_trailsprite
new r, g, b, amount, radius, Float:maxspeed
new cvar_duration, cvar_cooldown, cvar_rgb, cvar_radius, cvar_maxspeed, cvar_rageaddhealth, cvar_ragemultiplier, cvar_painshockfree, cvar_trailbrightness, cvar_trailsize, cvar_traillife
new bool:DmgAllowed
new Float:g_hookTime[33]
new g_msgSayText
new g_bitConnectedPlayers, g_bitAlivePlayers, g_bitIsRagePlayers, g_bitInRagePlayers, g_bitOMFGspamPlayers #define MarkUserConnected(%0) g_bitConnectedPlayers |= (1 << (%0 & 31)) #define ClearUserConnected(%0) g_bitConnectedPlayers &= ~(1 << (%0 & 31)) #define IsUserConnected(%0) g_bitConnectedPlayers & (1 << (%0 & 31))
#define MarkUserAlive(%0) g_bitAlivePlayers |= (1 << (%0 & 31)) #define ClearUserAlive(%0) g_bitAlivePlayers &= ~(1 << (%0 & 31)) #define IsUserAlive(%0) g_bitAlivePlayers & (1 << (%0 & 31))
#define MarkUserIsRage(%0) g_bitIsRagePlayers |= (1 << (%0 & 31)) #define ClearUserIsRage(%0) g_bitIsRagePlayers &= ~(1 << (%0 & 31)) #define IsUserIsRage(%0) g_bitIsRagePlayers & (1 << (%0 & 31))
#define MarkUserInRage(%0) g_bitInRagePlayers |= (1 << (%0 & 31)) #define ClearUserInRage(%0) g_bitInRagePlayers &= ~(1 << (%0 & 31)) #define IsUserInRage(%0) g_bitInRagePlayers & (1 << (%0 & 31))
#define MarkUserOMFGspam(%0) g_bitOMFGspamPlayers |= (1 << (%0 & 31)) #define ClearUserOMFGspam(%0) g_bitOMFGspamPlayers &= ~(1 << (%0 & 31)) #define IsUserOMFGspam(%0) g_bitOMFGspamPlayers & (1 << (%0 & 31))
public plugin_init() { register_plugin("[ZP] Zombie Class: Rage Zombie", VERSION, "eXcalibur.007") cvar_duration = register_cvar("zp_rage_duration", "6.0") cvar_cooldown = register_cvar("zp_rage_cooldown", "60.0") // RRR GGG BBB AAA - Red Green Blue Alpha cvar_rgb = register_cvar("zp_rage_rgb", "255 0 0 16") cvar_radius = register_cvar("zp_rage_radius", "20") cvar_maxspeed = register_cvar("zp_rage_maxspeed", "260.0") cvar_rageaddhealth = register_cvar("zp_rage_addhealth", "500") cvar_ragemultiplier = register_cvar("zp_rage_dmgmultiplier", "2.0") cvar_painshockfree = register_cvar("zp_rage_painshockfree", "1") cvar_trailbrightness = register_cvar("zp_rage_trailbrightness", "255") cvar_trailsize = register_cvar("zp_rage_trailsize", "5") cvar_traillife = register_cvar("zp_rage_traillife", "2") register_forward(FM_CmdStart, "fw_CmdStart") register_forward(FM_PlayerPreThink, "fw_PlayerPreThink") RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1) RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1) RegisterHam(Ham_TakeDamage, "player", "fw_PlayerTakeDamage") RegisterHam(Ham_TakeDamage, "player", "fw_PlayerTakeDamage_Post", 1) g_msgSayText = get_user_msgid("SayText") }
public plugin_precache() { g_zclass_rage = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback) precache_sound(RAGE_SOUND) g_trailsprite = precache_model(TRAIL_SPRITE) }
public zp_user_infected_pre(id) { if(!(get_user_flags(id) & ADMIN_LEVEL_H)) { if (zp_get_user_next_class(id) == g_zclass_rage) { zp_set_user_zombie_class(id, 0) client_print(id, print_center, "Your selected class in only for (VIP) members") client_print(id, print_chat, "Your selected class in only for (VIP) members. Changed to default zombie class.") } } }
public client_putinserver(id) { MarkUserConnected(id) }
public client_disconnect(id) { ClearUserConnected(id) ClearUserAlive(id) ClearUserIsRage(id) ClearUserInRage(id) ClearUserOMFGspam(id) }
public fw_CmdStart(id, uc_handle, seed) { if (IsUserAlive(id) && IsUserIsRage(id)) { if (IsUserInRage(id) || IsUserOMFGspam(id)) return FMRES_IGNORED static buttons; buttons = get_uc(uc_handle, UC_Buttons) if (buttons & IN_RELOAD) { static Float: cooldown cooldown = get_pcvar_float(cvar_cooldown) if (get_gametime() - g_hookTime[id] < cooldown) { MarkUserOMFGspam(id) set_task(1.0, "reset_vars", id) client_printcolor(id, "!g%s !yYou need to wait %.f0 sec to use rage!", CHAT_PREFIX, cooldown - (get_gametime() - g_hookTime[id])) return FMRES_IGNORED } g_hookTime[id] = get_gametime() MarkUserInRage(id) emit_sound(id, CHAN_AUTO, RAGE_SOUND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) static color[32], szRed[4], szGreen[4], szBlue[4], szAmount[4] get_pcvar_string(cvar_rgb, color, 31) parse(color, szRed, 3, szGreen, 3, szBlue, 3, szAmount, 3) set_user_health(id, get_user_health(id) + get_pcvar_num(cvar_rageaddhealth)) set_task(get_pcvar_float(cvar_duration), "stop_raging", id) r = clamp(str_to_num(szRed), 0, 255) g = clamp(str_to_num(szGreen), 0, 255) b = clamp(str_to_num(szBlue), 0, 255) amount = str_to_num(szAmount) radius = get_pcvar_num(cvar_radius) maxspeed = get_pcvar_float(cvar_maxspeed) set_user_rendering(id, kRenderFxGlowShell, r, g, b, kRenderNormal, amount) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) write_short(id) write_short(g_trailsprite) write_byte(get_pcvar_num(cvar_traillife) * 10) write_byte(get_pcvar_num(cvar_trailsize)) write_byte(r) write_byte(g) write_byte(b) write_byte(get_pcvar_num(cvar_trailbrightness)) message_end() set_task(RENDERING_DELAY, "set_glow", id+TASK_GLOW, _, _, "b") set_task(0.1, "rage_aura", id+TASK_AURA, _, _, "b") } } return FMRES_IGNORED }
public fw_PlayerPreThink(id) { if (IsUserAlive(id) && IsUserIsRage(id) && IsUserInRage(id)) { set_user_maxspeed(id, maxspeed) } return FMRES_IGNORED }
public fw_PlayerSpawn_Post(id) { if (is_user_alive(id)) { MarkUserAlive(id) ClearUserIsRage(id) ClearUserInRage(id) } }
public fw_PlayerKilled_Post(victim) { ClearUserAlive(victim) ClearUserIsRage(victim) ClearUserInRage(victim) }
public fw_PlayerTakeDamage(victim, inflictor, attacker, Float:damage, damagebits) { if (DmgAllowed && IsUserAlive(attacker) && IsUserAlive(victim) && IsUserInRage(attacker)) { SetHamParamFloat(4, damage * get_pcvar_float(cvar_ragemultiplier)) } return HAM_IGNORED }
public fw_PlayerTakeDamage_Post(victim, inflictor, attacker) { if (victim != attacker && IsUserIsRage(victim) && IsUserInRage(victim) && IsUserAlive(victim) && get_pcvar_num(cvar_painshockfree)) { set_pdata_float(victim, OFFSET_PAINSHOCK, 1.0, OFFSET_LINUX) } return HAM_IGNORED }
public zp_user_infected_post(id, infector) { if (zp_get_user_zombie_class(id) == g_zclass_rage && !zp_get_user_nemesis(id)) { client_printcolor(id, "!g%s !yPress your !greload button !yto use rage", CHAT_PREFIX) MarkUserIsRage(id) ClearUserInRage(id) } }
public zp_user_humanized_post(id) { ClearUserIsRage(id) ClearUserInRage(id) if (IsUserAlive(id)) { set_user_rendering(id) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_KILLBEAM) write_short(id) message_end() } }
public zp_round_started(gamemode) { if (gamemode == MODE_SWARM || gamemode == MODE_PLAGUE || gamemode == MODE_SURVIVOR) DmgAllowed = true else DmgAllowed = false }
public set_glow(taskid) { if (IsUserAlive(ID_GLOW) && IsUserIsRage(ID_GLOW) && IsUserInRage(ID_GLOW)) { set_user_rendering(ID_GLOW, kRenderFxGlowShell, r, g, b, kRenderNormal, amount) } else { remove_task(taskid) return } }
public stop_raging(id) { if (IsUserAlive(id)) { ClearUserInRage(id) set_user_rendering(id) client_printcolor(id, "!g%s !yYour rage has worn off", CHAT_PREFIX) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_KILLBEAM) write_short(id) message_end() remove_task(id+TASK_GLOW) } }
public rage_aura(taskid) { if (IsUserInRage(ID_AURA) && IsUserAlive(ID_AURA)) { static origin[3] get_user_origin(ID_AURA, origin) // I hook the cvars before this task so they wont be called every 0.1 second. That would be awful :( message_begin(MSG_PVS, SVC_TEMPENTITY, origin) write_byte(TE_DLIGHT) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]) write_byte(radius) write_byte(r) write_byte(g) write_byte(b) write_byte(2) write_byte(0) message_end() } else { remove_task(taskid) return } }
public reset_vars(id) { if (IsUserConnected(id)) ClearUserOMFGspam(id) }
stock client_printcolor(const id, const input[ ], any:...) { new count = 1, iPlayers[32] static szMsg[191] vformat(szMsg, charsmax(szMsg), input, 3) replace_all(szMsg, 190, "!g", "^4") replace_all(szMsg, 190, "!y", "^1") replace_all(szMsg, 190, "!ctr", "^3") // replace_all(szMsg, 190, "!w", "^0") if (id) iPlayers[0] = id else get_players(iPlayers, count, "ch") for (new i = 0; i < count; i++) { if (IsUserConnected(iPlayers[i])) { message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayers[i]) write_byte(iPlayers[i]) write_string(szMsg) message_end() } } }
Can anyone add to this class [pain + knife hit + idle] <---- ill edit them as sounds just call them customsounds or something
i tried , but didnt work for me
|
|