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

Gilloutine Help


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
J@y
Member
Join Date: Feb 2022
Old 12-20-2022 , 17:23   Gilloutine Help
Reply With Quote #1

Hello, i need help adding this code into a "Knife Menu" if anyone could help i'd really appreciate it <3

PHP Code:
#include <zombie_escape>
#include <engine>
#include <fakemeta_util>
#include <cstrike>
#include <fun>
 
#define PLUGIN "Blood-Dripper"
#define VERSION "1.0"
#define AUTHOR "m4m3ts"
 
#define CSW_BDRIPPER CSW_MAC10
#define weapon_guillotine "weapon_mac10"
#define old_event "events/mac10.sc"
#define old_w_model "models/w_mac10.mdl"
#define WEAPON_SECRETCODE 1329419
 
 
#define DEFAULT_AMMO 10
#define DAMAGE 200
#define BDRIP_CLASSNAME "Blood Dripper"
#define WEAPON_ANIMEXT "knife"
 
#define Get_Ent_Data(%1,%2) get_pdata_int(%1,%2,4)
#define Set_Ent_Data(%1,%2,%3) set_pdata_int(%1,%2,%3,4)
 
const PDATA_SAFE 2
const OFFSET_LINUX_WEAPONS 4
const OFFSET_WEAPONOWNER 41
 
new const v_model[] = "models/zombie_escape/v_guillotine.mdl"
new const p_model[] = "models/zombie_escape/p_guillotine.mdl"
new const w_model[] = "models/zombie_escape/w_guillotine.mdl"
new const KNIFE_MODEL[] = "models/zombie_escape/guillotine_projectile.mdl"
new const PECAH_MODEL[] = "models/zombie_escape/gibs_guilotine.mdl"
new const hit_wall[] = "weapons/janus9_stone1.wav"
new const hit_wall2[] = "weapons/janus9_stone2.wav"
new const weapon_sound[6][] =
{
    
"weapons/guillotine_catch2.wav",
    
"weapons/guillotine_draw.wav",
    
"weapons/guillotine_draw_empty.wav",
    
"weapons/guillotine_explode.wav",
    
"weapons/guillotine_red.wav",
    
"weapons/guillotine-1.wav"
}
 
 
new const 
WeaponResource[3][] =
{
    
"sprites/weapon_guillotine.txt",
    
"sprites/640hud120.spr",
    
"sprites/guillotine_lost.spr"
}
 
enum
{
    
ANIM_IDLE 0,
    
ANIM_IDLE_EMPTY,
    
ANIM_SHOOT,
    
ANIM_DRAW,
    
ANIM_DRAW_EMPTY,
    
ANIM_IDLE_SHOOT,
    
ANIM_IDLE_SHOOT2,
    
ANIM_CATCH,
    
ANIM_LOST
}
 
new 
g_MsgDeathMsg
 
new g_had_guillotine[33], g_guillotine_ammo[33], shoot_mode[33], shoot_ent_mode[33], g_pecahheadshot_mode[33], ent_sentuh[33], ent_sentuh_balik[33]
new 
g_old_weapon[33], g_smokepuff_idm_iBlood[2], guillotine_korban[33], headshot_korban[33], gmsgScoreInfo
new g_iItemID
 
const PRIMARY_WEAPONS_BIT_SUM =
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
 
public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_cvar("guillotine_version""m4m3ts"FCVAR_SERVER|FCVAR_SPONLY)
    
register_forward(FM_CmdStart"fw_CmdStart")
    
register_forward(FM_SetModel"fw_SetModel")
    
register_think(BDRIP_CLASSNAME"fw_Think")
    
register_touch(BDRIP_CLASSNAME"*""fw_touch")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_TraceLine"fw_traceline"1)
    
register_forward(FM_AddToFullPack"fm_addtofullpack_post"1)
    
RegisterHam(Ham_Weapon_WeaponIdleweapon_guillotine"fw_guillotineidleanim"1)
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
    
RegisterHam(Ham_Item_AddToPlayerweapon_guillotine"fw_AddToPlayer_Post"1)
    
register_event("CurWeapon""Event_CurWeapon""be""1=1")
   
    
g_iItemID ze_register_item("Blood Dripper"200)
   
    
register_clcmd("weapon_guillotine""hook_weapon")
   
    
g_MsgDeathMsg get_user_msgid("DeathMsg")
    
gmsgScoreInfo get_user_msgid("ScoreInfo")
}
 
 
public 
plugin_precache()
{
    
precache_model(v_model)
    
precache_model(p_model)
    
precache_model(w_model)
    
precache_model(KNIFE_MODEL)
    
g_pecah precache_model(PECAH_MODEL)
    
precache_sound(hit_wall)
    
precache_sound(hit_wall2)
   
    for(new 
0sizeof(weapon_sound); i++)
        
precache_sound(weapon_sound[i])
   
    for(new 
1sizeof(WeaponResource); i++)
        
precache_model(WeaponResource[i])
   
    
g_smokepuff_id engfunc(EngFunc_PrecacheModelWeaponResource[2])
    
m_iBlood[0] = precache_model("sprites/blood.spr")
    
m_iBlood[1] = precache_model("sprites/bloodspray.spr"
}
 
public 
ze_user_infected(id)
{
    
remove_guillotine(id)
}
 
public 
fw_PlayerKilled(id)
{
    
remove_guillotine(id)
}
 
public 
hook_weapon(id)
{
    
engclient_cmd(idweapon_guillotine)
    return
}
 
public 
ze_select_item_pre(iditemid)
{
    
// This not our item?
    
if (itemid != g_iItemID)
        return 
ZE_ITEM_AVAILABLE
   
    
// Available for Humans only, So don't show it for zombies
    
if (ze_is_user_zombie(id))
        return 
ZE_ITEM_DONT_SHOW
   
    
// Finally return that it's available
    
return ZE_ITEM_AVAILABLE
}
 
public 
ze_select_item_post(iditemid)
{
    
// This is not our item, Block it here and don't execute the blew code
    
if (itemid != g_iItemID)
        return
   
    
get_guillotine(id)
}
 
public 
get_guillotine(id)
{
    if(!
is_user_alive(id))
        return
    
drop_weapons(id1)
    
g_had_guillotine[id] = 1
    g_guillotine_ammo
[id] = DEFAULT_AMMO
   
    give_item
(idweapon_guillotine)
    
update_ammo(id)
   
    static 
weapon_entweapon_ent fm_find_ent_by_owner(-1weapon_guillotineid)
    if(
pev_valid(weapon_ent)) cs_set_weapon_ammo(weapon_ent1)
}
 
public 
remove_guillotine(id)
{
    
g_had_guillotine[id] = 0
}
 
public 
refill_guillotine(id)
{  
    if(
g_had_guillotine[id]) g_guillotine_ammo[id] = 15
   
    
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id]) update_ammo(id)
}
   
public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
    if(!
is_user_alive(id) || !is_user_connected(id))
        return 
FMRES_IGNORED   
    
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
        
set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001)
   
    return 
FMRES_HANDLED
}
 
public 
Event_CurWeapon(id)
{
    if(!
is_user_alive(id))
        return
       
    if(
get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
    {
        
set_pev(idpev_viewmodel2v_model)
        
set_pev(idpev_weaponmodel2p_model)
        
set_pdata_string(id492 4WEAPON_ANIMEXT, -20)
        if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] >= 1set_weapon_anim(idANIM_DRAW)
        if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] == 0set_weapon_anim(idANIM_DRAW_EMPTY)
        
update_ammo(id)
    }
   
    
g_old_weapon[id] = get_user_weapon(id)
}
 
public 
fw_guillotineidleanim(Weapon)
{
    new 
id get_pdata_cbase(Weapon414)
 
    if(!
is_user_alive(id) || ze_is_user_zombie(id) || !g_had_guillotine[id] || get_user_weapon(id) != CSW_BDRIPPER)
        return 
HAM_IGNORED;
   
    if(
shoot_mode[id] == && g_guillotine_ammo[id] >= 1)
        return 
HAM_SUPERCEDE;
   
    if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25)
    {
        
set_weapon_anim(idANIM_IDLE_SHOOT)
        
set_pdata_float(Weapon4820.04)
        return 
HAM_SUPERCEDE;
    }
   
    if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25)
    {
        
set_weapon_anim(idANIM_IDLE_SHOOT2)
        
set_pdata_float(Weapon4820.04)
        return 
HAM_SUPERCEDE;
    }
   
    if(
g_guillotine_ammo[id] == && get_pdata_float(Weapon484) <= 0.25)
    {
        
set_weapon_anim(idANIM_IDLE_EMPTY)
        
set_pdata_float(Weapon4820.04)
        return 
HAM_SUPERCEDE;
    }
 
    return 
HAM_IGNORED;
}
 
public 
fw_CmdStart(iduc_handleseed)
{
    if(!
is_user_alive(id) || !is_user_connected(id))
        return
    if(
get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
        return
   
    static 
entent fm_get_user_weapon_entity(idCSW_BDRIPPER)
    if(!
pev_valid(ent))
        return
    if(
get_pdata_float(ent46OFFSET_LINUX_WEAPONS) > 0.0 || get_pdata_float(ent47OFFSET_LINUX_WEAPONS) > 0.0)
        return
   
    static 
CurButton
    CurButton 
get_uc(uc_handleUC_Buttons)
   
    if(
CurButton IN_ATTACK)
    {
        
CurButton &= ~IN_ATTACK
        set_uc
(uc_handleUC_ButtonsCurButton)
       
        if(
g_guillotine_ammo[id] == 0)
            return
        if(
shoot_mode[id] == && get_pdata_float(id835) <= 0.0)
        {
            
g_guillotine_ammo[id]--
            
update_ammo(id)
            
shoot_mode[id] = 1
            FireKnife
(id)
            
set_weapon_anim(idANIM_SHOOT)
            
emit_sound(idCHAN_WEAPONweapon_sound[5], 1.0ATTN_NORM0PITCH_NORM)
            
set_weapons_timeidle(idCSW_BDRIPPER0.7)
            
set_player_nextattackx(id0.7)
        }
    }
}
 
public 
FireKnife(id)
{
    static 
Float:StartOrigin[3], Float:velocity[3], Float:angles[3], Float:anglestrue[3], Float:jarak_max[3]
    
get_position(id2.00.00.0StartOrigin)
    
get_position(id700.00.00.0jarak_max)
   
    
pev(id,pev_v_angle,angles)
    static 
EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    if(!
pev_valid(Ent)) return
    
anglestrue[0] = 360.0 angles[0]
    
anglestrue[1] = angles[1]
    
anglestrue[2] = angles[2]
   
    
// Set info for ent
    
set_pev(Entpev_movetypeMOVETYPE_FLY)
    
set_pev(Entpev_ownerid)
    
set_pev(Entpev_iuser1id)
    
set_pev(Entpev_fuser1get_gametime() + 4.0)
    
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
   
    
entity_set_string(EntEV_SZ_classnameBDRIP_CLASSNAME)
    
engfunc(EngFunc_SetModelEntKNIFE_MODEL)
    
set_pev(Entpev_minsFloat:{-1.0, -1.0, -1.0})
    
set_pev(Entpev_maxsFloat:{1.01.01.0})
    
set_pev(Entpev_originStartOrigin)
    
set_pev(Entpev_anglesanglestrue)
    
set_pev(Entpev_gravity0.01)
    
set_pev(Entpev_solidSOLID_BBOX)
    
set_pev(Entpev_frame1.0)
    
set_pev(Entpev_framerate30.0)
    
set_pev(Entpev_sequence0)
   
    
velocity_by_aimid1100velocity )
    
set_pevEntpev_velocityvelocity )
    
set_pev(Entpev_vuser1velocity)
    
set_pev(Entpev_vuser2jarak_max)
    
shoot_ent_mode[id] = 0
    ent_sentuh
[id] = 1
    ent_sentuh_balik
[id] = 0
}
 
public 
fm_addtofullpack_post(eseuserhosthost_flagsplayerp_set)
{
    if(!
player)
        return 
FMRES_IGNORED
       
    
if(!is_user_connected(host) || !is_user_alive(user))
        return 
FMRES_IGNORED
       
    
if(!ze_is_user_zombie(user) || headshot_korban[user] != 1)
        return 
FMRES_IGNORED
       
    
if(host == user)
        return 
FMRES_IGNORED
   
    
new Float:PlayerOrigin[3], Float:anglesss[3]
    
pev(userpev_originPlayerOrigin)
   
    
engfunc(EngFunc_GetBonePositionuser8PlayerOriginanglesss)
                       
    
engfunc(EngFunc_SetOriginguillotine_korban[user], PlayerOrigin)
    
engfunc(EngFunc_SetOriginguillotine_korban[user], PlayerOrigin)
 
    return 
FMRES_HANDLED
}
 
public 
fw_Think(Ent)
{
    if(!
pev_valid(Ent))
        return
   
    static 
Float:pulang[3], Float:StartOriginz[3], pemilixFloat:brangkat[3], Float:jarak_max[3], Float:origin_asli[3], korban
    pemilix 
pev(Entpev_iuser1)
    
pev(Entpev_originStartOriginz)
    
korban pev(Entpev_iuser2)
   
    if(
headshot_korban[korban] == 1)
    {
        if(
get_gametime() - 0.2 pev(Entpev_fuser3))
        {
            
Damage_guillotine(Entkorban)
            
set_pev(Entpev_fuser3get_gametime())
        }
    }
   
    if(
ent_sentuh_balik[pemilix] == && shoot_ent_mode[pemilix] == 1)
    {
        
ent_sentuh_balik[pemilix] = 1
        pev
(pemilixpev_originorigin_asli)
        
origin_asli[2] += 7.5
    
}
   
    if(
ent_sentuh[pemilix] == 1)
    {
        
ent_sentuh[pemilix] = 0
        pev
(Entpev_vuser2jarak_max)
        
pev(Entpev_vuser1brangkat)
        
get_speed_vector(StartOriginzorigin_asli1100.0pulang)
                   
        if(
shoot_ent_mode[pemilix] == 1)
        {
            
set_pev(Entpev_velocitypulang)
        }
        else 
set_pev(Entpev_velocitybrangkat)
    }
   
    if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzjarak_max) <= 10.0)
    {
        
shoot_ent_mode[pemilix] = 1
        ent_sentuh
[pemilix] = 1
        set_pev
(Entpev_owner0)
    }
   
    if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzorigin_asli) <= 10.0)
    {
        if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
        else 
ancur(Ent)
    }
    else if(
headshot_korban[korban] == 1set_pev(Entpev_nextthinkget_gametime() + 0.2)
    else 
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
}
 
public 
fw_touch(EntId)
{
    
// If ent is valid
    
if(!pev_valid(Ent))
        return
    if(
pev(Entpev_movetype) == MOVETYPE_NONE)
        return
    static 
classnameptd[32]
    
pev(Idpev_classnameclassnameptd31)
    if (
equali(classnameptd"func_breakable")) ExecuteHamBHam_TakeDamageId0080.0DMG_GENERIC )
   
    
// Get it's origin
    
new Float:originF[3], pemilix
    pemilix 
pev(Entpev_iuser1)
    
pev(Entpev_originoriginF)
    
// Alive...
   
    
if(is_user_alive(Id) && ze_is_user_zombie(Id))
    {
        
Damage_guillotine(EntId)
        
set_pev(Entpev_ownerId)
        
ent_sentuh[pemilix] = 1
        create_blood
(originF)
        
create_blood(originF)
    }
   
    else if(
shoot_ent_mode[pemilix] == && Id == pemilix)
    {
        if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
        else 
ancur(Ent)
    }
   
    else if(
is_user_alive(Id) && !ze_is_user_zombie(Id))
    {
        
set_pev(Entpev_ownerId)
        
ent_sentuh[pemilix] = 1
    
}
   
    else
    {
        
set_pev(Entpev_owner0)
 
        if(
shoot_ent_mode[pemilix] == 0)
        {
            
shoot_ent_mode[pemilix] = 1
            engfunc
(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall1.0ATTN_STATIC0PITCH_NORM)
            
ent_sentuh[pemilix] = 1
        
}
        else 
ancur(Ent)
    }
}
 
public 
ancur(Ent)
{
    if(!
pev_valid(Ent))
        return
    static 
Float:origin2[3], pemilixFloat:origin3[3]
    
pemilix pev(Entpev_iuser1)
    
entity_get_vector(EntEV_VEC_originorigin2)
    
pev(Entpev_originorigin3)
   
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
    
write_byte(TE_BREAKMODEL)
    
engfunc(EngFunc_WriteCoordorigin2[0])
    
engfunc(EngFunc_WriteCoordorigin2[1])
    
engfunc(EngFunc_WriteCoordorigin2[2])
    
engfunc(EngFunc_WriteCoord25)
    
engfunc(EngFunc_WriteCoord25)
    
engfunc(EngFunc_WriteCoord25)
    
engfunc(EngFunc_WriteCoordrandom_num(-2525))
    
engfunc(EngFunc_WriteCoordrandom_num(-2525))
    
engfunc(EngFunc_WriteCoord5)
    
write_byte(5)
    
write_short(g_pecah)
    
write_byte(10)
    
write_byte(17)
    
write_byte(0x00)
    
message_end()
   
    
fake_smokes(origin3)
    
engfunc(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall21.0ATTN_STATIC0PITCH_NORM)
    
shoot_mode[pemilix] = 0
    remove_entity
(Ent)
   
    if(!
is_user_alive(pemilix) || !is_user_connected(pemilix) || get_user_weapon(pemilix) != CSW_BDRIPPER || !g_had_guillotine[pemilix])
        return
   
    
set_weapon_anim(pemilixANIM_LOST)
    
set_weapons_timeidle(pemilixCSW_BDRIPPER2.5)
    
set_player_nextattackx(pemilix2.5)
    
set_task(1.3"reload2"pemilix)
    
set_task(1.4"reload"pemilix)
}
 
public 
reload(id)
{
    if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
        return
   
    
set_weapon_anim(idANIM_DRAW)
}
 
public 
reload2(id)
{
    if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
        return
   
    
set_weapon_anim(idANIM_IDLE_SHOOT2)
}
 
public 
balik(Ent)
{
    if(!
pev_valid(Ent))
        return
    static 
id
    id 
pev(Entpev_iuser1)
    
set_weapon_anim(idANIM_CATCH)
    
emit_sound(idCHAN_WEAPONweapon_sound[0], 1.0ATTN_NORM0PITCH_NORM)
    
set_weapons_timeidle(idCSW_BDRIPPER1.0)
    
set_player_nextattackx(id1.0)
    
shoot_mode[id] = 0
    g_guillotine_ammo
[id]++
    
update_ammo(id)
   
    
remove_entity(Ent)
}
 
public 
Damage_guillotine(EntId)
{
    static 
OwnerOwner pev(Entpev_iuser1)
    static 
Attacker;
    if(!
is_user_alive(Owner))
    {
        
Attacker 0
        
return
    } else 
Attacker Owner
 
    
new bool:bIsHeadShot// never make that one static
    
new Float:flAdjustedDamagebool:death
       
    
switch( Get_MissileWeaponHitGroup(Ent) )
    {
        case 
HIT_GENERICflAdjustedDamage DAMAGE 1.0
        
case HIT_STOMACHflAdjustedDamage DAMAGE 1.2
        
case HIT_LEFTLEGHIT_RIGHTLEGflAdjustedDamage DAMAGE 1.0
        
case HIT_LEFTARMHIT_RIGHTARMflAdjustedDamage DAMAGE 1.0
        
case HIT_HEADHIT_CHEST:
        {
            
flAdjustedDamage DAMAGE 3.0
            bIsHeadShot 
true
            
if(headshot_mode[Owner] == 0set_task(2.0"balik_bro"Ent+1858941 )
            
headshot_mode[Owner] = 1
            headshot_korban
[Id] = 1
            guillotine_korban
[Id] = Ent
            set_pev
(Entpev_iuser2Id)
            
set_pev(Entpev_sequence1)
            
set_pev(Entpev_solidSOLID_NOT)
            
set_pev(Entpev_fuser30.0)
        }
    }
    if(
pev(Idpev_health) <= flAdjustedDamagedeath true
   
    
if(is_user_alive(Id))
    {
        if( 
bIsHeadShot && death)
        {
            if(
task_existsEnt+1858941 )) remove_taskEnt 1858941 )
            
set_pev(Entpev_sequence0)
            
headshot_korban[pev(Entpev_iuser2)] = 0
            headshot_mode
[Owner] = 0
            shoot_ent_mode
[Owner] = 1
            ent_sentuh
[Owner] = 1
            ent_sentuh_balik
[Owner] = 0
            set_pev
(Entpev_solidSOLID_BBOX)
            
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
   
            
kill(AttackerId1)
           
            
death false          
        
}
        if(
death)
        {
            
kill(AttackerId0)
           
            
death false          
        
}
        else 
ExecuteHamB(Ham_TakeDamageIdEntAttackerflAdjustedDamageDMG_BULLET)
    }
}
 
public 
balik_bro(Ent)
{
    
Ent -= 1858941
   
    
if(!pev_valid(Ent))
        return
   
    static 
pemilixpemilix pev(Entpev_iuser1)
    
set_pev(Entpev_sequence0)
    
headshot_korban[pev(Entpev_iuser2)] = 0
    headshot_mode
[pemilix] = 0
    shoot_ent_mode
[pemilix] = 1
    ent_sentuh
[pemilix] = 1
    ent_sentuh_balik
[pemilix] = 0
    set_pev
(Entpev_solidSOLID_BBOX)
    
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
}
 
public 
fw_SetModel(entitymodel[])
{
    if(!
pev_valid(entity))
        return 
FMRES_IGNORED
   
    
static Classname[64]
    
pev(entitypev_classnameClassnamesizeof(Classname))
   
    if(!
equal(Classname"weaponbox"))
        return 
FMRES_IGNORED
   
    
static id
    id 
pev(entitypev_owner)
   
    if(
equal(modelold_w_model))
    {
        static 
weapon
        weapon 
fm_get_user_weapon_entity(entityCSW_BDRIPPER)
       
        if(!
pev_valid(weapon))
            return 
FMRES_IGNORED
       
        
if(g_had_guillotine[id])
        {
            
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
            
set_pev(weaponpev_iuser4g_guillotine_ammo[id])
            
engfunc(EngFunc_SetModelentityw_model)
           
            
g_had_guillotine[id] = 0
            g_guillotine_ammo
[id] = 0
           
            
return FMRES_SUPERCEDE
        
}
    }
 
    return 
FMRES_IGNORED;
}
 
public 
fw_AddToPlayer_Post(entid)
{
    if(
pev(entpev_impulse) == WEAPON_SECRETCODE)
    {
        
g_had_guillotine[id] = 1
        g_guillotine_ammo
[id] = pev(entpev_iuser4)
       
        
set_pev(entpev_impulse0)
    }          
   
    
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("WeaponList"), _id)
    
write_string((g_had_guillotine[id] == "weapon_guillotine" "weapon_mac10"))
    
write_byte(6)
    
write_byte(100)
    
write_byte(-1)
    
write_byte(-1)
    
write_byte(0)
    
write_byte(13)
    
write_byte(CSW_BDRIPPER)
    
write_byte(0)
    
message_end()
}
 
public 
update_ammo(id)
{
    if(!
is_user_alive(id))
        return
 
    static 
weapon_entweapon_ent fm_get_user_weapon_entity(idCSW_BDRIPPER)
    if(!
pev_valid(weapon_ent)) return
   
    
cs_set_weapon_ammo(weapon_entg_guillotine_ammo[id])  
    
cs_set_user_bpammo(idCSW_BDRIPPERg_guillotine_ammo[id])
   
    
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEget_user_msgid("CurWeapon"), {000}, id)
    
write_byte(1)
    
write_byte(CSW_BDRIPPER)
    
write_byte(-1)
    
message_end()
   
    
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("AmmoX"), _id)
    
write_byte(1)
    
write_byte(g_guillotine_ammo[id])
    
message_end()
}
 
public 
fw_traceline(Float:v1[3],Float:v2[3],noMonsters,id,ptr)
{
    if(!
is_user_alive(id))
        return 
HAM_IGNORED 
    
if(get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
        return 
HAM_IGNORED
 
    
// get crosshair aim
    
static Float:aim[3];
    
get_aim(id,v1,aim);
   
    
// do another trace to this spot
    
new trace create_tr2();
    
engfunc(EngFunc_TraceLine,v1,aim,noMonsters,id,trace);
   
    
// copy ints
    
set_tr2(ptr,TR_AllSolid,get_tr2(trace,TR_AllSolid));
    
set_tr2(ptr,TR_StartSolid,get_tr2(trace,TR_StartSolid));
    
set_tr2(ptr,TR_InOpen,get_tr2(trace,TR_InOpen));
    
set_tr2(ptr,TR_InWater,get_tr2(trace,TR_InWater));
    
set_tr2(ptr,TR_pHit,get_tr2(trace,TR_pHit));
    
set_tr2(ptr,TR_iHitgroup,get_tr2(trace,TR_iHitgroup));
 
    
// copy floats
    
get_tr2(trace,TR_flFraction,aim[0]);
    
set_tr2(ptr,TR_flFraction,aim[0]);
    
get_tr2(trace,TR_flPlaneDist,aim[0]);
    
set_tr2(ptr,TR_flPlaneDist,aim[0]);
   
    
// copy vecs
    
get_tr2(trace,TR_vecEndPos,aim);
    
set_tr2(ptr,TR_vecEndPos,aim);
    
get_tr2(trace,TR_vecPlaneNormal,aim);
    
set_tr2(ptr,TR_vecPlaneNormal,aim);
 
    
// get rid of new trace
    
free_tr2(trace);
 
    return 
FMRES_IGNORED;
}
 
get_aim(id,Float:source[3],Float:ret[3])
{
    static 
Float:vAngle[3], Float:pAngle[3], Float:dir[3], Float:temp[3];
 
    
// get aiming direction from forward global based on view angle and punch angle
    
pev(id,pev_v_angle,vAngle);
    
pev(id,pev_punchangle,pAngle);
    
xs_vec_add(vAngle,pAngle,temp);
    
engfunc(EngFunc_MakeVectors,temp);
    
global_get(glb_v_forward,dir);
   
    
/* vecEnd = vecSrc + vecDir * flDistance; */
    
xs_vec_mul_scalar(dir,8192.0,temp);
    
xs_vec_add(source,temp,ret);
}
 
public 
fake_smokes(Float:Origin[3])
{
    static 
TE_FLAG
   
    TE_FLAG 
|= TE_EXPLFLAG_NODLIGHTS
    TE_FLAG 
|= TE_EXPLFLAG_NOSOUND
    TE_FLAG 
|= TE_EXPLFLAG_NOPARTICLES
   
    engfunc
(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYOrigin0)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
write_short(g_smokepuff_id)
    
write_byte(6)
    
write_byte(25)
    
write_byte(TE_FLAG)
    
message_end()
}
 
stock set_weapon_anim(idanim)
{
    if(!
is_user_alive(id))
        return
   
    
set_pev(idpev_weaponanimanim)
   
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
    
write_byte(anim)
    
write_byte(pev(idpev_body))
    
message_end()
}
 
stock kill(kvheadshot)
{
    
cs_set_user_money(kcs_get_user_money(k) + 500)
   
    
set_user_frags(kget_user_frags(k) + 1)
   
    
set_msg_block(g_MsgDeathMsg,BLOCK_ONCE)
    
set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
    
user_kill(v,1)
   
    new 
kteam get_user_team(k);
    new 
vteam get_user_team(v);
   
    new 
kfrags get_user_frags(k);
    new 
kdeaths get_user_deaths(k);
   
    new 
vfrags get_user_frags(v);
    new 
vdeaths get_user_deaths(v);
   
    
emessage_begin(MSG_ALLgmsgScoreInfo);
    
ewrite_byte(k);
    
ewrite_short(kfrags);
    
ewrite_short(kdeaths);
    
ewrite_short(0);
    
ewrite_short(kteam);
    
emessage_end();
   
    
emessage_begin(MSG_ALLgmsgScoreInfo);
    
ewrite_byte(v);
    
ewrite_short(vfrags);
    
ewrite_short(vdeaths);
    
ewrite_short(0);
    
ewrite_short(vteam);
    
emessage_end();
   
    
emessage_begin(MSG_BROADCASTg_MsgDeathMsg)
    
ewrite_byte(k)
    
ewrite_byte(v)
    
ewrite_byte(headshot)
    
ewrite_string("Blood Dripper")
    
emessage_end()
}
 
 
stock create_blood(const Float:origin[3])
{
    
// Show some blood :)
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BLOODSPRITE)
    
engfunc(EngFunc_WriteCoordorigin[0])
    
engfunc(EngFunc_WriteCoordorigin[1])
    
engfunc(EngFunc_WriteCoordorigin[2])
    
write_short(m_iBlood[1])
    
write_short(m_iBlood[0])
    
write_byte(75)
    
write_byte(8)
    
message_end()
}
 
stock drop_weapons(iddropwhat)
{
    static 
weapons[32], numiweaponid
    num 
0
    get_user_weapons
(idweaponsnum)
     
    for (
0numi++)
    {
        
weaponid weapons[i]
         
        if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
        {
            static 
wname[32]
            
get_weaponname(weaponidwnamesizeof wname 1)
            
engclient_cmd(id"drop"wname)
        }
    }
}
 
stock Get_MissileWeaponHitGroupiEnt )
{
    new 
Float:flStart], Float:flEnd];
   
    
peviEntpev_originflStart );
    
peviEntpev_velocityflEnd );
    
xs_vec_addflStartflEndflEnd );
   
    new 
ptr create_tr2();
    
engfuncEngFunc_TraceLineflStartflEnd0iEntptr );
   
    new 
iHitGroupOwnernOheadhead
    Owner 
pev(iEntpev_iuser1)
    
nOhead get_tr2ptrTR_iHitgroup )
    
head set_tr2ptrTR_iHitgroupHIT_HEAD )
   
    
iHitGroup headshot_mode[Owner] ? head nOhead
   
    free_tr2
ptr );
   
    return 
iHitGroup;
}
 
stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3])
{
    
new_velocity[0] = origin2[0] - origin1[0]
    
new_velocity[1] = origin2[1] - origin1[1]
    
new_velocity[2] = origin2[2] - origin1[2]
    static 
Float:numnum floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    
new_velocity[0] *= num
    new_velocity
[1] *= num
    new_velocity
[2] *= num
   
    
return 1;
}
 
stock get_position(id,Float:forwFloat:rightFloat:upFloat:vStart[])
{
    static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
   
    
pev(idpev_originvOrigin)
    
pev(idpev_view_ofsvUp//for player
    
xs_vec_add(vOriginvUpvOrigin)
    
pev(idpev_v_anglevAngle// if normal entity ,use pev_angles
   
    
angle_vector(vAngleANGLEVECTOR_FORWARDvForward//or use EngFunc_AngleVectors
    
angle_vector(vAngleANGLEVECTOR_RIGHTvRight)
    
angle_vector(vAngleANGLEVECTOR_UPvUp)
   
    
vStart[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
    vStart
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
    vStart
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}
 
stock set_weapons_timeidle(idWeaponId ,Float:TimeIdle)
{
    if(!
is_user_alive(id))
        return
       
    static 
entwpnentwpn fm_get_user_weapon_entity(idWeaponId)
    if(!
pev_valid(entwpn))
        return
       
    
set_pdata_float(entwpn48TimeIdle 0.2OFFSET_LINUX_WEAPONS)
}
 
stock set_player_nextattackx(idFloat:nexttime)
{
    if(!
is_user_alive(id))
        return
       
    
set_pdata_float(id83nexttime5)


Last edited by J@y; 12-20-2022 at 17:24.
J@y is offline
J@y
Member
Join Date: Feb 2022
Old 12-21-2022 , 17:32   Re: Gilloutine Help
Reply With Quote #2

Been around 24 hours, and i still haven't recieved a reply or anyone willing to help.
J@y is offline
sPed
Member
Join Date: May 2017
Location: Algeria
Old 12-23-2022 , 10:39   Re: Gilloutine Help
Reply With Quote #3

i got this plugin from another forum, conver this plugin from zp > ze and and don't forget to change models for other knives
PHP Code:
new bicakmodel[][][] =
{
    {
CSW_KNIFE,
    
"models/tayo_knife/v_nata.mdl",
    
"models/tayo_knife/v_shadowaxe.mdl",
    
"models/tayo_knife/v_warhammer.mdl",
    
"models/tayo_knife/v_katanahf.mdl",
    
"models/tayo_knife/v_dualkatana_xmas.mdl"
    
}

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <xs>
#include <zombieplague>

#define PLUGIN "Guillotine"
#define VERSION "1.3"
#define AUTHOR "m4m3ts"

#define CSW_BDRIPPER CSW_KNIFE
#define weapon_guillotine "weapon_knife"
#define old_event "events/mac10.sc"
#define old_w_model "models/w_mac10.mdl"
#define WEAPON_SECRETCODE 1329419

const pev_catchedspeed pev_iuser4
#define DEFAULT_AMMO 10
#define RELOAD_TIME 0.435
#define DAMAGE 30
#define BDRIP_CLASSNAME "Blood Dripper"
#define WEAPON_ANIMEXT "knife"

#define Get_Ent_Data(%1,%2) get_pdata_int(%1,%2,4)
#define Set_Ent_Data(%1,%2,%3) set_pdata_int(%1,%2,%3,4)

const PDATA_SAFE 2
const OFFSET_LINUX_WEAPONS 4
const OFFSET_WEAPONOWNER 41
const m_flNextAttack 83
const m_szAnimExtention 492

new gorunum[33]

new 
bicakmodel[][][] =
{
    {
CSW_KNIFE,
    
"models/tayo_knife/v_nata.mdl",
    
"models/tayo_knife/v_shadowaxe.mdl",
    
"models/tayo_knife/v_warhammer.mdl",
    
"models/tayo_knife/v_katanahf.mdl",
    
"models/tayo_knife/v_dualkatana_xmas.mdl"
    
}
}


new const 
v_model[] = "models/tayo_guillotine/v_guillotine2.mdl"
new const p_model[] = "models/p_guillotine.mdl"
new const w_model[] = "models/w_guillotine.mdl"
new const KNIFE_MODEL[] = "models/guillotine_projectile.mdl"
new const PECAH_MODEL[] = "models/gibs_guilotine.mdl"
new const hit_wall[] = "weapons/janus9_stone1.wav"
new const hit_wall2[] = "weapons/janus9_stone2.wav"
new const weapon_sound[6][] = 
{
"weapons/guillotine_catch2.wav",
"weapons/guillotine_draw.wav",
"weapons/guillotine_draw_empty.wav",
"weapons/guillotine_explode.wav",
"weapons/guillotine_red.wav",
"weapons/guillotine-1.wav"
}


new const 
WeaponResource[3][] = 
{
"sprites/weapon_guillotine.txt",
"sprites/640hud120.spr",
"sprites/guillotine_lost.spr"
}

enum
{
ANIM_IDLE 0,
ANIM_IDLE_EMPTY,
ANIM_SHOOT,
ANIM_DRAW,
ANIM_DRAW_EMPTY,
ANIM_IDLE_SHOOT,
ANIM_IDLE_SHOOT2,
ANIM_CATCH,
ANIM_LOST
}

new 
g_MsgDeathMsgg_endround

new g_had_guillotine[33], g_guillotine_ammo[33], shoot_mode[33], shoot_ent_mode[33], g_pecahheadshot_mode[33], ent_sentuh[33], ent_sentuh_balik[33]
new 
g_old_weapon[33], g_smokepuff_idm_iBlood[2], guillotine_korban[33], headshot_korban[33], gmsgScoreInfo

const PRIMARY_WEAPONS_BIT_SUM 
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
//new TargetOrigin[3] 
new g_gui
public plugin_init()
{

   
//Knife menu
   
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
   
register_clcmd("say /bicak","knifemenu")
   
register_clcmd("say /knife","knifemenu")    
   
register_clcmd("say_team /knife","knifemenu")
   
register_clcmd("say_team /bicak","knifemenu")

   
register_plugin(PLUGINVERSIONAUTHOR)
   
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack_Sg")
   
register_forward(FM_CmdStart"fw_CmdStart")
   
register_forward(FM_SetModel"fw_SetModel")
   
register_think(BDRIP_CLASSNAME"fw_Think")

   
/*register_clcmd("say /gui","item_selected")
   register_clcmd("say .gui","item_selected")
   register_clcmd("say_team /gui","item_selected")
   register_clcmd("say_team .gui","item_selected")*/

   
register_event("HLTV""EventHLTV""a""1=0""2=0")
   
register_touch(BDRIP_CLASSNAME"*""fw_touch")
   
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
   
register_forward(FM_TraceLine"fw_traceline"1)
   
register_forward(FM_AddToFullPack"fm_addtofullpack_post"1)
   
RegisterHam(Ham_Spawn"player""Player_Spawn"1)
   
RegisterHam(Ham_Weapon_WeaponIdleweapon_guillotine"fw_guillotineidleanim"1)
   
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
   
RegisterHam(Ham_Item_AddToPlayerweapon_guillotine"fw_AddToPlayer_Post"1)
   
register_event("CurWeapon""Event_CurWeapon""be""1=1")
   
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
   
register_clcmd("weapon_guillotine""hook_weapon")
   
g_MsgDeathMsg get_user_msgid("DeathMsg")
   
gmsgScoreInfo get_user_msgid("ScoreInfo"

   
register_logevent("logevent_round_end"2"1=Round_End")
   
g_endround 1
}


public 
plugin_precache()
{
   
precache_model(bicakmodel[0][1])
   
precache_model(bicakmodel[0][2])
   
precache_model(bicakmodel[0][3])
   
precache_model(bicakmodel[0][4])
   
precache_model(bicakmodel[0][5])
   
precache_model(v_model)
   
precache_model(p_model)
   
precache_model(w_model)
   
precache_model(KNIFE_MODEL)
   
g_pecah precache_model(PECAH_MODEL)
   
precache_sound(hit_wall)
   
precache_sound(hit_wall2)

   for(new 
0sizeof(weapon_sound); i++) 
   
precache_sound(weapon_sound[i])

   for(new 
1sizeof(WeaponResource); i++)
   
precache_model(WeaponResource[i])

   
g_smokepuff_id engfunc(EngFunc_PrecacheModelWeaponResource[2])
   
m_iBlood[0] = precache_model("sprites/blood.spr")
   
m_iBlood[1] = precache_model("sprites/bloodspray.spr")   
}

public 
zp_user_infected_post(id)
{
   
remove_guillotine(id)
   
g_gui 0
}

public 
EventHLTV()
{
g_endround 0
g_gui 
1
}

public 
client_connect(id)
{
    
gorunum[id] = 1
}

public 
knifemenu(id)
{
  if(!
zp_get_user_zombie(id))
  {
    new 
menuz;
    static 
amenu[512];
    
formatex(amenu,charsmax(amenu),"\r[ZE] \yKnife Menu")
    
menuz menu_create(amenu,"knifemenu_devam")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wNata")
    
menu_additem(menuz,amenu,"1")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wShadowAxe")
    
menu_additem(menuz,amenu,"2")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wWarhammer")
    
menu_additem(menuz,amenu,"3")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wKatana")
    
menu_additem(menuz,amenu,"4")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wDualKatana")
    
menu_additem(menuz,amenu,"5")

    if(
is_user_admin(id))
    {
        
formatex(amenu,charsmax(amenu),"| \r- \wGuillatione \y[VIP]")
    }
    else
    {
        
formatex(amenu,charsmax(amenu),"| \r- \dGuillatione \r[VIP]")
    }        
    
menu_additem(menuz,amenu,"6")
    
    
menu_setprop(menuz,MPROP_EXIT,MEXIT_ALL)
    
menu_display(id,menuz,0)

  }
  return 
PLUGIN_HANDLED
}

public 
knifemenu_devam(id,menu,item)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    new 
access,callback,data[6],iname[64]
    
    
menu_item_getinfo(menu,item,access,data,5,iname,63,callback)
    
    new 
key str_to_num(data)
    
    if(
key == 1)
    {
        
gorunum[id] = 1
                remove_guillotine
(id)
    }
    else if(
key == 2)
    {
        
gorunum[id] = 2
                remove_guillotine
(id)
    }
    else if(
key == 3)
    {
        
gorunum[id] = 3
                remove_guillotine
(id)
    }
    else if(
key == 4)
    {
        
gorunum[id] = 4
                remove_guillotine
(id)
    }
    else if(
key == 5)
    {
        
gorunum[id] = 5
                remove_guillotine
(id)
    }
    else if(
key == 6)
    {
        if(
is_user_admin(id))
        {
                        
get_blood(id)
        }
        else
        {
            
renkli_yazi(id"!g[ZE]!t Yetkin Yok. !g|| !tOnly For VIPS.")
            
knifemenu(id)
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
logevent_round_end() g_endround 1

public Player_Spawn(id)
{
get_blood(id)

if(
g_gui)
{
if(
get_user_flags(id) & ADMIN_LEVEL_E)get_blood(id)
}   
}

public 
fw_PlayerKilled(id)
{
remove_guillotine(id)
}

public 
hook_weapon(id)
{
engclient_cmd(idweapon_guillotine)
return
}

new 
g_itemid
public item_selected(iditemid)
{   
if (!
is_user_alive(id)){
   
client_print(idprint_chat"")
   return
}
if (
zp_get_user_zombie(id)){
   
client_print(idprint_chat"")
   return
}
if(
itemid==g_itemid){
   new 
para is_user_admin(id)
   
   if (
para >= 0){
      
is_user_admin(id)
      
get_blood(id)
      
client_print(idprint_chat"")
   }
   else{
      
client_print(idprint_chat"[ZE]: You have no access")
   }
}
}

public 
get_blood(id)
{
   if(!
is_user_admin(id))
      return
   
drop_weapons(id0)
   
g_had_guillotine[id] = 1
   g_guillotine_ammo
[id] = DEFAULT_AMMO
   
   give_item
(idweapon_guillotine)
   
update_ammo(id)
   
   
//static weapon_ent; weapon_ent = fm_find_ent_by_owner(-1, weapon_guillotine, id)
   //if(pev_valid(weapon_ent)) cs_set_weapon_ammo(weapon_ent, 1)
}

public 
remove_guillotine(id)
{
   
g_had_guillotine[id] = 0
   
static EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   
ancur(Ent)
}

public 
refill_guillotine(id)
{   
   if(
g_had_guillotine[id]) g_guillotine_ammo[id] = 15
   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id]) update_ammo(id)
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return 
FMRES_IGNORED   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
      
set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001
   
   return 
FMRES_HANDLED
}

public 
message_DeathMsg(msg_idmsg_destid)
{
   static 
szTruncatedWeapon[33], iAttackeriVictim
   
   get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
   
   
iAttacker get_msg_arg_int(1)
   
iVictim get_msg_arg_int(2)
   
   if(!
is_user_connected(iAttacker) || iAttacker == iVictim) return PLUGIN_CONTINUE
   
   
if(get_user_weapon(iAttacker) == CSW_BDRIPPER)
   {
      if(
g_had_guillotine[iAttacker])
         
set_msg_arg_string(4"knife")
   }
   
   return 
PLUGIN_CONTINUE
}

public 
fw_TraceAttack_Sg(VictimAttackerFloat:DamageFloat:Direction[3], TraceHandleDamageBitptr)
{         
   return 
HAM_IGNORED
}

public 
Event_CurWeapon(id)
{
   
   if(!
is_user_alive(id))
      return 
   
   if(
get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
   {
      
set_pev(idpev_viewmodel2v_model)
      
set_pev(idpev_weaponmodel2p_model)
      
set_pdata_string(idm_szAnimExtention 4WEAPON_ANIMEXT, -20)
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] >= 1set_weapon_anim(idANIM_DRAW)
      
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] == && headshot_mode[id] == 0set_weapon_anim(idANIM_DRAW_EMPTY)
      else if(
g_old_weapon[id] != CSW_BDRIPPER && shoot_mode[id] == 1set_weapon_anim(idANIM_DRAW_EMPTY)
         
      
update_ammo(id)
   }
   
   
g_old_weapon[id] = get_user_weapon(id)
}

public 
fw_guillotineidleanim(Weapon)
{
   new 
id get_pdata_cbase(Weapon414)
   
   if(!
is_user_alive(id) || zp_get_user_zombie(id) || !g_had_guillotine[id] || get_user_weapon(id) != CSW_BDRIPPER)
      return 
HAM_IGNORED;
   
   if(
shoot_mode[id] == && g_guillotine_ammo[id] >= 1
      return 
HAM_SUPERCEDE;
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT2)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
g_guillotine_ammo[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_EMPTY)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   return 
HAM_IGNORED;
}

public 
fw_CmdStart(iduc_handleseed)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return
   if(
get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return
   
   static 
entent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   
//if(!pev_valid(ent))
   //   return
   
if(get_pdata_float(ent46OFFSET_LINUX_WEAPONS) > 0.0 || get_pdata_float(ent47OFFSET_LINUX_WEAPONS) > 0.0
      return
   
   static 
CurButton
   CurButton 
get_uc(uc_handleUC_Buttons)
   
   if(
CurButton IN_ATTACK)
   {
      
CurButton &= ~IN_ATTACK
      set_uc
(uc_handleUC_ButtonsCurButton)
      
      
//if(g_guillotine_ammo[id] == 0)
      //   return
      
if(shoot_mode[id] == && get_pdata_float(id835) <= 0.0)
      {
         
//g_guillotine_ammo[id]--
         //update_ammo(id)
         
shoot_mode[id] = 1                        
         set_task
(0.2"FireKnife"id)
         
set_weapon_anim(idANIM_SHOOT)
         
emit_sound(idCHAN_WEAPONweapon_sound[5], 1.0ATTN_NORM0PITCH_NORM)
         
set_weapons_timeidle(idCSW_BDRIPPER0.7)
         
set_player_nextattackx(id0.7)
      }
   }
}

public 
FireKnife(id)
{
   static 
Float:StartOrigin[3], Float:velocity[3], Float:angles[3], Float:anglestrue[3], Float:jarak_max[3]
   static 
EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   if(!
pev_valid(Ent)) return
   
get_position(id10.00.0, -2.0StartOrigin)     
   
get_position(id900.00.00.0jarak_max)
   
//static ent; ent = fm_get_user_weapon_entity(id, CSW_BDRIPPER)
   
pev(id,pev_v_angle,angles)
   
   
anglestrue[0] = 360.0 angles[0]
   
anglestrue[1] = angles[1]
   
anglestrue[2] = angles[2]
   
   
// Set info for ent
   
set_pev(Entpev_movetypeMOVETYPE_FLY)
   
set_pev(Entpev_ownerid)
   
set_pev(Entpev_iuser1id)
   
set_pev(Entpev_fuser1get_gametime() + 4.0)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
   
   
entity_set_string(EntEV_SZ_classnameBDRIP_CLASSNAME)
   
engfunc(EngFunc_SetModelEntKNIFE_MODEL)
   
set_pev(Entpev_minsFloat:{-1.0, -1.0, -1.0})
   
set_pev(Entpev_maxsFloat:{1.01.01.0})
   
set_pev(Entpev_originStartOrigin)
   
set_pev(Entpev_anglesanglestrue)
   
set_pev(Entpev_gravity0.01)
   
set_pev(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_frame1.0)
   
set_pev(Entpev_framerate1.0)
   
set_pev(Entpev_sequence0)
   
//ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
   
set_pev(Entpev_catchedspeed1100)
   
velocity_by_aimid1400velocity )
   
set_pevEntpev_velocityvelocity )
   
set_pev(Entpev_vuser1velocity)
   
set_pev(Entpev_vuser2jarak_max)
   
shoot_ent_mode[id] = 0
   set_pev
(Entpev_iuser40)
   
ent_sentuh[id] = 1
   ent_sentuh_balik
[id] = 0
}

public 
fm_addtofullpack_post(eseuserhosthost_flagsplayerp_set)
{
   if(!
player)
      return 
FMRES_IGNORED
   
   
if(!is_user_connected(host) || !is_user_alive(user))
      return 
FMRES_IGNORED
   
   
if(!zp_get_user_zombie(user) || headshot_korban[user] != 1)
      return 
FMRES_IGNORED
   
   
if(host == user)
      return 
FMRES_IGNORED
   
   
new Float:PlayerOrigin[3]//, Float:anglesss[3]
   
pev(userpev_originPlayerOrigin)
   
   
PlayerOrigin[2] += 25.0
   
   
//engfunc(EngFunc_GetBonePosition, user, 8, PlayerOrigin, anglesss)
   
   
engfunc(EngFunc_SetOriginguillotine_korban[user], PlayerOrigin)
   
   return 
FMRES_HANDLED
}

public 
fw_Think(Ent)
{
   if(!
pev_valid(Ent)) 
      return
   
   
//new id; id = pev(Ent, pev_owner)
   
static Float:pulang[3], Float:StartOriginz[3], pemilixFloat:brangkat[3], Float:jarak_max[3], Float:origin_asli[3], korban
   pemilix 
pev(Entpev_iuser1)
   
pev(Entpev_originStartOriginz)
   
korban pev(Entpev_iuser2)
   
   if(
headshot_korban[korban] == 1)
   {
      
action_thanatos(Entkorbanpemilix)
      if(
get_gametime() - 0.15 pev(Entpev_fuser3))
      {                         
         
Damage_guillotine(Entkorban)     
      }
   }
   
   if(
ent_sentuh_balik[pemilix] == && shoot_ent_mode[pemilix] == 1)
   {
      
ent_sentuh_balik[pemilix] = 1
      pev
(pemilixpev_originorigin_asli)
      
origin_asli[2] += 0.1
   
}
   
   if(
ent_sentuh[pemilix] == 1)
   {
      
ent_sentuh[pemilix] = 0
      pev
(Entpev_vuser2jarak_max)
      
pev(Entpev_vuser1brangkat)               
      
get_speed_vector(StartOriginzorigin_asli1400.0pulang)
      
      if(
shoot_ent_mode[pemilix] == 1
      {
         
set_pev(Entpev_velocitypulang)
      }            
      else 
set_pev(Entpev_velocitybrangkat)
      
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzjarak_max) <= 40.0)
   {
      
shoot_ent_mode[pemilix] = 1
      ent_sentuh
[pemilix] = 1
      set_pev
(Entpev_owner0)
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzorigin_asli) <= 40.0)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   else if(
headshot_korban[korban] == 1set_pev(Entpev_nextthinkget_gametime() + 0.2)
      else 
set_pev(Entpev_nextthinkhalflife_time() + 0.001)
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3])
{
   
new_velocity[0] = origin2[0] - origin1[0]
   
new_velocity[1] = origin2[1] - origin1[1]
   
new_velocity[2] = origin2[2] - origin1[2]
   static 
Float:numnum floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
   
new_velocity[0] *= num
   new_velocity
[1] *= num
   new_velocity
[2] *= num
   
   
return 1;
}


stock hook_ent(victimattackerFloat:speed)
{
   if(!
pev_valid(victim) || !pev_valid(attacker))
      return
   
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3], Float:VicOrigin[3]
   
   
pev(victimpev_originEntOrigin)
   
pev(attackerpev_originVicOrigin)
   
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   if (
distance_f 60.0)
   {
      new 
Float:fl_Time distance_f speed
      
      fl_Velocity
[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
      fl_Velocity
[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
      fl_Velocity
[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
      
} else {
      
fl_Velocity[0] = 0.0
      fl_Velocity
[1] = 0.0
      fl_Velocity
[2] = 0.0
   
}
   
   
entity_set_vector(victimEV_VEC_velocityfl_Velocity)
}

stock hook_ent2(entFloat:VicOrigin[3], Float:speedtype)
{
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3]
   static 
Float:EntVelocity[3]
   
   
pev(entpev_velocityEntVelocity)
   
pev(entpev_originEntOrigin)
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   static 
Float:fl_Timefl_Time distance_f speed
   
   
if(type == 1)
   {
      
fl_Velocity[0] = ((VicOrigin[0] - EntOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((VicOrigin[1] - EntOrigin[1]) / fl_Time)
      
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time      
      
} else if(type == 2) {
      
fl_Velocity[0] = ((EntOrigin[0] - VicOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((EntOrigin[1] - VicOrigin[1]) / fl_Time
      
fl_Velocity[2] = (EntOrigin[2] - VicOrigin[2]) / fl_Time
   
}
   
   
xs_vec_add(EntVelocityfl_Velocityfl_Velocity)
   
set_pev(entpev_velocityfl_Velocity)
}

public 
fw_touch(EntId)
{
   
// If ent is valid
   
if(!pev_valid(Ent))
      return
   if(
pev(Entpev_movetype) == MOVETYPE_NONE)
      return
   
   static 
classnameptd[32]
   
pev(Idpev_classnameclassnameptd31)
   if (
equali(classnameptd"func_breakable")) ExecuteHamBHam_TakeDamageId0080.0DMG_GENERIC )
   
//static korban
   //korban = pev(Ent, pev_iuser2)
   
   // Get it's origin
   
new Float:originF[3], pemilix 
   
//static id2
   //id2 = pev(Ent, pev_owner)
   
pemilix pev(Entpev_iuser1)
   
pev(Entpev_originoriginF)
   
// Alive...
   //new id = read_data(2)
   
if(is_user_alive(Id) && zp_get_user_zombie(Id))
   {
      
fakedamage(Id"Guillotine"1.0256)
      
Damage_guillotine(EntId)  
      
geri_tepme(pemilixId)      
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1                  
      create_blood
(originF)
      
//create_blood(originF)
   
}
   
   else if(
shoot_ent_mode[pemilix] == && Id == pemilix)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   
   else if(
is_user_alive(Id) && !zp_get_user_zombie(Id))
   {
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1
   
}
   
   else
   {
      
set_pev(Entpev_owner0)
      
      if(
shoot_ent_mode[pemilix] == 0)
      {
         
shoot_ent_mode[pemilix] = 1
         engfunc
(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall1.0ATTN_STATIC0PITCH_NORM)
         
ent_sentuh[pemilix] = 1
      
}
      else 
ancur(Ent)
   }
   
}

public 
ancur(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
Float:origin2[3], pemilixFloat:origin3[3]
   
pemilix pev(Entpev_iuser1)
   
entity_get_vector(EntEV_VEC_originorigin2)
   
pev(Entpev_originorigin3)
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
//fake_smokes(origin3)
   
engfunc(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall21.0ATTN_STATIC0PITCH_NORM)
   
shoot_mode[pemilix] = 0
   remove_entity
(Ent)
   
   if(!
is_user_alive(pemilix) || !is_user_connected(pemilix) || get_user_weapon(pemilix) != CSW_BDRIPPER || !g_had_guillotine[pemilix])
      return
   
   
set_weapon_anim(pemilixANIM_LOST)
   
set_weapons_timeidle(pemilixCSW_BDRIPPER2.5)
   
set_player_nextattackx(pemilix2.5)
   
set_task(1.3"reload2"pemilix)
   
set_task(1.4"reload"pemilix)
}

public 
geri_tepme2(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)
}

public 
action_thanatos(Entvictimid)
{         
   if(!
pev_valid(Ent))   
      return
   
   if(
headshot_mode[id] == 1)
   {
      
      
//geri_tepme2(id, victim)
      
      
set_task(0.01"action_thanatos"Ent)
   }
}

public 
reload(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_DRAW)
}

public 
reload2(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_IDLE_SHOOT2)
}

public 
balik(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
id
   id 
pev(Entpev_iuser1)
   
   
set_weapons_timeidle(idCSW_BDRIPPER1.0)
   
set_player_nextattackx(id1.0)
   
shoot_mode[id] = 0
   g_guillotine_ammo
[id]++
   
update_ammo(id)
   
set_weapon_anim(idANIM_CATCH)
   
emit_sound(idCHAN_WEAPONweapon_sound[0], 1.0ATTN_NORM0PITCH_NORM)    
   
remove_entity(Ent)
}

/*new Float:g_fDamageMulti[] = 
{
1.0,
1.1,
1.2,
1.3,
1.4,
1.5,
1.6,
1.7,
1.8,
1.9,
2.0,
2.1,
2.2,
2.3
}*/

public geri_tepme(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)                    
}

public 
Damage_guillotine(EntId)
{
   static 
OwnerOwner pev(Entpev_iuser1)
   static 
Attacker
   if(!
is_user_alive(Owner)) 
   {
      
Attacker 0
      
return
   } else 
Attacker Owner

   
if(g_endround)
      return
   
   new 
bool:bIsHeadShot// never make that one static
   
new Float:flAdjustedDamagebool:death
   
switch( Get_MissileWeaponHitGroup(Ent) ) 
   {
      case 
HIT_GENERICflAdjustedDamage DAMAGE 1.0 
         
case HIT_STOMACHflAdjustedDamage DAMAGE 1.5 
         
case HIT_LEFTLEGHIT_RIGHTLEGflAdjustedDamage DAMAGE 1.0
         
case HIT_LEFTARMHIT_RIGHTARMflAdjustedDamage DAMAGE 1.0
         
case HIT_HEADHIT_CHEST:
      {
         
flAdjustedDamage DAMAGE 2.5
         bIsHeadShot 
true;
         if(
headshot_mode[Owner] == 0set_task(2.0"balik_bro"Ent+1858941 )
         
headshot_mode[Owner] = 1
         headshot_korban
[Id] = 
         guillotine_korban
[Id] = Ent
         set_pev
(Entpev_iuser2Id)              
         
fakedamage(Id"Guillotine"1.0256
         
set_pev(Entpev_renderamt255)
         
set_pev(Entpev_solidSOLID_NOT)
         
set_pev(Entpev_fuser30.0)
      }
   }
   if(
pev(Idpev_health) <= flAdjustedDamagedeath true 
   
   
if(is_user_alive(Id))
   {
      if( 
bIsHeadShot && death)
      {
         if(
task_existsEnt+1858941 )) remove_taskEnt 1858941 )
         
set_pev(Entpev_sequence0)
         
headshot_korban[pev(Entpev_iuser2)] = 0
         headshot_mode
[Owner] = 0
         shoot_ent_mode
[Owner] = 1
         ent_sentuh
[Owner] = 1
         ent_sentuh_balik
[Owner] = 0
         set_pev
(Entpev_solidSOLID_BBOX)
         
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
         
         
kill(AttackerId1)
         
         
death false         
      
}
      if(
death)
      {
         
kill(AttackerId0)
         
         
death false         
      
}
      else 
ExecuteHamB(Ham_TakeDamageIdEntAttackerflAdjustedDamageDMG_CLUB)
   }
}


stock turn_to_target(entFloat:Ent_Origin[3], targetFloat:Vic_Origin[3]) 
{
   if(
target
   {
      new 
Float:newAngle[3]
      
entity_get_vector(entEV_VEC_anglesnewAngle)
      new 
Float:Vic_Origin[0] - Ent_Origin[0]
      new 
Float:Vic_Origin[1] - Ent_Origin[1]
      
      new 
Float:radians floatatan(z/xradian)
      
newAngle[1] = radians * (180 3.14)
      if (
Vic_Origin[0] < Ent_Origin[0])
         
newAngle[1] -= 180.0
      
      entity_set_vector
(entEV_VEC_anglesnewAngle)
   }
}

public 
balik_bro(Ent)
{
   
Ent -= 1858941
   
   
if(!pev_valid(Ent))
      return
   
   static 
pemilixpemilix pev(Entpev_iuser1)
   
set_pev(Entpev_sequence0)
   
headshot_korban[pev(Entpev_iuser2)] = 0
   headshot_mode
[pemilix] = 0
   shoot_ent_mode
[pemilix] = 1
   ent_sentuh
[pemilix] = 1
   ent_sentuh_balik
[pemilix] = 0
   set_pev
(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
}

public 
fw_SetModel(entitymodel[])
{
   if(!
pev_valid(entity))
      return 
FMRES_IGNORED
   
   
static Classname[64]
   
pev(entitypev_classnameClassnamesizeof(Classname))
   
   if(!
equal(Classname"weaponbox"))
      return 
FMRES_IGNORED
   
   
static id
   id 
pev(entitypev_owner)
   
   if(
equal(modelold_w_model))
   {
      static 
weapon
      weapon 
fm_get_user_weapon_entity(entityCSW_BDRIPPER)
      
      if(!
pev_valid(weapon))
         return 
FMRES_IGNORED
      
      
if(g_had_guillotine[id])
      {
         
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
         
set_pev(weaponpev_iuser4g_guillotine_ammo[id])
         
engfunc(EngFunc_SetModelentityw_model)
         
         
g_had_guillotine[id] = 0
         g_guillotine_ammo
[id] = 0
         
         
return FMRES_SUPERCEDE
      
}
   }
   
   return 
FMRES_IGNORED;
}

public 
fw_AddToPlayer_Post(entid)
{
   if(
pev(entpev_impulse) == WEAPON_SECRETCODE)
   {
      
g_had_guillotine[id] = 1
      g_guillotine_ammo
[id] = pev(entpev_iuser4)
      
      
set_pev(entpev_impulse0)
   }         
   
/*
   message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
   write_string((g_had_guillotine[id] == 1 ? "weapon_guillotine" : "weapon_mac10"))
   write_byte(6)
   write_byte(100)
   write_byte(-1)
   write_byte(-1)
   write_byte(0)
   write_byte(13)
   write_byte(CSW_BDRIPPER)
   write_byte(0)*/
}

public 
update_ammo(id)
{
   if(!
is_user_alive(id))
      return
   
   static 
weapon_entweapon_ent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   if(!
pev_valid(weapon_ent)) return
   
   
cs_set_weapon_ammo(weapon_entg_guillotine_ammo[id])   
   
//cs_set_user_bpammo(id, CSW_BDRIPPER, g_guillotine_ammo[id])
   
   
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEget_user_msgid("CurWeapon"), {000}, id)
   
write_byte(1)
   
write_byte(CSW_BDRIPPER)
   
write_byte(-1)
   
message_end()
   
   
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("AmmoX"), _id)
   
write_byte(1)
   
write_byte(g_guillotine_ammo[id])
   
message_end()
}

public 
fw_traceline(Float:v1[3],Float:v2[3],noMonsters,id,ptr)
{
   if(!
is_user_alive(id))
      return 
HAM_IGNORED   
   
if(get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return 
HAM_IGNORED
   
   
// get crosshair aim
   
static Float:aim[3];
   
get_aim(id,v1,aim);
   
   
// do another trace to this spot
   
new trace create_tr2();
   
engfunc(EngFunc_TraceLine,v1,aim,noMonsters,id,trace);
   
   
// copy ints
   
set_tr2(ptr,TR_AllSolid,get_tr2(trace,TR_AllSolid));
   
set_tr2(ptr,TR_StartSolid,get_tr2(trace,TR_StartSolid));
   
set_tr2(ptr,TR_InOpen,get_tr2(trace,TR_InOpen));
   
set_tr2(ptr,TR_InWater,get_tr2(trace,TR_InWater));
   
set_tr2(ptr,TR_pHit,get_tr2(trace,TR_pHit));
   
set_tr2(ptr,TR_iHitgroup,get_tr2(trace,TR_iHitgroup));
   
   
// copy floats
   
get_tr2(trace,TR_flFraction,aim[0]);
   
set_tr2(ptr,TR_flFraction,aim[0]);
   
get_tr2(trace,TR_flPlaneDist,aim[0]);
   
set_tr2(ptr,TR_flPlaneDist,aim[0]);
   
   
// copy vecs
   
get_tr2(trace,TR_vecEndPos,aim);
   
set_tr2(ptr,TR_vecEndPos,aim);
   
get_tr2(trace,TR_vecPlaneNormal,aim);
   
set_tr2(ptr,TR_vecPlaneNormal,aim);
   
   
// get rid of new trace
   
free_tr2(trace);
   
   return 
FMRES_IGNORED;
}

get_aim(id,Float:source[3],Float:ret[3])
{
static 
Float:vAngle[3], Float:pAngle[3], Float:dir[3], Float:temp[3];

// get aiming direction from forward global based on view angle and punch angle
pev(id,pev_v_angle,vAngle);
pev(id,pev_punchangle,pAngle);
xs_vec_add(vAngle,pAngle,temp);
engfunc(EngFunc_MakeVectors,temp);
global_get(glb_v_forward,dir);

/* vecEnd = vecSrc + vecDir * flDistance; */
xs_vec_mul_scalar(dir,8192.0,temp);
xs_vec_add(source,temp,ret);
}

public 
fake_smokes(Float:Origin[3])
{
static 
TE_FLAG

TE_FLAG 
|= TE_EXPLFLAG_NODLIGHTS
TE_FLAG 
|= TE_EXPLFLAG_NOSOUND
TE_FLAG 
|= TE_EXPLFLAG_NOPARTICLES

engfunc
(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYOrigin0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoordOrigin[0])
engfunc(EngFunc_WriteCoordOrigin[1])
engfunc(EngFunc_WriteCoordOrigin[2])
write_short(g_smokepuff_id)
write_byte(6)
write_byte(25)
write_byte(TE_FLAG)
message_end()
}

stock set_weapon_anim(idanim)
{
   if(!
is_user_alive(id))
      return
   
   
set_pev(idpev_weaponanimanim)
   
   
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
   
write_byte(anim)
   
write_byte(pev(idpev_body))
   
message_end()
}

stock kill(kvheadshot)
{
   
//cs_set_user_money(k, cs_get_user_money(k) + 500)
   
   
set_user_frags(kget_user_frags(k) + 1)
   
   
set_msg_block(g_MsgDeathMsg,BLOCK_ONCE)
   
set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
   
user_kill(v,1)
   
   new 
kteam get_user_team(k);
   new 
vteam get_user_team(v);
   
   new 
kfrags get_user_frags(k);
   new 
kdeaths get_user_deaths(k);
   
   new 
vfrags get_user_frags(v);
   new 
vdeaths get_user_deaths(v);
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(k);
   
ewrite_short(kfrags);
   
ewrite_short(kdeaths);
   
ewrite_short(0);
   
ewrite_short(kteam);
   
emessage_end();
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(v);
   
ewrite_short(vfrags);
   
ewrite_short(vdeaths);
   
ewrite_short(0);
   
ewrite_short(vteam);
   
emessage_end();
   
   
emessage_begin(MSG_BROADCASTg_MsgDeathMsg)
   
ewrite_byte(k)
   
ewrite_byte(v)
   
ewrite_byte(headshot)
   
ewrite_string("guillotine")
   
emessage_end()
}


stock create_blood(const Float:origin[3])
{
   
// Show some blood :)
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
   
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
}

stock drop_weapons(iddropwhat)
{
   static 
weapons[32], numiweaponid
   num 
0
   get_user_weapons
(idweaponsnum)
   
   for (
0numi++)
   {
      
weaponid weapons[i]
      
      if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
      {
         static 
wname[32]
         
get_weaponname(weaponidwnamesizeof wname 1)
         
engclient_cmd(id"drop"wname)
      }
   }
}

stock Get_MissileWeaponHitGroupiEnt )
{
   new 
Float:flStart], Float:flEnd];
   
   
peviEntpev_originflStart );
   
peviEntpev_velocityflEnd );
   
xs_vec_addflStartflEndflEnd );
   
   new 
ptr create_tr2();
   
engfuncEngFunc_TraceLineflStartflEnd0iEntptr );
   
   new 
iHitGroupOwnernOheadhead
   Owner 
pev(iEntpev_iuser1)
   
nOhead get_tr2ptrTR_iHitgroup )
   
head set_tr2ptrTR_iHitgroupHIT_HEAD )
   
   
iHitGroup headshot_mode[Owner] ? head nOhead
   
   free_tr2
ptr );
   
   return 
iHitGroup;
}

stock get_position(id,Float:forwFloat:rightFloat:upFloat:vStart[])
{
   static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
   
   
pev(idpev_originvOrigin)
   
pev(idpev_view_ofsvUp//for player
   
xs_vec_add(vOriginvUpvOrigin)
   
pev(idpev_v_anglevAngle// if normal entity ,use pev_angles
   
   
angle_vector(vAngleANGLEVECTOR_FORWARDvForward//or use EngFunc_AngleVectors
   
angle_vector(vAngleANGLEVECTOR_RIGHTvRight)
   
angle_vector(vAngleANGLEVECTOR_UPvUp)
   
   
vStart[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
   vStart
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
   vStart
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}

stock set_weapons_timeidle(idWeaponId ,Float:TimeIdle)
{
   if(!
is_user_alive(id))
      return
   
   static 
entwpnentwpn fm_get_user_weapon_entity(idWeaponId)
   if(!
pev_valid(entwpn)) 
      return
   
   
set_pdata_float(entwpn48TimeIdle 0.2OFFSET_LINUX_WEAPONS)
}

stock set_player_nextattackx(idFloat:nexttime)
{
   if(!
is_user_alive(id))
      return
   
   
set_pdata_float(idm_flNextAttacknexttime5)
}

public 
CurrentWeapon(id)
{
    
replace_weapon_models(idread_data(2))
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_KNIFE:
        {
            if(!
zp_get_user_zombie(id))
            {
                
set_pev(idpev_viewmodel2bicakmodel[0][gorunum[id]][0])
            }
        }
    }
}

stock renkli_yazi(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msgsizeof(msg) - 1input3)
    
    
replace_all(msg190"!n""^x01")
    
replace_all(msg190"!g""^x04")
    
replace_all(msg190"!t""^x03")
    
    if(
idplayers[0] = id; else get_players(playerscount"ch")
    for(new 
0counti++)
    {
        if(
is_user_connected(players[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
            
write_byte(players[i])
            
write_string(msg)
            
message_end()
        }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/ 

Last edited by sPed; 12-23-2022 at 10:46.
sPed is offline
J@y
Member
Join Date: Feb 2022
Old 12-23-2022 , 13:23   Re: Gilloutine Help
Reply With Quote #4

Quote:
Originally Posted by sPed View Post
i got this plugin from another forum, conver this plugin from zp > ze and and don't forget to change models for other knives
PHP Code:
new bicakmodel[][][] =
{
    {
CSW_KNIFE,
    
"models/tayo_knife/v_nata.mdl",
    
"models/tayo_knife/v_shadowaxe.mdl",
    
"models/tayo_knife/v_warhammer.mdl",
    
"models/tayo_knife/v_katanahf.mdl",
    
"models/tayo_knife/v_dualkatana_xmas.mdl"
    
}

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#include <xs>
#include <zombieplague>

#define PLUGIN "Guillotine"
#define VERSION "1.3"
#define AUTHOR "m4m3ts"

#define CSW_BDRIPPER CSW_KNIFE
#define weapon_guillotine "weapon_knife"
#define old_event "events/mac10.sc"
#define old_w_model "models/w_mac10.mdl"
#define WEAPON_SECRETCODE 1329419

const pev_catchedspeed pev_iuser4
#define DEFAULT_AMMO 10
#define RELOAD_TIME 0.435
#define DAMAGE 30
#define BDRIP_CLASSNAME "Blood Dripper"
#define WEAPON_ANIMEXT "knife"

#define Get_Ent_Data(%1,%2) get_pdata_int(%1,%2,4)
#define Set_Ent_Data(%1,%2,%3) set_pdata_int(%1,%2,%3,4)

const PDATA_SAFE 2
const OFFSET_LINUX_WEAPONS 4
const OFFSET_WEAPONOWNER 41
const m_flNextAttack 83
const m_szAnimExtention 492

new gorunum[33]

new 
bicakmodel[][][] =
{
    {
CSW_KNIFE,
    
"models/tayo_knife/v_nata.mdl",
    
"models/tayo_knife/v_shadowaxe.mdl",
    
"models/tayo_knife/v_warhammer.mdl",
    
"models/tayo_knife/v_katanahf.mdl",
    
"models/tayo_knife/v_dualkatana_xmas.mdl"
    
}
}


new const 
v_model[] = "models/tayo_guillotine/v_guillotine2.mdl"
new const p_model[] = "models/p_guillotine.mdl"
new const w_model[] = "models/w_guillotine.mdl"
new const KNIFE_MODEL[] = "models/guillotine_projectile.mdl"
new const PECAH_MODEL[] = "models/gibs_guilotine.mdl"
new const hit_wall[] = "weapons/janus9_stone1.wav"
new const hit_wall2[] = "weapons/janus9_stone2.wav"
new const weapon_sound[6][] = 
{
"weapons/guillotine_catch2.wav",
"weapons/guillotine_draw.wav",
"weapons/guillotine_draw_empty.wav",
"weapons/guillotine_explode.wav",
"weapons/guillotine_red.wav",
"weapons/guillotine-1.wav"
}


new const 
WeaponResource[3][] = 
{
"sprites/weapon_guillotine.txt",
"sprites/640hud120.spr",
"sprites/guillotine_lost.spr"
}

enum
{
ANIM_IDLE 0,
ANIM_IDLE_EMPTY,
ANIM_SHOOT,
ANIM_DRAW,
ANIM_DRAW_EMPTY,
ANIM_IDLE_SHOOT,
ANIM_IDLE_SHOOT2,
ANIM_CATCH,
ANIM_LOST
}

new 
g_MsgDeathMsgg_endround

new g_had_guillotine[33], g_guillotine_ammo[33], shoot_mode[33], shoot_ent_mode[33], g_pecahheadshot_mode[33], ent_sentuh[33], ent_sentuh_balik[33]
new 
g_old_weapon[33], g_smokepuff_idm_iBlood[2], guillotine_korban[33], headshot_korban[33], gmsgScoreInfo

const PRIMARY_WEAPONS_BIT_SUM 
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
//new TargetOrigin[3] 
new g_gui
public plugin_init()
{

   
//Knife menu
   
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
   
register_clcmd("say /bicak","knifemenu")
   
register_clcmd("say /knife","knifemenu")    
   
register_clcmd("say_team /knife","knifemenu")
   
register_clcmd("say_team /bicak","knifemenu")

   
register_plugin(PLUGINVERSIONAUTHOR)
   
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack_Sg")
   
register_forward(FM_CmdStart"fw_CmdStart")
   
register_forward(FM_SetModel"fw_SetModel")
   
register_think(BDRIP_CLASSNAME"fw_Think")

   
/*register_clcmd("say /gui","item_selected")
   register_clcmd("say .gui","item_selected")
   register_clcmd("say_team /gui","item_selected")
   register_clcmd("say_team .gui","item_selected")*/

   
register_event("HLTV""EventHLTV""a""1=0""2=0")
   
register_touch(BDRIP_CLASSNAME"*""fw_touch")
   
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
   
register_forward(FM_TraceLine"fw_traceline"1)
   
register_forward(FM_AddToFullPack"fm_addtofullpack_post"1)
   
RegisterHam(Ham_Spawn"player""Player_Spawn"1)
   
RegisterHam(Ham_Weapon_WeaponIdleweapon_guillotine"fw_guillotineidleanim"1)
   
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
   
RegisterHam(Ham_Item_AddToPlayerweapon_guillotine"fw_AddToPlayer_Post"1)
   
register_event("CurWeapon""Event_CurWeapon""be""1=1")
   
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
   
register_clcmd("weapon_guillotine""hook_weapon")
   
g_MsgDeathMsg get_user_msgid("DeathMsg")
   
gmsgScoreInfo get_user_msgid("ScoreInfo"

   
register_logevent("logevent_round_end"2"1=Round_End")
   
g_endround 1
}


public 
plugin_precache()
{
   
precache_model(bicakmodel[0][1])
   
precache_model(bicakmodel[0][2])
   
precache_model(bicakmodel[0][3])
   
precache_model(bicakmodel[0][4])
   
precache_model(bicakmodel[0][5])
   
precache_model(v_model)
   
precache_model(p_model)
   
precache_model(w_model)
   
precache_model(KNIFE_MODEL)
   
g_pecah precache_model(PECAH_MODEL)
   
precache_sound(hit_wall)
   
precache_sound(hit_wall2)

   for(new 
0sizeof(weapon_sound); i++) 
   
precache_sound(weapon_sound[i])

   for(new 
1sizeof(WeaponResource); i++)
   
precache_model(WeaponResource[i])

   
g_smokepuff_id engfunc(EngFunc_PrecacheModelWeaponResource[2])
   
m_iBlood[0] = precache_model("sprites/blood.spr")
   
m_iBlood[1] = precache_model("sprites/bloodspray.spr")   
}

public 
zp_user_infected_post(id)
{
   
remove_guillotine(id)
   
g_gui 0
}

public 
EventHLTV()
{
g_endround 0
g_gui 
1
}

public 
client_connect(id)
{
    
gorunum[id] = 1
}

public 
knifemenu(id)
{
  if(!
zp_get_user_zombie(id))
  {
    new 
menuz;
    static 
amenu[512];
    
formatex(amenu,charsmax(amenu),"\r[ZE] \yKnife Menu")
    
menuz menu_create(amenu,"knifemenu_devam")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wNata")
    
menu_additem(menuz,amenu,"1")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wShadowAxe")
    
menu_additem(menuz,amenu,"2")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wWarhammer")
    
menu_additem(menuz,amenu,"3")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wKatana")
    
menu_additem(menuz,amenu,"4")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wDualKatana")
    
menu_additem(menuz,amenu,"5")

    if(
is_user_admin(id))
    {
        
formatex(amenu,charsmax(amenu),"| \r- \wGuillatione \y[VIP]")
    }
    else
    {
        
formatex(amenu,charsmax(amenu),"| \r- \dGuillatione \r[VIP]")
    }        
    
menu_additem(menuz,amenu,"6")
    
    
menu_setprop(menuz,MPROP_EXIT,MEXIT_ALL)
    
menu_display(id,menuz,0)

  }
  return 
PLUGIN_HANDLED
}

public 
knifemenu_devam(id,menu,item)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    new 
access,callback,data[6],iname[64]
    
    
menu_item_getinfo(menu,item,access,data,5,iname,63,callback)
    
    new 
key str_to_num(data)
    
    if(
key == 1)
    {
        
gorunum[id] = 1
                remove_guillotine
(id)
    }
    else if(
key == 2)
    {
        
gorunum[id] = 2
                remove_guillotine
(id)
    }
    else if(
key == 3)
    {
        
gorunum[id] = 3
                remove_guillotine
(id)
    }
    else if(
key == 4)
    {
        
gorunum[id] = 4
                remove_guillotine
(id)
    }
    else if(
key == 5)
    {
        
gorunum[id] = 5
                remove_guillotine
(id)
    }
    else if(
key == 6)
    {
        if(
is_user_admin(id))
        {
                        
get_blood(id)
        }
        else
        {
            
renkli_yazi(id"!g[ZE]!t Yetkin Yok. !g|| !tOnly For VIPS.")
            
knifemenu(id)
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
logevent_round_end() g_endround 1

public Player_Spawn(id)
{
get_blood(id)

if(
g_gui)
{
if(
get_user_flags(id) & ADMIN_LEVEL_E)get_blood(id)
}   
}

public 
fw_PlayerKilled(id)
{
remove_guillotine(id)
}

public 
hook_weapon(id)
{
engclient_cmd(idweapon_guillotine)
return
}

new 
g_itemid
public item_selected(iditemid)
{   
if (!
is_user_alive(id)){
   
client_print(idprint_chat"")
   return
}
if (
zp_get_user_zombie(id)){
   
client_print(idprint_chat"")
   return
}
if(
itemid==g_itemid){
   new 
para is_user_admin(id)
   
   if (
para >= 0){
      
is_user_admin(id)
      
get_blood(id)
      
client_print(idprint_chat"")
   }
   else{
      
client_print(idprint_chat"[ZE]: You have no access")
   }
}
}

public 
get_blood(id)
{
   if(!
is_user_admin(id))
      return
   
drop_weapons(id0)
   
g_had_guillotine[id] = 1
   g_guillotine_ammo
[id] = DEFAULT_AMMO
   
   give_item
(idweapon_guillotine)
   
update_ammo(id)
   
   
//static weapon_ent; weapon_ent = fm_find_ent_by_owner(-1, weapon_guillotine, id)
   //if(pev_valid(weapon_ent)) cs_set_weapon_ammo(weapon_ent, 1)
}

public 
remove_guillotine(id)
{
   
g_had_guillotine[id] = 0
   
static EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   
ancur(Ent)
}

public 
refill_guillotine(id)
{   
   if(
g_had_guillotine[id]) g_guillotine_ammo[id] = 15
   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id]) update_ammo(id)
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return 
FMRES_IGNORED   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
      
set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001
   
   return 
FMRES_HANDLED
}

public 
message_DeathMsg(msg_idmsg_destid)
{
   static 
szTruncatedWeapon[33], iAttackeriVictim
   
   get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
   
   
iAttacker get_msg_arg_int(1)
   
iVictim get_msg_arg_int(2)
   
   if(!
is_user_connected(iAttacker) || iAttacker == iVictim) return PLUGIN_CONTINUE
   
   
if(get_user_weapon(iAttacker) == CSW_BDRIPPER)
   {
      if(
g_had_guillotine[iAttacker])
         
set_msg_arg_string(4"knife")
   }
   
   return 
PLUGIN_CONTINUE
}

public 
fw_TraceAttack_Sg(VictimAttackerFloat:DamageFloat:Direction[3], TraceHandleDamageBitptr)
{         
   return 
HAM_IGNORED
}

public 
Event_CurWeapon(id)
{
   
   if(!
is_user_alive(id))
      return 
   
   if(
get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
   {
      
set_pev(idpev_viewmodel2v_model)
      
set_pev(idpev_weaponmodel2p_model)
      
set_pdata_string(idm_szAnimExtention 4WEAPON_ANIMEXT, -20)
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] >= 1set_weapon_anim(idANIM_DRAW)
      
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] == && headshot_mode[id] == 0set_weapon_anim(idANIM_DRAW_EMPTY)
      else if(
g_old_weapon[id] != CSW_BDRIPPER && shoot_mode[id] == 1set_weapon_anim(idANIM_DRAW_EMPTY)
         
      
update_ammo(id)
   }
   
   
g_old_weapon[id] = get_user_weapon(id)
}

public 
fw_guillotineidleanim(Weapon)
{
   new 
id get_pdata_cbase(Weapon414)
   
   if(!
is_user_alive(id) || zp_get_user_zombie(id) || !g_had_guillotine[id] || get_user_weapon(id) != CSW_BDRIPPER)
      return 
HAM_IGNORED;
   
   if(
shoot_mode[id] == && g_guillotine_ammo[id] >= 1
      return 
HAM_SUPERCEDE;
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT2)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
g_guillotine_ammo[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_EMPTY)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   return 
HAM_IGNORED;
}

public 
fw_CmdStart(iduc_handleseed)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return
   if(
get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return
   
   static 
entent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   
//if(!pev_valid(ent))
   //   return
   
if(get_pdata_float(ent46OFFSET_LINUX_WEAPONS) > 0.0 || get_pdata_float(ent47OFFSET_LINUX_WEAPONS) > 0.0
      return
   
   static 
CurButton
   CurButton 
get_uc(uc_handleUC_Buttons)
   
   if(
CurButton IN_ATTACK)
   {
      
CurButton &= ~IN_ATTACK
      set_uc
(uc_handleUC_ButtonsCurButton)
      
      
//if(g_guillotine_ammo[id] == 0)
      //   return
      
if(shoot_mode[id] == && get_pdata_float(id835) <= 0.0)
      {
         
//g_guillotine_ammo[id]--
         //update_ammo(id)
         
shoot_mode[id] = 1                        
         set_task
(0.2"FireKnife"id)
         
set_weapon_anim(idANIM_SHOOT)
         
emit_sound(idCHAN_WEAPONweapon_sound[5], 1.0ATTN_NORM0PITCH_NORM)
         
set_weapons_timeidle(idCSW_BDRIPPER0.7)
         
set_player_nextattackx(id0.7)
      }
   }
}

public 
FireKnife(id)
{
   static 
Float:StartOrigin[3], Float:velocity[3], Float:angles[3], Float:anglestrue[3], Float:jarak_max[3]
   static 
EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   if(!
pev_valid(Ent)) return
   
get_position(id10.00.0, -2.0StartOrigin)     
   
get_position(id900.00.00.0jarak_max)
   
//static ent; ent = fm_get_user_weapon_entity(id, CSW_BDRIPPER)
   
pev(id,pev_v_angle,angles)
   
   
anglestrue[0] = 360.0 angles[0]
   
anglestrue[1] = angles[1]
   
anglestrue[2] = angles[2]
   
   
// Set info for ent
   
set_pev(Entpev_movetypeMOVETYPE_FLY)
   
set_pev(Entpev_ownerid)
   
set_pev(Entpev_iuser1id)
   
set_pev(Entpev_fuser1get_gametime() + 4.0)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
   
   
entity_set_string(EntEV_SZ_classnameBDRIP_CLASSNAME)
   
engfunc(EngFunc_SetModelEntKNIFE_MODEL)
   
set_pev(Entpev_minsFloat:{-1.0, -1.0, -1.0})
   
set_pev(Entpev_maxsFloat:{1.01.01.0})
   
set_pev(Entpev_originStartOrigin)
   
set_pev(Entpev_anglesanglestrue)
   
set_pev(Entpev_gravity0.01)
   
set_pev(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_frame1.0)
   
set_pev(Entpev_framerate1.0)
   
set_pev(Entpev_sequence0)
   
//ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
   
set_pev(Entpev_catchedspeed1100)
   
velocity_by_aimid1400velocity )
   
set_pevEntpev_velocityvelocity )
   
set_pev(Entpev_vuser1velocity)
   
set_pev(Entpev_vuser2jarak_max)
   
shoot_ent_mode[id] = 0
   set_pev
(Entpev_iuser40)
   
ent_sentuh[id] = 1
   ent_sentuh_balik
[id] = 0
}

public 
fm_addtofullpack_post(eseuserhosthost_flagsplayerp_set)
{
   if(!
player)
      return 
FMRES_IGNORED
   
   
if(!is_user_connected(host) || !is_user_alive(user))
      return 
FMRES_IGNORED
   
   
if(!zp_get_user_zombie(user) || headshot_korban[user] != 1)
      return 
FMRES_IGNORED
   
   
if(host == user)
      return 
FMRES_IGNORED
   
   
new Float:PlayerOrigin[3]//, Float:anglesss[3]
   
pev(userpev_originPlayerOrigin)
   
   
PlayerOrigin[2] += 25.0
   
   
//engfunc(EngFunc_GetBonePosition, user, 8, PlayerOrigin, anglesss)
   
   
engfunc(EngFunc_SetOriginguillotine_korban[user], PlayerOrigin)
   
   return 
FMRES_HANDLED
}

public 
fw_Think(Ent)
{
   if(!
pev_valid(Ent)) 
      return
   
   
//new id; id = pev(Ent, pev_owner)
   
static Float:pulang[3], Float:StartOriginz[3], pemilixFloat:brangkat[3], Float:jarak_max[3], Float:origin_asli[3], korban
   pemilix 
pev(Entpev_iuser1)
   
pev(Entpev_originStartOriginz)
   
korban pev(Entpev_iuser2)
   
   if(
headshot_korban[korban] == 1)
   {
      
action_thanatos(Entkorbanpemilix)
      if(
get_gametime() - 0.15 pev(Entpev_fuser3))
      {                         
         
Damage_guillotine(Entkorban)     
      }
   }
   
   if(
ent_sentuh_balik[pemilix] == && shoot_ent_mode[pemilix] == 1)
   {
      
ent_sentuh_balik[pemilix] = 1
      pev
(pemilixpev_originorigin_asli)
      
origin_asli[2] += 0.1
   
}
   
   if(
ent_sentuh[pemilix] == 1)
   {
      
ent_sentuh[pemilix] = 0
      pev
(Entpev_vuser2jarak_max)
      
pev(Entpev_vuser1brangkat)               
      
get_speed_vector(StartOriginzorigin_asli1400.0pulang)
      
      if(
shoot_ent_mode[pemilix] == 1
      {
         
set_pev(Entpev_velocitypulang)
      }            
      else 
set_pev(Entpev_velocitybrangkat)
      
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzjarak_max) <= 40.0)
   {
      
shoot_ent_mode[pemilix] = 1
      ent_sentuh
[pemilix] = 1
      set_pev
(Entpev_owner0)
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzorigin_asli) <= 40.0)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   else if(
headshot_korban[korban] == 1set_pev(Entpev_nextthinkget_gametime() + 0.2)
      else 
set_pev(Entpev_nextthinkhalflife_time() + 0.001)
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3])
{
   
new_velocity[0] = origin2[0] - origin1[0]
   
new_velocity[1] = origin2[1] - origin1[1]
   
new_velocity[2] = origin2[2] - origin1[2]
   static 
Float:numnum floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
   
new_velocity[0] *= num
   new_velocity
[1] *= num
   new_velocity
[2] *= num
   
   
return 1;
}


stock hook_ent(victimattackerFloat:speed)
{
   if(!
pev_valid(victim) || !pev_valid(attacker))
      return
   
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3], Float:VicOrigin[3]
   
   
pev(victimpev_originEntOrigin)
   
pev(attackerpev_originVicOrigin)
   
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   if (
distance_f 60.0)
   {
      new 
Float:fl_Time distance_f speed
      
      fl_Velocity
[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
      fl_Velocity
[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
      fl_Velocity
[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
      
} else {
      
fl_Velocity[0] = 0.0
      fl_Velocity
[1] = 0.0
      fl_Velocity
[2] = 0.0
   
}
   
   
entity_set_vector(victimEV_VEC_velocityfl_Velocity)
}

stock hook_ent2(entFloat:VicOrigin[3], Float:speedtype)
{
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3]
   static 
Float:EntVelocity[3]
   
   
pev(entpev_velocityEntVelocity)
   
pev(entpev_originEntOrigin)
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   static 
Float:fl_Timefl_Time distance_f speed
   
   
if(type == 1)
   {
      
fl_Velocity[0] = ((VicOrigin[0] - EntOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((VicOrigin[1] - EntOrigin[1]) / fl_Time)
      
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time      
      
} else if(type == 2) {
      
fl_Velocity[0] = ((EntOrigin[0] - VicOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((EntOrigin[1] - VicOrigin[1]) / fl_Time
      
fl_Velocity[2] = (EntOrigin[2] - VicOrigin[2]) / fl_Time
   
}
   
   
xs_vec_add(EntVelocityfl_Velocityfl_Velocity)
   
set_pev(entpev_velocityfl_Velocity)
}

public 
fw_touch(EntId)
{
   
// If ent is valid
   
if(!pev_valid(Ent))
      return
   if(
pev(Entpev_movetype) == MOVETYPE_NONE)
      return
   
   static 
classnameptd[32]
   
pev(Idpev_classnameclassnameptd31)
   if (
equali(classnameptd"func_breakable")) ExecuteHamBHam_TakeDamageId0080.0DMG_GENERIC )
   
//static korban
   //korban = pev(Ent, pev_iuser2)
   
   // Get it's origin
   
new Float:originF[3], pemilix 
   
//static id2
   //id2 = pev(Ent, pev_owner)
   
pemilix pev(Entpev_iuser1)
   
pev(Entpev_originoriginF)
   
// Alive...
   //new id = read_data(2)
   
if(is_user_alive(Id) && zp_get_user_zombie(Id))
   {
      
fakedamage(Id"Guillotine"1.0256)
      
Damage_guillotine(EntId)  
      
geri_tepme(pemilixId)      
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1                  
      create_blood
(originF)
      
//create_blood(originF)
   
}
   
   else if(
shoot_ent_mode[pemilix] == && Id == pemilix)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   
   else if(
is_user_alive(Id) && !zp_get_user_zombie(Id))
   {
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1
   
}
   
   else
   {
      
set_pev(Entpev_owner0)
      
      if(
shoot_ent_mode[pemilix] == 0)
      {
         
shoot_ent_mode[pemilix] = 1
         engfunc
(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall1.0ATTN_STATIC0PITCH_NORM)
         
ent_sentuh[pemilix] = 1
      
}
      else 
ancur(Ent)
   }
   
}

public 
ancur(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
Float:origin2[3], pemilixFloat:origin3[3]
   
pemilix pev(Entpev_iuser1)
   
entity_get_vector(EntEV_VEC_originorigin2)
   
pev(Entpev_originorigin3)
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
//fake_smokes(origin3)
   
engfunc(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall21.0ATTN_STATIC0PITCH_NORM)
   
shoot_mode[pemilix] = 0
   remove_entity
(Ent)
   
   if(!
is_user_alive(pemilix) || !is_user_connected(pemilix) || get_user_weapon(pemilix) != CSW_BDRIPPER || !g_had_guillotine[pemilix])
      return
   
   
set_weapon_anim(pemilixANIM_LOST)
   
set_weapons_timeidle(pemilixCSW_BDRIPPER2.5)
   
set_player_nextattackx(pemilix2.5)
   
set_task(1.3"reload2"pemilix)
   
set_task(1.4"reload"pemilix)
}

public 
geri_tepme2(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)
}

public 
action_thanatos(Entvictimid)
{         
   if(!
pev_valid(Ent))   
      return
   
   if(
headshot_mode[id] == 1)
   {
      
      
//geri_tepme2(id, victim)
      
      
set_task(0.01"action_thanatos"Ent)
   }
}

public 
reload(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_DRAW)
}

public 
reload2(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_IDLE_SHOOT2)
}

public 
balik(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
id
   id 
pev(Entpev_iuser1)
   
   
set_weapons_timeidle(idCSW_BDRIPPER1.0)
   
set_player_nextattackx(id1.0)
   
shoot_mode[id] = 0
   g_guillotine_ammo
[id]++
   
update_ammo(id)
   
set_weapon_anim(idANIM_CATCH)
   
emit_sound(idCHAN_WEAPONweapon_sound[0], 1.0ATTN_NORM0PITCH_NORM)    
   
remove_entity(Ent)
}

/*new Float:g_fDamageMulti[] = 
{
1.0,
1.1,
1.2,
1.3,
1.4,
1.5,
1.6,
1.7,
1.8,
1.9,
2.0,
2.1,
2.2,
2.3
}*/

public geri_tepme(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)                    
}

public 
Damage_guillotine(EntId)
{
   static 
OwnerOwner pev(Entpev_iuser1)
   static 
Attacker
   if(!
is_user_alive(Owner)) 
   {
      
Attacker 0
      
return
   } else 
Attacker Owner

   
if(g_endround)
      return
   
   new 
bool:bIsHeadShot// never make that one static
   
new Float:flAdjustedDamagebool:death
   
switch( Get_MissileWeaponHitGroup(Ent) ) 
   {
      case 
HIT_GENERICflAdjustedDamage DAMAGE 1.0 
         
case HIT_STOMACHflAdjustedDamage DAMAGE 1.5 
         
case HIT_LEFTLEGHIT_RIGHTLEGflAdjustedDamage DAMAGE 1.0
         
case HIT_LEFTARMHIT_RIGHTARMflAdjustedDamage DAMAGE 1.0
         
case HIT_HEADHIT_CHEST:
      {
         
flAdjustedDamage DAMAGE 2.5
         bIsHeadShot 
true;
         if(
headshot_mode[Owner] == 0set_task(2.0"balik_bro"Ent+1858941 )
         
headshot_mode[Owner] = 1
         headshot_korban
[Id] = 
         guillotine_korban
[Id] = Ent
         set_pev
(Entpev_iuser2Id)              
         
fakedamage(Id"Guillotine"1.0256
         
set_pev(Entpev_renderamt255)
         
set_pev(Entpev_solidSOLID_NOT)
         
set_pev(Entpev_fuser30.0)
      }
   }
   if(
pev(Idpev_health) <= flAdjustedDamagedeath true 
   
   
if(is_user_alive(Id))
   {
      if( 
bIsHeadShot && death)
      {
         if(
task_existsEnt+1858941 )) remove_taskEnt 1858941 )
         
set_pev(Entpev_sequence0)
         
headshot_korban[pev(Entpev_iuser2)] = 0
         headshot_mode
[Owner] = 0
         shoot_ent_mode
[Owner] = 1
         ent_sentuh
[Owner] = 1
         ent_sentuh_balik
[Owner] = 0
         set_pev
(Entpev_solidSOLID_BBOX)
         
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
         
         
kill(AttackerId1)
         
         
death false         
      
}
      if(
death)
      {
         
kill(AttackerId0)
         
         
death false         
      
}
      else 
ExecuteHamB(Ham_TakeDamageIdEntAttackerflAdjustedDamageDMG_CLUB)
   }
}


stock turn_to_target(entFloat:Ent_Origin[3], targetFloat:Vic_Origin[3]) 
{
   if(
target
   {
      new 
Float:newAngle[3]
      
entity_get_vector(entEV_VEC_anglesnewAngle)
      new 
Float:Vic_Origin[0] - Ent_Origin[0]
      new 
Float:Vic_Origin[1] - Ent_Origin[1]
      
      new 
Float:radians floatatan(z/xradian)
      
newAngle[1] = radians * (180 3.14)
      if (
Vic_Origin[0] < Ent_Origin[0])
         
newAngle[1] -= 180.0
      
      entity_set_vector
(entEV_VEC_anglesnewAngle)
   }
}

public 
balik_bro(Ent)
{
   
Ent -= 1858941
   
   
if(!pev_valid(Ent))
      return
   
   static 
pemilixpemilix pev(Entpev_iuser1)
   
set_pev(Entpev_sequence0)
   
headshot_korban[pev(Entpev_iuser2)] = 0
   headshot_mode
[pemilix] = 0
   shoot_ent_mode
[pemilix] = 1
   ent_sentuh
[pemilix] = 1
   ent_sentuh_balik
[pemilix] = 0
   set_pev
(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
}

public 
fw_SetModel(entitymodel[])
{
   if(!
pev_valid(entity))
      return 
FMRES_IGNORED
   
   
static Classname[64]
   
pev(entitypev_classnameClassnamesizeof(Classname))
   
   if(!
equal(Classname"weaponbox"))
      return 
FMRES_IGNORED
   
   
static id
   id 
pev(entitypev_owner)
   
   if(
equal(modelold_w_model))
   {
      static 
weapon
      weapon 
fm_get_user_weapon_entity(entityCSW_BDRIPPER)
      
      if(!
pev_valid(weapon))
         return 
FMRES_IGNORED
      
      
if(g_had_guillotine[id])
      {
         
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
         
set_pev(weaponpev_iuser4g_guillotine_ammo[id])
         
engfunc(EngFunc_SetModelentityw_model)
         
         
g_had_guillotine[id] = 0
         g_guillotine_ammo
[id] = 0
         
         
return FMRES_SUPERCEDE
      
}
   }
   
   return 
FMRES_IGNORED;
}

public 
fw_AddToPlayer_Post(entid)
{
   if(
pev(entpev_impulse) == WEAPON_SECRETCODE)
   {
      
g_had_guillotine[id] = 1
      g_guillotine_ammo
[id] = pev(entpev_iuser4)
      
      
set_pev(entpev_impulse0)
   }         
   
/*
   message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
   write_string((g_had_guillotine[id] == 1 ? "weapon_guillotine" : "weapon_mac10"))
   write_byte(6)
   write_byte(100)
   write_byte(-1)
   write_byte(-1)
   write_byte(0)
   write_byte(13)
   write_byte(CSW_BDRIPPER)
   write_byte(0)*/
}

public 
update_ammo(id)
{
   if(!
is_user_alive(id))
      return
   
   static 
weapon_entweapon_ent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   if(!
pev_valid(weapon_ent)) return
   
   
cs_set_weapon_ammo(weapon_entg_guillotine_ammo[id])   
   
//cs_set_user_bpammo(id, CSW_BDRIPPER, g_guillotine_ammo[id])
   
   
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEget_user_msgid("CurWeapon"), {000}, id)
   
write_byte(1)
   
write_byte(CSW_BDRIPPER)
   
write_byte(-1)
   
message_end()
   
   
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("AmmoX"), _id)
   
write_byte(1)
   
write_byte(g_guillotine_ammo[id])
   
message_end()
}

public 
fw_traceline(Float:v1[3],Float:v2[3],noMonsters,id,ptr)
{
   if(!
is_user_alive(id))
      return 
HAM_IGNORED   
   
if(get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return 
HAM_IGNORED
   
   
// get crosshair aim
   
static Float:aim[3];
   
get_aim(id,v1,aim);
   
   
// do another trace to this spot
   
new trace create_tr2();
   
engfunc(EngFunc_TraceLine,v1,aim,noMonsters,id,trace);
   
   
// copy ints
   
set_tr2(ptr,TR_AllSolid,get_tr2(trace,TR_AllSolid));
   
set_tr2(ptr,TR_StartSolid,get_tr2(trace,TR_StartSolid));
   
set_tr2(ptr,TR_InOpen,get_tr2(trace,TR_InOpen));
   
set_tr2(ptr,TR_InWater,get_tr2(trace,TR_InWater));
   
set_tr2(ptr,TR_pHit,get_tr2(trace,TR_pHit));
   
set_tr2(ptr,TR_iHitgroup,get_tr2(trace,TR_iHitgroup));
   
   
// copy floats
   
get_tr2(trace,TR_flFraction,aim[0]);
   
set_tr2(ptr,TR_flFraction,aim[0]);
   
get_tr2(trace,TR_flPlaneDist,aim[0]);
   
set_tr2(ptr,TR_flPlaneDist,aim[0]);
   
   
// copy vecs
   
get_tr2(trace,TR_vecEndPos,aim);
   
set_tr2(ptr,TR_vecEndPos,aim);
   
get_tr2(trace,TR_vecPlaneNormal,aim);
   
set_tr2(ptr,TR_vecPlaneNormal,aim);
   
   
// get rid of new trace
   
free_tr2(trace);
   
   return 
FMRES_IGNORED;
}

get_aim(id,Float:source[3],Float:ret[3])
{
static 
Float:vAngle[3], Float:pAngle[3], Float:dir[3], Float:temp[3];

// get aiming direction from forward global based on view angle and punch angle
pev(id,pev_v_angle,vAngle);
pev(id,pev_punchangle,pAngle);
xs_vec_add(vAngle,pAngle,temp);
engfunc(EngFunc_MakeVectors,temp);
global_get(glb_v_forward,dir);

/* vecEnd = vecSrc + vecDir * flDistance; */
xs_vec_mul_scalar(dir,8192.0,temp);
xs_vec_add(source,temp,ret);
}

public 
fake_smokes(Float:Origin[3])
{
static 
TE_FLAG

TE_FLAG 
|= TE_EXPLFLAG_NODLIGHTS
TE_FLAG 
|= TE_EXPLFLAG_NOSOUND
TE_FLAG 
|= TE_EXPLFLAG_NOPARTICLES

engfunc
(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYOrigin0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoordOrigin[0])
engfunc(EngFunc_WriteCoordOrigin[1])
engfunc(EngFunc_WriteCoordOrigin[2])
write_short(g_smokepuff_id)
write_byte(6)
write_byte(25)
write_byte(TE_FLAG)
message_end()
}

stock set_weapon_anim(idanim)
{
   if(!
is_user_alive(id))
      return
   
   
set_pev(idpev_weaponanimanim)
   
   
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
   
write_byte(anim)
   
write_byte(pev(idpev_body))
   
message_end()
}

stock kill(kvheadshot)
{
   
//cs_set_user_money(k, cs_get_user_money(k) + 500)
   
   
set_user_frags(kget_user_frags(k) + 1)
   
   
set_msg_block(g_MsgDeathMsg,BLOCK_ONCE)
   
set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
   
user_kill(v,1)
   
   new 
kteam get_user_team(k);
   new 
vteam get_user_team(v);
   
   new 
kfrags get_user_frags(k);
   new 
kdeaths get_user_deaths(k);
   
   new 
vfrags get_user_frags(v);
   new 
vdeaths get_user_deaths(v);
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(k);
   
ewrite_short(kfrags);
   
ewrite_short(kdeaths);
   
ewrite_short(0);
   
ewrite_short(kteam);
   
emessage_end();
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(v);
   
ewrite_short(vfrags);
   
ewrite_short(vdeaths);
   
ewrite_short(0);
   
ewrite_short(vteam);
   
emessage_end();
   
   
emessage_begin(MSG_BROADCASTg_MsgDeathMsg)
   
ewrite_byte(k)
   
ewrite_byte(v)
   
ewrite_byte(headshot)
   
ewrite_string("guillotine")
   
emessage_end()
}


stock create_blood(const Float:origin[3])
{
   
// Show some blood :)
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
   
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
}

stock drop_weapons(iddropwhat)
{
   static 
weapons[32], numiweaponid
   num 
0
   get_user_weapons
(idweaponsnum)
   
   for (
0numi++)
   {
      
weaponid weapons[i]
      
      if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
      {
         static 
wname[32]
         
get_weaponname(weaponidwnamesizeof wname 1)
         
engclient_cmd(id"drop"wname)
      }
   }
}

stock Get_MissileWeaponHitGroupiEnt )
{
   new 
Float:flStart], Float:flEnd];
   
   
peviEntpev_originflStart );
   
peviEntpev_velocityflEnd );
   
xs_vec_addflStartflEndflEnd );
   
   new 
ptr create_tr2();
   
engfuncEngFunc_TraceLineflStartflEnd0iEntptr );
   
   new 
iHitGroupOwnernOheadhead
   Owner 
pev(iEntpev_iuser1)
   
nOhead get_tr2ptrTR_iHitgroup )
   
head set_tr2ptrTR_iHitgroupHIT_HEAD )
   
   
iHitGroup headshot_mode[Owner] ? head nOhead
   
   free_tr2
ptr );
   
   return 
iHitGroup;
}

stock get_position(id,Float:forwFloat:rightFloat:upFloat:vStart[])
{
   static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
   
   
pev(idpev_originvOrigin)
   
pev(idpev_view_ofsvUp//for player
   
xs_vec_add(vOriginvUpvOrigin)
   
pev(idpev_v_anglevAngle// if normal entity ,use pev_angles
   
   
angle_vector(vAngleANGLEVECTOR_FORWARDvForward//or use EngFunc_AngleVectors
   
angle_vector(vAngleANGLEVECTOR_RIGHTvRight)
   
angle_vector(vAngleANGLEVECTOR_UPvUp)
   
   
vStart[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
   vStart
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
   vStart
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}

stock set_weapons_timeidle(idWeaponId ,Float:TimeIdle)
{
   if(!
is_user_alive(id))
      return
   
   static 
entwpnentwpn fm_get_user_weapon_entity(idWeaponId)
   if(!
pev_valid(entwpn)) 
      return
   
   
set_pdata_float(entwpn48TimeIdle 0.2OFFSET_LINUX_WEAPONS)
}

stock set_player_nextattackx(idFloat:nexttime)
{
   if(!
is_user_alive(id))
      return
   
   
set_pdata_float(idm_flNextAttacknexttime5)
}

public 
CurrentWeapon(id)
{
    
replace_weapon_models(idread_data(2))
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_KNIFE:
        {
            if(!
zp_get_user_zombie(id))
            {
                
set_pev(idpev_viewmodel2bicakmodel[0][gorunum[id]][0])
            }
        }
    }
}

stock renkli_yazi(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msgsizeof(msg) - 1input3)
    
    
replace_all(msg190"!n""^x01")
    
replace_all(msg190"!g""^x04")
    
replace_all(msg190"!t""^x03")
    
    if(
idplayers[0] = id; else get_players(playerscount"ch")
    for(new 
0counti++)
    {
        if(
is_user_connected(players[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
            
write_byte(players[i])
            
write_string(msg)
            
message_end()
        }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/ 


How do i convert?
J@y is offline
sPed
Member
Join Date: May 2017
Location: Algeria
Old 12-23-2022 , 16:28   Re: Gilloutine Help
Reply With Quote #5

to open knife menu say /knife & to get gilloutine knife say /gui
gilloutine knife is only for VIP's who have flag "T"

PHP Code:
#include <zombie_escape>
#include <engine>
#include <fakemeta_util>
#include <cstrike>
#include <fun>


#define PLUGIN "Guillotine"
#define VERSION "1.3"
#define AUTHOR "m4m3ts"
 
#define CSW_BDRIPPER CSW_KNIFE
#define weapon_guillotine "weapon_knife"
#define old_event "events/mac10.sc"
#define old_w_model "models/w_mac10.mdl"
#define WEAPON_SECRETCODE 1329419

const pev_catchedspeed pev_iuser4
#define DEFAULT_AMMO 10
#define RELOAD_TIME 0.435
#define DAMAGE 30
#define BDRIP_CLASSNAME "Blood Dripper"
#define WEAPON_ANIMEXT "knife"

#define Get_Ent_Data(%1,%2) get_pdata_int(%1,%2,4)
#define Set_Ent_Data(%1,%2,%3) set_pdata_int(%1,%2,%3,4)

const PDATA_SAFE 2
const OFFSET_LINUX_WEAPONS 4
const OFFSET_WEAPONOWNER 41
const m_flNextAttack 83

new gorunum[33]

new 
bicakmodel[][][] =
{
    {
CSW_KNIFE,
    
"models/tayo_knife/v_nata.mdl",
    
"models/tayo_knife/v_shadowaxe.mdl",
    
"models/tayo_knife/v_warhammer.mdl",
    
"models/tayo_knife/v_katanahf.mdl",
    
"models/tayo_knife/v_dualkatana_xmas.mdl"
    
}
}


new const 
v_model[] = "models/tayo_guillotine/v_guillotine2.mdl"
new const p_model[] = "models/p_guillotine.mdl"
new const w_model[] = "models/w_guillotine.mdl"
new const KNIFE_MODEL[] = "models/guillotine_projectile.mdl"
new const PECAH_MODEL[] = "models/gibs_guilotine.mdl"
new const hit_wall[] = "weapons/janus9_stone1.wav"
new const hit_wall2[] = "weapons/janus9_stone2.wav"
new const weapon_sound[6][] = 
{
"weapons/guillotine_catch2.wav",
"weapons/guillotine_draw.wav",
"weapons/guillotine_draw_empty.wav",
"weapons/guillotine_explode.wav",
"weapons/guillotine_red.wav",
"weapons/guillotine-1.wav"
}


new const 
WeaponResource[3][] = 
{
"sprites/weapon_guillotine.txt",
"sprites/640hud120.spr",
"sprites/guillotine_lost.spr"
}

enum
{
ANIM_IDLE 0,
ANIM_IDLE_EMPTY,
ANIM_SHOOT,
ANIM_DRAW,
ANIM_DRAW_EMPTY,
ANIM_IDLE_SHOOT,
ANIM_IDLE_SHOOT2,
ANIM_CATCH,
ANIM_LOST
}

new 
g_MsgDeathMsgg_endround

new g_had_guillotine[33], g_guillotine_ammo[33], shoot_mode[33], shoot_ent_mode[33], g_pecahheadshot_mode[33], ent_sentuh[33], ent_sentuh_balik[33]
new 
g_old_weapon[33], g_smokepuff_idm_iBlood[2], guillotine_korban[33], headshot_korban[33], gmsgScoreInfo

const PRIMARY_WEAPONS_BIT_SUM 
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
//new TargetOrigin[3] 
new g_gui
public plugin_init()
{
   
register_plugin(PLUGINVERSIONAUTHOR)
   
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack_Sg")
   
register_forward(FM_CmdStart"fw_CmdStart")
   
register_forward(FM_SetModel"fw_SetModel")
   
register_think(BDRIP_CLASSNAME"fw_Think")

   
//Knife menu
   
register_clcmd("say /knife","knifemenu")
   
register_clcmd("say_team /knife","knifemenu")

   
register_clcmd("say /gui","item_selected")
   
register_clcmd("say_team /gui","item_selected")

   
register_event("CurWeapon","CurrentWeapon","be","1=1")
   
register_event("HLTV""EventHLTV""a""1=0""2=0")
   
register_touch(BDRIP_CLASSNAME"*""fw_touch")
   
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
   
register_forward(FM_TraceLine"fw_traceline"1)
   
register_forward(FM_AddToFullPack"fm_addtofullpack_post"1)
   
RegisterHam(Ham_Spawn"player""Player_Spawn"1)
   
RegisterHam(Ham_Weapon_WeaponIdleweapon_guillotine"fw_guillotineidleanim"1)
   
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
   
RegisterHam(Ham_Item_AddToPlayerweapon_guillotine"fw_AddToPlayer_Post"1)
   
register_event("CurWeapon""Event_CurWeapon""be""1=1")
   
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
   
register_clcmd("weapon_guillotine""hook_weapon")
   
g_MsgDeathMsg get_user_msgid("DeathMsg")
   
gmsgScoreInfo get_user_msgid("ScoreInfo"

   
register_logevent("logevent_round_end"2"1=Round_End")
   
g_endround 1
}


public 
plugin_precache()
{
   
precache_model(bicakmodel[0][1])
   
precache_model(bicakmodel[0][2])
   
precache_model(bicakmodel[0][3])
   
precache_model(bicakmodel[0][4])
   
precache_model(bicakmodel[0][5])
   
precache_model(v_model)
   
precache_model(p_model)
   
precache_model(w_model)
   
precache_model(KNIFE_MODEL)
   
g_pecah precache_model(PECAH_MODEL)
   
precache_sound(hit_wall)
   
precache_sound(hit_wall2)

   for(new 
0sizeof(weapon_sound); i++) 
   
precache_sound(weapon_sound[i])

   for(new 
1sizeof(WeaponResource); i++)
   
precache_model(WeaponResource[i])

   
g_smokepuff_id engfunc(EngFunc_PrecacheModelWeaponResource[2])
   
m_iBlood[0] = precache_model("sprites/blood.spr")
   
m_iBlood[1] = precache_model("sprites/bloodspray.spr")   
}

public 
ze_user_infected(id)
{
   
remove_guillotine(id)
   
g_gui 0
}

public 
EventHLTV()
{
g_endround 0
g_gui 
1
}

public 
client_connect(id)
{
    
gorunum[id] = 1
}

public 
knifemenu(id)
{
  if(!
ze_is_user_zombie(id))
  {
    new 
menuz;
    static 
amenu[512];
    
formatex(amenu,charsmax(amenu),"\r[ZE] \yKnife Menu")
    
menuz menu_create(amenu,"knifemenu_devam")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wNata")
    
menu_additem(menuz,amenu,"1")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wShadowAxe")
    
menu_additem(menuz,amenu,"2")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wWarhammer")
    
menu_additem(menuz,amenu,"3")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wKatana")
    
menu_additem(menuz,amenu,"4")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wDualKatana")
    
menu_additem(menuz,amenu,"5")

    if(
get_user_flags(id) & ADMIN_LEVEL_H)
    {
        
formatex(amenu,charsmax(amenu),"| \r- \wGuillatione \y[VIP]")
    }
    else
    {
        
formatex(amenu,charsmax(amenu),"| \r- \dGuillatione \r[VIP]")
    }        
    
menu_additem(menuz,amenu,"6")
    
    
menu_setprop(menuz,MPROP_EXIT,MEXIT_ALL)
    
menu_display(id,menuz,0)

  }
  return 
PLUGIN_HANDLED
}

public 
knifemenu_devam(id,menu,item)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    new 
access,callback,data[6],iname[64]
    
    
menu_item_getinfo(menu,item,access,data,5,iname,63,callback)
    
    new 
key str_to_num(data)
    
    if(
key == 1)
    {
        
gorunum[id] = 1
                remove_guillotine
(id)
    }
    else if(
key == 2)
    {
        
gorunum[id] = 2
                remove_guillotine
(id)
    }
    else if(
key == 3)
    {
        
gorunum[id] = 3
                remove_guillotine
(id)
    }
    else if(
key == 4)
    {
        
gorunum[id] = 4
                remove_guillotine
(id)
    }
    else if(
key == 5)
    {
        
gorunum[id] = 5
                remove_guillotine
(id)
    }
    else if(
key == 6)
    {
        if(
get_user_flags(id) & ADMIN_LEVEL_H)
        {
                        
get_blood(id)
        }
        else
        {
            
renkli_yazi(id"!g[ZE]!t Yetkin Yok. !g|| !tOnly For VIPS.")
            
knifemenu(id)
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
logevent_round_end() g_endround 1

public Player_Spawn(id)
{
get_blood(id)

if(
g_gui)
{
if(
get_user_flags(id) & ADMIN_LEVEL_E)get_blood(id)
}   
}

public 
fw_PlayerKilled(id)
{
remove_guillotine(id)
}

public 
hook_weapon(id)
{
engclient_cmd(idweapon_guillotine)
return
}

new 
g_itemid
public item_selected(iditemid)
{   
if (!
is_user_alive(id)){
   
client_print(idprint_chat"")
   return
}
if (
ze_is_user_zombie(id)){
   
client_print(idprint_chat"")
   return
}
if(
itemid==g_itemid){
   new 
para = (get_user_flags(id) & ADMIN_LEVEL_H)
   
   if (
para >= 0){
      if(
get_user_flags(id) & ADMIN_LEVEL_H)
      
get_blood(id)
      
client_print(idprint_chat"")
   }
   else{
      
client_print(idprint_chat"[ZE]: You have no access")
   }
}
}

public 
get_blood(id)
{
   if(!(
get_user_flags(id) & ADMIN_LEVEL_H))
      return
   
drop_weapons(id0)
   
g_had_guillotine[id] = 1
   g_guillotine_ammo
[id] = DEFAULT_AMMO
   
   give_item
(idweapon_guillotine)
   
update_ammo(id)
   
   
//static weapon_ent; weapon_ent = fm_find_ent_by_owner(-1, weapon_guillotine, id)
   //if(pev_valid(weapon_ent)) cs_set_weapon_ammo(weapon_ent, 1)
}

public 
remove_guillotine(id)
{
   
g_had_guillotine[id] = 0
   
static EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   
ancur(Ent)
}

public 
refill_guillotine(id)
{   
   if(
g_had_guillotine[id]) g_guillotine_ammo[id] = 15
   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id]) update_ammo(id)
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return 
FMRES_IGNORED   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
      
set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001
   
   return 
FMRES_HANDLED
}

public 
message_DeathMsg(msg_idmsg_destid)
{
   static 
szTruncatedWeapon[33], iAttackeriVictim
   
   get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
   
   
iAttacker get_msg_arg_int(1)
   
iVictim get_msg_arg_int(2)
   
   if(!
is_user_connected(iAttacker) || iAttacker == iVictim) return PLUGIN_CONTINUE
   
   
if(get_user_weapon(iAttacker) == CSW_BDRIPPER)
   {
      if(
g_had_guillotine[iAttacker])
         
set_msg_arg_string(4"knife")
   }
   
   return 
PLUGIN_CONTINUE
}

public 
fw_TraceAttack_Sg(VictimAttackerFloat:DamageFloat:Direction[3], TraceHandleDamageBitptr)
{         
   return 
HAM_IGNORED
}

public 
Event_CurWeapon(id)
{
   
   if(!
is_user_alive(id))
      return 
   
   if(
get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
   {
      
set_pev(idpev_viewmodel2v_model)
      
set_pev(idpev_weaponmodel2p_model)
      
set_pdata_string(id492 4WEAPON_ANIMEXT, -20)
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] >= 1set_weapon_anim(idANIM_DRAW)
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] == && headshot_mode[id] == 0set_weapon_anim(idANIM_DRAW_EMPTY)
      else if(
g_old_weapon[id] != CSW_BDRIPPER && shoot_mode[id] == 1set_weapon_anim(idANIM_DRAW_EMPTY)
         
      
update_ammo(id)
   }
   
   
g_old_weapon[id] = get_user_weapon(id)
}

public 
fw_guillotineidleanim(Weapon)
{
   new 
id get_pdata_cbase(Weapon414)
   
   if(!
is_user_alive(id) || ze_is_user_zombie(id) || !g_had_guillotine[id] || get_user_weapon(id) != CSW_BDRIPPER)
      return 
HAM_IGNORED;
   
   if(
shoot_mode[id] == && g_guillotine_ammo[id] >= 1
      return 
HAM_SUPERCEDE;
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT2)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
g_guillotine_ammo[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_EMPTY)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   return 
HAM_IGNORED;
}

public 
fw_CmdStart(iduc_handleseed)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return
   if(
get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return
   
   static 
entent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   
//if(!pev_valid(ent))
   //   return
   
if(get_pdata_float(ent46OFFSET_LINUX_WEAPONS) > 0.0 || get_pdata_float(ent47OFFSET_LINUX_WEAPONS) > 0.0
      return
   
   static 
CurButton
   CurButton 
get_uc(uc_handleUC_Buttons)
   
   if(
CurButton IN_ATTACK)
   {
      
CurButton &= ~IN_ATTACK
      set_uc
(uc_handleUC_ButtonsCurButton)
      
      
//if(g_guillotine_ammo[id] == 0)
      //   return
      
if(shoot_mode[id] == && get_pdata_float(id835) <= 0.0)
      {
         
//g_guillotine_ammo[id]--
         //update_ammo(id)
         
shoot_mode[id] = 1                        
         set_task
(0.2"FireKnife"id)
         
set_weapon_anim(idANIM_SHOOT)
         
emit_sound(idCHAN_WEAPONweapon_sound[5], 1.0ATTN_NORM0PITCH_NORM)
         
set_weapons_timeidle(idCSW_BDRIPPER0.7)
         
set_player_nextattackx(id0.7)
      }
   }
}

public 
FireKnife(id)
{
   static 
Float:StartOrigin[3], Float:velocity[3], Float:angles[3], Float:anglestrue[3], Float:jarak_max[3]
   static 
EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   if(!
pev_valid(Ent)) return
   
get_position(id10.00.0, -2.0StartOrigin)     
   
get_position(id900.00.00.0jarak_max)
   
//static ent; ent = fm_get_user_weapon_entity(id, CSW_BDRIPPER)
   
pev(id,pev_v_angle,angles)
   
   
anglestrue[0] = 360.0 angles[0]
   
anglestrue[1] = angles[1]
   
anglestrue[2] = angles[2]
   
   
// Set info for ent
   
set_pev(Entpev_movetypeMOVETYPE_FLY)
   
set_pev(Entpev_ownerid)
   
set_pev(Entpev_iuser1id)
   
set_pev(Entpev_fuser1get_gametime() + 4.0)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
   
   
entity_set_string(EntEV_SZ_classnameBDRIP_CLASSNAME)
   
engfunc(EngFunc_SetModelEntKNIFE_MODEL)
   
set_pev(Entpev_minsFloat:{-1.0, -1.0, -1.0})
   
set_pev(Entpev_maxsFloat:{1.01.01.0})
   
set_pev(Entpev_originStartOrigin)
   
set_pev(Entpev_anglesanglestrue)
   
set_pev(Entpev_gravity0.01)
   
set_pev(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_frame1.0)
   
set_pev(Entpev_framerate1.0)
   
set_pev(Entpev_sequence0)
   
//ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
   
set_pev(Entpev_catchedspeed1100)
   
velocity_by_aimid1400velocity )
   
set_pevEntpev_velocityvelocity )
   
set_pev(Entpev_vuser1velocity)
   
set_pev(Entpev_vuser2jarak_max)
   
shoot_ent_mode[id] = 0
   set_pev
(Entpev_iuser40)
   
ent_sentuh[id] = 1
   ent_sentuh_balik
[id] = 0
}

public 
fm_addtofullpack_post(eseuserhosthost_flagsplayerp_set)
{
   if(!
player)
      return 
FMRES_IGNORED
   
   
if(!is_user_connected(host) || !is_user_alive(user))
      return 
FMRES_IGNORED
   
   
if(!ze_is_user_zombie(user) || headshot_korban[user] != 1)
      return 
FMRES_IGNORED
   
   
if(host == user)
      return 
FMRES_IGNORED
   
   
new Float:PlayerOrigin[3]//, Float:anglesss[3]
   
pev(userpev_originPlayerOrigin)
   
   
PlayerOrigin[2] += 25.0
   
   
//engfunc(EngFunc_GetBonePosition, user, 8, PlayerOrigin, anglesss)
   
   
engfunc(EngFunc_SetOriginguillotine_korban[user], PlayerOrigin)
   
   return 
FMRES_HANDLED
}

public 
fw_Think(Ent)
{
   if(!
pev_valid(Ent)) 
      return
   
   
//new id; id = pev(Ent, pev_owner)
   
static Float:pulang[3], Float:StartOriginz[3], pemilixFloat:brangkat[3], Float:jarak_max[3], Float:origin_asli[3], korban
   pemilix 
pev(Entpev_iuser1)
   
pev(Entpev_originStartOriginz)
   
korban pev(Entpev_iuser2)
   
   if(
headshot_korban[korban] == 1)
   {
      
action_thanatos(Entkorbanpemilix)
      if(
get_gametime() - 0.15 pev(Entpev_fuser3))
      {                         
         
Damage_guillotine(Entkorban)     
      }
   }
   
   if(
ent_sentuh_balik[pemilix] == && shoot_ent_mode[pemilix] == 1)
   {
      
ent_sentuh_balik[pemilix] = 1
      pev
(pemilixpev_originorigin_asli)
      
origin_asli[2] += 0.1
   
}
   
   if(
ent_sentuh[pemilix] == 1)
   {
      
ent_sentuh[pemilix] = 0
      pev
(Entpev_vuser2jarak_max)
      
pev(Entpev_vuser1brangkat)               
      
get_speed_vector(StartOriginzorigin_asli1400.0pulang)
      
      if(
shoot_ent_mode[pemilix] == 1
      {
         
set_pev(Entpev_velocitypulang)
      }            
      else 
set_pev(Entpev_velocitybrangkat)
      
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzjarak_max) <= 40.0)
   {
      
shoot_ent_mode[pemilix] = 1
      ent_sentuh
[pemilix] = 1
      set_pev
(Entpev_owner0)
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzorigin_asli) <= 40.0)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   else if(
headshot_korban[korban] == 1set_pev(Entpev_nextthinkget_gametime() + 0.2)
      else 
set_pev(Entpev_nextthinkhalflife_time() + 0.001)
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3])
{
   
new_velocity[0] = origin2[0] - origin1[0]
   
new_velocity[1] = origin2[1] - origin1[1]
   
new_velocity[2] = origin2[2] - origin1[2]
   static 
Float:numnum floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
   
new_velocity[0] *= num
   new_velocity
[1] *= num
   new_velocity
[2] *= num
   
   
return 1;
}


stock hook_ent(victimattackerFloat:speed)
{
   if(!
pev_valid(victim) || !pev_valid(attacker))
      return
   
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3], Float:VicOrigin[3]
   
   
pev(victimpev_originEntOrigin)
   
pev(attackerpev_originVicOrigin)
   
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   if (
distance_f 60.0)
   {
      new 
Float:fl_Time distance_f speed
      
      fl_Velocity
[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
      fl_Velocity
[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
      fl_Velocity
[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
      
} else {
      
fl_Velocity[0] = 0.0
      fl_Velocity
[1] = 0.0
      fl_Velocity
[2] = 0.0
   
}
   
   
entity_set_vector(victimEV_VEC_velocityfl_Velocity)
}

stock hook_ent2(entFloat:VicOrigin[3], Float:speedtype)
{
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3]
   static 
Float:EntVelocity[3]
   
   
pev(entpev_velocityEntVelocity)
   
pev(entpev_originEntOrigin)
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   static 
Float:fl_Timefl_Time distance_f speed
   
   
if(type == 1)
   {
      
fl_Velocity[0] = ((VicOrigin[0] - EntOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((VicOrigin[1] - EntOrigin[1]) / fl_Time)
      
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time      
      
} else if(type == 2) {
      
fl_Velocity[0] = ((EntOrigin[0] - VicOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((EntOrigin[1] - VicOrigin[1]) / fl_Time
      
fl_Velocity[2] = (EntOrigin[2] - VicOrigin[2]) / fl_Time
   
}
   
   
xs_vec_add(EntVelocityfl_Velocityfl_Velocity)
   
set_pev(entpev_velocityfl_Velocity)
}

public 
fw_touch(EntId)
{
   
// If ent is valid
   
if(!pev_valid(Ent))
      return
   if(
pev(Entpev_movetype) == MOVETYPE_NONE)
      return
   
   static 
classnameptd[32]
   
pev(Idpev_classnameclassnameptd31)
   if (
equali(classnameptd"func_breakable")) ExecuteHamBHam_TakeDamageId0080.0DMG_GENERIC )
   
//static korban
   //korban = pev(Ent, pev_iuser2)
   
   // Get it's origin
   
new Float:originF[3], pemilix 
   
//static id2
   //id2 = pev(Ent, pev_owner)
   
pemilix pev(Entpev_iuser1)
   
pev(Entpev_originoriginF)
   
// Alive...
   //new id = read_data(2)
   
if(is_user_alive(Id) && ze_is_user_zombie(Id))
   {
      
fakedamage(Id"Guillotine"1.0256)
      
Damage_guillotine(EntId)  
      
geri_tepme(pemilixId)      
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1                  
      create_blood
(originF)
      
//create_blood(originF)
   
}
   
   else if(
shoot_ent_mode[pemilix] == && Id == pemilix)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   
   else if(
is_user_alive(Id) && !ze_is_user_zombie(Id))
   {
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1
   
}
   
   else
   {
      
set_pev(Entpev_owner0)
      
      if(
shoot_ent_mode[pemilix] == 0)
      {
         
shoot_ent_mode[pemilix] = 1
         engfunc
(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall1.0ATTN_STATIC0PITCH_NORM)
         
ent_sentuh[pemilix] = 1
      
}
      else 
ancur(Ent)
   }
   
}

public 
ancur(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
Float:origin2[3], pemilixFloat:origin3[3]
   
pemilix pev(Entpev_iuser1)
   
entity_get_vector(EntEV_VEC_originorigin2)
   
pev(Entpev_originorigin3)
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
//fake_smokes(origin3)
   
engfunc(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall21.0ATTN_STATIC0PITCH_NORM)
   
shoot_mode[pemilix] = 0
   remove_entity
(Ent)
   
   if(!
is_user_alive(pemilix) || !is_user_connected(pemilix) || get_user_weapon(pemilix) != CSW_BDRIPPER || !g_had_guillotine[pemilix])
      return
   
   
set_weapon_anim(pemilixANIM_LOST)
   
set_weapons_timeidle(pemilixCSW_BDRIPPER2.5)
   
set_player_nextattackx(pemilix2.5)
   
set_task(1.3"reload2"pemilix)
   
set_task(1.4"reload"pemilix)
}

public 
geri_tepme2(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)
}

public 
action_thanatos(Entvictimid)
{         
   if(!
pev_valid(Ent))   
      return
   
   if(
headshot_mode[id] == 1)
   {
      
      
//geri_tepme2(id, victim)
      
      
set_task(0.01"action_thanatos"Ent)
   }
}

public 
reload(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_DRAW)
}

public 
reload2(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_IDLE_SHOOT2)
}

public 
balik(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
id
   id 
pev(Entpev_iuser1)
   
   
set_weapons_timeidle(idCSW_BDRIPPER1.0)
   
set_player_nextattackx(id1.0)
   
shoot_mode[id] = 0
   g_guillotine_ammo
[id]++
   
update_ammo(id)
   
set_weapon_anim(idANIM_CATCH)
   
emit_sound(idCHAN_WEAPONweapon_sound[0], 1.0ATTN_NORM0PITCH_NORM)    
   
remove_entity(Ent)
}

/*new Float:g_fDamageMulti[] = 
{
1.0,
1.1,
1.2,
1.3,
1.4,
1.5,
1.6,
1.7,
1.8,
1.9,
2.0,
2.1,
2.2,
2.3
}*/

public geri_tepme(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)                    
}

public 
Damage_guillotine(EntId)
{
   static 
OwnerOwner pev(Entpev_iuser1)
   static 
Attacker
   if(!
is_user_alive(Owner)) 
   {
      
Attacker 0
      
return
   } else 
Attacker Owner

   
if(g_endround)
      return
   
   new 
bool:bIsHeadShot// never make that one static
   
new Float:flAdjustedDamagebool:death
   
switch( Get_MissileWeaponHitGroup(Ent) ) 
   {
      case 
HIT_GENERICflAdjustedDamage DAMAGE 1.0 
         
case HIT_STOMACHflAdjustedDamage DAMAGE 1.5 
         
case HIT_LEFTLEGHIT_RIGHTLEGflAdjustedDamage DAMAGE 1.0
         
case HIT_LEFTARMHIT_RIGHTARMflAdjustedDamage DAMAGE 1.0
         
case HIT_HEADHIT_CHEST:
      {
         
flAdjustedDamage DAMAGE 2.5
         bIsHeadShot 
true;
         if(
headshot_mode[Owner] == 0set_task(2.0"balik_bro"Ent+1858941 )
         
headshot_mode[Owner] = 1
         headshot_korban
[Id] = 
         guillotine_korban
[Id] = Ent
         set_pev
(Entpev_iuser2Id)              
         
fakedamage(Id"Guillotine"1.0256
         
set_pev(Entpev_renderamt255)
         
set_pev(Entpev_solidSOLID_NOT)
         
set_pev(Entpev_fuser30.0)
      }
   }
   if(
pev(Idpev_health) <= flAdjustedDamagedeath true 
   
   
if(is_user_alive(Id))
   {
      if( 
bIsHeadShot && death)
      {
         if(
task_existsEnt+1858941 )) remove_taskEnt 1858941 )
         
set_pev(Entpev_sequence0)
         
headshot_korban[pev(Entpev_iuser2)] = 0
         headshot_mode
[Owner] = 0
         shoot_ent_mode
[Owner] = 1
         ent_sentuh
[Owner] = 1
         ent_sentuh_balik
[Owner] = 0
         set_pev
(Entpev_solidSOLID_BBOX)
         
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
         
         
kill(AttackerId1)
         
         
death false         
      
}
      if(
death)
      {
         
kill(AttackerId0)
         
         
death false         
      
}
      else 
ExecuteHamB(Ham_TakeDamageIdEntAttackerflAdjustedDamageDMG_CLUB)
   }
}


stock turn_to_target(entFloat:Ent_Origin[3], targetFloat:Vic_Origin[3]) 
{
   if(
target
   {
      new 
Float:newAngle[3]
      
entity_get_vector(entEV_VEC_anglesnewAngle)
      new 
Float:Vic_Origin[0] - Ent_Origin[0]
      new 
Float:Vic_Origin[1] - Ent_Origin[1]
      
      new 
Float:radians floatatan(z/xradian)
      
newAngle[1] = radians * (180 3.14)
      if (
Vic_Origin[0] < Ent_Origin[0])
         
newAngle[1] -= 180.0
      
      entity_set_vector
(entEV_VEC_anglesnewAngle)
   }
}

public 
balik_bro(Ent)
{
   
Ent -= 1858941
   
   
if(!pev_valid(Ent))
      return
   
   static 
pemilixpemilix pev(Entpev_iuser1)
   
set_pev(Entpev_sequence0)
   
headshot_korban[pev(Entpev_iuser2)] = 0
   headshot_mode
[pemilix] = 0
   shoot_ent_mode
[pemilix] = 1
   ent_sentuh
[pemilix] = 1
   ent_sentuh_balik
[pemilix] = 0
   set_pev
(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
}

public 
fw_SetModel(entitymodel[])
{
   if(!
pev_valid(entity))
      return 
FMRES_IGNORED
   
   
static Classname[64]
   
pev(entitypev_classnameClassnamesizeof(Classname))
   
   if(!
equal(Classname"weaponbox"))
      return 
FMRES_IGNORED
   
   
static id
   id 
pev(entitypev_owner)
   
   if(
equal(modelold_w_model))
   {
      static 
weapon
      weapon 
fm_get_user_weapon_entity(entityCSW_BDRIPPER)
      
      if(!
pev_valid(weapon))
         return 
FMRES_IGNORED
      
      
if(g_had_guillotine[id])
      {
         
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
         
set_pev(weaponpev_iuser4g_guillotine_ammo[id])
         
engfunc(EngFunc_SetModelentityw_model)
         
         
g_had_guillotine[id] = 0
         g_guillotine_ammo
[id] = 0
         
         
return FMRES_SUPERCEDE
      
}
   }
   
   return 
FMRES_IGNORED;
}

public 
fw_AddToPlayer_Post(entid)
{
   if(
pev(entpev_impulse) == WEAPON_SECRETCODE)
   {
      
g_had_guillotine[id] = 1
      g_guillotine_ammo
[id] = pev(entpev_iuser4)
      
      
set_pev(entpev_impulse0)
   }         
   
/*
   message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
   write_string((g_had_guillotine[id] == 1 ? "weapon_guillotine" : "weapon_mac10"))
   write_byte(6)
   write_byte(100)
   write_byte(-1)
   write_byte(-1)
   write_byte(0)
   write_byte(13)
   write_byte(CSW_BDRIPPER)
   write_byte(0)*/
}

public 
update_ammo(id)
{
   if(!
is_user_alive(id))
      return
   
   static 
weapon_entweapon_ent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   if(!
pev_valid(weapon_ent)) return
   
   
cs_set_weapon_ammo(weapon_entg_guillotine_ammo[id])   
   
//cs_set_user_bpammo(id, CSW_BDRIPPER, g_guillotine_ammo[id])
   
   
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEget_user_msgid("CurWeapon"), {000}, id)
   
write_byte(1)
   
write_byte(CSW_BDRIPPER)
   
write_byte(-1)
   
message_end()
   
   
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("AmmoX"), _id)
   
write_byte(1)
   
write_byte(g_guillotine_ammo[id])
   
message_end()
}

public 
fw_traceline(Float:v1[3],Float:v2[3],noMonsters,id,ptr)
{
   if(!
is_user_alive(id))
      return 
HAM_IGNORED   
   
if(get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return 
HAM_IGNORED
   
   
// get crosshair aim
   
static Float:aim[3];
   
get_aim(id,v1,aim);
   
   
// do another trace to this spot
   
new trace create_tr2();
   
engfunc(EngFunc_TraceLine,v1,aim,noMonsters,id,trace);
   
   
// copy ints
   
set_tr2(ptr,TR_AllSolid,get_tr2(trace,TR_AllSolid));
   
set_tr2(ptr,TR_StartSolid,get_tr2(trace,TR_StartSolid));
   
set_tr2(ptr,TR_InOpen,get_tr2(trace,TR_InOpen));
   
set_tr2(ptr,TR_InWater,get_tr2(trace,TR_InWater));
   
set_tr2(ptr,TR_pHit,get_tr2(trace,TR_pHit));
   
set_tr2(ptr,TR_iHitgroup,get_tr2(trace,TR_iHitgroup));
   
   
// copy floats
   
get_tr2(trace,TR_flFraction,aim[0]);
   
set_tr2(ptr,TR_flFraction,aim[0]);
   
get_tr2(trace,TR_flPlaneDist,aim[0]);
   
set_tr2(ptr,TR_flPlaneDist,aim[0]);
   
   
// copy vecs
   
get_tr2(trace,TR_vecEndPos,aim);
   
set_tr2(ptr,TR_vecEndPos,aim);
   
get_tr2(trace,TR_vecPlaneNormal,aim);
   
set_tr2(ptr,TR_vecPlaneNormal,aim);
   
   
// get rid of new trace
   
free_tr2(trace);
   
   return 
FMRES_IGNORED;
}

get_aim(id,Float:source[3],Float:ret[3])
{
static 
Float:vAngle[3], Float:pAngle[3], Float:dir[3], Float:temp[3];

// get aiming direction from forward global based on view angle and punch angle
pev(id,pev_v_angle,vAngle);
pev(id,pev_punchangle,pAngle);
xs_vec_add(vAngle,pAngle,temp);
engfunc(EngFunc_MakeVectors,temp);
global_get(glb_v_forward,dir);

/* vecEnd = vecSrc + vecDir * flDistance; */
xs_vec_mul_scalar(dir,8192.0,temp);
xs_vec_add(source,temp,ret);
}

public 
fake_smokes(Float:Origin[3])
{
static 
TE_FLAG

TE_FLAG 
|= TE_EXPLFLAG_NODLIGHTS
TE_FLAG 
|= TE_EXPLFLAG_NOSOUND
TE_FLAG 
|= TE_EXPLFLAG_NOPARTICLES

engfunc
(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYOrigin0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoordOrigin[0])
engfunc(EngFunc_WriteCoordOrigin[1])
engfunc(EngFunc_WriteCoordOrigin[2])
write_short(g_smokepuff_id)
write_byte(6)
write_byte(25)
write_byte(TE_FLAG)
message_end()
}

stock set_weapon_anim(idanim)
{
   if(!
is_user_alive(id))
      return
   
   
set_pev(idpev_weaponanimanim)
   
   
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
   
write_byte(anim)
   
write_byte(pev(idpev_body))
   
message_end()
}

stock kill(kvheadshot)
{
   
//cs_set_user_money(k, cs_get_user_money(k) + 500)
   
   
set_user_frags(kget_user_frags(k) + 1)
   
   
set_msg_block(g_MsgDeathMsg,BLOCK_ONCE)
   
set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
   
user_kill(v,1)
   
   new 
kteam get_user_team(k);
   new 
vteam get_user_team(v);
   
   new 
kfrags get_user_frags(k);
   new 
kdeaths get_user_deaths(k);
   
   new 
vfrags get_user_frags(v);
   new 
vdeaths get_user_deaths(v);
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(k);
   
ewrite_short(kfrags);
   
ewrite_short(kdeaths);
   
ewrite_short(0);
   
ewrite_short(kteam);
   
emessage_end();
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(v);
   
ewrite_short(vfrags);
   
ewrite_short(vdeaths);
   
ewrite_short(0);
   
ewrite_short(vteam);
   
emessage_end();
   
   
emessage_begin(MSG_BROADCASTg_MsgDeathMsg)
   
ewrite_byte(k)
   
ewrite_byte(v)
   
ewrite_byte(headshot)
   
ewrite_string("guillotine")
   
emessage_end()
}


stock create_blood(const Float:origin[3])
{
   
// Show some blood :)
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
   
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
}

stock drop_weapons(iddropwhat)
{
   static 
weapons[32], numiweaponid
   num 
0
   get_user_weapons
(idweaponsnum)
   
   for (
0numi++)
   {
      
weaponid weapons[i]
      
      if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
      {
         static 
wname[32]
         
get_weaponname(weaponidwnamesizeof wname 1)
         
engclient_cmd(id"drop"wname)
      }
   }
}

stock Get_MissileWeaponHitGroupiEnt )
{
   new 
Float:flStart], Float:flEnd];
   
   
peviEntpev_originflStart );
   
peviEntpev_velocityflEnd );
   
xs_vec_addflStartflEndflEnd );
   
   new 
ptr create_tr2();
   
engfuncEngFunc_TraceLineflStartflEnd0iEntptr );
   
   new 
iHitGroupOwnernOheadhead
   Owner 
pev(iEntpev_iuser1)
   
nOhead get_tr2ptrTR_iHitgroup )
   
head set_tr2ptrTR_iHitgroupHIT_HEAD )
   
   
iHitGroup headshot_mode[Owner] ? head nOhead
   
   free_tr2
ptr );
   
   return 
iHitGroup;
}

stock get_position(id,Float:forwFloat:rightFloat:upFloat:vStart[])
{
   static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
   
   
pev(idpev_originvOrigin)
   
pev(idpev_view_ofsvUp//for player
   
xs_vec_add(vOriginvUpvOrigin)
   
pev(idpev_v_anglevAngle// if normal entity ,use pev_angles
   
   
angle_vector(vAngleANGLEVECTOR_FORWARDvForward//or use EngFunc_AngleVectors
   
angle_vector(vAngleANGLEVECTOR_RIGHTvRight)
   
angle_vector(vAngleANGLEVECTOR_UPvUp)
   
   
vStart[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
   vStart
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
   vStart
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}

stock set_weapons_timeidle(idWeaponId ,Float:TimeIdle)
{
   if(!
is_user_alive(id))
      return
   
   static 
entwpnentwpn fm_get_user_weapon_entity(idWeaponId)
   if(!
pev_valid(entwpn)) 
      return
   
   
set_pdata_float(entwpn48TimeIdle 0.2OFFSET_LINUX_WEAPONS)
}


stock set_player_nextattackx(idFloat:nexttime)
{
    if(!
is_user_alive(id))
        return
       
    
set_pdata_float(id83nexttime5)


public 
CurrentWeapon(id)
{
    
replace_weapon_models(idread_data(2))
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_KNIFE:
        {
            if(!
ze_is_user_zombie(id))
            {
                
set_pev(idpev_viewmodel2bicakmodel[0][gorunum[id]][0])
            }
        }
    }
}

stock renkli_yazi(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msgsizeof(msg) - 1input3)
    
    
replace_all(msg190"!n""^x01")
    
replace_all(msg190"!g""^x04")
    
replace_all(msg190"!t""^x03")
    
    if(
idplayers[0] = id; else get_players(playerscount"ch")
    for(new 
0counti++)
    {
        if(
is_user_connected(players[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
            
write_byte(players[i])
            
write_string(msg)
            
message_end()
        }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/ 
sPed is offline
J@y
Member
Join Date: Feb 2022
Old 12-23-2022 , 17:54   Re: Gilloutine Help
Reply With Quote #6

Quote:
Originally Posted by sPed View Post
to open knife menu say /knife & to get gilloutine knife say /gui
gilloutine knife is only for VIP's who have flag "T"

PHP Code:
#include <zombie_escape>
#include <engine>
#include <fakemeta_util>
#include <cstrike>
#include <fun>


#define PLUGIN "Guillotine"
#define VERSION "1.3"
#define AUTHOR "m4m3ts"
 
#define CSW_BDRIPPER CSW_KNIFE
#define weapon_guillotine "weapon_knife"
#define old_event "events/mac10.sc"
#define old_w_model "models/w_mac10.mdl"
#define WEAPON_SECRETCODE 1329419

const pev_catchedspeed pev_iuser4
#define DEFAULT_AMMO 10
#define RELOAD_TIME 0.435
#define DAMAGE 30
#define BDRIP_CLASSNAME "Blood Dripper"
#define WEAPON_ANIMEXT "knife"

#define Get_Ent_Data(%1,%2) get_pdata_int(%1,%2,4)
#define Set_Ent_Data(%1,%2,%3) set_pdata_int(%1,%2,%3,4)

const PDATA_SAFE 2
const OFFSET_LINUX_WEAPONS 4
const OFFSET_WEAPONOWNER 41
const m_flNextAttack 83

new gorunum[33]

new 
bicakmodel[][][] =
{
    {
CSW_KNIFE,
    
"models/tayo_knife/v_nata.mdl",
    
"models/tayo_knife/v_shadowaxe.mdl",
    
"models/tayo_knife/v_warhammer.mdl",
    
"models/tayo_knife/v_katanahf.mdl",
    
"models/tayo_knife/v_dualkatana_xmas.mdl"
    
}
}


new const 
v_model[] = "models/tayo_guillotine/v_guillotine2.mdl"
new const p_model[] = "models/p_guillotine.mdl"
new const w_model[] = "models/w_guillotine.mdl"
new const KNIFE_MODEL[] = "models/guillotine_projectile.mdl"
new const PECAH_MODEL[] = "models/gibs_guilotine.mdl"
new const hit_wall[] = "weapons/janus9_stone1.wav"
new const hit_wall2[] = "weapons/janus9_stone2.wav"
new const weapon_sound[6][] = 
{
"weapons/guillotine_catch2.wav",
"weapons/guillotine_draw.wav",
"weapons/guillotine_draw_empty.wav",
"weapons/guillotine_explode.wav",
"weapons/guillotine_red.wav",
"weapons/guillotine-1.wav"
}


new const 
WeaponResource[3][] = 
{
"sprites/weapon_guillotine.txt",
"sprites/640hud120.spr",
"sprites/guillotine_lost.spr"
}

enum
{
ANIM_IDLE 0,
ANIM_IDLE_EMPTY,
ANIM_SHOOT,
ANIM_DRAW,
ANIM_DRAW_EMPTY,
ANIM_IDLE_SHOOT,
ANIM_IDLE_SHOOT2,
ANIM_CATCH,
ANIM_LOST
}

new 
g_MsgDeathMsgg_endround

new g_had_guillotine[33], g_guillotine_ammo[33], shoot_mode[33], shoot_ent_mode[33], g_pecahheadshot_mode[33], ent_sentuh[33], ent_sentuh_balik[33]
new 
g_old_weapon[33], g_smokepuff_idm_iBlood[2], guillotine_korban[33], headshot_korban[33], gmsgScoreInfo

const PRIMARY_WEAPONS_BIT_SUM 
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
//new TargetOrigin[3] 
new g_gui
public plugin_init()
{
   
register_plugin(PLUGINVERSIONAUTHOR)
   
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack_Sg")
   
register_forward(FM_CmdStart"fw_CmdStart")
   
register_forward(FM_SetModel"fw_SetModel")
   
register_think(BDRIP_CLASSNAME"fw_Think")

   
//Knife menu
   
register_clcmd("say /knife","knifemenu")
   
register_clcmd("say_team /knife","knifemenu")

   
register_clcmd("say /gui","item_selected")
   
register_clcmd("say_team /gui","item_selected")

   
register_event("CurWeapon","CurrentWeapon","be","1=1")
   
register_event("HLTV""EventHLTV""a""1=0""2=0")
   
register_touch(BDRIP_CLASSNAME"*""fw_touch")
   
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
   
register_forward(FM_TraceLine"fw_traceline"1)
   
register_forward(FM_AddToFullPack"fm_addtofullpack_post"1)
   
RegisterHam(Ham_Spawn"player""Player_Spawn"1)
   
RegisterHam(Ham_Weapon_WeaponIdleweapon_guillotine"fw_guillotineidleanim"1)
   
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
   
RegisterHam(Ham_Item_AddToPlayerweapon_guillotine"fw_AddToPlayer_Post"1)
   
register_event("CurWeapon""Event_CurWeapon""be""1=1")
   
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
   
register_clcmd("weapon_guillotine""hook_weapon")
   
g_MsgDeathMsg get_user_msgid("DeathMsg")
   
gmsgScoreInfo get_user_msgid("ScoreInfo"

   
register_logevent("logevent_round_end"2"1=Round_End")
   
g_endround 1
}


public 
plugin_precache()
{
   
precache_model(bicakmodel[0][1])
   
precache_model(bicakmodel[0][2])
   
precache_model(bicakmodel[0][3])
   
precache_model(bicakmodel[0][4])
   
precache_model(bicakmodel[0][5])
   
precache_model(v_model)
   
precache_model(p_model)
   
precache_model(w_model)
   
precache_model(KNIFE_MODEL)
   
g_pecah precache_model(PECAH_MODEL)
   
precache_sound(hit_wall)
   
precache_sound(hit_wall2)

   for(new 
0sizeof(weapon_sound); i++) 
   
precache_sound(weapon_sound[i])

   for(new 
1sizeof(WeaponResource); i++)
   
precache_model(WeaponResource[i])

   
g_smokepuff_id engfunc(EngFunc_PrecacheModelWeaponResource[2])
   
m_iBlood[0] = precache_model("sprites/blood.spr")
   
m_iBlood[1] = precache_model("sprites/bloodspray.spr")   
}

public 
ze_user_infected(id)
{
   
remove_guillotine(id)
   
g_gui 0
}

public 
EventHLTV()
{
g_endround 0
g_gui 
1
}

public 
client_connect(id)
{
    
gorunum[id] = 1
}

public 
knifemenu(id)
{
  if(!
ze_is_user_zombie(id))
  {
    new 
menuz;
    static 
amenu[512];
    
formatex(amenu,charsmax(amenu),"\r[ZE] \yKnife Menu")
    
menuz menu_create(amenu,"knifemenu_devam")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wNata")
    
menu_additem(menuz,amenu,"1")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wShadowAxe")
    
menu_additem(menuz,amenu,"2")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wWarhammer")
    
menu_additem(menuz,amenu,"3")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wKatana")
    
menu_additem(menuz,amenu,"4")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wDualKatana")
    
menu_additem(menuz,amenu,"5")

    if(
get_user_flags(id) & ADMIN_LEVEL_H)
    {
        
formatex(amenu,charsmax(amenu),"| \r- \wGuillatione \y[VIP]")
    }
    else
    {
        
formatex(amenu,charsmax(amenu),"| \r- \dGuillatione \r[VIP]")
    }        
    
menu_additem(menuz,amenu,"6")
    
    
menu_setprop(menuz,MPROP_EXIT,MEXIT_ALL)
    
menu_display(id,menuz,0)

  }
  return 
PLUGIN_HANDLED
}

public 
knifemenu_devam(id,menu,item)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    new 
access,callback,data[6],iname[64]
    
    
menu_item_getinfo(menu,item,access,data,5,iname,63,callback)
    
    new 
key str_to_num(data)
    
    if(
key == 1)
    {
        
gorunum[id] = 1
                remove_guillotine
(id)
    }
    else if(
key == 2)
    {
        
gorunum[id] = 2
                remove_guillotine
(id)
    }
    else if(
key == 3)
    {
        
gorunum[id] = 3
                remove_guillotine
(id)
    }
    else if(
key == 4)
    {
        
gorunum[id] = 4
                remove_guillotine
(id)
    }
    else if(
key == 5)
    {
        
gorunum[id] = 5
                remove_guillotine
(id)
    }
    else if(
key == 6)
    {
        if(
get_user_flags(id) & ADMIN_LEVEL_H)
        {
                        
get_blood(id)
        }
        else
        {
            
renkli_yazi(id"!g[ZE]!t Yetkin Yok. !g|| !tOnly For VIPS.")
            
knifemenu(id)
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
logevent_round_end() g_endround 1

public Player_Spawn(id)
{
get_blood(id)

if(
g_gui)
{
if(
get_user_flags(id) & ADMIN_LEVEL_E)get_blood(id)
}   
}

public 
fw_PlayerKilled(id)
{
remove_guillotine(id)
}

public 
hook_weapon(id)
{
engclient_cmd(idweapon_guillotine)
return
}

new 
g_itemid
public item_selected(iditemid)
{   
if (!
is_user_alive(id)){
   
client_print(idprint_chat"")
   return
}
if (
ze_is_user_zombie(id)){
   
client_print(idprint_chat"")
   return
}
if(
itemid==g_itemid){
   new 
para = (get_user_flags(id) & ADMIN_LEVEL_H)
   
   if (
para >= 0){
      if(
get_user_flags(id) & ADMIN_LEVEL_H)
      
get_blood(id)
      
client_print(idprint_chat"")
   }
   else{
      
client_print(idprint_chat"[ZE]: You have no access")
   }
}
}

public 
get_blood(id)
{
   if(!(
get_user_flags(id) & ADMIN_LEVEL_H))
      return
   
drop_weapons(id0)
   
g_had_guillotine[id] = 1
   g_guillotine_ammo
[id] = DEFAULT_AMMO
   
   give_item
(idweapon_guillotine)
   
update_ammo(id)
   
   
//static weapon_ent; weapon_ent = fm_find_ent_by_owner(-1, weapon_guillotine, id)
   //if(pev_valid(weapon_ent)) cs_set_weapon_ammo(weapon_ent, 1)
}

public 
remove_guillotine(id)
{
   
g_had_guillotine[id] = 0
   
static EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   
ancur(Ent)
}

public 
refill_guillotine(id)
{   
   if(
g_had_guillotine[id]) g_guillotine_ammo[id] = 15
   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id]) update_ammo(id)
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return 
FMRES_IGNORED   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
      
set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001
   
   return 
FMRES_HANDLED
}

public 
message_DeathMsg(msg_idmsg_destid)
{
   static 
szTruncatedWeapon[33], iAttackeriVictim
   
   get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
   
   
iAttacker get_msg_arg_int(1)
   
iVictim get_msg_arg_int(2)
   
   if(!
is_user_connected(iAttacker) || iAttacker == iVictim) return PLUGIN_CONTINUE
   
   
if(get_user_weapon(iAttacker) == CSW_BDRIPPER)
   {
      if(
g_had_guillotine[iAttacker])
         
set_msg_arg_string(4"knife")
   }
   
   return 
PLUGIN_CONTINUE
}

public 
fw_TraceAttack_Sg(VictimAttackerFloat:DamageFloat:Direction[3], TraceHandleDamageBitptr)
{         
   return 
HAM_IGNORED
}

public 
Event_CurWeapon(id)
{
   
   if(!
is_user_alive(id))
      return 
   
   if(
get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
   {
      
set_pev(idpev_viewmodel2v_model)
      
set_pev(idpev_weaponmodel2p_model)
      
set_pdata_string(id492 4WEAPON_ANIMEXT, -20)
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] >= 1set_weapon_anim(idANIM_DRAW)
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] == && headshot_mode[id] == 0set_weapon_anim(idANIM_DRAW_EMPTY)
      else if(
g_old_weapon[id] != CSW_BDRIPPER && shoot_mode[id] == 1set_weapon_anim(idANIM_DRAW_EMPTY)
         
      
update_ammo(id)
   }
   
   
g_old_weapon[id] = get_user_weapon(id)
}

public 
fw_guillotineidleanim(Weapon)
{
   new 
id get_pdata_cbase(Weapon414)
   
   if(!
is_user_alive(id) || ze_is_user_zombie(id) || !g_had_guillotine[id] || get_user_weapon(id) != CSW_BDRIPPER)
      return 
HAM_IGNORED;
   
   if(
shoot_mode[id] == && g_guillotine_ammo[id] >= 1
      return 
HAM_SUPERCEDE;
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT2)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
g_guillotine_ammo[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_EMPTY)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   return 
HAM_IGNORED;
}

public 
fw_CmdStart(iduc_handleseed)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return
   if(
get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return
   
   static 
entent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   
//if(!pev_valid(ent))
   //   return
   
if(get_pdata_float(ent46OFFSET_LINUX_WEAPONS) > 0.0 || get_pdata_float(ent47OFFSET_LINUX_WEAPONS) > 0.0
      return
   
   static 
CurButton
   CurButton 
get_uc(uc_handleUC_Buttons)
   
   if(
CurButton IN_ATTACK)
   {
      
CurButton &= ~IN_ATTACK
      set_uc
(uc_handleUC_ButtonsCurButton)
      
      
//if(g_guillotine_ammo[id] == 0)
      //   return
      
if(shoot_mode[id] == && get_pdata_float(id835) <= 0.0)
      {
         
//g_guillotine_ammo[id]--
         //update_ammo(id)
         
shoot_mode[id] = 1                        
         set_task
(0.2"FireKnife"id)
         
set_weapon_anim(idANIM_SHOOT)
         
emit_sound(idCHAN_WEAPONweapon_sound[5], 1.0ATTN_NORM0PITCH_NORM)
         
set_weapons_timeidle(idCSW_BDRIPPER0.7)
         
set_player_nextattackx(id0.7)
      }
   }
}

public 
FireKnife(id)
{
   static 
Float:StartOrigin[3], Float:velocity[3], Float:angles[3], Float:anglestrue[3], Float:jarak_max[3]
   static 
EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   if(!
pev_valid(Ent)) return
   
get_position(id10.00.0, -2.0StartOrigin)     
   
get_position(id900.00.00.0jarak_max)
   
//static ent; ent = fm_get_user_weapon_entity(id, CSW_BDRIPPER)
   
pev(id,pev_v_angle,angles)
   
   
anglestrue[0] = 360.0 angles[0]
   
anglestrue[1] = angles[1]
   
anglestrue[2] = angles[2]
   
   
// Set info for ent
   
set_pev(Entpev_movetypeMOVETYPE_FLY)
   
set_pev(Entpev_ownerid)
   
set_pev(Entpev_iuser1id)
   
set_pev(Entpev_fuser1get_gametime() + 4.0)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
   
   
entity_set_string(EntEV_SZ_classnameBDRIP_CLASSNAME)
   
engfunc(EngFunc_SetModelEntKNIFE_MODEL)
   
set_pev(Entpev_minsFloat:{-1.0, -1.0, -1.0})
   
set_pev(Entpev_maxsFloat:{1.01.01.0})
   
set_pev(Entpev_originStartOrigin)
   
set_pev(Entpev_anglesanglestrue)
   
set_pev(Entpev_gravity0.01)
   
set_pev(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_frame1.0)
   
set_pev(Entpev_framerate1.0)
   
set_pev(Entpev_sequence0)
   
//ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
   
set_pev(Entpev_catchedspeed1100)
   
velocity_by_aimid1400velocity )
   
set_pevEntpev_velocityvelocity )
   
set_pev(Entpev_vuser1velocity)
   
set_pev(Entpev_vuser2jarak_max)
   
shoot_ent_mode[id] = 0
   set_pev
(Entpev_iuser40)
   
ent_sentuh[id] = 1
   ent_sentuh_balik
[id] = 0
}

public 
fm_addtofullpack_post(eseuserhosthost_flagsplayerp_set)
{
   if(!
player)
      return 
FMRES_IGNORED
   
   
if(!is_user_connected(host) || !is_user_alive(user))
      return 
FMRES_IGNORED
   
   
if(!ze_is_user_zombie(user) || headshot_korban[user] != 1)
      return 
FMRES_IGNORED
   
   
if(host == user)
      return 
FMRES_IGNORED
   
   
new Float:PlayerOrigin[3]//, Float:anglesss[3]
   
pev(userpev_originPlayerOrigin)
   
   
PlayerOrigin[2] += 25.0
   
   
//engfunc(EngFunc_GetBonePosition, user, 8, PlayerOrigin, anglesss)
   
   
engfunc(EngFunc_SetOriginguillotine_korban[user], PlayerOrigin)
   
   return 
FMRES_HANDLED
}

public 
fw_Think(Ent)
{
   if(!
pev_valid(Ent)) 
      return
   
   
//new id; id = pev(Ent, pev_owner)
   
static Float:pulang[3], Float:StartOriginz[3], pemilixFloat:brangkat[3], Float:jarak_max[3], Float:origin_asli[3], korban
   pemilix 
pev(Entpev_iuser1)
   
pev(Entpev_originStartOriginz)
   
korban pev(Entpev_iuser2)
   
   if(
headshot_korban[korban] == 1)
   {
      
action_thanatos(Entkorbanpemilix)
      if(
get_gametime() - 0.15 pev(Entpev_fuser3))
      {                         
         
Damage_guillotine(Entkorban)     
      }
   }
   
   if(
ent_sentuh_balik[pemilix] == && shoot_ent_mode[pemilix] == 1)
   {
      
ent_sentuh_balik[pemilix] = 1
      pev
(pemilixpev_originorigin_asli)
      
origin_asli[2] += 0.1
   
}
   
   if(
ent_sentuh[pemilix] == 1)
   {
      
ent_sentuh[pemilix] = 0
      pev
(Entpev_vuser2jarak_max)
      
pev(Entpev_vuser1brangkat)               
      
get_speed_vector(StartOriginzorigin_asli1400.0pulang)
      
      if(
shoot_ent_mode[pemilix] == 1
      {
         
set_pev(Entpev_velocitypulang)
      }            
      else 
set_pev(Entpev_velocitybrangkat)
      
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzjarak_max) <= 40.0)
   {
      
shoot_ent_mode[pemilix] = 1
      ent_sentuh
[pemilix] = 1
      set_pev
(Entpev_owner0)
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzorigin_asli) <= 40.0)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   else if(
headshot_korban[korban] == 1set_pev(Entpev_nextthinkget_gametime() + 0.2)
      else 
set_pev(Entpev_nextthinkhalflife_time() + 0.001)
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3])
{
   
new_velocity[0] = origin2[0] - origin1[0]
   
new_velocity[1] = origin2[1] - origin1[1]
   
new_velocity[2] = origin2[2] - origin1[2]
   static 
Float:numnum floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
   
new_velocity[0] *= num
   new_velocity
[1] *= num
   new_velocity
[2] *= num
   
   
return 1;
}


stock hook_ent(victimattackerFloat:speed)
{
   if(!
pev_valid(victim) || !pev_valid(attacker))
      return
   
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3], Float:VicOrigin[3]
   
   
pev(victimpev_originEntOrigin)
   
pev(attackerpev_originVicOrigin)
   
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   if (
distance_f 60.0)
   {
      new 
Float:fl_Time distance_f speed
      
      fl_Velocity
[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
      fl_Velocity
[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
      fl_Velocity
[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
      
} else {
      
fl_Velocity[0] = 0.0
      fl_Velocity
[1] = 0.0
      fl_Velocity
[2] = 0.0
   
}
   
   
entity_set_vector(victimEV_VEC_velocityfl_Velocity)
}

stock hook_ent2(entFloat:VicOrigin[3], Float:speedtype)
{
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3]
   static 
Float:EntVelocity[3]
   
   
pev(entpev_velocityEntVelocity)
   
pev(entpev_originEntOrigin)
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   static 
Float:fl_Timefl_Time distance_f speed
   
   
if(type == 1)
   {
      
fl_Velocity[0] = ((VicOrigin[0] - EntOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((VicOrigin[1] - EntOrigin[1]) / fl_Time)
      
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time      
      
} else if(type == 2) {
      
fl_Velocity[0] = ((EntOrigin[0] - VicOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((EntOrigin[1] - VicOrigin[1]) / fl_Time
      
fl_Velocity[2] = (EntOrigin[2] - VicOrigin[2]) / fl_Time
   
}
   
   
xs_vec_add(EntVelocityfl_Velocityfl_Velocity)
   
set_pev(entpev_velocityfl_Velocity)
}

public 
fw_touch(EntId)
{
   
// If ent is valid
   
if(!pev_valid(Ent))
      return
   if(
pev(Entpev_movetype) == MOVETYPE_NONE)
      return
   
   static 
classnameptd[32]
   
pev(Idpev_classnameclassnameptd31)
   if (
equali(classnameptd"func_breakable")) ExecuteHamBHam_TakeDamageId0080.0DMG_GENERIC )
   
//static korban
   //korban = pev(Ent, pev_iuser2)
   
   // Get it's origin
   
new Float:originF[3], pemilix 
   
//static id2
   //id2 = pev(Ent, pev_owner)
   
pemilix pev(Entpev_iuser1)
   
pev(Entpev_originoriginF)
   
// Alive...
   //new id = read_data(2)
   
if(is_user_alive(Id) && ze_is_user_zombie(Id))
   {
      
fakedamage(Id"Guillotine"1.0256)
      
Damage_guillotine(EntId)  
      
geri_tepme(pemilixId)      
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1                  
      create_blood
(originF)
      
//create_blood(originF)
   
}
   
   else if(
shoot_ent_mode[pemilix] == && Id == pemilix)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   
   else if(
is_user_alive(Id) && !ze_is_user_zombie(Id))
   {
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1
   
}
   
   else
   {
      
set_pev(Entpev_owner0)
      
      if(
shoot_ent_mode[pemilix] == 0)
      {
         
shoot_ent_mode[pemilix] = 1
         engfunc
(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall1.0ATTN_STATIC0PITCH_NORM)
         
ent_sentuh[pemilix] = 1
      
}
      else 
ancur(Ent)
   }
   
}

public 
ancur(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
Float:origin2[3], pemilixFloat:origin3[3]
   
pemilix pev(Entpev_iuser1)
   
entity_get_vector(EntEV_VEC_originorigin2)
   
pev(Entpev_originorigin3)
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
//fake_smokes(origin3)
   
engfunc(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall21.0ATTN_STATIC0PITCH_NORM)
   
shoot_mode[pemilix] = 0
   remove_entity
(Ent)
   
   if(!
is_user_alive(pemilix) || !is_user_connected(pemilix) || get_user_weapon(pemilix) != CSW_BDRIPPER || !g_had_guillotine[pemilix])
      return
   
   
set_weapon_anim(pemilixANIM_LOST)
   
set_weapons_timeidle(pemilixCSW_BDRIPPER2.5)
   
set_player_nextattackx(pemilix2.5)
   
set_task(1.3"reload2"pemilix)
   
set_task(1.4"reload"pemilix)
}

public 
geri_tepme2(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)
}

public 
action_thanatos(Entvictimid)
{         
   if(!
pev_valid(Ent))   
      return
   
   if(
headshot_mode[id] == 1)
   {
      
      
//geri_tepme2(id, victim)
      
      
set_task(0.01"action_thanatos"Ent)
   }
}

public 
reload(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_DRAW)
}

public 
reload2(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_IDLE_SHOOT2)
}

public 
balik(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
id
   id 
pev(Entpev_iuser1)
   
   
set_weapons_timeidle(idCSW_BDRIPPER1.0)
   
set_player_nextattackx(id1.0)
   
shoot_mode[id] = 0
   g_guillotine_ammo
[id]++
   
update_ammo(id)
   
set_weapon_anim(idANIM_CATCH)
   
emit_sound(idCHAN_WEAPONweapon_sound[0], 1.0ATTN_NORM0PITCH_NORM)    
   
remove_entity(Ent)
}

/*new Float:g_fDamageMulti[] = 
{
1.0,
1.1,
1.2,
1.3,
1.4,
1.5,
1.6,
1.7,
1.8,
1.9,
2.0,
2.1,
2.2,
2.3
}*/

public geri_tepme(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)                    
}

public 
Damage_guillotine(EntId)
{
   static 
OwnerOwner pev(Entpev_iuser1)
   static 
Attacker
   if(!
is_user_alive(Owner)) 
   {
      
Attacker 0
      
return
   } else 
Attacker Owner

   
if(g_endround)
      return
   
   new 
bool:bIsHeadShot// never make that one static
   
new Float:flAdjustedDamagebool:death
   
switch( Get_MissileWeaponHitGroup(Ent) ) 
   {
      case 
HIT_GENERICflAdjustedDamage DAMAGE 1.0 
         
case HIT_STOMACHflAdjustedDamage DAMAGE 1.5 
         
case HIT_LEFTLEGHIT_RIGHTLEGflAdjustedDamage DAMAGE 1.0
         
case HIT_LEFTARMHIT_RIGHTARMflAdjustedDamage DAMAGE 1.0
         
case HIT_HEADHIT_CHEST:
      {
         
flAdjustedDamage DAMAGE 2.5
         bIsHeadShot 
true;
         if(
headshot_mode[Owner] == 0set_task(2.0"balik_bro"Ent+1858941 )
         
headshot_mode[Owner] = 1
         headshot_korban
[Id] = 
         guillotine_korban
[Id] = Ent
         set_pev
(Entpev_iuser2Id)              
         
fakedamage(Id"Guillotine"1.0256
         
set_pev(Entpev_renderamt255)
         
set_pev(Entpev_solidSOLID_NOT)
         
set_pev(Entpev_fuser30.0)
      }
   }
   if(
pev(Idpev_health) <= flAdjustedDamagedeath true 
   
   
if(is_user_alive(Id))
   {
      if( 
bIsHeadShot && death)
      {
         if(
task_existsEnt+1858941 )) remove_taskEnt 1858941 )
         
set_pev(Entpev_sequence0)
         
headshot_korban[pev(Entpev_iuser2)] = 0
         headshot_mode
[Owner] = 0
         shoot_ent_mode
[Owner] = 1
         ent_sentuh
[Owner] = 1
         ent_sentuh_balik
[Owner] = 0
         set_pev
(Entpev_solidSOLID_BBOX)
         
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
         
         
kill(AttackerId1)
         
         
death false         
      
}
      if(
death)
      {
         
kill(AttackerId0)
         
         
death false         
      
}
      else 
ExecuteHamB(Ham_TakeDamageIdEntAttackerflAdjustedDamageDMG_CLUB)
   }
}


stock turn_to_target(entFloat:Ent_Origin[3], targetFloat:Vic_Origin[3]) 
{
   if(
target
   {
      new 
Float:newAngle[3]
      
entity_get_vector(entEV_VEC_anglesnewAngle)
      new 
Float:Vic_Origin[0] - Ent_Origin[0]
      new 
Float:Vic_Origin[1] - Ent_Origin[1]
      
      new 
Float:radians floatatan(z/xradian)
      
newAngle[1] = radians * (180 3.14)
      if (
Vic_Origin[0] < Ent_Origin[0])
         
newAngle[1] -= 180.0
      
      entity_set_vector
(entEV_VEC_anglesnewAngle)
   }
}

public 
balik_bro(Ent)
{
   
Ent -= 1858941
   
   
if(!pev_valid(Ent))
      return
   
   static 
pemilixpemilix pev(Entpev_iuser1)
   
set_pev(Entpev_sequence0)
   
headshot_korban[pev(Entpev_iuser2)] = 0
   headshot_mode
[pemilix] = 0
   shoot_ent_mode
[pemilix] = 1
   ent_sentuh
[pemilix] = 1
   ent_sentuh_balik
[pemilix] = 0
   set_pev
(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
}

public 
fw_SetModel(entitymodel[])
{
   if(!
pev_valid(entity))
      return 
FMRES_IGNORED
   
   
static Classname[64]
   
pev(entitypev_classnameClassnamesizeof(Classname))
   
   if(!
equal(Classname"weaponbox"))
      return 
FMRES_IGNORED
   
   
static id
   id 
pev(entitypev_owner)
   
   if(
equal(modelold_w_model))
   {
      static 
weapon
      weapon 
fm_get_user_weapon_entity(entityCSW_BDRIPPER)
      
      if(!
pev_valid(weapon))
         return 
FMRES_IGNORED
      
      
if(g_had_guillotine[id])
      {
         
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
         
set_pev(weaponpev_iuser4g_guillotine_ammo[id])
         
engfunc(EngFunc_SetModelentityw_model)
         
         
g_had_guillotine[id] = 0
         g_guillotine_ammo
[id] = 0
         
         
return FMRES_SUPERCEDE
      
}
   }
   
   return 
FMRES_IGNORED;
}

public 
fw_AddToPlayer_Post(entid)
{
   if(
pev(entpev_impulse) == WEAPON_SECRETCODE)
   {
      
g_had_guillotine[id] = 1
      g_guillotine_ammo
[id] = pev(entpev_iuser4)
      
      
set_pev(entpev_impulse0)
   }         
   
/*
   message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
   write_string((g_had_guillotine[id] == 1 ? "weapon_guillotine" : "weapon_mac10"))
   write_byte(6)
   write_byte(100)
   write_byte(-1)
   write_byte(-1)
   write_byte(0)
   write_byte(13)
   write_byte(CSW_BDRIPPER)
   write_byte(0)*/
}

public 
update_ammo(id)
{
   if(!
is_user_alive(id))
      return
   
   static 
weapon_entweapon_ent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   if(!
pev_valid(weapon_ent)) return
   
   
cs_set_weapon_ammo(weapon_entg_guillotine_ammo[id])   
   
//cs_set_user_bpammo(id, CSW_BDRIPPER, g_guillotine_ammo[id])
   
   
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEget_user_msgid("CurWeapon"), {000}, id)
   
write_byte(1)
   
write_byte(CSW_BDRIPPER)
   
write_byte(-1)
   
message_end()
   
   
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("AmmoX"), _id)
   
write_byte(1)
   
write_byte(g_guillotine_ammo[id])
   
message_end()
}

public 
fw_traceline(Float:v1[3],Float:v2[3],noMonsters,id,ptr)
{
   if(!
is_user_alive(id))
      return 
HAM_IGNORED   
   
if(get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return 
HAM_IGNORED
   
   
// get crosshair aim
   
static Float:aim[3];
   
get_aim(id,v1,aim);
   
   
// do another trace to this spot
   
new trace create_tr2();
   
engfunc(EngFunc_TraceLine,v1,aim,noMonsters,id,trace);
   
   
// copy ints
   
set_tr2(ptr,TR_AllSolid,get_tr2(trace,TR_AllSolid));
   
set_tr2(ptr,TR_StartSolid,get_tr2(trace,TR_StartSolid));
   
set_tr2(ptr,TR_InOpen,get_tr2(trace,TR_InOpen));
   
set_tr2(ptr,TR_InWater,get_tr2(trace,TR_InWater));
   
set_tr2(ptr,TR_pHit,get_tr2(trace,TR_pHit));
   
set_tr2(ptr,TR_iHitgroup,get_tr2(trace,TR_iHitgroup));
   
   
// copy floats
   
get_tr2(trace,TR_flFraction,aim[0]);
   
set_tr2(ptr,TR_flFraction,aim[0]);
   
get_tr2(trace,TR_flPlaneDist,aim[0]);
   
set_tr2(ptr,TR_flPlaneDist,aim[0]);
   
   
// copy vecs
   
get_tr2(trace,TR_vecEndPos,aim);
   
set_tr2(ptr,TR_vecEndPos,aim);
   
get_tr2(trace,TR_vecPlaneNormal,aim);
   
set_tr2(ptr,TR_vecPlaneNormal,aim);
   
   
// get rid of new trace
   
free_tr2(trace);
   
   return 
FMRES_IGNORED;
}

get_aim(id,Float:source[3],Float:ret[3])
{
static 
Float:vAngle[3], Float:pAngle[3], Float:dir[3], Float:temp[3];

// get aiming direction from forward global based on view angle and punch angle
pev(id,pev_v_angle,vAngle);
pev(id,pev_punchangle,pAngle);
xs_vec_add(vAngle,pAngle,temp);
engfunc(EngFunc_MakeVectors,temp);
global_get(glb_v_forward,dir);

/* vecEnd = vecSrc + vecDir * flDistance; */
xs_vec_mul_scalar(dir,8192.0,temp);
xs_vec_add(source,temp,ret);
}

public 
fake_smokes(Float:Origin[3])
{
static 
TE_FLAG

TE_FLAG 
|= TE_EXPLFLAG_NODLIGHTS
TE_FLAG 
|= TE_EXPLFLAG_NOSOUND
TE_FLAG 
|= TE_EXPLFLAG_NOPARTICLES

engfunc
(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYOrigin0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoordOrigin[0])
engfunc(EngFunc_WriteCoordOrigin[1])
engfunc(EngFunc_WriteCoordOrigin[2])
write_short(g_smokepuff_id)
write_byte(6)
write_byte(25)
write_byte(TE_FLAG)
message_end()
}

stock set_weapon_anim(idanim)
{
   if(!
is_user_alive(id))
      return
   
   
set_pev(idpev_weaponanimanim)
   
   
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
   
write_byte(anim)
   
write_byte(pev(idpev_body))
   
message_end()
}

stock kill(kvheadshot)
{
   
//cs_set_user_money(k, cs_get_user_money(k) + 500)
   
   
set_user_frags(kget_user_frags(k) + 1)
   
   
set_msg_block(g_MsgDeathMsg,BLOCK_ONCE)
   
set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
   
user_kill(v,1)
   
   new 
kteam get_user_team(k);
   new 
vteam get_user_team(v);
   
   new 
kfrags get_user_frags(k);
   new 
kdeaths get_user_deaths(k);
   
   new 
vfrags get_user_frags(v);
   new 
vdeaths get_user_deaths(v);
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(k);
   
ewrite_short(kfrags);
   
ewrite_short(kdeaths);
   
ewrite_short(0);
   
ewrite_short(kteam);
   
emessage_end();
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(v);
   
ewrite_short(vfrags);
   
ewrite_short(vdeaths);
   
ewrite_short(0);
   
ewrite_short(vteam);
   
emessage_end();
   
   
emessage_begin(MSG_BROADCASTg_MsgDeathMsg)
   
ewrite_byte(k)
   
ewrite_byte(v)
   
ewrite_byte(headshot)
   
ewrite_string("guillotine")
   
emessage_end()
}


stock create_blood(const Float:origin[3])
{
   
// Show some blood :)
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
   
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
}

stock drop_weapons(iddropwhat)
{
   static 
weapons[32], numiweaponid
   num 
0
   get_user_weapons
(idweaponsnum)
   
   for (
0numi++)
   {
      
weaponid weapons[i]
      
      if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
      {
         static 
wname[32]
         
get_weaponname(weaponidwnamesizeof wname 1)
         
engclient_cmd(id"drop"wname)
      }
   }
}

stock Get_MissileWeaponHitGroupiEnt )
{
   new 
Float:flStart], Float:flEnd];
   
   
peviEntpev_originflStart );
   
peviEntpev_velocityflEnd );
   
xs_vec_addflStartflEndflEnd );
   
   new 
ptr create_tr2();
   
engfuncEngFunc_TraceLineflStartflEnd0iEntptr );
   
   new 
iHitGroupOwnernOheadhead
   Owner 
pev(iEntpev_iuser1)
   
nOhead get_tr2ptrTR_iHitgroup )
   
head set_tr2ptrTR_iHitgroupHIT_HEAD )
   
   
iHitGroup headshot_mode[Owner] ? head nOhead
   
   free_tr2
ptr );
   
   return 
iHitGroup;
}

stock get_position(id,Float:forwFloat:rightFloat:upFloat:vStart[])
{
   static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
   
   
pev(idpev_originvOrigin)
   
pev(idpev_view_ofsvUp//for player
   
xs_vec_add(vOriginvUpvOrigin)
   
pev(idpev_v_anglevAngle// if normal entity ,use pev_angles
   
   
angle_vector(vAngleANGLEVECTOR_FORWARDvForward//or use EngFunc_AngleVectors
   
angle_vector(vAngleANGLEVECTOR_RIGHTvRight)
   
angle_vector(vAngleANGLEVECTOR_UPvUp)
   
   
vStart[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
   vStart
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
   vStart
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}

stock set_weapons_timeidle(idWeaponId ,Float:TimeIdle)
{
   if(!
is_user_alive(id))
      return
   
   static 
entwpnentwpn fm_get_user_weapon_entity(idWeaponId)
   if(!
pev_valid(entwpn)) 
      return
   
   
set_pdata_float(entwpn48TimeIdle 0.2OFFSET_LINUX_WEAPONS)
}


stock set_player_nextattackx(idFloat:nexttime)
{
    if(!
is_user_alive(id))
        return
       
    
set_pdata_float(id83nexttime5)


public 
CurrentWeapon(id)
{
    
replace_weapon_models(idread_data(2))
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_KNIFE:
        {
            if(!
ze_is_user_zombie(id))
            {
                
set_pev(idpev_viewmodel2bicakmodel[0][gorunum[id]][0])
            }
        }
    }
}

stock renkli_yazi(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msgsizeof(msg) - 1input3)
    
    
replace_all(msg190"!n""^x01")
    
replace_all(msg190"!g""^x04")
    
replace_all(msg190"!t""^x03")
    
    if(
idplayers[0] = id; else get_players(playerscount"ch")
    for(new 
0counti++)
    {
        if(
is_user_connected(players[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
            
write_byte(players[i])
            
write_string(msg)
            
message_end()
        }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/ 



Thank you alot, i would like to know how to convert stuff from ZP > ZE?
J@y is offline
J@y
Member
Join Date: Feb 2022
Old 12-23-2022 , 19:10   Re: Gilloutine Help
Reply With Quote #7

PHP Code:
#include <zombie_escape>
#include <engine>
#include <fakemeta_util>
#include <cstrike>
#include <fun>


#define PLUGIN "Guillotine"
#define VERSION "1.3"
#define AUTHOR "m4m3ts"
 
#define CSW_BDRIPPER CSW_KNIFE
#define weapon_guillotine "weapon_knife"
#define old_event "events/mac10.sc"
#define old_w_model "models/w_mac10.mdl"
#define WEAPON_SECRETCODE 1329419

const pev_catchedspeed pev_iuser4
#define DEFAULT_AMMO 10
#define RELOAD_TIME 0.435
#define DAMAGE 30
#define BDRIP_CLASSNAME "Blood Dripper"
#define WEAPON_ANIMEXT "knife"

#define Get_Ent_Data(%1,%2) get_pdata_int(%1,%2,4)
#define Set_Ent_Data(%1,%2,%3) set_pdata_int(%1,%2,%3,4)

const PDATA_SAFE 2
const OFFSET_LINUX_WEAPONS 4
const OFFSET_WEAPONOWNER 41
const m_flNextAttack 83

new gorunum[33]

new 
bicakmodel[][][] =
{
    {
CSW_KNIFE,
    
"models/zombie_escape/v_combat_knife.mdl",
    
"models/zombie_escape/v_shadow.mdl",
    
"models/zombie_escape/v_hammer_knife.mdl",
    
"models/zombie_escape/v_katana_knife.mdl",
    
"models/zombie_escape/v_dualkatana.mdl"
    
}
}


new const 
v_model[] = "models//v_astra.mdl"
new const p_model[] = "models/p_astra.mdl"
new const w_model[] = "models/w_guillotine.mdl"
new const KNIFE_MODEL[] = "models/astra_projectile.mdl"
new const PECAH_MODEL[] = "models/gibs_guilotine.mdl"
new const hit_wall[] = "weapons/janus9_stone1.wav"
new const hit_wall2[] = "weapons/janus9_stone2.wav"
new const weapon_sound[6][] = 
{
"weapons/guillotine_catch2.wav",
"weapons/guillotine_draw.wav",
"weapons/guillotine_draw_empty.wav",
"weapons/guillotine_explode.wav",
"weapons/guillotine_red.wav",
"weapons/guillotine-1.wav"
}


new const 
WeaponResource[3][] = 
{
"sprites/weapon_guillotine.txt",
"sprites/640hud120.spr",
"sprites/guillotine_lost.spr"
}

enum
{
ANIM_IDLE 0,
ANIM_IDLE_EMPTY,
ANIM_SHOOT,
ANIM_DRAW,
ANIM_DRAW_EMPTY,
ANIM_IDLE_SHOOT,
ANIM_IDLE_SHOOT2,
ANIM_CATCH,
ANIM_LOST
}

new 
g_MsgDeathMsgg_endround

new g_had_guillotine[33], g_guillotine_ammo[33], shoot_mode[33], shoot_ent_mode[33], g_pecahheadshot_mode[33], ent_sentuh[33], ent_sentuh_balik[33]
new 
g_old_weapon[33], g_smokepuff_idm_iBlood[2], guillotine_korban[33], headshot_korban[33], gmsgScoreInfo

const PRIMARY_WEAPONS_BIT_SUM 
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
//new TargetOrigin[3] 
new g_gui
public plugin_init()
{
   
register_plugin(PLUGINVERSIONAUTHOR)
   
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack_Sg")
   
register_forward(FM_CmdStart"fw_CmdStart")
   
register_forward(FM_SetModel"fw_SetModel")
   
register_think(BDRIP_CLASSNAME"fw_Think")

   
//Knife menu
   
register_clcmd("say /knife","knifemenu")
   
register_clcmd("say_team /knife","knifemenu")

   
register_clcmd("say /gui","item_selected")
   
register_clcmd("say_team /gui","item_selected")

   
register_event("CurWeapon","CurrentWeapon","be","1=1")
   
register_event("HLTV""EventHLTV""a""1=0""2=0")
   
register_touch(BDRIP_CLASSNAME"*""fw_touch")
   
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
   
register_forward(FM_TraceLine"fw_traceline"1)
   
register_forward(FM_AddToFullPack"fm_addtofullpack_post"1)
   
RegisterHam(Ham_Spawn"player""Player_Spawn"1)
   
RegisterHam(Ham_Weapon_WeaponIdleweapon_guillotine"fw_guillotineidleanim"1)
   
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
   
RegisterHam(Ham_Item_AddToPlayerweapon_guillotine"fw_AddToPlayer_Post"1)
   
register_event("CurWeapon""Event_CurWeapon""be""1=1")
   
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
   
register_clcmd("weapon_guillotine""hook_weapon")
   
g_MsgDeathMsg get_user_msgid("DeathMsg")
   
gmsgScoreInfo get_user_msgid("ScoreInfo"

   
register_logevent("logevent_round_end"2"1=Round_End")
   
g_endround 1
}


public 
plugin_precache()
{
   
precache_model(bicakmodel[0][1])
   
precache_model(bicakmodel[0][2])
   
precache_model(bicakmodel[0][3])
   
precache_model(bicakmodel[0][4])
   
precache_model(bicakmodel[0][5])
   
precache_model(v_model)
   
precache_model(p_model)
   
precache_model(w_model)
   
precache_model(KNIFE_MODEL)
   
g_pecah precache_model(PECAH_MODEL)
   
precache_sound(hit_wall)
   
precache_sound(hit_wall2)

   for(new 
0sizeof(weapon_sound); i++) 
   
precache_sound(weapon_sound[i])

   for(new 
1sizeof(WeaponResource); i++)
   
precache_model(WeaponResource[i])

   
g_smokepuff_id engfunc(EngFunc_PrecacheModelWeaponResource[2])
   
m_iBlood[0] = precache_model("sprites/blood.spr")
   
m_iBlood[1] = precache_model("sprites/bloodspray.spr")   
}

public 
ze_user_infected(id)
{
   
remove_guillotine(id)
   
g_gui 0
}

public 
EventHLTV()
{
g_endround 0
g_gui 
1
}

public 
client_connect(id)
{
    
gorunum[id] = 1
}

public 
knifemenu(id)
{
  if(!
ze_is_user_zombie(id))
  {
    new 
menuz;
    static 
amenu[512];
    
formatex(amenu,charsmax(amenu),"\r[ZE] \yKnife Menu")
    
menuz menu_create(amenu,"knifemenu_devam")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wNata")
    
menu_additem(menuz,amenu,"1")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wShadowAxe")
    
menu_additem(menuz,amenu,"2")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wWarhammer")
    
menu_additem(menuz,amenu,"3")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wKatana")
    
menu_additem(menuz,amenu,"4")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wDualKatana")
    
menu_additem(menuz,amenu,"5")

    if(
get_user_flags(id) & ADMIN_LEVEL_H)
    {
        
formatex(amenu,charsmax(amenu),"| \r- \wGuillotine \y[VIP]")
    }
    else
    {
        
formatex(amenu,charsmax(amenu),"| \r- \dGuillotine\r[VIP]")
    }        
    
menu_additem(menuz,amenu,"6")
    
    
menu_setprop(menuz,MPROP_EXIT,MEXIT_ALL)
    
menu_display(id,menuz,0)

  }
  return 
PLUGIN_HANDLED
}

public 
knifemenu_devam(id,menu,item)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    new 
access,callback,data[6],iname[64]
    
    
menu_item_getinfo(menu,item,access,data,5,iname,63,callback)
    
    new 
key str_to_num(data)
    
    if(
key == 1)
    {
        
gorunum[id] = 1
                remove_guillotine
(id)
    }
    else if(
key == 2)
    {
        
gorunum[id] = 2
                remove_guillotine
(id)
    }
    else if(
key == 3)
    {
        
gorunum[id] = 3
                remove_guillotine
(id)
    }
    else if(
key == 4)
    {
        
gorunum[id] = 4
                remove_guillotine
(id)
    }
    else if(
key == 5)
    {
        
gorunum[id] = 5
                remove_guillotine
(id)
    }
    else if(
key == 6)
    {
        if(
get_user_flags(id) & ADMIN_LEVEL_H)
        {
                        
get_blood(id)
        }
        else
        {
            
renkli_yazi(id"!g|| !tOnly For VIPS.")
            
knifemenu(id)
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
logevent_round_end() g_endround 1

public Player_Spawn(id)
{
get_blood(id)

if(
g_gui)
{
if(
get_user_flags(id) & ADMIN_LEVEL_E)get_blood(id)
}   
}

public 
fw_PlayerKilled(id)
{
remove_guillotine(id)
}

public 
hook_weapon(id)
{
engclient_cmd(idweapon_guillotine)
return
}

new 
g_itemid
public item_selected(iditemid)
{   
if (!
is_user_alive(id)){
   
client_print(idprint_chat"")
   return
}
if (
ze_is_user_zombie(id)){
   
client_print(idprint_chat"")
   return
}
if(
itemid==g_itemid){
   new 
para = (get_user_flags(id) & ADMIN_LEVEL_H)
   
   if (
para >= 0){
      if(
get_user_flags(id) & ADMIN_LEVEL_H)
      
get_blood(id)
      
client_print(idprint_chat"")
   }
   else{
      
client_print(idprint_chat"[ZE]: You have no access")
   }
}
}

public 
get_blood(id)
{
   if(!(
get_user_flags(id) & ADMIN_LEVEL_H))
      return
   
drop_weapons(id0)
   
g_had_guillotine[id] = 1
   g_guillotine_ammo
[id] = DEFAULT_AMMO
   
   give_item
(idweapon_guillotine)
   
update_ammo(id)
   
   
//static weapon_ent; weapon_ent = fm_find_ent_by_owner(-1, weapon_guillotine, id)
   //if(pev_valid(weapon_ent)) cs_set_weapon_ammo(weapon_ent, 1)
}

public 
remove_guillotine(id)
{
   
g_had_guillotine[id] = 0
   
static EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   
ancur(Ent)
}

public 
refill_guillotine(id)
{   
   if(
g_had_guillotine[id]) g_guillotine_ammo[id] = 15
   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id]) update_ammo(id)
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return 
FMRES_IGNORED   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
      
set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001
   
   return 
FMRES_HANDLED
}

public 
message_DeathMsg(msg_idmsg_destid)
{
   static 
szTruncatedWeapon[33], iAttackeriVictim
   
   get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
   
   
iAttacker get_msg_arg_int(1)
   
iVictim get_msg_arg_int(2)
   
   if(!
is_user_connected(iAttacker) || iAttacker == iVictim) return PLUGIN_CONTINUE
   
   
if(get_user_weapon(iAttacker) == CSW_BDRIPPER)
   {
      if(
g_had_guillotine[iAttacker])
         
set_msg_arg_string(4"knife")
   }
   
   return 
PLUGIN_CONTINUE
}

public 
fw_TraceAttack_Sg(VictimAttackerFloat:DamageFloat:Direction[3], TraceHandleDamageBitptr)
{         
   return 
HAM_IGNORED
}

public 
Event_CurWeapon(id)
{
   
   if(!
is_user_alive(id))
      return 
   
   if(
get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
   {
      
set_pev(idpev_viewmodel2v_model)
      
set_pev(idpev_weaponmodel2p_model)
      
set_pdata_string(id492 4WEAPON_ANIMEXT, -20)
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] >= 1set_weapon_anim(idANIM_DRAW)
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] == && headshot_mode[id] == 0set_weapon_anim(idANIM_DRAW_EMPTY)
      else if(
g_old_weapon[id] != CSW_BDRIPPER && shoot_mode[id] == 1set_weapon_anim(idANIM_DRAW_EMPTY)
         
      
update_ammo(id)
   }
   
   
g_old_weapon[id] = get_user_weapon(id)
}

public 
fw_guillotineidleanim(Weapon)
{
   new 
id get_pdata_cbase(Weapon414)
   
   if(!
is_user_alive(id) || ze_is_user_zombie(id) || !g_had_guillotine[id] || get_user_weapon(id) != CSW_BDRIPPER)
      return 
HAM_IGNORED;
   
   if(
shoot_mode[id] == && g_guillotine_ammo[id] >= 1
      return 
HAM_SUPERCEDE;
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT2)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
g_guillotine_ammo[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_EMPTY)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   return 
HAM_IGNORED;
}

public 
fw_CmdStart(iduc_handleseed)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return
   if(
get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return
   
   static 
entent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   
//if(!pev_valid(ent))
   //   return
   
if(get_pdata_float(ent46OFFSET_LINUX_WEAPONS) > 0.0 || get_pdata_float(ent47OFFSET_LINUX_WEAPONS) > 0.0
      return
   
   static 
CurButton
   CurButton 
get_uc(uc_handleUC_Buttons)
   
   if(
CurButton IN_ATTACK)
   {
      
CurButton &= ~IN_ATTACK
      set_uc
(uc_handleUC_ButtonsCurButton)
      
      
//if(g_guillotine_ammo[id] == 0)
      //   return
      
if(shoot_mode[id] == && get_pdata_float(id835) <= 0.0)
      {
         
//g_guillotine_ammo[id]--
         //update_ammo(id)
         
shoot_mode[id] = 1                        
         set_task
(0.2"FireKnife"id)
         
set_weapon_anim(idANIM_SHOOT)
         
emit_sound(idCHAN_WEAPONweapon_sound[5], 1.0ATTN_NORM0PITCH_NORM)
         
set_weapons_timeidle(idCSW_BDRIPPER0.7)
         
set_player_nextattackx(id0.7)
      }
   }
}

public 
FireKnife(id)
{
   static 
Float:StartOrigin[3], Float:velocity[3], Float:angles[3], Float:anglestrue[3], Float:jarak_max[3]
   static 
EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   if(!
pev_valid(Ent)) return
   
get_position(id10.00.0, -2.0StartOrigin)     
   
get_position(id900.00.00.0jarak_max)
   
//static ent; ent = fm_get_user_weapon_entity(id, CSW_BDRIPPER)
   
pev(id,pev_v_angle,angles)
   
   
anglestrue[0] = 360.0 angles[0]
   
anglestrue[1] = angles[1]
   
anglestrue[2] = angles[2]
   
   
// Set info for ent
   
set_pev(Entpev_movetypeMOVETYPE_FLY)
   
set_pev(Entpev_ownerid)
   
set_pev(Entpev_iuser1id)
   
set_pev(Entpev_fuser1get_gametime() + 4.0)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
   
   
entity_set_string(EntEV_SZ_classnameBDRIP_CLASSNAME)
   
engfunc(EngFunc_SetModelEntKNIFE_MODEL)
   
set_pev(Entpev_minsFloat:{-1.0, -1.0, -1.0})
   
set_pev(Entpev_maxsFloat:{1.01.01.0})
   
set_pev(Entpev_originStartOrigin)
   
set_pev(Entpev_anglesanglestrue)
   
set_pev(Entpev_gravity0.01)
   
set_pev(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_frame1.0)
   
set_pev(Entpev_framerate1.0)
   
set_pev(Entpev_sequence0)
   
//ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
   
set_pev(Entpev_catchedspeed1100)
   
velocity_by_aimid1400velocity )
   
set_pevEntpev_velocityvelocity )
   
set_pev(Entpev_vuser1velocity)
   
set_pev(Entpev_vuser2jarak_max)
   
shoot_ent_mode[id] = 0
   set_pev
(Entpev_iuser40)
   
ent_sentuh[id] = 1
   ent_sentuh_balik
[id] = 0
}

public 
fm_addtofullpack_post(eseuserhosthost_flagsplayerp_set)
{
   if(!
player)
      return 
FMRES_IGNORED
   
   
if(!is_user_connected(host) || !is_user_alive(user))
      return 
FMRES_IGNORED
   
   
if(!ze_is_user_zombie(user) || headshot_korban[user] != 1)
      return 
FMRES_IGNORED
   
   
if(host == user)
      return 
FMRES_IGNORED
   
   
new Float:PlayerOrigin[3]//, Float:anglesss[3]
   
pev(userpev_originPlayerOrigin)
   
   
PlayerOrigin[2] += 25.0
   
   
//engfunc(EngFunc_GetBonePosition, user, 8, PlayerOrigin, anglesss)
   
   
engfunc(EngFunc_SetOriginguillotine_korban[user], PlayerOrigin)
   
   return 
FMRES_HANDLED
}

public 
fw_Think(Ent)
{
   if(!
pev_valid(Ent)) 
      return
   
   
//new id; id = pev(Ent, pev_owner)
   
static Float:pulang[3], Float:StartOriginz[3], pemilixFloat:brangkat[3], Float:jarak_max[3], Float:origin_asli[3], korban
   pemilix 
pev(Entpev_iuser1)
   
pev(Entpev_originStartOriginz)
   
korban pev(Entpev_iuser2)
   
   if(
headshot_korban[korban] == 1)
   {
      
action_thanatos(Entkorbanpemilix)
      if(
get_gametime() - 0.15 pev(Entpev_fuser3))
      {                         
         
Damage_guillotine(Entkorban)     
      }
   }
   
   if(
ent_sentuh_balik[pemilix] == && shoot_ent_mode[pemilix] == 1)
   {
      
ent_sentuh_balik[pemilix] = 1
      pev
(pemilixpev_originorigin_asli)
      
origin_asli[2] += 0.1
   
}
   
   if(
ent_sentuh[pemilix] == 1)
   {
      
ent_sentuh[pemilix] = 0
      pev
(Entpev_vuser2jarak_max)
      
pev(Entpev_vuser1brangkat)               
      
get_speed_vector(StartOriginzorigin_asli1400.0pulang)
      
      if(
shoot_ent_mode[pemilix] == 1
      {
         
set_pev(Entpev_velocitypulang)
      }            
      else 
set_pev(Entpev_velocitybrangkat)
      
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzjarak_max) <= 40.0)
   {
      
shoot_ent_mode[pemilix] = 1
      ent_sentuh
[pemilix] = 1
      set_pev
(Entpev_owner0)
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzorigin_asli) <= 40.0)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   else if(
headshot_korban[korban] == 1set_pev(Entpev_nextthinkget_gametime() + 0.2)
      else 
set_pev(Entpev_nextthinkhalflife_time() + 0.001)
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3])
{
   
new_velocity[0] = origin2[0] - origin1[0]
   
new_velocity[1] = origin2[1] - origin1[1]
   
new_velocity[2] = origin2[2] - origin1[2]
   static 
Float:numnum floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
   
new_velocity[0] *= num
   new_velocity
[1] *= num
   new_velocity
[2] *= num
   
   
return 1;
}


stock hook_ent(victimattackerFloat:speed)
{
   if(!
pev_valid(victim) || !pev_valid(attacker))
      return
   
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3], Float:VicOrigin[3]
   
   
pev(victimpev_originEntOrigin)
   
pev(attackerpev_originVicOrigin)
   
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   if (
distance_f 60.0)
   {
      new 
Float:fl_Time distance_f speed
      
      fl_Velocity
[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
      fl_Velocity
[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
      fl_Velocity
[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
      
} else {
      
fl_Velocity[0] = 0.0
      fl_Velocity
[1] = 0.0
      fl_Velocity
[2] = 0.0
   
}
   
   
entity_set_vector(victimEV_VEC_velocityfl_Velocity)
}

stock hook_ent2(entFloat:VicOrigin[3], Float:speedtype)
{
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3]
   static 
Float:EntVelocity[3]
   
   
pev(entpev_velocityEntVelocity)
   
pev(entpev_originEntOrigin)
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   static 
Float:fl_Timefl_Time distance_f speed
   
   
if(type == 1)
   {
      
fl_Velocity[0] = ((VicOrigin[0] - EntOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((VicOrigin[1] - EntOrigin[1]) / fl_Time)
      
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time      
      
} else if(type == 2) {
      
fl_Velocity[0] = ((EntOrigin[0] - VicOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((EntOrigin[1] - VicOrigin[1]) / fl_Time
      
fl_Velocity[2] = (EntOrigin[2] - VicOrigin[2]) / fl_Time
   
}
   
   
xs_vec_add(EntVelocityfl_Velocityfl_Velocity)
   
set_pev(entpev_velocityfl_Velocity)
}

public 
fw_touch(EntId)
{
   
// If ent is valid
   
if(!pev_valid(Ent))
      return
   if(
pev(Entpev_movetype) == MOVETYPE_NONE)
      return
   
   static 
classnameptd[32]
   
pev(Idpev_classnameclassnameptd31)
   if (
equali(classnameptd"func_breakable")) ExecuteHamBHam_TakeDamageId0080.0DMG_GENERIC )
   
//static korban
   //korban = pev(Ent, pev_iuser2)
   
   // Get it's origin
   
new Float:originF[3], pemilix 
   
//static id2
   //id2 = pev(Ent, pev_owner)
   
pemilix pev(Entpev_iuser1)
   
pev(Entpev_originoriginF)
   
// Alive...
   //new id = read_data(2)
   
if(is_user_alive(Id) && ze_is_user_zombie(Id))
   {
      
fakedamage(Id"Guillotine"1.0256)
      
Damage_guillotine(EntId)  
      
geri_tepme(pemilixId)      
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1                  
      create_blood
(originF)
      
//create_blood(originF)
   
}
   
   else if(
shoot_ent_mode[pemilix] == && Id == pemilix)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   
   else if(
is_user_alive(Id) && !ze_is_user_zombie(Id))
   {
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1
   
}
   
   else
   {
      
set_pev(Entpev_owner0)
      
      if(
shoot_ent_mode[pemilix] == 0)
      {
         
shoot_ent_mode[pemilix] = 1
         engfunc
(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall1.0ATTN_STATIC0PITCH_NORM)
         
ent_sentuh[pemilix] = 1
      
}
      else 
ancur(Ent)
   }
   
}

public 
ancur(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
Float:origin2[3], pemilixFloat:origin3[3]
   
pemilix pev(Entpev_iuser1)
   
entity_get_vector(EntEV_VEC_originorigin2)
   
pev(Entpev_originorigin3)
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
//fake_smokes(origin3)
   
engfunc(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall21.0ATTN_STATIC0PITCH_NORM)
   
shoot_mode[pemilix] = 0
   remove_entity
(Ent)
   
   if(!
is_user_alive(pemilix) || !is_user_connected(pemilix) || get_user_weapon(pemilix) != CSW_BDRIPPER || !g_had_guillotine[pemilix])
      return
   
   
set_weapon_anim(pemilixANIM_LOST)
   
set_weapons_timeidle(pemilixCSW_BDRIPPER2.5)
   
set_player_nextattackx(pemilix2.5)
   
set_task(1.3"reload2"pemilix)
   
set_task(1.4"reload"pemilix)
}

public 
geri_tepme2(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)
}

public 
action_thanatos(Entvictimid)
{         
   if(!
pev_valid(Ent))   
      return
   
   if(
headshot_mode[id] == 1)
   {
      
      
//geri_tepme2(id, victim)
      
      
set_task(0.01"action_thanatos"Ent)
   }
}

public 
reload(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_DRAW)
}

public 
reload2(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_IDLE_SHOOT2)
}

public 
balik(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
id
   id 
pev(Entpev_iuser1)
   
   
set_weapons_timeidle(idCSW_BDRIPPER1.0)
   
set_player_nextattackx(id1.0)
   
shoot_mode[id] = 0
   g_guillotine_ammo
[id]++
   
update_ammo(id)
   
set_weapon_anim(idANIM_CATCH)
   
emit_sound(idCHAN_WEAPONweapon_sound[0], 1.0ATTN_NORM0PITCH_NORM)    
   
remove_entity(Ent)
}

/*new Float:g_fDamageMulti[] = 
{
1.0,
1.1,
1.2,
1.3,
1.4,
1.5,
1.6,
1.7,
1.8,
1.9,
2.0,
2.1,
2.2,
2.3
}*/

public geri_tepme(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)                    
}

public 
Damage_guillotine(EntId)
{
   static 
OwnerOwner pev(Entpev_iuser1)
   static 
Attacker
   if(!
is_user_alive(Owner)) 
   {
      
Attacker 0
      
return
   } else 
Attacker Owner

   
if(g_endround)
      return
   
   new 
bool:bIsHeadShot// never make that one static
   
new Float:flAdjustedDamagebool:death
   
switch( Get_MissileWeaponHitGroup(Ent) ) 
   {
      case 
HIT_GENERICflAdjustedDamage DAMAGE 1.0 
         
case HIT_STOMACHflAdjustedDamage DAMAGE 1.5 
         
case HIT_LEFTLEGHIT_RIGHTLEGflAdjustedDamage DAMAGE 1.0
         
case HIT_LEFTARMHIT_RIGHTARMflAdjustedDamage DAMAGE 1.0
         
case HIT_HEADHIT_CHEST:
      {
         
flAdjustedDamage DAMAGE 2.5
         bIsHeadShot 
true;
         if(
headshot_mode[Owner] == 0set_task(2.0"balik_bro"Ent+1858941 )
         
headshot_mode[Owner] = 1
         headshot_korban
[Id] = 
         guillotine_korban
[Id] = Ent
         set_pev
(Entpev_iuser2Id)              
         
fakedamage(Id"Guillotine"1.0256
         
set_pev(Entpev_renderamt255)
         
set_pev(Entpev_solidSOLID_NOT)
         
set_pev(Entpev_fuser30.0)
      }
   }
   if(
pev(Idpev_health) <= flAdjustedDamagedeath true 
   
   
if(is_user_alive(Id))
   {
      if( 
bIsHeadShot && death)
      {
         if(
task_existsEnt+1858941 )) remove_taskEnt 1858941 )
         
set_pev(Entpev_sequence0)
         
headshot_korban[pev(Entpev_iuser2)] = 0
         headshot_mode
[Owner] = 0
         shoot_ent_mode
[Owner] = 1
         ent_sentuh
[Owner] = 1
         ent_sentuh_balik
[Owner] = 0
         set_pev
(Entpev_solidSOLID_BBOX)
         
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
         
         
kill(AttackerId1)
         
         
death false         
      
}
      if(
death)
      {
         
kill(AttackerId0)
         
         
death false         
      
}
      else 
ExecuteHamB(Ham_TakeDamageIdEntAttackerflAdjustedDamageDMG_CLUB)
   }
}


stock turn_to_target(entFloat:Ent_Origin[3], targetFloat:Vic_Origin[3]) 
{
   if(
target
   {
      new 
Float:newAngle[3]
      
entity_get_vector(entEV_VEC_anglesnewAngle)
      new 
Float:Vic_Origin[0] - Ent_Origin[0]
      new 
Float:Vic_Origin[1] - Ent_Origin[1]
      
      new 
Float:radians floatatan(z/xradian)
      
newAngle[1] = radians * (180 3.14)
      if (
Vic_Origin[0] < Ent_Origin[0])
         
newAngle[1] -= 180.0
      
      entity_set_vector
(entEV_VEC_anglesnewAngle)
   }
}

public 
balik_bro(Ent)
{
   
Ent -= 1858941
   
   
if(!pev_valid(Ent))
      return
   
   static 
pemilixpemilix pev(Entpev_iuser1)
   
set_pev(Entpev_sequence0)
   
headshot_korban[pev(Entpev_iuser2)] = 0
   headshot_mode
[pemilix] = 0
   shoot_ent_mode
[pemilix] = 1
   ent_sentuh
[pemilix] = 1
   ent_sentuh_balik
[pemilix] = 0
   set_pev
(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
}

public 
fw_SetModel(entitymodel[])
{
   if(!
pev_valid(entity))
      return 
FMRES_IGNORED
   
   
static Classname[64]
   
pev(entitypev_classnameClassnamesizeof(Classname))
   
   if(!
equal(Classname"weaponbox"))
      return 
FMRES_IGNORED
   
   
static id
   id 
pev(entitypev_owner)
   
   if(
equal(modelold_w_model))
   {
      static 
weapon
      weapon 
fm_get_user_weapon_entity(entityCSW_BDRIPPER)
      
      if(!
pev_valid(weapon))
         return 
FMRES_IGNORED
      
      
if(g_had_guillotine[id])
      {
         
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
         
set_pev(weaponpev_iuser4g_guillotine_ammo[id])
         
engfunc(EngFunc_SetModelentityw_model)
         
         
g_had_guillotine[id] = 0
         g_guillotine_ammo
[id] = 0
         
         
return FMRES_SUPERCEDE
      
}
   }
   
   return 
FMRES_IGNORED;
}

public 
fw_AddToPlayer_Post(entid)
{
   if(
pev(entpev_impulse) == WEAPON_SECRETCODE)
   {
      
g_had_guillotine[id] = 1
      g_guillotine_ammo
[id] = pev(entpev_iuser4)
      
      
set_pev(entpev_impulse0)
   }         
   
/*
   message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
   write_string((g_had_guillotine[id] == 1 ? "weapon_guillotine" : "weapon_mac10"))
   write_byte(6)
   write_byte(100)
   write_byte(-1)
   write_byte(-1)
   write_byte(0)
   write_byte(13)
   write_byte(CSW_BDRIPPER)
   write_byte(0)*/
}

public 
update_ammo(id)
{
   if(!
is_user_alive(id))
      return
   
   static 
weapon_entweapon_ent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   if(!
pev_valid(weapon_ent)) return
   
   
cs_set_weapon_ammo(weapon_entg_guillotine_ammo[id])   
   
//cs_set_user_bpammo(id, CSW_BDRIPPER, g_guillotine_ammo[id])
   
   
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEget_user_msgid("CurWeapon"), {000}, id)
   
write_byte(1)
   
write_byte(CSW_BDRIPPER)
   
write_byte(-1)
   
message_end()
   
   
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("AmmoX"), _id)
   
write_byte(1)
   
write_byte(g_guillotine_ammo[id])
   
message_end()
}

public 
fw_traceline(Float:v1[3],Float:v2[3],noMonsters,id,ptr)
{
   if(!
is_user_alive(id))
      return 
HAM_IGNORED   
   
if(get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return 
HAM_IGNORED
   
   
// get crosshair aim
   
static Float:aim[3];
   
get_aim(id,v1,aim);
   
   
// do another trace to this spot
   
new trace create_tr2();
   
engfunc(EngFunc_TraceLine,v1,aim,noMonsters,id,trace);
   
   
// copy ints
   
set_tr2(ptr,TR_AllSolid,get_tr2(trace,TR_AllSolid));
   
set_tr2(ptr,TR_StartSolid,get_tr2(trace,TR_StartSolid));
   
set_tr2(ptr,TR_InOpen,get_tr2(trace,TR_InOpen));
   
set_tr2(ptr,TR_InWater,get_tr2(trace,TR_InWater));
   
set_tr2(ptr,TR_pHit,get_tr2(trace,TR_pHit));
   
set_tr2(ptr,TR_iHitgroup,get_tr2(trace,TR_iHitgroup));
   
   
// copy floats
   
get_tr2(trace,TR_flFraction,aim[0]);
   
set_tr2(ptr,TR_flFraction,aim[0]);
   
get_tr2(trace,TR_flPlaneDist,aim[0]);
   
set_tr2(ptr,TR_flPlaneDist,aim[0]);
   
   
// copy vecs
   
get_tr2(trace,TR_vecEndPos,aim);
   
set_tr2(ptr,TR_vecEndPos,aim);
   
get_tr2(trace,TR_vecPlaneNormal,aim);
   
set_tr2(ptr,TR_vecPlaneNormal,aim);
   
   
// get rid of new trace
   
free_tr2(trace);
   
   return 
FMRES_IGNORED;
}

get_aim(id,Float:source[3],Float:ret[3])
{
static 
Float:vAngle[3], Float:pAngle[3], Float:dir[3], Float:temp[3];

// get aiming direction from forward global based on view angle and punch angle
pev(id,pev_v_angle,vAngle);
pev(id,pev_punchangle,pAngle);
xs_vec_add(vAngle,pAngle,temp);
engfunc(EngFunc_MakeVectors,temp);
global_get(glb_v_forward,dir);

/* vecEnd = vecSrc + vecDir * flDistance; */
xs_vec_mul_scalar(dir,8192.0,temp);
xs_vec_add(source,temp,ret);
}

public 
fake_smokes(Float:Origin[3])
{
static 
TE_FLAG

TE_FLAG 
|= TE_EXPLFLAG_NODLIGHTS
TE_FLAG 
|= TE_EXPLFLAG_NOSOUND
TE_FLAG 
|= TE_EXPLFLAG_NOPARTICLES

engfunc
(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYOrigin0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoordOrigin[0])
engfunc(EngFunc_WriteCoordOrigin[1])
engfunc(EngFunc_WriteCoordOrigin[2])
write_short(g_smokepuff_id)
write_byte(6)
write_byte(25)
write_byte(TE_FLAG)
message_end()
}

stock set_weapon_anim(idanim)
{
   if(!
is_user_alive(id))
      return
   
   
set_pev(idpev_weaponanimanim)
   
   
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
   
write_byte(anim)
   
write_byte(pev(idpev_body))
   
message_end()
}

stock kill(kvheadshot)
{
   
//cs_set_user_money(k, cs_get_user_money(k) + 500)
   
   
set_user_frags(kget_user_frags(k) + 1)
   
   
set_msg_block(g_MsgDeathMsg,BLOCK_ONCE)
   
set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
   
user_kill(v,1)
   
   new 
kteam get_user_team(k);
   new 
vteam get_user_team(v);
   
   new 
kfrags get_user_frags(k);
   new 
kdeaths get_user_deaths(k);
   
   new 
vfrags get_user_frags(v);
   new 
vdeaths get_user_deaths(v);
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(k);
   
ewrite_short(kfrags);
   
ewrite_short(kdeaths);
   
ewrite_short(0);
   
ewrite_short(kteam);
   
emessage_end();
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(v);
   
ewrite_short(vfrags);
   
ewrite_short(vdeaths);
   
ewrite_short(0);
   
ewrite_short(vteam);
   
emessage_end();
   
   
emessage_begin(MSG_BROADCASTg_MsgDeathMsg)
   
ewrite_byte(k)
   
ewrite_byte(v)
   
ewrite_byte(headshot)
   
ewrite_string("guillotine")
   
emessage_end()
}


stock create_blood(const Float:origin[3])
{
   
// Show some blood :)
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
   
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
}

stock drop_weapons(iddropwhat)
{
   static 
weapons[32], numiweaponid
   num 
0
   get_user_weapons
(idweaponsnum)
   
   for (
0numi++)
   {
      
weaponid weapons[i]
      
      if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
      {
         static 
wname[32]
         
get_weaponname(weaponidwnamesizeof wname 1)
         
engclient_cmd(id"drop"wname)
      }
   }
}

stock Get_MissileWeaponHitGroupiEnt )
{
   new 
Float:flStart], Float:flEnd];
   
   
peviEntpev_originflStart );
   
peviEntpev_velocityflEnd );
   
xs_vec_addflStartflEndflEnd );
   
   new 
ptr create_tr2();
   
engfuncEngFunc_TraceLineflStartflEnd0iEntptr );
   
   new 
iHitGroupOwnernOheadhead
   Owner 
pev(iEntpev_iuser1)
   
nOhead get_tr2ptrTR_iHitgroup )
   
head set_tr2ptrTR_iHitgroupHIT_HEAD )
   
   
iHitGroup headshot_mode[Owner] ? head nOhead
   
   free_tr2
ptr );
   
   return 
iHitGroup;
}

stock get_position(id,Float:forwFloat:rightFloat:upFloat:vStart[])
{
   static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
   
   
pev(idpev_originvOrigin)
   
pev(idpev_view_ofsvUp//for player
   
xs_vec_add(vOriginvUpvOrigin)
   
pev(idpev_v_anglevAngle// if normal entity ,use pev_angles
   
   
angle_vector(vAngleANGLEVECTOR_FORWARDvForward//or use EngFunc_AngleVectors
   
angle_vector(vAngleANGLEVECTOR_RIGHTvRight)
   
angle_vector(vAngleANGLEVECTOR_UPvUp)
   
   
vStart[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
   vStart
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
   vStart
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}

stock set_weapons_timeidle(idWeaponId ,Float:TimeIdle)
{
   if(!
is_user_alive(id))
      return
   
   static 
entwpnentwpn fm_get_user_weapon_entity(idWeaponId)
   if(!
pev_valid(entwpn)) 
      return
   
   
set_pdata_float(entwpn48TimeIdle 0.2OFFSET_LINUX_WEAPONS)
}


stock set_player_nextattackx(idFloat:nexttime)
{
    if(!
is_user_alive(id))
        return
       
    
set_pdata_float(id83nexttime5)


public 
CurrentWeapon(id)
{
    
replace_weapon_models(idread_data(2))
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_KNIFE:
        {
            if(!
ze_is_user_zombie(id))
            {
                
set_pev(idpev_viewmodel2bicakmodel[0][gorunum[id]][0])
            }
        }
    }
}

stock renkli_yazi(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msgsizeof(msg) - 1input3)
    
    
replace_all(msg190"!n""^x01")
    
replace_all(msg190"!g""^x04")
    
replace_all(msg190"!t""^x03")
    
    if(
idplayers[0] = id; else get_players(playerscount"ch")
    for(new 
0counti++)
    {
        if(
is_user_connected(players[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
            
write_byte(players[i])
            
write_string(msg)
            
message_end()
        }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/ 

Can this be fixed, it automatically gives VIPs the Gilloutine when they join the server. I want it to give them the normal Default knife and they have to open up the Knife Menu to choose what sort of knife they would like. And the knife resets every round to normal default knife.
J@y is offline
sPed
Member
Join Date: May 2017
Location: Algeria
Old 12-24-2022 , 15:55   Re: Gilloutine Help
Reply With Quote #8

PHP Code:
#include <zombie_escape>
#include <engine>
#include <fakemeta_util>
#include <cstrike>
#include <fun>


#define PLUGIN "Guillotine"
#define VERSION "1.3"
#define AUTHOR "m4m3ts"
 
#define CSW_BDRIPPER CSW_KNIFE
#define weapon_guillotine "weapon_knife"
#define old_event "events/mac10.sc"
#define old_w_model "models/w_mac10.mdl"
#define WEAPON_SECRETCODE 1329419

const pev_catchedspeed pev_iuser4
#define DEFAULT_AMMO 10
#define RELOAD_TIME 0.435
#define DAMAGE 30
#define BDRIP_CLASSNAME "Blood Dripper"
#define WEAPON_ANIMEXT "knife"

#define Get_Ent_Data(%1,%2) get_pdata_int(%1,%2,4)
#define Set_Ent_Data(%1,%2,%3) set_pdata_int(%1,%2,%3,4)

const PDATA_SAFE 2
const OFFSET_LINUX_WEAPONS 4
const OFFSET_WEAPONOWNER 41
const m_flNextAttack 83

new gorunum[33]

new 
bicakmodel[][][] =
{
    {
CSW_KNIFE,
    
"models/zombie_escape/v_combat_knife.mdl",
    
"models/zombie_escape/v_shadow.mdl",
    
"models/zombie_escape/v_hammer_knife.mdl",
    
"models/zombie_escape/v_katana_knife.mdl",
    
"models/zombie_escape/v_dualkatana.mdl"
    
}
}


new const 
v_model[] = "models/v_astra.mdl"
new const p_model[] = "models/p_astra.mdl"
new const w_model[] = "models/w_guillotine.mdl"
new const KNIFE_MODEL[] = "models/astra_projectile.mdl"
new const PECAH_MODEL[] = "models/gibs_guilotine.mdl"
new const hit_wall[] = "weapons/janus9_stone1.wav"
new const hit_wall2[] = "weapons/janus9_stone2.wav"
new const weapon_sound[6][] = 
{
"weapons/guillotine_catch2.wav",
"weapons/guillotine_draw.wav",
"weapons/guillotine_draw_empty.wav",
"weapons/guillotine_explode.wav",
"weapons/guillotine_red.wav",
"weapons/guillotine-1.wav"
}


new const 
WeaponResource[3][] = 
{
"sprites/weapon_guillotine.txt",
"sprites/640hud120.spr",
"sprites/guillotine_lost.spr"
}

enum
{
ANIM_IDLE 0,
ANIM_IDLE_EMPTY,
ANIM_SHOOT,
ANIM_DRAW,
ANIM_DRAW_EMPTY,
ANIM_IDLE_SHOOT,
ANIM_IDLE_SHOOT2,
ANIM_CATCH,
ANIM_LOST
}

new 
g_MsgDeathMsgg_endround

new g_had_guillotine[33], g_guillotine_ammo[33], shoot_mode[33], shoot_ent_mode[33], g_pecahheadshot_mode[33], ent_sentuh[33], ent_sentuh_balik[33]
new 
g_old_weapon[33], g_smokepuff_idm_iBlood[2], guillotine_korban[33], headshot_korban[33], gmsgScoreInfo

const PRIMARY_WEAPONS_BIT_SUM 
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
//new TargetOrigin[3] 

public plugin_init()
{
   
register_plugin(PLUGINVERSIONAUTHOR)
   
RegisterHam(Ham_TraceAttack"player""fw_TraceAttack_Sg")
   
register_forward(FM_CmdStart"fw_CmdStart")
   
register_forward(FM_SetModel"fw_SetModel")
   
register_think(BDRIP_CLASSNAME"fw_Think")

   
//Knife menu
   
register_clcmd("say /knife","knifemenu")
   
register_clcmd("say_team /knife","knifemenu")

   
register_event("CurWeapon","CurrentWeapon","be","1=1")
   
register_event("HLTV""EventHLTV""a""1=0""2=0")
   
register_touch(BDRIP_CLASSNAME"*""fw_touch")
   
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
   
register_forward(FM_TraceLine"fw_traceline"1)
   
register_forward(FM_AddToFullPack"fm_addtofullpack_post"1)
   
RegisterHam(Ham_Spawn"player""Player_Spawn"1)
   
RegisterHam(Ham_Weapon_WeaponIdleweapon_guillotine"fw_guillotineidleanim"1)
   
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
   
RegisterHam(Ham_Item_AddToPlayerweapon_guillotine"fw_AddToPlayer_Post"1)
   
register_event("CurWeapon""Event_CurWeapon""be""1=1")
   
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
   
register_clcmd("weapon_guillotine""hook_weapon")
   
g_MsgDeathMsg get_user_msgid("DeathMsg")
   
gmsgScoreInfo get_user_msgid("ScoreInfo"

   
register_logevent("logevent_round_end"2"1=Round_End")
   
g_endround 1
}


public 
plugin_precache()
{
   
precache_model(bicakmodel[0][1])
   
precache_model(bicakmodel[0][2])
   
precache_model(bicakmodel[0][3])
   
precache_model(bicakmodel[0][4])
   
precache_model(bicakmodel[0][5])
   
precache_model(v_model)
   
precache_model(p_model)
   
precache_model(w_model)
   
precache_model(KNIFE_MODEL)
   
g_pecah precache_model(PECAH_MODEL)
   
precache_sound(hit_wall)
   
precache_sound(hit_wall2)

   for(new 
0sizeof(weapon_sound); i++) 
   
precache_sound(weapon_sound[i])

   for(new 
1sizeof(WeaponResource); i++)
   
precache_model(WeaponResource[i])

   
g_smokepuff_id engfunc(EngFunc_PrecacheModelWeaponResource[2])
   
m_iBlood[0] = precache_model("sprites/blood.spr")
   
m_iBlood[1] = precache_model("sprites/bloodspray.spr")   
}

public 
ze_user_infected(id)
{
   
remove_guillotine(id)
}

public 
EventHLTV()
{
    
g_endround 0
}

public 
client_connect(id)
{
    
gorunum[id] = 1
}

public 
knifemenu(id)
{
  if(!
ze_is_user_zombie(id))
  {
    new 
menuz;
    static 
amenu[512];
    
formatex(amenu,charsmax(amenu),"\r[ZE] \yKnife Menu")
    
menuz menu_create(amenu,"knifemenu_devam")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wNata")
    
menu_additem(menuz,amenu,"1")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wShadowAxe")
    
menu_additem(menuz,amenu,"2")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wWarhammer")
    
menu_additem(menuz,amenu,"3")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wKatana")
    
menu_additem(menuz,amenu,"4")
    
    
formatex(amenu,charsmax(amenu),"| \r- \wDualKatana")
    
menu_additem(menuz,amenu,"5")

    if(
get_user_flags(id) & ADMIN_LEVEL_H)
    {
        
formatex(amenu,charsmax(amenu),"| \r- \wGuillotine \y[VIP]")
    }
    else
    {
        
formatex(amenu,charsmax(amenu),"| \r- \dGuillotine\r[VIP]")
    }        
    
menu_additem(menuz,amenu,"6")
    
    
menu_setprop(menuz,MPROP_EXIT,MEXIT_ALL)
    
menu_display(id,menuz,0)

  }
  return 
PLUGIN_HANDLED
}

public 
knifemenu_devam(id,menu,item)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    new 
access,callback,data[6],iname[64]
    
    
menu_item_getinfo(menu,item,access,data,5,iname,63,callback)
    
    new 
key str_to_num(data)
    
    if(
key == 1)
    {
    
gorunum[id] = 1
                remove_guillotine
(id)
    }
    else if(
key == 2)
    {
        
gorunum[id] = 2
                remove_guillotine
(id)
    }
    else if(
key == 3)
    {
        
gorunum[id] = 3
                remove_guillotine
(id)
    }
    else if(
key == 4)
    {
        
gorunum[id] = 4
                remove_guillotine
(id)
    }
    else if(
key == 5)
    {
        
gorunum[id] = 5
                remove_guillotine
(id)
    }
    else if(
key == 6)
    {
        if(
get_user_flags(id) & ADMIN_LEVEL_H)
        {
        
get_blood(id)
        }
        else
        {
        
renkli_yazi(id"!g|| !tOnly For VIP's.")
        
knifemenu(id)
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
logevent_round_end() g_endround 1

public Player_Spawn(id)
{
    
ResetKnife(id
}

public 
ResetKnife(id)
{
        
cs_set_player_view_model(idCSW_KNIFE"models/v_knife.mdl")
        
cs_set_player_weap_model(idCSW_KNIFE"models/p_knife.mdl")
    
remove_guillotine(id)
}

public 
fw_PlayerKilled(id)
{
remove_guillotine(id)
}

public 
hook_weapon(id)
{
engclient_cmd(idweapon_guillotine)
return
}

public 
get_blood(id)
{
   if(!(
get_user_flags(id) & ADMIN_LEVEL_H))
      return
   
drop_weapons(id0)
   
g_had_guillotine[id] = 1
   g_guillotine_ammo
[id] = DEFAULT_AMMO
   
   give_item
(idweapon_guillotine)
   
update_ammo(id)
   
   
//static weapon_ent; weapon_ent = fm_find_ent_by_owner(-1, weapon_guillotine, id)
   //if(pev_valid(weapon_ent)) cs_set_weapon_ammo(weapon_ent, 1)
}

public 
remove_guillotine(id)
{
   
g_had_guillotine[id] = 0
   
static EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   
ancur(Ent)
}

public 
refill_guillotine(id)
{   
   if(
g_had_guillotine[id]) g_guillotine_ammo[id] = 15
   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id]) update_ammo(id)
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return 
FMRES_IGNORED   
   
if(get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
      
set_cd(cd_handleCD_flNextAttackget_gametime() + 0.001
   
   return 
FMRES_HANDLED
}

public 
message_DeathMsg(msg_idmsg_destid)
{
   static 
szTruncatedWeapon[33], iAttackeriVictim
   
   get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
   
   
iAttacker get_msg_arg_int(1)
   
iVictim get_msg_arg_int(2)
   
   if(!
is_user_connected(iAttacker) || iAttacker == iVictim) return PLUGIN_CONTINUE
   
   
if(get_user_weapon(iAttacker) == CSW_BDRIPPER)
   {
      if(
g_had_guillotine[iAttacker])
         
set_msg_arg_string(4"knife")
   }
   
   return 
PLUGIN_CONTINUE
}

public 
fw_TraceAttack_Sg(VictimAttackerFloat:DamageFloat:Direction[3], TraceHandleDamageBitptr)
{         
   return 
HAM_IGNORED
}

public 
Event_CurWeapon(id)
{
   
   if(!
is_user_alive(id))
      return 
   
   if(
get_user_weapon(id) == CSW_BDRIPPER && g_had_guillotine[id])
   {
      
set_pev(idpev_viewmodel2v_model)
      
set_pev(idpev_weaponmodel2p_model)
      
set_pdata_string(id492 4WEAPON_ANIMEXT, -20)
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] >= 1set_weapon_anim(idANIM_DRAW)
      if(
g_old_weapon[id] != CSW_BDRIPPER && g_guillotine_ammo[id] == && headshot_mode[id] == 0set_weapon_anim(idANIM_DRAW_EMPTY)
      else if(
g_old_weapon[id] != CSW_BDRIPPER && shoot_mode[id] == 1set_weapon_anim(idANIM_DRAW_EMPTY)
         
      
update_ammo(id)
   }
   
   
g_old_weapon[id] = get_user_weapon(id)
}

public 
fw_guillotineidleanim(Weapon)
{
   new 
id get_pdata_cbase(Weapon414)
   
   if(!
is_user_alive(id) || ze_is_user_zombie(id) || !g_had_guillotine[id] || get_user_weapon(id) != CSW_BDRIPPER)
      return 
HAM_IGNORED;
   
   if(
shoot_mode[id] == && g_guillotine_ammo[id] >= 1
      return 
HAM_SUPERCEDE;
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
headshot_mode[id] == && shoot_mode[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_SHOOT2)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   if(
g_guillotine_ammo[id] == && get_pdata_float(Weapon484) <= 0.25
   {
      
set_weapon_anim(idANIM_IDLE_EMPTY)
      
set_pdata_float(Weapon4820.04)
      return 
HAM_SUPERCEDE;
   }
   
   return 
HAM_IGNORED;
}

public 
fw_CmdStart(iduc_handleseed)
{
   if(!
is_user_alive(id) || !is_user_connected(id))
      return
   if(
get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return
   
   static 
entent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   
//if(!pev_valid(ent))
   //   return
   
if(get_pdata_float(ent46OFFSET_LINUX_WEAPONS) > 0.0 || get_pdata_float(ent47OFFSET_LINUX_WEAPONS) > 0.0
      return
   
   static 
CurButton
   CurButton 
get_uc(uc_handleUC_Buttons)
   
   if(
CurButton IN_ATTACK)
   {
      
CurButton &= ~IN_ATTACK
      set_uc
(uc_handleUC_ButtonsCurButton)
      
      
//if(g_guillotine_ammo[id] == 0)
      //   return
      
if(shoot_mode[id] == && get_pdata_float(id835) <= 0.0)
      {
         
//g_guillotine_ammo[id]--
         //update_ammo(id)
         
shoot_mode[id] = 1                        
         set_task
(0.2"FireKnife"id)
         
set_weapon_anim(idANIM_SHOOT)
         
emit_sound(idCHAN_WEAPONweapon_sound[5], 1.0ATTN_NORM0PITCH_NORM)
         
set_weapons_timeidle(idCSW_BDRIPPER0.7)
         
set_player_nextattackx(id0.7)
      }
   }
}

public 
FireKnife(id)
{
   static 
Float:StartOrigin[3], Float:velocity[3], Float:angles[3], Float:anglestrue[3], Float:jarak_max[3]
   static 
EntEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
   if(!
pev_valid(Ent)) return
   
get_position(id10.00.0, -2.0StartOrigin)     
   
get_position(id900.00.00.0jarak_max)
   
//static ent; ent = fm_get_user_weapon_entity(id, CSW_BDRIPPER)
   
pev(id,pev_v_angle,angles)
   
   
anglestrue[0] = 360.0 angles[0]
   
anglestrue[1] = angles[1]
   
anglestrue[2] = angles[2]
   
   
// Set info for ent
   
set_pev(Entpev_movetypeMOVETYPE_FLY)
   
set_pev(Entpev_ownerid)
   
set_pev(Entpev_iuser1id)
   
set_pev(Entpev_fuser1get_gametime() + 4.0)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
   
   
entity_set_string(EntEV_SZ_classnameBDRIP_CLASSNAME)
   
engfunc(EngFunc_SetModelEntKNIFE_MODEL)
   
set_pev(Entpev_minsFloat:{-1.0, -1.0, -1.0})
   
set_pev(Entpev_maxsFloat:{1.01.01.0})
   
set_pev(Entpev_originStartOrigin)
   
set_pev(Entpev_anglesanglestrue)
   
set_pev(Entpev_gravity0.01)
   
set_pev(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_frame1.0)
   
set_pev(Entpev_framerate1.0)
   
set_pev(Entpev_sequence0)
   
//ExecuteHamB(Ham_Weapon_PrimaryAttack, ent)
   
set_pev(Entpev_catchedspeed1100)
   
velocity_by_aimid1400velocity )
   
set_pevEntpev_velocityvelocity )
   
set_pev(Entpev_vuser1velocity)
   
set_pev(Entpev_vuser2jarak_max)
   
shoot_ent_mode[id] = 0
   set_pev
(Entpev_iuser40)
   
ent_sentuh[id] = 1
   ent_sentuh_balik
[id] = 0
}

public 
fm_addtofullpack_post(eseuserhosthost_flagsplayerp_set)
{
   if(!
player)
      return 
FMRES_IGNORED
   
   
if(!is_user_connected(host) || !is_user_alive(user))
      return 
FMRES_IGNORED
   
   
if(!ze_is_user_zombie(user) || headshot_korban[user] != 1)
      return 
FMRES_IGNORED
   
   
if(host == user)
      return 
FMRES_IGNORED
   
   
new Float:PlayerOrigin[3]//, Float:anglesss[3]
   
pev(userpev_originPlayerOrigin)
   
   
PlayerOrigin[2] += 25.0
   
   
//engfunc(EngFunc_GetBonePosition, user, 8, PlayerOrigin, anglesss)
   
   
engfunc(EngFunc_SetOriginguillotine_korban[user], PlayerOrigin)
   
   return 
FMRES_HANDLED
}

public 
fw_Think(Ent)
{
   if(!
pev_valid(Ent)) 
      return
   
   
//new id; id = pev(Ent, pev_owner)
   
static Float:pulang[3], Float:StartOriginz[3], pemilixFloat:brangkat[3], Float:jarak_max[3], Float:origin_asli[3], korban
   pemilix 
pev(Entpev_iuser1)
   
pev(Entpev_originStartOriginz)
   
korban pev(Entpev_iuser2)
   
   if(
headshot_korban[korban] == 1)
   {
      
action_thanatos(Entkorbanpemilix)
      if(
get_gametime() - 0.15 pev(Entpev_fuser3))
      {                         
         
Damage_guillotine(Entkorban)     
      }
   }
   
   if(
ent_sentuh_balik[pemilix] == && shoot_ent_mode[pemilix] == 1)
   {
      
ent_sentuh_balik[pemilix] = 1
      pev
(pemilixpev_originorigin_asli)
      
origin_asli[2] += 0.1
   
}
   
   if(
ent_sentuh[pemilix] == 1)
   {
      
ent_sentuh[pemilix] = 0
      pev
(Entpev_vuser2jarak_max)
      
pev(Entpev_vuser1brangkat)               
      
get_speed_vector(StartOriginzorigin_asli1400.0pulang)
      
      if(
shoot_ent_mode[pemilix] == 1
      {
         
set_pev(Entpev_velocitypulang)
      }            
      else 
set_pev(Entpev_velocitybrangkat)
      
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzjarak_max) <= 40.0)
   {
      
shoot_ent_mode[pemilix] = 1
      ent_sentuh
[pemilix] = 1
      set_pev
(Entpev_owner0)
   }
   
   if(
shoot_ent_mode[pemilix] == && get_distance_f(StartOriginzorigin_asli) <= 40.0)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   else if(
headshot_korban[korban] == 1set_pev(Entpev_nextthinkget_gametime() + 0.2)
      else 
set_pev(Entpev_nextthinkhalflife_time() + 0.001)
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3])
{
   
new_velocity[0] = origin2[0] - origin1[0]
   
new_velocity[1] = origin2[1] - origin1[1]
   
new_velocity[2] = origin2[2] - origin1[2]
   static 
Float:numnum floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
   
new_velocity[0] *= num
   new_velocity
[1] *= num
   new_velocity
[2] *= num
   
   
return 1;
}


stock hook_ent(victimattackerFloat:speed)
{
   if(!
pev_valid(victim) || !pev_valid(attacker))
      return
   
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3], Float:VicOrigin[3]
   
   
pev(victimpev_originEntOrigin)
   
pev(attackerpev_originVicOrigin)
   
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   if (
distance_f 60.0)
   {
      new 
Float:fl_Time distance_f speed
      
      fl_Velocity
[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
      fl_Velocity
[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
      fl_Velocity
[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
      
} else {
      
fl_Velocity[0] = 0.0
      fl_Velocity
[1] = 0.0
      fl_Velocity
[2] = 0.0
   
}
   
   
entity_set_vector(victimEV_VEC_velocityfl_Velocity)
}

stock hook_ent2(entFloat:VicOrigin[3], Float:speedtype)
{
   static 
Float:fl_Velocity[3]
   static 
Float:EntOrigin[3]
   static 
Float:EntVelocity[3]
   
   
pev(entpev_velocityEntVelocity)
   
pev(entpev_originEntOrigin)
   static 
Float:distance_f
   distance_f 
get_distance_f(EntOriginVicOrigin)
   
   static 
Float:fl_Timefl_Time distance_f speed
   
   
if(type == 1)
   {
      
fl_Velocity[0] = ((VicOrigin[0] - EntOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((VicOrigin[1] - EntOrigin[1]) / fl_Time)
      
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time      
      
} else if(type == 2) {
      
fl_Velocity[0] = ((EntOrigin[0] - VicOrigin[0]) / fl_Time) * 1.5
      fl_Velocity
[1] = ((EntOrigin[1] - VicOrigin[1]) / fl_Time
      
fl_Velocity[2] = (EntOrigin[2] - VicOrigin[2]) / fl_Time
   
}
   
   
xs_vec_add(EntVelocityfl_Velocityfl_Velocity)
   
set_pev(entpev_velocityfl_Velocity)
}

public 
fw_touch(EntId)
{
   
// If ent is valid
   
if(!pev_valid(Ent))
      return
   if(
pev(Entpev_movetype) == MOVETYPE_NONE)
      return
   
   static 
classnameptd[32]
   
pev(Idpev_classnameclassnameptd31)
   if (
equali(classnameptd"func_breakable")) ExecuteHamBHam_TakeDamageId0080.0DMG_GENERIC )
   
//static korban
   //korban = pev(Ent, pev_iuser2)
   
   // Get it's origin
   
new Float:originF[3], pemilix 
   
//static id2
   //id2 = pev(Ent, pev_owner)
   
pemilix pev(Entpev_iuser1)
   
pev(Entpev_originoriginF)
   
// Alive...
   //new id = read_data(2)
   
if(is_user_alive(Id) && ze_is_user_zombie(Id))
   {
      
fakedamage(Id"Guillotine"1.0256)
      
Damage_guillotine(EntId)  
      
geri_tepme(pemilixId)      
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1                  
      create_blood
(originF)
      
//create_blood(originF)
   
}
   
   else if(
shoot_ent_mode[pemilix] == && Id == pemilix)
   {
      if(
is_user_alive(pemilix) && is_user_connected(pemilix) && get_user_weapon(pemilix) == CSW_BDRIPPER && g_had_guillotine[pemilix]) balik(Ent)
      else 
ancur(Ent)
      
//balik(Ent)
   
}
   
   else if(
is_user_alive(Id) && !ze_is_user_zombie(Id))
   {
      
set_pev(Entpev_ownerId)
      
ent_sentuh[pemilix] = 1
   
}
   
   else
   {
      
set_pev(Entpev_owner0)
      
      if(
shoot_ent_mode[pemilix] == 0)
      {
         
shoot_ent_mode[pemilix] = 1
         engfunc
(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall1.0ATTN_STATIC0PITCH_NORM)
         
ent_sentuh[pemilix] = 1
      
}
      else 
ancur(Ent)
   }
   
}

public 
ancur(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
Float:origin2[3], pemilixFloat:origin3[3]
   
pemilix pev(Entpev_iuser1)
   
entity_get_vector(EntEV_VEC_originorigin2)
   
pev(Entpev_originorigin3)
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin20)
   
write_byte(TE_BREAKMODEL)
   
engfunc(EngFunc_WriteCoordorigin2[0])
   
engfunc(EngFunc_WriteCoordorigin2[1])
   
engfunc(EngFunc_WriteCoordorigin2[2])
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoord25)
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoordrandom_num(-2525))
   
engfunc(EngFunc_WriteCoord5)
   
write_byte(5)
   
write_short(g_pecah)
   
write_byte(10)
   
write_byte(17)
   
write_byte(0x00)
   
message_end()
   
   
//fake_smokes(origin3)
   
engfunc(EngFunc_EmitSoundEntCHAN_WEAPONhit_wall21.0ATTN_STATIC0PITCH_NORM)
   
shoot_mode[pemilix] = 0
   remove_entity
(Ent)
   
   if(!
is_user_alive(pemilix) || !is_user_connected(pemilix) || get_user_weapon(pemilix) != CSW_BDRIPPER || !g_had_guillotine[pemilix])
      return
   
   
set_weapon_anim(pemilixANIM_LOST)
   
set_weapons_timeidle(pemilixCSW_BDRIPPER2.5)
   
set_player_nextattackx(pemilix2.5)
   
set_task(1.3"reload2"pemilix)
   
set_task(1.4"reload"pemilix)
}

public 
geri_tepme2(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)
}

public 
action_thanatos(Entvictimid)
{         
   if(!
pev_valid(Ent))   
      return
   
   if(
headshot_mode[id] == 1)
   {
      
      
//geri_tepme2(id, victim)
      
      
set_task(0.01"action_thanatos"Ent)
   }
}

public 
reload(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_DRAW)
}

public 
reload2(id)
{
   if(!
is_user_alive(id) || !is_user_connected(id) || get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id] || g_guillotine_ammo[id] == 0)
      return
   
   
set_weapon_anim(idANIM_IDLE_SHOOT2)
}

public 
balik(Ent)
{
   if(!
pev_valid(Ent))
      return
   static 
id
   id 
pev(Entpev_iuser1)
   
   
set_weapons_timeidle(idCSW_BDRIPPER1.0)
   
set_player_nextattackx(id1.0)
   
shoot_mode[id] = 0
   g_guillotine_ammo
[id]++
   
update_ammo(id)
   
set_weapon_anim(idANIM_CATCH)
   
emit_sound(idCHAN_WEAPONweapon_sound[0], 1.0ATTN_NORM0PITCH_NORM)    
   
remove_entity(Ent)
}

/*new Float:g_fDamageMulti[] = 
{
1.0,
1.1,
1.2,
1.3,
1.4,
1.5,
1.6,
1.7,
1.8,
1.9,
2.0,
2.1,
2.2,
2.3
}*/

public geri_tepme(OwnerId)

   static 
Float:StartOrigin[3], Float:TargetOrigin[3]
   
get_position(Owner0.00.00.0StartOrigin)
   static 
Float:Velocity[3]
   
fm_get_aim_origin(OwnerTargetOrigin)
   
get_speed_vector(StartOriginTargetOrigin2000.0Velocity)
   
set_pev(Idpev_velocityVelocity)                    
}

public 
Damage_guillotine(EntId)
{
   static 
OwnerOwner pev(Entpev_iuser1)
   static 
Attacker
   if(!
is_user_alive(Owner)) 
   {
      
Attacker 0
      
return
   } else 
Attacker Owner

   
if(g_endround)
      return
   
   new 
bool:bIsHeadShot// never make that one static
   
new Float:flAdjustedDamagebool:death
   
switch( Get_MissileWeaponHitGroup(Ent) ) 
   {
      case 
HIT_GENERICflAdjustedDamage DAMAGE 1.0 
         
case HIT_STOMACHflAdjustedDamage DAMAGE 1.5 
         
case HIT_LEFTLEGHIT_RIGHTLEGflAdjustedDamage DAMAGE 1.0
         
case HIT_LEFTARMHIT_RIGHTARMflAdjustedDamage DAMAGE 1.0
         
case HIT_HEADHIT_CHEST:
      {
         
flAdjustedDamage DAMAGE 2.5
         bIsHeadShot 
true;
         if(
headshot_mode[Owner] == 0set_task(2.0"balik_bro"Ent+1858941 )
         
headshot_mode[Owner] = 1
         headshot_korban
[Id] = 
         guillotine_korban
[Id] = Ent
         set_pev
(Entpev_iuser2Id)              
         
fakedamage(Id"Guillotine"1.0256
         
set_pev(Entpev_renderamt255)
         
set_pev(Entpev_solidSOLID_NOT)
         
set_pev(Entpev_fuser30.0)
      }
   }
   if(
pev(Idpev_health) <= flAdjustedDamagedeath true 
   
   
if(is_user_alive(Id))
   {
      if( 
bIsHeadShot && death)
      {
         if(
task_existsEnt+1858941 )) remove_taskEnt 1858941 )
         
set_pev(Entpev_sequence0)
         
headshot_korban[pev(Entpev_iuser2)] = 0
         headshot_mode
[Owner] = 0
         shoot_ent_mode
[Owner] = 1
         ent_sentuh
[Owner] = 1
         ent_sentuh_balik
[Owner] = 0
         set_pev
(Entpev_solidSOLID_BBOX)
         
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
         
         
kill(AttackerId1)
         
         
death false         
      
}
      if(
death)
      {
         
kill(AttackerId0)
         
         
death false         
      
}
      else 
ExecuteHamB(Ham_TakeDamageIdEntAttackerflAdjustedDamageDMG_CLUB)
   }
}


stock turn_to_target(entFloat:Ent_Origin[3], targetFloat:Vic_Origin[3]) 
{
   if(
target
   {
      new 
Float:newAngle[3]
      
entity_get_vector(entEV_VEC_anglesnewAngle)
      new 
Float:Vic_Origin[0] - Ent_Origin[0]
      new 
Float:Vic_Origin[1] - Ent_Origin[1]
      
      new 
Float:radians floatatan(z/xradian)
      
newAngle[1] = radians * (180 3.14)
      if (
Vic_Origin[0] < Ent_Origin[0])
         
newAngle[1] -= 180.0
      
      entity_set_vector
(entEV_VEC_anglesnewAngle)
   }
}

public 
balik_bro(Ent)
{
   
Ent -= 1858941
   
   
if(!pev_valid(Ent))
      return
   
   static 
pemilixpemilix pev(Entpev_iuser1)
   
set_pev(Entpev_sequence0)
   
headshot_korban[pev(Entpev_iuser2)] = 0
   headshot_mode
[pemilix] = 0
   shoot_ent_mode
[pemilix] = 1
   ent_sentuh
[pemilix] = 1
   ent_sentuh_balik
[pemilix] = 0
   set_pev
(Entpev_solidSOLID_BBOX)
   
set_pev(Entpev_nextthinkhalflife_time() + 0.01)
}

public 
fw_SetModel(entitymodel[])
{
   if(!
pev_valid(entity))
      return 
FMRES_IGNORED
   
   
static Classname[64]
   
pev(entitypev_classnameClassnamesizeof(Classname))
   
   if(!
equal(Classname"weaponbox"))
      return 
FMRES_IGNORED
   
   
static id
   id 
pev(entitypev_owner)
   
   if(
equal(modelold_w_model))
   {
      static 
weapon
      weapon 
fm_get_user_weapon_entity(entityCSW_BDRIPPER)
      
      if(!
pev_valid(weapon))
         return 
FMRES_IGNORED
      
      
if(g_had_guillotine[id])
      {
         
set_pev(weaponpev_impulseWEAPON_SECRETCODE)
         
set_pev(weaponpev_iuser4g_guillotine_ammo[id])
         
engfunc(EngFunc_SetModelentityw_model)
         
         
g_had_guillotine[id] = 0
         g_guillotine_ammo
[id] = 0
         
         
return FMRES_SUPERCEDE
      
}
   }
   
   return 
FMRES_IGNORED;
}

public 
fw_AddToPlayer_Post(entid)
{
   if(
pev(entpev_impulse) == WEAPON_SECRETCODE)
   {
      
g_had_guillotine[id] = 1
      g_guillotine_ammo
[id] = pev(entpev_iuser4)
      
      
set_pev(entpev_impulse0)
   }         
   
/*
   message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id)
   write_string((g_had_guillotine[id] == 1 ? "weapon_guillotine" : "weapon_mac10"))
   write_byte(6)
   write_byte(100)
   write_byte(-1)
   write_byte(-1)
   write_byte(0)
   write_byte(13)
   write_byte(CSW_BDRIPPER)
   write_byte(0)*/
}

public 
update_ammo(id)
{
   if(!
is_user_alive(id))
      return
   
   static 
weapon_entweapon_ent fm_get_user_weapon_entity(idCSW_BDRIPPER)
   if(!
pev_valid(weapon_ent)) return
   
   
cs_set_weapon_ammo(weapon_entg_guillotine_ammo[id])   
   
//cs_set_user_bpammo(id, CSW_BDRIPPER, g_guillotine_ammo[id])
   
   
engfunc(EngFunc_MessageBeginMSG_ONE_UNRELIABLEget_user_msgid("CurWeapon"), {000}, id)
   
write_byte(1)
   
write_byte(CSW_BDRIPPER)
   
write_byte(-1)
   
message_end()
   
   
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("AmmoX"), _id)
   
write_byte(1)
   
write_byte(g_guillotine_ammo[id])
   
message_end()
}

public 
fw_traceline(Float:v1[3],Float:v2[3],noMonsters,id,ptr)
{
   if(!
is_user_alive(id))
      return 
HAM_IGNORED   
   
if(get_user_weapon(id) != CSW_BDRIPPER || !g_had_guillotine[id])
      return 
HAM_IGNORED
   
   
// get crosshair aim
   
static Float:aim[3];
   
get_aim(id,v1,aim);
   
   
// do another trace to this spot
   
new trace create_tr2();
   
engfunc(EngFunc_TraceLine,v1,aim,noMonsters,id,trace);
   
   
// copy ints
   
set_tr2(ptr,TR_AllSolid,get_tr2(trace,TR_AllSolid));
   
set_tr2(ptr,TR_StartSolid,get_tr2(trace,TR_StartSolid));
   
set_tr2(ptr,TR_InOpen,get_tr2(trace,TR_InOpen));
   
set_tr2(ptr,TR_InWater,get_tr2(trace,TR_InWater));
   
set_tr2(ptr,TR_pHit,get_tr2(trace,TR_pHit));
   
set_tr2(ptr,TR_iHitgroup,get_tr2(trace,TR_iHitgroup));
   
   
// copy floats
   
get_tr2(trace,TR_flFraction,aim[0]);
   
set_tr2(ptr,TR_flFraction,aim[0]);
   
get_tr2(trace,TR_flPlaneDist,aim[0]);
   
set_tr2(ptr,TR_flPlaneDist,aim[0]);
   
   
// copy vecs
   
get_tr2(trace,TR_vecEndPos,aim);
   
set_tr2(ptr,TR_vecEndPos,aim);
   
get_tr2(trace,TR_vecPlaneNormal,aim);
   
set_tr2(ptr,TR_vecPlaneNormal,aim);
   
   
// get rid of new trace
   
free_tr2(trace);
   
   return 
FMRES_IGNORED;
}

get_aim(id,Float:source[3],Float:ret[3])
{
static 
Float:vAngle[3], Float:pAngle[3], Float:dir[3], Float:temp[3];

// get aiming direction from forward global based on view angle and punch angle
pev(id,pev_v_angle,vAngle);
pev(id,pev_punchangle,pAngle);
xs_vec_add(vAngle,pAngle,temp);
engfunc(EngFunc_MakeVectors,temp);
global_get(glb_v_forward,dir);

/* vecEnd = vecSrc + vecDir * flDistance; */
xs_vec_mul_scalar(dir,8192.0,temp);
xs_vec_add(source,temp,ret);
}

public 
fake_smokes(Float:Origin[3])
{
static 
TE_FLAG

TE_FLAG 
|= TE_EXPLFLAG_NODLIGHTS
TE_FLAG 
|= TE_EXPLFLAG_NOSOUND
TE_FLAG 
|= TE_EXPLFLAG_NOPARTICLES

engfunc
(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYOrigin0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoordOrigin[0])
engfunc(EngFunc_WriteCoordOrigin[1])
engfunc(EngFunc_WriteCoordOrigin[2])
write_short(g_smokepuff_id)
write_byte(6)
write_byte(25)
write_byte(TE_FLAG)
message_end()
}

stock set_weapon_anim(idanim)
{
   if(!
is_user_alive(id))
      return
   
   
set_pev(idpev_weaponanimanim)
   
   
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, {000}, id)
   
write_byte(anim)
   
write_byte(pev(idpev_body))
   
message_end()
}

stock kill(kvheadshot)
{
   
//cs_set_user_money(k, cs_get_user_money(k) + 500)
   
   
set_user_frags(kget_user_frags(k) + 1)
   
   
set_msg_block(g_MsgDeathMsg,BLOCK_ONCE)
   
set_msg_block(gmsgScoreInfo,BLOCK_ONCE)
   
user_kill(v,1)
   
   new 
kteam get_user_team(k);
   new 
vteam get_user_team(v);
   
   new 
kfrags get_user_frags(k);
   new 
kdeaths get_user_deaths(k);
   
   new 
vfrags get_user_frags(v);
   new 
vdeaths get_user_deaths(v);
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(k);
   
ewrite_short(kfrags);
   
ewrite_short(kdeaths);
   
ewrite_short(0);
   
ewrite_short(kteam);
   
emessage_end();
   
   
emessage_begin(MSG_ALLgmsgScoreInfo);
   
ewrite_byte(v);
   
ewrite_short(vfrags);
   
ewrite_short(vdeaths);
   
ewrite_short(0);
   
ewrite_short(vteam);
   
emessage_end();
   
   
emessage_begin(MSG_BROADCASTg_MsgDeathMsg)
   
ewrite_byte(k)
   
ewrite_byte(v)
   
ewrite_byte(headshot)
   
ewrite_string("guillotine")
   
emessage_end()
}


stock create_blood(const Float:origin[3])
{
   
// Show some blood :)
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
   
   
message_begin(MSG_BROADCASTSVC_TEMPENTITY
   
write_byte(TE_BLOODSPRITE)
   
engfunc(EngFunc_WriteCoordorigin[0])
   
engfunc(EngFunc_WriteCoordorigin[1])
   
engfunc(EngFunc_WriteCoordorigin[2])
   
write_short(m_iBlood[1])
   
write_short(m_iBlood[0])
   
write_byte(75)
   
write_byte(12)
   
message_end()
}

stock drop_weapons(iddropwhat)
{
   static 
weapons[32], numiweaponid
   num 
0
   get_user_weapons
(idweaponsnum)
   
   for (
0numi++)
   {
      
weaponid weapons[i]
      
      if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
      {
         static 
wname[32]
         
get_weaponname(weaponidwnamesizeof wname 1)
         
engclient_cmd(id"drop"wname)
      }
   }
}

stock Get_MissileWeaponHitGroupiEnt )
{
   new 
Float:flStart], Float:flEnd];
   
   
peviEntpev_originflStart );
   
peviEntpev_velocityflEnd );
   
xs_vec_addflStartflEndflEnd );
   
   new 
ptr create_tr2();
   
engfuncEngFunc_TraceLineflStartflEnd0iEntptr );
   
   new 
iHitGroupOwnernOheadhead
   Owner 
pev(iEntpev_iuser1)
   
nOhead get_tr2ptrTR_iHitgroup )
   
head set_tr2ptrTR_iHitgroupHIT_HEAD )
   
   
iHitGroup headshot_mode[Owner] ? head nOhead
   
   free_tr2
ptr );
   
   return 
iHitGroup;
}

stock get_position(id,Float:forwFloat:rightFloat:upFloat:vStart[])
{
   static 
Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
   
   
pev(idpev_originvOrigin)
   
pev(idpev_view_ofsvUp//for player
   
xs_vec_add(vOriginvUpvOrigin)
   
pev(idpev_v_anglevAngle// if normal entity ,use pev_angles
   
   
angle_vector(vAngleANGLEVECTOR_FORWARDvForward//or use EngFunc_AngleVectors
   
angle_vector(vAngleANGLEVECTOR_RIGHTvRight)
   
angle_vector(vAngleANGLEVECTOR_UPvUp)
   
   
vStart[0] = vOrigin[0] + vForward[0] * forw vRight[0] * right vUp[0] * up
   vStart
[1] = vOrigin[1] + vForward[1] * forw vRight[1] * right vUp[1] * up
   vStart
[2] = vOrigin[2] + vForward[2] * forw vRight[2] * right vUp[2] * up
}

stock set_weapons_timeidle(idWeaponId ,Float:TimeIdle)
{
   if(!
is_user_alive(id))
      return
   
   static 
entwpnentwpn fm_get_user_weapon_entity(idWeaponId)
   if(!
pev_valid(entwpn)) 
      return
   
   
set_pdata_float(entwpn48TimeIdle 0.2OFFSET_LINUX_WEAPONS)
}


stock set_player_nextattackx(idFloat:nexttime)
{
    if(!
is_user_alive(id))
        return
       
    
set_pdata_float(id83nexttime5)


public 
CurrentWeapon(id)
{
    
replace_weapon_models(idread_data(2))
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_KNIFE:
        {
            if(!
ze_is_user_zombie(id))
            {
                
set_pev(idpev_viewmodel2bicakmodel[0][gorunum[id]][0])
            }
        }
    }
}

stock renkli_yazi(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msgsizeof(msg) - 1input3)
    
    
replace_all(msg190"!n""^x01")
    
replace_all(msg190"!g""^x04")
    
replace_all(msg190"!t""^x03")
    
    if(
idplayers[0] = id; else get_players(playerscount"ch")
    for(new 
0counti++)
    {
        if(
is_user_connected(players[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
            
write_byte(players[i])
            
write_string(msg)
            
message_end()
        }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/ 
sPed 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 04:19.


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