can you add this zombie class?
https://forums.alliedmods.net/showthrea ... 3?t=167433
Help
- Night Fury
- Mod Developer
- Posts: 677
- Joined: 7 years ago
- Contact:
I don't advice you to use this plugin as it's badly & heavily coded.
Try:
Try:
- /*
- * ---------------------------------------------------------------------------------------------------------
- * ------------------------------------[ZP] Zombie Class: Smoker--------------------------------------------
- * ---------------------------------------------------------------------------------------------------------
- * ------------------------------------Author: SNAKER_BEATTER-----------------------------------------------
- * ---------------------------------------------------------------------------------------------------------
- * About:
- * When Left4Dead2 i watched in youtube and i found smoker. I dont get hes command but when i played
- * it, He drags players using hes long tongue, like a real monster that attacks pregnant mothers...
- * like from L4D2 when have to many damage long tongue ends
- * ---------------------------------------------------------------------------------------------------------
- * Description:
- * Smoker is a zombie class for zombie plague 4.3 or later version. Like from L4D2 smoker can drag
- * players by he's long tongue, After a long tongue use a cooldown starts, when take 500 damage
- * long tongue is off and if falls with 50 damage long tongue is off too... you can use it on zombies
- too(bug)
- * You can use tha command with 'E' key (such as USE key) and when fall with 50 damage
- * smoke release and if damaged 100 release smokes
- * you and you're long tongue's target will be 3rdperson view and a hudmessage will show
- * if you're zombie and not smoker you cant do anything
- * if the cooldown starts the thirdpeson view sets to firstperson
- *
- * Well green smokes from 1.4 version is not good and not like smokes so i change it
- * ---------------------------------------------------------------------------------------------------------
- * Credits:
- * L4D2 (game) - the very original zombie smoker
- * ---------------------------------------------------------------------------------------------------------
- * Cvars:
- * Their are no new cvar than the old version
- * zp_smoker_tongue_max // how many times Smoker can use long tongue? default=999
- * zp_smoker_tongue_speed // speed of long tongue default=250
- * zp_smoker_tongue_cooldown // time in seconds before you can use long tongue again. default=15
- * zp_smoker_tongue_stop_damage // damage to stop using long tongue set 0 to disable it. default=300
- * zp_smoker_tongue_stop_damage_fall // damage to stop usng long tongue(only if falls) set 0 to disable it. default=50
- * zp_smoker_tongue_infecthook // additional hooks after Smoker infects smb. def=5
- * zp_smoker_tongue_unable_move // 0=human & Smoker can move / 1=unable human to move when dragging / 2=unable Smoker to move / 3=unable both
- * zp_smoker_tongue_reward .// How many reward gives to smoker when used long tongue to any. default=2
- * zp_smoker_tongue_target_zombie // Allow/disallow using long tongue to zombies / 1=enable for all zombies / 2=Only to smokers
- * zp_smoker_smoke_damage_by_player // how many damage by player should smoke release smokes. default=5
- * zp_smoker_smoke_damage_by_fall // how many damage by fall should smoke release. default=5
- * zp_smoker_smoke_death_distance // Smoke death distance
- * zp_smoker_smoke_death_blind // Smoke death set smoked all users around you're death body
- * zp_smoker_smoke_death_glow // Glow all you're death smoke victims
- *
- * ----------------------------------------------------------------------------------------------------------
- * Modules:
- * hamsandwich
- * fakemeta
- * engine
- * -----------------------------------------------------------------------------------------------------------
- * Change log:
- * 1.0 (Sept 12, 2011)
- * {
- * First release
- * }
- * 1.1 (Sept 12, 2011)
- * {
- * smoke death function rewritten
- * Fix if a human is using smoker class, when dies smoke releases
- * (not sure) Fix if a survivor is using smoker class, when dies smoke releases
- * }
- * 1.2 (Sept 16, 2011)
- * {
- * change autbind into e key
- * Fix if a nemesis is using smoker class, when dies smoke releases
- * Change print_chat on long tongue cooldown to Hudmessage
- * }
- * 1.3 (Sept 17, 2011)
- * {
- * (new) thirdperson view when tongue start and firstperson when end
- * (new) rewritten tongue_start function
- * Fix new round human and survvor can use tongue abillity
- * Fix damage smoke not working :: Now the damage tongue end and smoke damage have their own
- * Fix cooldown hudmessage bug
- * }
- * 1.4 (Sept 18, 2011)
- * {
- * (best) added smoke damage : hes own cvars and with custom smokes
- * Smoker damage function rewritten
- * Fix smoker is human he can smoke damage and if survivor and nemesis too
- * Fix if player is zombie and he is not smoker he can smoke damage
- * }
- * 1.5 (Sept 24, 2011)
- * {
- * Fix cooldown not working after smoker backs to human/survivor and get infected again
- * Fix when cooldown is working still 3rdperson view
- * Fix Floortarget's beam not working
- * Fix nemesis and survivor may not be tongued
- * Fix nemesis can use long tongue
- * Fix survivor can release smoke death
- * (best) Added bot support on smoke damage
- * (bestornot) replace damage and death smokes
- * (best) created my own smoker's tongue
- * }
- * 1.6 (Sept 24, 2011 (Uploaded))
- * {
- * Added cfg dir
- * (best) Added sounds when using long tongue
- * (best) Added smoker models and v-models
- * tongue_Start function rewritten
- * }
- * 1.7 (Sept 24, 2011 (Uploaded))
- * {
- * (best) Added rewards when used long tongue to somebody
- * (best) Added death smoke damage and block sreen every players at his radius
- * Fix if zombie can smoked via death smoke command
- * }
- * 1.8 (Sept 24, 2011 (Uploaded))
- * {
- * Fix nemesis can be smoked via death smoke
- * Added rewards when victim somebody victimed by death smoke
- * (bestornot) Removed/Fix if zombie or a nemesis is long tongued smoker rewarded
- * Fix smoke death victim's smoke not working
- * Wrewwritten tongue_Start function
- * }
- * 1.9 (Sept 24, 2011 (Uploaded))
- * {
- * (best) Fix smoke death not working
- * (best) renew sounds + smoke death sound
- * Increases smoker's knockback so no need to stop damage
- * Changed some humesssage mistypes
- * }
- * 2.0 (Forgotten)
- * {
- * Removed some useless codes
- * (best) Fix smoke death victim = after smoking hes screens turns to darky
- * Changed all hudmessage to colorchat
- * }
- * 2.1 (Oct 12, 2011 (Created))
- * {
- * Added cvar to allow/disallow using tongue to zombie (as requested by survival)
- * }
- * 2.2 (Oct 13, 2011 (Uploaded))
- * {
- * Optomized codes
- * }
- */
- /******************************************************
- [Include files]
- ******************************************************/
- #include <zombie_escape>
- #include <ze_zombie_class>
- #include <fakemeta>
- #include <engine>
- //IMPORTANT (install cs_ham_bots.amxx to your server)
- #include <cs_ham_bots_api>
- /******************************************************
- [Plugin infos]
- ******************************************************/
- #define PLUGIN "[ZP] Zombie Class Smoker"
- #define VERSION "2.2"
- #define AUTHOR "Snaker_beatter"
- /******************************************************
- [Id(s)]
- ******************************************************/
- //Sounds
- new const sound_drag[] = "barnacle/bcl_chew1.wav"
- new const sound_smo_die[] = "weapons/explode5.wav"
- //Main Class, modelT & Sprite
- new g_zclass_smoker, g_Tongue , g_xsmoke1 , g_xsmoke2
- //Some vars
- new g_tongued[33], g_tonguesLeft[33], g_unable2move[33]
- new Float:g_lastTongue[33]
- new bool: g_Ltongue_i[33] = false , bool: g_bind_isuse[33] = false
- //Cvars
- new cvar_tongue_speed, cvar_tongue_cooldown, cvar_tongue_stop_damage, cvar_tongue_stop_damage_fall, cvar_tongue_unb2move , cvar_tongue_start_autobind , cvar_smoke_damage_byplayer, cvar_smoke_damage_byfall , cvar_smoke_death_distance, cvar_smoke_death_blind, cvar_smoke_death_victimglow, cvar_tongue_reward,
- cvar_tongue_zombietarget
- //Smoker Atributes
- new const zclass_name[] = { "smoker zombie L4D2" }
- new const zclass_info[] = { "Long tongue & smokes" }
- const zclass_health = 2602
- const zclass_speed = 350
- const zclass_gravity = 800
- /******************************************************
- [Main event] + [PLugin cfg]
- ******************************************************/
- public plugin_init()
- {
- cvar_tongue_speed = register_cvar("zp_smoker_tongue_speed", "250")
- cvar_tongue_cooldown = register_cvar("zp_smoker_tongue_cooldown", "15")
- cvar_tongue_stop_damage = register_cvar("zp_smoker_tongue_stop_damage", "250")
- cvar_tongue_stop_damage_fall = register_cvar("zp_smoker_tongue_stop_damage_fall", "25")
- cvar_tongue_unb2move = register_cvar("zp_smoker_tongue_unable_move", "3")
- cvar_tongue_start_autobind = register_cvar("zp_smoker_autobind", "1")
- cvar_tongue_reward = register_cvar("zp_smoker_tongue_reward", "2")
- cvar_tongue_zombietarget = register_cvar("zp_smoker_tongue_target_zombie", "1")
- cvar_smoke_damage_byfall = register_cvar("zp_smoker_smoke_damage_byfall", "1")
- cvar_smoke_damage_byplayer = register_cvar("zp_smoker_smoke_damage_byplayer", "1")
- cvar_smoke_death_distance = register_cvar("zp_smoker_smoke_death_distance", "180")
- cvar_smoke_death_blind = register_cvar("zp_smoker_smoke_death_blind", "5")
- cvar_smoke_death_victimglow = register_cvar("zp_smoker_smoke_death_glow", "1")
- register_event("ResetHUD", "newSpawn", "b")
- register_event("DeathMsg", "smoker_death", "a")
- register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
- RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
- /* Bot support start */
- //RegisterHamBots(Ham_Killed, "smoker_botdeath")
- RegisterHamBots(Ham_TakeDamage, "fw_TakeDamage")
- /* Bot support end */
- register_clcmd("+smoker_tongue","tongue_start")
- register_clcmd("-smoker_tongue","tongue_end")
- plugin_cfg()
- }
- public plugin_cfg()
- {
- new const derectory[] = "addons/amxmodx/configs/zp_zclass_smoker.cfg"
- server_cmd("exec %s", derectory)
- }
- /******************************************************
- [Precache event]
- ******************************************************/
- public plugin_precache()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- g_zclass_smoker = ze_register_zombie_class(zclass_name, zclass_info, zclass_health, zclass_speed, zclass_gravity)
- g_Tongue = precache_model("sprites/l4d_tongue.spr")
- g_xsmoke1 = precache_model("sprites/l4d_smoke_damage.spr")
- g_xsmoke2 = precache_model("sprites/l4d_smoke_death.spr")
- precache_sound(sound_drag)
- precache_sound(sound_smo_die)
- }
- /****************************************************
- [Events]
- ****************************************************/
- public ze_user_infected(id)
- {
- if (ze_get_current_zombie_class(id) == g_zclass_smoker)
- {
- g_tonguesLeft[id] = 999
- new bind_mode = get_pcvar_num(cvar_tongue_start_autobind)
- if (bind_mode == 1)
- {
- g_bind_isuse[id] = true
- client_print(id, print_chat, "[ZP] You can use long tongue with 'E' key")
- }
- else if (bind_mode == 0)
- {
- g_bind_isuse[id] = false
- client_print(id, print_chat, "[ZP] You can use long tongue, just bind 'KEY' +tongue_start")
- }
- }
- }
- public newSpawn(id)
- {
- if (g_tongued[id])
- {
- tongue_end(id)
- }
- }
- public smoker_botdeath(victim, attacker, shouldgib)
- {
- }
- public smoker_death() // if smoker dies drag off
- {
- new id = read_data(2)
- smoke_death(id)
- beam_remove(id)
- if (g_tongued[id])
- tongue_end(id)
- }
- public fw_TakeDamage(victim, inflictor, attacker, Float:damage) // if take damage drag off
- {
- new g_cvar_falls = get_pcvar_num(cvar_tongue_stop_damage_fall) > 0 || get_pcvar_num(cvar_smoke_damage_byfall) > 0
- new g_cvar_players = get_pcvar_num(cvar_tongue_stop_damage) > 0 || get_pcvar_num(cvar_smoke_damage_byplayer) > 0
- if (ze_get_current_zombie_class(victim) == g_zclass_smoker)
- {
- new g_over_damage[33]
- g_over_damage[victim] = g_over_damage[victim] + floatround(damage)
- if (victim == attacker || !is_user_connected(attacker) && (g_cvar_falls))
- {
- if (g_over_damage[victim] >= get_pcvar_num(cvar_tongue_stop_damage_fall))
- {
- g_over_damage[victim] = 0
- tongue_end(victim)
- return HAM_IGNORED;
- }
- if (damage > get_pcvar_num(cvar_smoke_damage_byfall))
- {
- g_over_damage[victim] = 0
- smoke_damage(victim)
- return HAM_IGNORED;
- }
- }
- if (is_user_alive(attacker) && (g_cvar_players))
- {
- if (g_over_damage[victim] >= get_pcvar_num(cvar_smoke_damage_byplayer))
- {
- g_over_damage[victim] = 0
- smoke_damage(victim)
- }
- if (g_over_damage[victim] >= get_pcvar_num(cvar_tongue_stop_damage))
- {
- g_over_damage[victim] = 0
- tongue_end(victim)
- return HAM_IGNORED;
- }
- }
- }
- return HAM_IGNORED
- }
- public fw_PlayerPreThink(id)
- {
- if (!is_user_alive(id))
- {
- return FMRES_IGNORED
- }
- new button = get_user_button(id)
- new oldbutton = get_user_oldbutton(id)
- if (g_bind_isuse[id] && ze_is_user_zombie(id) && (ze_get_current_zombie_class(id) == g_zclass_smoker))
- {
- if (!(oldbutton & IN_USE) && (button & IN_USE))
- {
- tongue_start(id)
- }
- if ((oldbutton & IN_USE) && !(button & IN_USE))
- {
- tongue_end(id)
- }
- }
- if (!g_Ltongue_i[id])
- {
- g_unable2move[id] = false
- }
- if (g_unable2move[id] && get_pcvar_num(cvar_tongue_unb2move) > 0)
- {
- set_pev(id, pev_maxspeed, 1.0)
- }
- return PLUGIN_CONTINUE
- }
- public client_disconnected(id) // if client disconnects drag off
- {
- if (id <= 0 || id > 32)
- return
- if (g_tongued[id])
- tongue_end(id)
- if(g_unable2move[id])
- g_unable2move[id] = false
- }
- /*****************************************************
- [main commands]
- *****************************************************/
- public tongue_start(id) // starts drag, checks if player is Smoker, checks cvars
- {
- new g_unalive = is_user_alive(id)
- if (!g_unalive)
- {
- print_chatColor(id, "\g[ZP] \nYou can't use \tlong tongue if you are death!")
- return PLUGIN_HANDLED
- }
- if (ze_is_user_zombie(id))
- {
- if (ze_get_current_zombie_class(id) == g_zclass_smoker)
- {
- if (!g_Ltongue_i[id])
- {
- set_view(id, CAMERA_UPLEFT)
- static Float:cdown
- cdown = get_pcvar_float(cvar_tongue_cooldown)
- if (!g_unalive)
- {
- print_chatColor(id, "\g[ZP] \nYou can't use \tlong tongue if you are death!")
- return PLUGIN_HANDLED
- }
- if (g_tonguesLeft[id] <= 0)
- {
- print_chatColor(id, "\g[ZP] \nYou use max \tlong tongue, you cant do anymore")
- return PLUGIN_HANDLED
- }
- if (get_gametime() - g_lastTongue[id] < cdown)
- {
- print_chatColor(id, "\g[ZP] \nYou have to \twait %.f0 to use long tongue again!", get_pcvar_float(cvar_tongue_cooldown) - (get_gametime() - g_lastTongue[id]))
- set_view(id, CAMERA_NONE)
- return PLUGIN_HANDLED
- }
- new tonguetarget, targetbody
- get_user_aiming(id, tonguetarget, targetbody)
- if (is_user_alive(tonguetarget))
- {
- tonguetarget_classes(id, tonguetarget)
- if (get_pcvar_float(cvar_tongue_speed) <= 0.0)
- cvar_tongue_speed = 1
- new parm[2]
- parm[0] = id
- parm[1] = tonguetarget
- set_task(0.1, "smoker_reelin", id, parm, 2, "b")
- harpoon_target(parm)
- g_tonguesLeft[id]--
- g_Ltongue_i[id] = true
- if (get_pcvar_num(cvar_tongue_unb2move) == 1)
- {
- g_unable2move[tonguetarget] = true
- }
- }
- else
- {
- g_tongued[id] = 33
- FloorTarget(id)
- emit_sound(tonguetarget, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
- g_Ltongue_i[id] = true
- g_tonguesLeft[id]--
- }
- }
- else
- return PLUGIN_HANDLED
- }
- }
- else
- {
- print_chatColor(id, "\g[ZP] \nYou can't use \tsmoker's long tongue if you're a human!")
- return PLUGIN_HANDLED
- }
- return PLUGIN_CONTINUE
- }
- public smoker_reelin(parm[]) // player to smoker
- {
- new id = parm[0]
- new victim = parm[1]
- if (!g_tongued[id] || !is_user_alive(victim))
- {
- tongue_end(id)
- return
- }
- new Float:fl_Velocity[3]
- new idOrigin[3], vicOrigin[3]
- get_user_origin(victim, vicOrigin)
- get_user_origin(id, idOrigin)
- new distance = get_distance(idOrigin, vicOrigin)
- if (distance > 1)
- {
- new Float:fl_Time = distance / get_pcvar_float(cvar_tongue_speed)
- fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time
- fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time
- fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time
- }
- else
- {
- fl_Velocity[0] = 0.0
- fl_Velocity[1] = 0.0
- fl_Velocity[2] = 0.0
- }
- entity_set_vector(victim, EV_VEC_velocity, fl_Velocity)
- }
- public tongue_end(id) // drags end function
- {
- g_tongued[id] = 0
- beam_remove(id)
- remove_task(id)
- set_view(id, CAMERA_NONE)
- if (g_Ltongue_i[id])
- {
- g_lastTongue[id] = get_gametime()
- }
- g_Ltongue_i[id] = false
- g_unable2move[id] = false
- }
- public harpoon_target(parm[]) // set long tongue if target is player
- {
- new id = parm[0]
- new tonguetarget = parm[1]
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(8) // TE_BEAMENTS
- write_short(id)
- write_short(tonguetarget)
- write_short(g_Tongue) // sprite index
- write_byte(0) // start frame
- write_byte(0) // framerate
- write_byte(200) // life
- write_byte(12) // width
- write_byte(1) // noise
- write_byte(58) // r, g, b
- write_byte(68) // r, g, b
- write_byte(57) // r, g, b
- write_byte(90) // brightness
- write_byte(10) // speed
- message_end()
- }
- public FloorTarget(id) // set long tongue target isn't player
- {
- set_view(id, CAMERA_NONE)
- new endorigin[3]
- get_user_origin(id, endorigin, 3)
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte (TE_BEAMENTPOINT); // TE_BEAMENTPOINT
- write_short(id)
- write_coord(endorigin[0])
- write_coord(endorigin[1])
- write_coord(endorigin[2])
- write_short(g_Tongue) // sprite index
- write_byte(0) // start frame
- write_byte(0) // framerate
- write_byte(200) // life
- write_byte(15) // width
- write_byte(1) // noise
- write_byte(58) // r, g, b
- write_byte(68) // r, g, b
- write_byte(57) // r, g, b
- write_byte(90) // brightness
- write_byte(10) // speed
- message_end()
- }
- public beam_remove(id) // remove beam
- {
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(99) //TE_KILLBEAM
- write_short(id) //entity
- message_end()
- }
- public smoke_damage(id) // when smoker damaged create smoke
- {
- if (ze_is_user_zombie(id))
- {
- if (ze_get_current_zombie_class(id) == g_zclass_smoker)
- {
- new g_scale
- g_scale = random_num(60, 70)
- new Float:origin[3]
- pev(id, pev_origin, origin)
- create_sprite(origin, g_xsmoke1, 100, g_scale)
- screenshakeandflash(id)
- }
- }
- else
- {
- return PLUGIN_HANDLED
- }
- return PLUGIN_HANDLED
- }
- public smoke_death(id) // when smoker dies create smoke
- {
- if (ze_is_user_zombie(id))
- {
- if (ze_get_current_zombie_class(id) == g_zclass_smoker)
- {
- new Float:origin[3]
- pev(id, pev_origin, origin)
- create_sprite(origin, g_xsmoke2, 200, 180)
- deathh_smoke(id)
- emit_sound(id, CHAN_BODY, sound_smo_die, 1.0, ATTN_NORM, 0, PITCH_NORM)
- }
- }
- else
- {
- return PLUGIN_HANDLED
- }
- return PLUGIN_HANDLED
- }
- public screenshakeandflash(id)
- {
- new g_msgScreenShake = get_user_msgid("ScreenShake")
- message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, id)
- write_short(1<<12*4) // amplitude
- write_short(1<<12*2) // duration
- write_short(1<<12*10) // frequency
- message_end()
- new g_msgScreenFade = get_user_msgid("ScreenFade")
- message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id)
- write_short( 1<<10) // fade lasts this long duration
- write_short( 1<<10) // fade lasts this long hold time
- write_short( 1<<12 ) // fade type (in / out)
- write_byte(255) // fade red
- write_byte(255) // fade green
- write_byte(255) // fade blue
- write_byte(100) // fade alpha
- message_end()
- }
- public tonguetarget_classes(id, target)
- {
- /* Note: this targets are alive, if you want death go back to line "447" */
- new id_name[32], target_name[32]
- get_user_name(id, id_name, 31)
- get_user_name(target, target_name, 31)
- if (ze_is_user_zombie(target))
- {
- if (get_pcvar_num(cvar_tongue_zombietarget) == 1)
- {
- print_chatColor(id, "\g[ZP] \nYou are using you're \tlong tongue to %s", target_name)
- print_chatColor(target, "\g[ZP] \nsmoker %s is using \the's long tongue to you!", id_name)
- g_tongued[id] = target
- emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM)
- }
- else
- {
- g_tongued[id] = target = false
- print_chatColor(id, "\g[ZP] \nYou \tCant use long tongue to %s", target_name)
- emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM) // still add some sound so it wont show as a bug
- }
- if (get_pcvar_num(cvar_tongue_zombietarget) == 2) // allow only for smoker zombies
- {
- if (ze_get_current_zombie_class(target) == g_zclass_smoker)
- {
- g_tongued[id] = target
- print_chatColor(id, "\g[ZP] \nYou are using you're \tlong tongue to %s", target_name)
- print_chatColor(target, "\g[ZP] \nsmoker %s is using \the's long tongue to you!", id_name)
- emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM) // still add some sound so it wont show as a bug
- }
- //else {
- if (ze_get_current_zombie_class(target) != g_zclass_smoker)
- {
- g_tongued[id] = target = false
- print_chatColor(id, "\g[ZP] \nYou \tCan only use long tongue to smokers")
- emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM)
- }
- //} //else is end
- }
- }
- else
- {
- give_ammopacks(id)
- print_chatColor(id, "\g[ZP] \nYou are using you're \tlong tongue to enemy %s You rewarded %d AP", target_name, get_pcvar_num(cvar_tongue_reward))
- print_chatColor(target, "\g[ZP] \nsmoker %s is using \the's long tongue to you!", id_name)
- g_tongued[id] = target
- emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM)
- }
- }
- public deathh_smoke(id)
- {
- new bool:deathh_smoke_allowed[33]
- for(new i = 1; i <= get_maxplayers(); i ++)
- {
- if (ze_is_user_zombie(i) || get_entity_distance(id, i) > get_pcvar_num(cvar_smoke_death_distance))
- {
- return PLUGIN_HANDLED
- }
- if (is_user_bot(i))
- {
- deathh_smoke_allowed[id] = true
- }
- print_chatColor(id, "\g[ZP] \nYou rewarded \t2 ammopacks by using smoke death to a victim")
- give_ammopacks(id)
- new g_msgScreenFade = get_user_msgid("ScreenFade")
- message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, i)
- write_short(get_pcvar_num(cvar_smoke_death_blind)) // Time
- write_short(get_pcvar_num(cvar_smoke_death_blind)) // time
- write_short(0x0004)
- write_byte(255) // red
- write_byte(255) // green
- write_byte(255) // blue
- write_byte(135) // Alpha
- message_end()
- new Float:orgin[3]
- pev(i, pev_origin, orgin)
- new g_scale = random_num(40, 30)
- create_sprite(orgin, g_xsmoke1, 150, g_scale)
- if(get_pcvar_num(cvar_smoke_death_victimglow) == 1)
- {
- set_rendering(i, kRenderFxGlowShell, 255, 255, 255, kRenderNormal, 25)
- print_chatColor(i, "\g[ZP] \n You'd been \tsmoked by smoker's death smoke")
- }
- set_task(get_pcvar_float(cvar_smoke_death_blind), "deathh_smoke_unblind", i)
- }
- return PLUGIN_HANDLED
- }
- public deathh_smoke_unblind(user)
- {
- new g_msgScreenFade = get_user_msgid("ScreenFade")
- message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, user)
- write_short(1<<12) // Time
- write_short(0) // time
- write_short(0x0004)
- write_byte(0) // red
- write_byte(0) // green
- write_byte(0) // blue
- write_byte(1) // Alpha (if use 100 or upper will cause dark screen to user (not bug))
- message_end()
- new Float:orgin[3]
- pev(user, pev_origin, orgin)
- new g_scale = random_num(40, 30)
- create_sprite(orgin, g_xsmoke1, 130, g_scale)
- // plus remove glow
- if (get_pcvar_num(cvar_smoke_death_victimglow) == 1)
- {
- set_rendering(user)
- }
- }
- stock give_ammopacks(id)
- {
- ze_set_escape_coins(id, ze_get_escape_coins(id) + get_pcvar_num(cvar_tongue_reward))
- }
- stock create_sprite(const Float:XYZ_position[3], sprite_index, brightness, scale)
- {
- // Sprite
- message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
- write_byte(TE_SPRITE) // TE id (Additive sprite, plays 1 cycle)
- engfunc(EngFunc_WriteCoord, XYZ_position[0]) // x
- engfunc(EngFunc_WriteCoord, XYZ_position[1]) // y
- engfunc(EngFunc_WriteCoord, XYZ_position[2]) // z
- write_short(sprite_index) // sprite index
- write_byte(scale) // scale in 0.1's
- write_byte(brightness) // brightness
- message_end()
- }
- // Print chat color by x[L]eonn
- stock print_chatColor(const id,const input[], any:...)
- {
- new msg[191], players[32], count = 1;
- vformat(msg,190,input,3);
- replace_all(msg,190,"\g","^4");// green
- replace_all(msg,190,"\n","^1");// normal
- replace_all(msg,190,"\t","^3");// team
- 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();
- }
- }
Create an account or sign in to join the discussion
You need to be a member in order to post a reply
Create an account
Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute
Sign in
Who is online
Users browsing this forum: No registered users and 3 guests