Raised This Month: $51 Target: $400
 12% 

Add line source


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
DRYincing
Junior Member
Join Date: Dec 2018
Location: Timisoara
Old 12-15-2018 , 11:06   Add line source
Reply With Quote #1

SURSA:

HTML Code:
#include <amxmodx> 
#include <biohazard> 
#include <fakemeta> 
#include <hamsandwich> 
#include <engine> 




// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 


#define VIATA_ZOMBIE	600.0 
#define DISTANTA	 500 


// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 
// AICI SETEZI 






#define PLUGIN "Class: Smoker (trage oamenii)" 
#define AUTHOR "MaHu" 
#define VERSION "0.1" 

//Main Class, modelT & Sprite Beam 
new g_Line 

#define ICON_HIDE 0 
#define ICON_SHOW 1 
#define ICON_FLASH 2 


//Sounds 
new g_sndMiss[] = "sound/biohazard/Smoker_TongueHit_miss.wav" 
new g_sndDrag[] = "sound/biohazard/Smoker_TongueHit_drag.wav" 

//Some vars 
new g_hooked[33], g_hooksLeft[33], g_unable2move[33], g_ovr_dmg[33] 
new Float:g_lastHook[33] 
new bool: g_drag_i[33] = false 

//Cvars 
new cvar_maxdrags, cvar_dragspeed, cvar_cooldown, cvar_dmg2stop, cvar_mates, cvar_unb2move 

new g_class 

public plugin_precache( ) 
{ 
precache_sound(g_sndDrag) 
precache_sound(g_sndMiss) 
g_Line = precache_model("sprites/biohazard/zbeam4.spr") 

} 

public plugin_init() 
{ 
register_plugin(PLUGIN, VERSION, AUTHOR) 

cvar_dragspeed = register_cvar("smoker_dragspeed", "220") 
cvar_maxdrags = register_cvar("smoker_maxdrags", "32") 
cvar_cooldown = register_cvar("smoker_cooldown", "0") 
cvar_dmg2stop = register_cvar("smoker_dmg2stop", "16") 
cvar_mates = register_cvar("smoker_mates", "0") 
cvar_unb2move = register_cvar("smoker_unable_move", "1") 

register_event("ResetHUD", "newSpawn", "b") 
register_event("DeathMsg", "smoker_death", "a") 

register_forward(FM_CmdStart, "FwdCmdStart"); 

RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage") 

g_class = register_class("Smoker (trage oamenii)", "pe E") 
if(g_class != -1) 
{ 
set_class_data(g_class, DATA_HEALTH, VIATA_ZOMBIE) 
set_class_data(g_class, DATA_SPEED, 290.0) 
set_class_data(g_class, DATA_GRAVITY, 1.0) 
set_class_data(g_class, DATA_DEFENCE, 0.087) 
set_class_data(g_class, DATA_HITSPEED, 0.95) 
set_class_data(g_class, DATA_HITDELAY, 0.15) 
set_class_data(g_class, DATA_REGENDLY, 0.20) 
set_class_data(g_class, DATA_HITREGENDLY, 2.2) 
set_class_data(g_class, DATA_KNOCKBACK, 0.0) 
} 
} 

public event_infect(victim, attacker) 
{ 
if(get_user_class(victim) == g_class) 
{ 
g_hooksLeft[victim] = get_pcvar_num(cvar_maxdrags) 
} 

if(is_user_zombie(victim) && g_hooked[victim]) 
{ 
drag_end(victim) 
} 
} 

public newSpawn(id) 
{ 
if (g_hooked[id]) 
drag_end(id) 
} 

public drag_start(id) // starts drag, checks if player is Smoker, checks cvars 
{ 
if (is_user_zombie(id) && (get_user_class(id) == g_class) && !g_drag_i[id]) { 

static Float:cdown 
cdown = get_pcvar_float(cvar_cooldown) 
if (!is_user_alive(id)) { 
client_print(id, print_chat, "Nu poti trage mort!") 
return PLUGIN_HANDLED 
} 
if (g_hooksLeft[id] <= 0) { 
client_print(id, print_chat, "Nu poti trage!") 
return PLUGIN_HANDLED 
} 
if (get_gametime() - g_lastHook[id] < cdown) { 
client_print(id, print_chat, "Asteapta %.f0 sec.!", get_pcvar_float(cvar_cooldown) - (get_gametime() - g_lastHook[id])) 
return PLUGIN_HANDLED 
} 

new hooktarget, body 
get_user_aiming(id, hooktarget, body, DISTANTA) 
if(DISTANTA < 400.0) 
{ 
client_print(id, print_chat, "Nu esti la distanta necesara!"); 
return PLUGIN_HANDLED; 
} 

if (is_user_alive(hooktarget)) { 
if (!is_user_zombie(hooktarget)) 
{ 

g_hooked[id] = hooktarget 
emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH) 
} 
else 
{ 
if (get_pcvar_num(cvar_mates) == 1) 
{ 
g_hooked[id] = hooktarget 
emit_sound(hooktarget, CHAN_BODY, g_sndDrag, 1.0, ATTN_NORM, 0, PITCH_HIGH) 
} 
else 
{ 
client_print(id, print_chat, "Este coechipier!") 
return PLUGIN_HANDLED 
} 
} 
if (get_pcvar_float(cvar_dragspeed) <= 0.0) 
cvar_dragspeed = 1 

new parm[2] 
parm[0] = id 
parm[1] = hooktarget 

set_task(0.1, "smoker_reelin", id, parm, 2, "b") 
harpoon_target(parm) 

g_hooksLeft[id]-- 
client_print(id, print_chat, "Poti trage de %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s") 
g_drag_i[id] = true 

if(get_pcvar_num(cvar_unb2move) == 1) 
g_unable2move[hooktarget] = true 

if(get_pcvar_num(cvar_unb2move) == 2) 
g_unable2move[id] = true 

if(get_pcvar_num(cvar_unb2move) == 3) 
{ 
g_unable2move[hooktarget] = true 
g_unable2move[id] = true 
} 
} else { 
g_hooked[id] = 33 
noTarget(id) 
emit_sound(hooktarget, CHAN_BODY, g_sndMiss, 1.0, ATTN_NORM, 0, PITCH_HIGH) 
g_drag_i[id] = true 
g_hooksLeft[id]-- 
client_print(id, print_chat, "Poti trage de %d time%s", g_hooksLeft[id], (g_hooksLeft[id] < 2) ? "" : "s") 
} 
} 
else 
return PLUGIN_HANDLED 

return PLUGIN_CONTINUE 
} 

public smoker_reelin(parm[]) // dragging player to smoker 
{ 
new id = parm[0] 
new victim = parm[1] 
if (!g_hooked[id] || !is_user_alive(victim) || is_user_zombie(victim)) 
{ 
drag_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_dragspeed) 
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) //<- rewritten. now uses engine 
} 

public drag_end(id) // drags end function 
{ 
g_hooked[id] = 0 
beam_remove(id) 
remove_task(id) 

if (g_drag_i[id]) 
g_lastHook[id] = get_gametime() 

g_drag_i[id] = false 
g_unable2move[id] = false 
} 

public smoker_death() // if smoker dies drag off 
{ 
new id = read_data(2) 

beam_remove(id) 

if (g_hooked[id]) 
drag_end(id) 
} 

public fw_TakeDamage(victim, inflictor, attacker, Float:damage) // if take damage drag off 
{ 
if (is_user_alive(attacker) && (get_pcvar_num(cvar_dmg2stop) > 0)) 
{ 
g_ovr_dmg[victim] = g_ovr_dmg[victim] + floatround(damage) 
if (g_ovr_dmg[victim] >= get_pcvar_num(cvar_dmg2stop)) 
{ 
g_ovr_dmg[victim] = 0 
drag_end(victim) 
return HAM_IGNORED; 
} 
} 
return HAM_IGNORED; 
} 

public FwdCmdStart(id, uc_handle) 
{ 
if (!is_user_alive(id) || !is_user_zombie(id)) 
return 

static Button, OldButtons; 
Button = get_uc(uc_handle, UC_Buttons); 
OldButtons = pev(id, pev_oldbuttons); 

if((Button & IN_USE) && (OldButtons & IN_USE)) 
{ 
drag_start(id) 
} 

if(!(Button & IN_USE) && (OldButtons & IN_USE)) 
{ 
drag_end(id) 
} 

if (!g_drag_i[id]) 
{ 
g_unable2move[id] = false 
} 

if (g_unable2move[id] && get_pcvar_num(cvar_unb2move) > 0) 
{ 
set_pev(id, pev_maxspeed, 1.0) 
} 
} 

public harpoon_target(parm[]) // set beam (ex. tongue:) if target is player 
{ 
new id = parm[0] 
new hooktarget = parm[1] 
message_begin(MSG_BROADCAST, SVC_TEMPENTITY) 
write_byte(8) // TE_BEAMENTS 
write_short(id) 
write_short(hooktarget) 
write_short(g_Line) // sprite index 
write_byte(0) // start frame 
write_byte(0) // framerate 
write_byte(200) // life 
write_byte(8) // width 
write_byte(1) // noise 
write_byte(155) // r, g, b 
write_byte(155) // r, g, b 
write_byte(55) // r, g, b 
write_byte(90) // brightness 
write_byte(10) // speed 
message_end() 
} 

public noTarget(id) // set beam if target isn't player 
{ 
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_Line) // sprite index 
write_byte(0) // start frame 
write_byte(0) // framerate 
write_byte(200) // life 
write_byte(8) // width 
write_byte(1) // noise 
write_byte(155) // r, g, b 
write_byte(155) // r, g, b 
write_byte(55) // r, g, b 
write_byte(75) // brightness 
write_byte(0) // 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() 
}
ADD SURSA:

- #define D_ZOMBIE_NAME "Smoker"
- #define D_ZOMBIE_DESC "shoot"
- #define D_PLAYER_MODEL "models/player/smoker.mdl" and second models/player/smokerT.mdl
- #define D_CLAWS "models/v_knife_smoker.mdl"

Is it even possible?

Last edited by DRYincing; 12-15-2018 at 11:06.
DRYincing is offline
redivcram
Veteran Member
Join Date: Jul 2014
Location: Serbia
Old 12-15-2018 , 13:28   Re: Add line source
Reply With Quote #2

Are you serious?
redivcram is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:33.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode