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

Problem smoker


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
DRYincing
Junior Member
Join Date: Dec 2018
Location: Timisoara
Old 12-23-2018 , 15:38   Problem smoker
Reply With Quote #1

PROBLEM: He can not pull people; (bind e +drag)



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[] = "left4dead/Smoker_TongueHit_miss.wav" 
new g_sndDrag[] = "left4dead/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/zbeam4.spr") 

} 

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

cvar_dragspeed = register_cvar("smoker_dragspeed", "220") 
cvar_maxdrags = register_cvar("smoker_maxdrags", "30") 
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() 
}
DRYincing is offline
deprale
Senior Member
Join Date: Oct 2018
Location: Leeds
Old 12-24-2018 , 02:02   Re: Problem smoker
Reply With Quote #2

PHP Code:
#define AUTHOR "MaHu" 
Ok, not even gonna try and help you, cause 90% of this code is ripped off 4eRT and you didn't even bother looking over variables that you've modified, I bet you just compiled it once and brushed it off as "someone else's work" judging by your past posts. You removed g_has_hook, added g_class and removed the models, but you forgot to add him as the original author.

LOOK, STUDY & TRY TO IMITATE.
Never copy & paste without understanding basic concepts.

Last edited by deprale; 12-24-2018 at 02:02.
deprale is offline
Reply


Thread Tools
Display Modes

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 11:03.


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