PHP- Kodu:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <cstrike>
#define PLUGIN "Dual katana"
#define VERSION "start"
#define AUTHOR "Barney"
#define m_flNextAttack 83
new g_dkatana[33]
new const dkatama_models[][]={"models/v_katanad.mdl","models/p_katanad.mdl"}
new const oldknife_sounds[][] =
{
"weapons/knife_deploy1.wav",
"weapons/knife_hit1.wav",
"weapons/knife_hit2.wav",
"weapons/knife_hit3.wav",
"weapons/knife_hit4.wav",
"weapons/knife_hitwall1.wav",
"weapons/knife_slash1.wav",
"weapons/knife_slash2.wav",
"weapons/knife_stab.wav"
}
new const knife_sounds[][] =
{
"weapons/katanad_draw.wav",
"weapons/katanad_hit1.wav",
"weapons/katanad_hit2.wav",
"weapons/katanad_hit2.wav",
"weapons/katanad_hit1.wav",
"weapons/knife_hitwall1.wav",
"weapons/katanad_slash1.wav",
"weapons/katanad_slash2.wav",
"weapons/katanad_stab.wav"
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /dkatana","dkatana_buy")
register_event("CurWeapon","CurrentWeapon","be","1=1")
RegisterHam(Ham_Weapon_PrimaryAttack,"weapon_knife","fw_primaryattack",1)
RegisterHam(Ham_Weapon_SecondaryAttack,"weapon_knife","fw_secondaryattack",1)
RegisterHam(Ham_TakeDamage,"player","fw_takedmg")
register_forward(FM_EmitSound, "fw_emitsound")
}
public CurrentWeapon(id){
if(g_dkatana[id]){
if(get_user_weapon(id)!=CSW_KNIFE && task_exists(id+1221))
remove_task(id+1221)
if(get_user_weapon(id)==CSW_KNIFE){
set_pev(id,pev_viewmodel2,dkatama_models[0])
set_pev(id, pev_weaponmodel2, dkatama_models[1])
}
}
}
public fw_emitsound(id, channel, const sound[])
{
if(!is_user_alive(id)|| get_user_weapon(id) != CSW_KNIFE || !g_dkatana[id])
return FMRES_IGNORED
for(new i = 0; i < sizeof oldknife_sounds; i++)
{
if(equal(sound, oldknife_sounds[i]))
{
emit_sound(id, channel, knife_sounds[i], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public dkatana_buy(id){
g_dkatana[id]=1
}
public fw_primaryattack(wpn){
new id=pev(wpn,pev_owner)
if(g_dkatana[id]){
UTIL_PlayWeaponAnimation(id,7)
set_task(0.2,"nextprattack",id+1221)
set_pdata_float(id,m_flNextAttack,1.0)
return HAM_SUPERCEDE
}
return PLUGIN_CONTINUE
}
public fw_secondaryattack(wpn){
new id=pev(wpn,pev_owner)
if(g_dkatana[id]){
UTIL_PlayWeaponAnimation(id,5)
set_task(0.4,"nextscattack",id+1221)
set_pdata_float(id,m_flNextAttack,1.5)
return HAM_SUPERCEDE
}
return PLUGIN_CONTINUE
}
public fw_takedmg(vic, inflictor, id, Float:damage){
if(g_dkatana[id]) {
SetHamParamFloat(4, damage * 3.0)
}
return PLUGIN_CONTINUE
}
public nextprattack(id){
id-=1221
new weapon = find_ent_by_owner ( -1, "weapon_knife", id )
ExecuteHam(Ham_Weapon_PrimaryAttack, weapon)
}
public nextscattack(id){
id-=1221
new weapon = find_ent_by_owner ( -1, "weapon_knife", id )
ExecuteHam(Ham_Weapon_SecondaryAttack, weapon)
set_pev(id, pev_weaponanim, 5)
}
stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
set_pev(Player, pev_weaponanim, Sequence)
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
write_byte(Sequence)
write_byte(0)
message_end()
}
public plugin_precache(){
for(new i;i<sizeof dkatama_models;i++)
precache_model(dkatama_models[i])
for(new i;i<sizeof knife_sounds;i++)
precache_sound(knife_sounds[i])
}