|
Member
|

06-29-2017
, 07:40
Pleaz add
|
#1
|
Help me add weapon to menu,im bad loat plugin menu,its god plugin weapon.
PHP Code:
#include <amxmodx> #include <engine> #include <fakemeta_util> #include <hamsandwich> #include <cstrike>
#define PLUGIN "[CSO] Melee Item: Thanatos-9" #define VERSION "2.0.beta" // Not Code Skull-Axe! #define AUTHOR "Dev!l" //Original Author Code
#define THANATOS9_RANGE_SLASH 110.0 #define THANATOS9_RANGE_STAB 80.0 #define THANATOS9_NEXTATTACK_SLASH 2.0 #define THANATOS9_NEXTATTACK_STAB 1.0
#define THANATOS9_DAMAGE_SLASH 500.0 #define THANATOS9_DAMAGE_STAB 100.0
#define THANATOS9_CHANGEA 5.0 #define THANATOS9_CHANGEB 3.5
#define THANATOS9_SHOOT_START 1.0 #define THANATOS9_SHOOT_END 1.0
#define DRAW_TIMEA 1.0 #define DRAW_TIMEB 1.0
const OFFSET_WEAPONOWNER = 41 const OFFSET_LINUX_WEAPONS = 4 const m_flNextAttack = 83
#define CSW_THANATOS9 CSW_KNIFE #define weapon_thanatos9 "weapon_knife"
new v_model[] = "models/cso/v_thanatos9.mdl" new p_modela[] = "models/cso/p_thanatos9a.mdl" new p_modelb[] = "models/cso/p_thanatos9b.mdl"
new const hit_wall[] = "weapons/balrog9_wall.wav" new const hit_sound[] = "weapons/skullaxe_hit.wav"
new const thanatos9_sound[][] = { "weapons/thanatos9_drawa.wav", "weapons/thanatos9_shoota1.wav", "weapons/thanatos9_shoota2.wav", "weapons/thanatos9_shootb_end.wav", "weapons/thanatos9_shootb_loop.wav", "weapons/thanatos9_changea_1.wav", "weapons/thanatos9_changea_2.wav", "weapons/thanatos9_changea_3.wav", "weapons/thanatos9_changea_4.wav", "weapons/thanatos9_changeb_1.wav", "weapons/thanatos9_changeb_2.wav" }
enum { THANATOS9_ANIM_DRAWA = 0, THANATOS9_ANIM_SHOOTB_LOOP, THANATOS9_ANIM_SHOOTB_START, THANATOS9_ANIM_SHOOTB_END, THANATOS9_ANIM_IDLEB, THANATOS9_ANIM_IDLEA, THANATOS9_ANIM_DRAWB, THANATOS9_ANIM_SHOOTA1, THANATOS9_ANIM_SHOOTA2, THANATOS9_ANIM_CHANGEA, THANATOS9_ANIM_CHANGEB }
enum { MODE_SLASH = 1, MODE_CHANGEA, MODE_CHANGEB, MODE_STAB, MODE_STAB_ACTION }
enum { HIT_NOTHING = 0, HIT_ENEMY, HIT_WALL }
#define TASK_SLASHING 215842
new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_p228", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" }
new m_iBlood[2] new g_has_thanatos9[33], g_item new g_MaxPlayers, g_mode[33]
new Float:g_thanatos_swing_range = 1.8,Float:g_thanatos_stab_range = 0.8
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0") register_event("CurWeapon", "Event_CurWeapon", "be", "1=1") RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1) RegisterHam(Ham_Killed, "player", "fw_PlayerKilled") RegisterHam(Ham_Weapon_WeaponIdle, "weapon_knife", "fw_thanatosidleanim", 1) register_forward(FM_EmitSound, "fw_EmitSound") register_forward(FM_CmdStart, "fw_CmdStart") register_forward(FM_TraceLine, "fw_TraceLine") register_forward(FM_TraceHull, "fw_TraceHull") RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack") for (new i = 1; i < sizeof WEAPONENTNAMES; i++) if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1) g_MaxPlayers = get_maxplayers() }
public plugin_precache() { precache_model(v_model) precache_model(p_modela) precache_model(p_modelb) precache_sound(hit_wall) precache_sound(hit_sound) for(new i = 0; i < sizeof thanatos9_sound; i++) precache_sound(thanatos9_sound[i]) m_iBlood[0] = precache_model("sprites/blood.spr") m_iBlood[1] = precache_model("sprites/bloodspray.spr") }
public zp_extra_item_selected(id, item) { if(item == g_item) { get_thanatos9(id) } }
public client_connect(id) remove_thanatos9(id) public client_disconnect(id) remove_thanatos9(id) public Player_Spawn(id) remove_thanatos9(id) public fw_PlayerKilled(id) remove_thanatos9(id)
public get_thanatos9(id) { g_has_thanatos9[id] = 1 g_mode[id] = MODE_SLASH
if(get_user_weapon(id) == CSW_KNIFE) { set_pev(id, pev_viewmodel2, v_model) set_weapon_anim(id, THANATOS9_ANIM_DRAWA) set_weapons_timeidle(id, CSW_THANATOS9, DRAW_TIMEA) set_player_nextattack(id, DRAW_TIMEA) static ent; ent = fm_get_user_weapon_entity(id, CSW_THANATOS9) set_pdata_float(ent, 47, 9999.0, OFFSET_LINUX_WEAPONS) } else { engclient_cmd(id, weapon_thanatos9) } }
public remove_thanatos9(id) { g_has_thanatos9[id] = 0 g_mode[id] = 0 if(g_mode[id] == MODE_STAB_ACTION) { g_mode[id] = MODE_STAB shoot_b_end(id) } }
public fw_Item_Deploy_Post(weapon_ent) { static owner owner = fm_cs_get_weapon_ent_owner(weapon_ent)
if(g_has_thanatos9[owner]) { set_weapons_timeidle(owner, CSW_THANATOS9, 1.7) // set_player_nextattack(owner, 1.7) } }
public Event_CurWeapon(id) { if(!is_user_alive(id)) return 1 if(get_user_weapon(id) != CSW_THANATOS9) return 1 if(!g_has_thanatos9[id]) return 1 set_pev(id, pev_viewmodel2, v_model) if(g_has_thanatos9[id]) { if(g_mode[id] == MODE_SLASH) { set_pev(id, pev_weaponmodel2, p_modela) set_weapon_anim(id, THANATOS9_ANIM_DRAWA) set_weapons_timeidle(id, CSW_THANATOS9, DRAW_TIMEA) set_player_nextattack(id, DRAW_TIMEA) } else if(g_mode[id] == MODE_STAB) { set_pev(id, pev_weaponmodel2, p_modelb) set_weapon_anim(id, THANATOS9_ANIM_DRAWB) set_weapons_timeidle(id, CSW_THANATOS9, DRAW_TIMEB) set_player_nextattack(id, DRAW_TIMEB) } else if(g_mode[id] == MODE_STAB_ACTION) { set_pev(id, pev_weaponmodel2, p_modela) set_weapon_anim(id, THANATOS9_ANIM_DRAWA) set_weapons_timeidle(id, CSW_THANATOS9, DRAW_TIMEA) set_player_nextattack(id, DRAW_TIMEA) g_mode[id] = MODE_STAB shoot_b_end(id) } } return 0 }
public Event_NewRound() { for(new i = 0; i < g_MaxPlayers; i++) remove_thanatos9(i) }
stock fm_cs_get_weapon_ent_owner(ent) { return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS) }
public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch) { if(!is_user_connected(id)) return FMRES_IGNORED if(get_user_weapon(id) != CSW_THANATOS9 || !g_has_thanatos9[id]) return FMRES_IGNORED if(sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i') { if(sample[14] == 's' && sample[15] == 'l' && sample[16] == 'a') { if(g_mode[id] == MODE_SLASH) { set_weapons_timeidle(id, CSW_THANATOS9, 1.2) set_player_nextattack(id, 1.2) emit_sound(id, CHAN_WEAPON, thanatos9_sound[random_num(2,3)], 1.0, ATTN_NORM, 0, PITCH_NORM) } return FMRES_SUPERCEDE } if (sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't') // hit { if (sample[17] == 'w') // wall { if(g_mode[id] == MODE_SLASH) { set_weapons_timeidle(id, CSW_THANATOS9, 1.2) set_player_nextattack(id, 1.2) emit_sound(id, CHAN_WEAPON, hit_wall, 1.0, ATTN_NORM, 0, PITCH_NORM) } return FMRES_SUPERCEDE } else { if(g_mode[id] == MODE_SLASH) { set_weapons_timeidle(id, CSW_THANATOS9, 1.2) set_player_nextattack(id, 1.2) emit_sound(id, CHAN_WEAPON, hit_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) } return FMRES_SUPERCEDE } } if (sample[14] == 's' && sample[15] == 't' && sample[16] == 'a') // stab { if(g_mode[id] == MODE_SLASH) { set_weapons_timeidle(id, CSW_THANATOS9, 1.2) set_player_nextattack(id, 1.2) emit_sound(id, CHAN_WEAPON, hit_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) } return FMRES_SUPERCEDE; } } return FMRES_IGNORED }
public fw_thanatosidleanim(Weapon) { new id = get_pdata_cbase(Weapon, 41, 4)
if(!is_user_alive(id) || !g_has_thanatos9[id] || get_user_weapon(id) != CSW_THANATOS9) return HAM_IGNORED; if(g_mode[id] == MODE_SLASH && get_pdata_float(Weapon, 48, 4) <= 0.25) { set_weapon_anim(id, THANATOS9_ANIM_IDLEA) set_pdata_float(Weapon, 48, 20.0, 4) return HAM_SUPERCEDE; } if(g_mode[id] == MODE_STAB && get_pdata_float(Weapon, 48, 4) <= 0.25) { set_weapon_anim(id, THANATOS9_ANIM_IDLEB) set_pdata_float(Weapon, 48, 20.0, 4) return HAM_SUPERCEDE; }
return HAM_IGNORED; }
public fw_CmdStart(id, uc_handle, seed) { if (!is_user_alive(id)) return if(get_user_weapon(id) != CSW_THANATOS9) return if(!g_has_thanatos9[id]) return static ent ent = find_ent_by_owner(-1, weapon_thanatos9, id) if(!pev_valid(ent)) return if(get_pdata_float(ent, 46, 4) > 0.0 || get_pdata_float(ent, 47, 4) > 0.0) return static CurButton CurButton = get_uc(uc_handle, UC_Buttons) if(CurButton & IN_ATTACK) { if(get_pdata_float(id, 83, 5) > 0.0) return set_uc(uc_handle, UC_Buttons, CurButton & ~IN_ATTACK) if(g_mode[id] == MODE_SLASH) { g_mode[id] = MODE_SLASH set_weapons_timeidle(id, CSW_THANATOS9, THANATOS9_NEXTATTACK_SLASH) set_player_nextattack(id, THANATOS9_NEXTATTACK_SLASH) set_weapon_anim(id, random_num(THANATOS9_ANIM_SHOOTA1, THANATOS9_ANIM_SHOOTA2)) set_task(1.2, "Do_Slashing", id+TASK_SLASHING) } else if(g_mode[id] == MODE_STAB) { g_mode[id] = MODE_STAB shoot_b_start(id) set_weapons_timeidle(id, CSW_THANATOS9, 0.1) set_player_nextattack(id, THANATOS9_NEXTATTACK_STAB) } } else if (CurButton & IN_ATTACK2) { if(get_pdata_float(ent, 47, OFFSET_LINUX_WEAPONS) > 0.0) return if(g_mode[id] == MODE_SLASH) { set_weapons_timeidle(id, CSW_THANATOS9, 0.1) set_player_nextattack(id, 0.1) g_mode[id] = MODE_CHANGEA set_task(0.1, "change_modea", id) } else if(g_mode[id] == MODE_STAB) { set_weapons_timeidle(id, CSW_THANATOS9, 0.1) set_player_nextattack(id, 0.1) g_mode[id] = MODE_CHANGEB set_task(0.1, "change_modeb", id) } } }
public Do_Slashing(id) { id -= TASK_SLASHING if(!is_user_alive(id)) return if(get_user_weapon(id) != CSW_THANATOS9 || !g_has_thanatos9[id]) return static Ent Ent = find_ent_by_owner(-1, weapon_thanatos9, id) new Float:origin[3] pev(Ent, pev_origin, origin) new a = FM_NULLENT while((a = find_ent_in_sphere(a, origin, 80.0)) != 0) { if (id == a) continue if(pev(a, pev_takedamage) != DAMAGE_NO) { ExecuteHamB(Ham_TakeDamage, a, id, id, 400.0, DMG_BULLET) } } if(!Check_Attack(id, 1)) { emit_sound(id, CHAN_WEAPON, thanatos9_sound[random_num(2,3)], 1.0, ATTN_NORM, 0, PITCH_NORM) } else { emit_sound(id, CHAN_WEAPON, hit_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) } }
public change_modea(id) { if(g_mode[id] == MODE_CHANGEA) { set_weapons_timeidle(id, CSW_THANATOS9, THANATOS9_CHANGEA) set_player_nextattack(id, THANATOS9_CHANGEA) set_weapon_anim(id, THANATOS9_ANIM_CHANGEA) set_pev(id, pev_weaponmodel2, p_modelb) g_mode[id] = MODE_SLASH set_task(THANATOS9_CHANGEA, "mode_b", id) } }
public mode_b(id) { g_mode[id] = MODE_STAB }
public change_modeb(id) { if(g_mode[id] == MODE_CHANGEB) { set_weapons_timeidle(id, CSW_THANATOS9, THANATOS9_CHANGEB) set_player_nextattack(id, THANATOS9_CHANGEB) set_weapon_anim(id, THANATOS9_ANIM_CHANGEB) set_pev(id, pev_weaponmodel2, p_modela) g_mode[id] = MODE_SLASH } }
public shoot_b_start(id) { if(g_mode[id] == MODE_STAB) { set_weapons_timeidle(id, CSW_THANATOS9, THANATOS9_SHOOT_START) set_player_nextattack(id, THANATOS9_SHOOT_START) set_weapon_anim(id, THANATOS9_ANIM_SHOOTB_START) g_mode[id] = MODE_STAB_ACTION set_task(THANATOS9_SHOOT_START, "shoot_b_loop", id) } }
public shoot_b_loop(id) { if(g_mode[id] == MODE_STAB_ACTION) { set_weapons_timeidle(id, CSW_THANATOS9, 6.0) set_player_nextattack(id, 0.0) set_weapon_anim(id, THANATOS9_ANIM_SHOOTB_LOOP) action_thanatos(id) emit_sound(id, CHAN_WEAPON, thanatos9_sound[4], 1.0, ATTN_NORM, 0, PITCH_NORM) g_mode[id] = MODE_STAB_ACTION } }
public shoot_b_end(id) { if(g_mode[id] == MODE_STAB) { remove_task(id) emit_sound(id, CHAN_WEAPON, "common/null.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) g_mode[id] = MODE_STAB set_task(0.1, "shoot_b_end_finish", id) } }
public shoot_b_end_finish(id) { if(g_mode[id] == MODE_STAB) { set_weapons_timeidle(id, CSW_THANATOS9, THANATOS9_SHOOT_END) set_player_nextattack(id, THANATOS9_SHOOT_END) set_weapon_anim(id, THANATOS9_ANIM_SHOOTB_END) g_mode[id] = MODE_CHANGEB set_task(THANATOS9_SHOOT_END, "change_modeb", id) } }
public action_thanatos(id) { static Ent Ent = find_ent_by_owner(-1, weapon_thanatos9, id) Damage_thanatos(Ent) set_task(0.1, "action_thanatos", id) }
public Damage_thanatos(Ent) { static id; id = pev(Ent, pev_owner) new Float:origin[3] pev(Ent, pev_origin, origin) new a = FM_NULLENT while((a = find_ent_in_sphere(a, origin, 80.0)) != 0) { if (id == a) continue if(pev(a, pev_takedamage) != DAMAGE_NO) { ExecuteHamB(Ham_TakeDamage, a, id, id, 400.0, DMG_BULLET) } } set_task(0.1, "damage_thanatos9", id) }
public damage_thanatos9(id) { static Float:Max_Distance if(g_mode[id] == MODE_STAB_ACTION) { Max_Distance = THANATOS9_RANGE_STAB } static Float:VicOrigin[3], Float:MyOrigin[3] pev(id, pev_origin, MyOrigin) static Have_Victim; Have_Victim = 0 static ent ent = find_ent_by_owner(-1, weapon_thanatos9, id) if(!pev_valid(ent)) return 0 for(new i = 0; i < get_maxplayers(); i++) { if(!is_user_alive(i)) continue if(id == i) continue if(entity_range(id, i) > Max_Distance) continue pev(i, pev_origin, VicOrigin) if(!is_in_viewcone(id, VicOrigin, 1)) continue if(is_wall_between_points(MyOrigin, VicOrigin, id)) continue if(!Have_Victim) Have_Victim = 1 if(g_mode[id] == MODE_STAB_ACTION) { do_attack(id, i, ent, THANATOS9_DAMAGE_STAB) } } stop_damage(id) if(Have_Victim) return 1 else return 0 return 0 }
public stop_damage(id) { set_task(6.0, "shoot_b_end", id) g_mode[id] = MODE_STAB }
public Check_Attack(id, First_Check) { static Float:Max_Distance if(g_mode[id] == MODE_SLASH) { Max_Distance = THANATOS9_RANGE_SLASH } static Float:VicOrigin[3], Float:MyOrigin[3] pev(id, pev_origin, MyOrigin) static Have_Victim; Have_Victim = 0 static ent ent = find_ent_by_owner(-1, weapon_thanatos9, id) if(!pev_valid(ent)) return 0 for(new i = 0; i < get_maxplayers(); i++) { if(!is_user_alive(i)) continue if(id == i) continue if(entity_range(id, i) > Max_Distance) continue pev(i, pev_origin, VicOrigin) if(!is_in_viewcone(id, VicOrigin, 1)) continue if(is_wall_between_points(MyOrigin, VicOrigin, id)) continue if(!Have_Victim) Have_Victim = 1 if(g_mode[id] == MODE_SLASH) { do_attack(id, i, ent, THANATOS9_DAMAGE_SLASH) if(!First_Check && cs_get_user_team(id) != cs_get_user_team(i)) { // do_attack(id, i, ent, THANATOS9_DAMAGE_SLASH) } } } if(Have_Victim) return 1 else return 0 return 0 }
public fw_TraceLine(Float:fStart[3], Float:fEnd[3], conditions, id, pentru){ return vTrace(id, pentru,fStart,fEnd,conditions) }
public fw_Tracehull(Float:fStart[3], Float:fEnd[3], conditions, hull, id, pentru){ return vTrace(id, pentru,fStart,fEnd,conditions,true,hull) }
vTrace(id, pentru,Float:fStart[3],Float:fEnd[3],iNoMonsters,bool:hull = false,iHull = 0) { if(is_user_alive(id) && get_user_weapon(id) == CSW_THANATOS9 && g_has_thanatos9[id]){ new Float:scalar if(g_mode[id] == MODE_SLASH) scalar = g_thanatos_swing_range else if(g_mode[id] == MODE_STAB_ACTION) scalar = g_thanatos_stab_range else scalar = 0.0
xs_vec_sub(fEnd,fStart,fEnd) xs_vec_mul_scalar(fEnd,scalar,fEnd); xs_vec_add(fEnd,fStart,fEnd); hull ? engfunc(EngFunc_TraceHull,fStart,fEnd,iNoMonsters,iHull,id,pentru) : engfunc(EngFunc_TraceLine,fStart,fEnd,iNoMonsters, id,pentru) } return FMRES_IGNORED; }
public fw_TraceAttack(Victim, Attacker, Float:Damage, Float:Direction[3], TraceHandle, DamageBit, pentru) { if(!is_user_alive(Attacker)) return HAM_IGNORED if(get_user_weapon(Attacker) != CSW_THANATOS9) return HAM_IGNORED if(!g_has_thanatos9[Attacker]) return HAM_IGNORED return HAM_IGNORED }
do_attack(Attacker, Victim, Inflictor, Float:fDamage) { fake_player_trace_attack(Attacker, Victim, fDamage) fake_take_damage(Attacker, Victim, fDamage, Inflictor) }
fake_player_trace_attack(iAttacker, iVictim, &Float:fDamage) { // get fDirection new Float:fAngles[3], Float:fDirection[3] pev(iAttacker, pev_angles, fAngles) angle_vector(fAngles, ANGLEVECTOR_FORWARD, fDirection) // get fStart new Float:fStart[3], Float:fViewOfs[3] pev(iAttacker, pev_origin, fStart) pev(iAttacker, pev_view_ofs, fViewOfs) xs_vec_add(fViewOfs, fStart, fStart) // get aimOrigin new iAimOrigin[3], Float:fAimOrigin[3] get_user_origin(iAttacker, iAimOrigin, 3) IVecFVec(iAimOrigin, fAimOrigin) // TraceLine from fStart to AimOrigin new pentru = create_tr2() engfunc(EngFunc_TraceLine, fStart, fAimOrigin, DONT_IGNORE_MONSTERS, iAttacker, pentru) new pHit = get_tr2(pentru, TR_pHit) new iHitgroup = get_tr2(pentru, TR_iHitgroup) new Float:fEndPos[3] get_tr2(pentru, TR_vecEndPos, fEndPos)
// get target & body at aiming new iTarget, iBody get_user_aiming(iAttacker, iTarget, iBody) // if aiming find target is iVictim then update iHitgroup if (iTarget == iVictim) { iHitgroup = iBody } // if pentru find target not is iVictim else if (pHit != iVictim) { // get AimOrigin in iVictim new Float:fVicOrigin[3], Float:fVicViewOfs[3], Float:fAimInVictim[3] pev(iVictim, pev_origin, fVicOrigin) pev(iVictim, pev_view_ofs, fVicViewOfs) xs_vec_add(fVicViewOfs, fVicOrigin, fAimInVictim) fAimInVictim[2] = fStart[2] fAimInVictim[2] += get_distance_f(fStart, fAimInVictim) * floattan( fAngles[0] * 2.0, degrees ) // check aim in size of iVictim new iAngleToVictim = get_angle_to_target(iAttacker, fVicOrigin) iAngleToVictim = abs(iAngleToVictim) new Float:fDis = 2.0 * get_distance_f(fStart, fAimInVictim) * floatsin( float(iAngleToVictim) * 0.5, degrees ) new Float:fVicSize[3] pev(iVictim, pev_size , fVicSize) if ( fDis <= fVicSize[0] * 0.5 ) { // TraceLine from fStart to aimOrigin in iVictim new ptr2 = create_tr2() engfunc(EngFunc_TraceLine, fStart, fAimInVictim, DONT_IGNORE_MONSTERS, iAttacker, ptr2) new pHit2 = get_tr2(ptr2, TR_pHit) new iHitgroup2 = get_tr2(ptr2, TR_iHitgroup) // if ptr2 find target is iVictim if ( pHit2 == iVictim && (iHitgroup2 != HIT_HEAD || fDis <= fVicSize[0] * 0.25) ) { pHit = iVictim iHitgroup = iHitgroup2 get_tr2(ptr2, TR_vecEndPos, fEndPos) } free_tr2(ptr2) } // if pHit still not is iVictim then set default HitGroup if (pHit != iVictim) { // set default iHitgroup iHitgroup = HIT_GENERIC new ptr3 = create_tr2() engfunc(EngFunc_TraceLine, fStart, fVicOrigin, DONT_IGNORE_MONSTERS, iAttacker, ptr3) get_tr2(ptr3, TR_vecEndPos, fEndPos) // free ptr3 free_tr2(ptr3) } } // set new Hit & Hitgroup & EndPos set_tr2(pentru, TR_pHit, iVictim) set_tr2(pentru, TR_iHitgroup, iHitgroup) set_tr2(pentru, TR_vecEndPos, fEndPos) // hitgroup multi fDamage new Float:fMultifDamage switch(iHitgroup) { case HIT_HEAD: fMultifDamage = 2.5 case HIT_STOMACH: fMultifDamage = 1.25 case HIT_LEFTLEG: fMultifDamage = 0.75 case HIT_RIGHTLEG: fMultifDamage = 0.75 default: fMultifDamage = 1.0 } fDamage *= fMultifDamage // ExecuteHam fake_trake_attack(iAttacker, iVictim, fDamage, fDirection, pentru) // free pentru free_tr2(pentru) }
stock fake_trake_attack(iAttacker, iVictim, Float:fDamage, Float:fDirection[3], iTraceHandle, iDamageBit = (DMG_NEVERGIB | DMG_BULLET)) { ExecuteHamB(Ham_TraceAttack, iVictim, iAttacker, fDamage, fDirection, iTraceHandle, iDamageBit) }
stock fake_take_damage(iAttacker, iVictim, Float:fDamage, iInflictor = 0, iDamageBit = (DMG_NEVERGIB | DMG_BULLET)) { iInflictor = (!iInflictor) ? iAttacker : iInflictor ExecuteHamB(Ham_TakeDamage, iVictim, iInflictor, iAttacker, fDamage, iDamageBit) }
stock set_weapon_anim(id, anim) { if(!is_user_alive(id)) return set_pev(id, pev_weaponanim, anim) message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id) write_byte(anim) write_byte(0) message_end() }
stock set_weapons_timeidle(id, WeaponId ,Float:TimeIdle) { if(!is_user_alive(id)) return static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId) if(!pev_valid(entwpn)) return set_pdata_float(entwpn, 46, TimeIdle, OFFSET_LINUX_WEAPONS) set_pdata_float(entwpn, 47, TimeIdle, OFFSET_LINUX_WEAPONS) set_pdata_float(entwpn, 48, TimeIdle + 0.5, OFFSET_LINUX_WEAPONS) }
stock set_player_nextattack(id, Float:nexttime) { if(!is_user_alive(id)) return set_pdata_float(id, m_flNextAttack, nexttime, 5) }
stock Get_MissileWeaponHitGroup( iEnt ) { new Float:flStart[ 3 ], Float:flEnd[ 3 ]; pev( iEnt, pev_origin, flStart ); pev( iEnt, pev_velocity, flEnd ); xs_vec_add( flStart, flEnd, flEnd ); new pentru = create_tr2(); engfunc( EngFunc_TraceLine, flStart, flEnd, 0, iEnt, pentru ); new iHitGroup, Owner, nOhead, head Owner = pev(iEnt, pev_owner) nOhead = get_tr2( pentru, TR_iHitgroup ) head = set_tr2( pentru, TR_iHitgroup, HIT_HEAD ) iHitGroup = is_user_alive(Owner) ? head : nOhead free_tr2( pentru ); return iHitGroup; }
stock get_angle_to_target(id, const Float:fTarget[3], Float:TargetSize = 0.0) { new Float:fOrigin[3], iAimOrigin[3], Float:fAimOrigin[3], Float:fV1[3] pev(id, pev_origin, fOrigin) get_user_origin(id, iAimOrigin, 3) // end position from eyes IVecFVec(iAimOrigin, fAimOrigin) xs_vec_sub(fAimOrigin, fOrigin, fV1) new Float:fV2[3] xs_vec_sub(fTarget, fOrigin, fV2) new iResult = get_angle_between_vectors(fV1, fV2) if (TargetSize > 0.0) { new Float:fTan = TargetSize / get_distance_f(fOrigin, fTarget) new fAngleToTargetSize = floatround( floatatan(fTan, degrees) ) iResult -= (iResult > 0) ? fAngleToTargetSize : -fAngleToTargetSize } return iResult }
stock get_angle_between_vectors(const Float:fV1[3], const Float:fV2[3]) { new Float:fA1[3], Float:fA2[3] engfunc(EngFunc_VecToAngles, fV1, fA1) engfunc(EngFunc_VecToAngles, fV2, fA2) new iResult = floatround(fA1[1] - fA2[1]) iResult = iResult % 360 iResult = (iResult > 180) ? (iResult - 360) : iResult return iResult }
stock is_wall_between_points(Float:start[3], Float:end[3], ignore_ent) { static pentru pentru = create_tr2()
engfunc(EngFunc_TraceLine, start, end, IGNORE_MONSTERS, ignore_ent, pentru) static Float:EndPos[3] get_tr2(pentru, TR_vecEndPos, EndPos)
free_tr2(pentru) return floatround(get_distance_f(end, EndPos)) }
to
PHP Code:
#pragma semicolon 1
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <engine> #include <fun> #include <hamsandwich> #include <fakemeta> #include <vault>
#define ADMIN_BBVIP ADMIN_LEVEL_G
// Define the Plugin Version new const VERSION[] = { "1.5" };
// PREFIX new const PREFIX[] = { "!g[ BB.Ecila.Ro ]!n" };
new const g_szKnifeBModel[] = "models/bb_cso/v_warhammer_royale.mdl"; new const g_szKnifeWModel[] = "models/bb_cso/v_wolf_kosa.mdl"; new const g_szAk47BModel[] = "models/akbb/v_ak47_red.mdl"; new const g_szM4A1Model[] = "models/akbb/v_m4a1_red.mdl"; new const g_szEliteModel[] = "models/bb_cso/v_dual_elite.mdl"; new const g_szP90Model[] = "models/bb_cso/v_p90lapin.mdl";
new VipUsed[33]; new HasSpeed;
new bool:g_bHasKnifeB[33]; new bool:g_bHasKnifeW[33]; new bool:g_bHasAk47B[33]; new bool:g_bHasM4A1[33]; new bool:g_bHasElite[33]; new bool:g_bHasP90[33]; new Float:fast_speed = 400.0; new Float:normal_speed = 250.0; //new g_pVisiblity; new mpd,/* mkb,*/ mhb; new maxplayers;
public plugin_init() { register_plugin("BaseBuilder: VIP Gold Menu", VERSION, "Raul3w"); RegisterHam(Ham_Spawn, "player", "FwdHamSpawn_Post", 1); RegisterHam(Ham_Item_PreFrame, "player", "FwdPreFrame_Post", 1); RegisterHam(Ham_TakeDamage, "player", "FwdPlayerDamage"); //RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1); register_event("CurWeapon","event_curweapon","be","1=1"); register_clcmd("say gold", "cmdVmenu"); register_clcmd("say /gold", "cmdVmenu"); register_clcmd("say_team gold", "cmdVmenu"); register_clcmd("say_team /gold", "cmdVmenu");
//g_pVisiblity = register_cvar( "km_invis", "150" ); // 255 = clearly visible set_task(480.0, "kmodmsg", 0, _, _, "b"); mpd = register_cvar("money_per_damage","3"); //mkb = register_cvar("money_kill_bonus","200"); mhb = register_cvar("money_hs_bonus","500"); register_event("Damage","Damage","b"); maxplayers = get_maxplayers(); // Ham TakeDamage register_forward( FM_CmdStart, "fw_CmdStart" ); //RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1); }
public Damage(id) { new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint); if(attacker<=maxplayers && is_user_alive(attacker) && attacker!=id) if (get_user_flags(attacker) & ADMIN_LEVEL_G) { new money = read_data(2) * get_pcvar_num(mpd); if(hitpoint==1) money += get_pcvar_num(mhb); cs_set_user_money(attacker,cs_get_user_money(attacker) + money); } } public FwdPlayerDamage(victim, inflictor, attacker, Float:damage, damagebits) { if(inflictor == attacker && attacker != victim && g_bHasKnifeB[ attacker ] && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_KNIFE ) { SetHamParamFloat(4, damage * 8.0); } if(inflictor == attacker && attacker != victim && g_bHasAk47B[ attacker ] && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_AK47 ) { SetHamParamFloat(4, damage * 6.0); } if(inflictor == attacker && attacker != victim && g_bHasElite[ attacker ] && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_ELITE ) { SetHamParamFloat(4, damage * 3.0); } if(inflictor == attacker && attacker != victim && g_bHasM4A1[ attacker ] && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_M4A1 ) { SetHamParamFloat(4, damage * 6.0); } if(inflictor == attacker && attacker != victim && g_bHasP90[ attacker ] && is_user_alive(attacker) && get_user_weapon(attacker) == CSW_P90 ) { SetHamParamFloat(4, damage * 3.0); }
} public plugin_precache() { precache_model(g_szKnifeBModel); precache_model(g_szAk47BModel); precache_model(g_szKnifeWModel); precache_model(g_szM4A1Model); precache_model(g_szEliteModel); precache_model(g_szP90Model); }
public event_curweapon(id) { if(g_bHasKnifeB[id] && read_data(2) == CSW_KNIFE) { set_pev(id, pev_viewmodel2, g_szKnifeBModel); set_user_gravity(id, 0.5); }
if(g_bHasAk47B[id] && read_data(2) == CSW_AK47) { set_pev(id, pev_viewmodel2, g_szAk47BModel); }
if(g_bHasM4A1[id] && read_data(2) == CSW_M4A1) { set_pev(id, pev_viewmodel2, g_szM4A1Model); }
if(g_bHasElite[id] && read_data(2) == CSW_ELITE) { set_pev(id, pev_viewmodel2, g_szEliteModel); }
if(g_bHasP90[id] && read_data(2) == CSW_P90) { set_pev(id, pev_viewmodel2, g_szP90Model);
} }
public FwdPreFrame_Post(id) { if(!is_user_alive(id)) { return PLUGIN_HANDLED; }
if(!HasSpeed) { return PLUGIN_HANDLED; }
else if(HasSpeed) { set_user_maxspeed(id, fast_speed); }
return PLUGIN_HANDLED; }
public FwdHamSpawn_Post(id) { if (!is_user_alive(id)) return PLUGIN_CONTINUE;
HasSpeed = false; VipUsed[id] = false; g_bHasKnifeB[id] = false; g_bHasKnifeW[id] = false; g_bHasAk47B[id] = false; g_bHasM4A1[id] = false; g_bHasElite[id] = false; g_bHasP90[id] = false; set_user_maxspeed(id, normal_speed); set_user_rendering( id, _, 0, 0, 0, _, 0 ); return PLUGIN_CONTINUE; }
public cmdVmenu(id) { if(!(get_user_flags(id) & ADMIN_BBVIP)) { client_printc(id, "%s Doar !gmembri VIP Gold !tau acces la !gMeniul de vip gold", PREFIX);
return PLUGIN_HANDLED; }
if(VipUsed[id]) { client_printc(id, "%s Ti-ai luat deja ceva din !gMeniul de VIP Gold!n in aceasta runda.", PREFIX);
return PLUGIN_HANDLED; }
switch(cs_get_user_team(id)) { case CS_TEAM_T: VipTMenu(id); case CS_TEAM_CT: VipCTMenu(id); } return PLUGIN_HANDLED; }
public VipCTMenu(id) { new menu = menu_create("Meniu De ViP Gold:^n", "VipCTMenu_handler"); menu_additem(menu, "+450HP si +450Armor", "1", 0); menu_additem(menu, "WarHammer Royal", "2", 0); menu_additem(menu, "P90 Lapin", "3", 0); menu_additem(menu, "AK47 RedSkull", "4", 0); menu_additem(menu, "M4A1 RedSkull", "5", 0); menu_additem(menu, "Dual Final Elite x6", "6", 0); menu_display(id, menu); }
public VipCTMenu_handler(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new key = str_to_num(data); switch(key) { case 1: { set_user_health(id, get_user_health(id) + 450); set_user_armor(id, get_user_armor(id) + 450); VipUsed[id] = true; client_printc(id, "%s Tocmai ai primit !g450HP!n si !g450Armor!n", PREFIX); } case 2: { set_pev(id, pev_viewmodel2, "models/bb_cso/v_warhammer_royale.mdl"); g_bHasKnifeB[id] = true; VipUsed[id] = true; client_printc(id, "%s Tocmai ai primit !tViata !nsi !gWarHammer Royal", PREFIX); } case 3: { give_item(id, "weapon_p90"); cs_set_user_bpammo(id, CSW_P90, 200); set_pev(id, pev_viewmodel2, "models/bb_cso/v_p90lapin.mdl"); g_bHasP90[id] = true; VipUsed[id] = true; client_printc(id, "%s Tocmai ai primit un !gP90!n !gLapin!n", PREFIX); } case 4: { give_item(id, "weapon_ak47"); cs_set_user_bpammo(id, CSW_AK47, 200); set_pev(id, pev_viewmodel2, "models/akbb/v_ak47_red.mdl"); g_bHasAk47B[id] = true; VipUsed[id] = true; client_printc(id, "%s Tocmai ai primit un !gAK-47 RedSkull", PREFIX); } case 5: { give_item(id, "weapon_m4a1"); cs_set_user_bpammo(id, CSW_M4A1, 200); set_pev(id, pev_viewmodel2, "models/akbb/v_m4a1_red.mdl"); g_bHasM4A1[id] = true; VipUsed[id] = true; client_printc(id, "%s Tocmai ai primit un !gM4A1 RedSkull", PREFIX); } case 6: { give_item(id, "weapon_elite"); cs_set_user_bpammo(id, CSW_ELITE, 200); set_pev(id, pev_viewmodel2, "models/bb_cso/v_dual_elite.mdl"); g_bHasElite[id] = true; VipUsed[id] = true; client_printc(id, "%s Tocmai ai primit un !gElite Dual Final Elite", PREFIX); } } menu_destroy(menu); return PLUGIN_HANDLED; }
public VipTMenu(id) { new menu = menu_create("Meniu De ViP:^n", "VipTMenu_handler"); menu_additem(menu, "Viteza", "1", 0); menu_additem(menu, "+5000Hp si +5000Armor", "2", 0); menu_additem(menu, "WarHammer Royal", "3", 0); menu_additem(menu, "Wolf Blade", "4", 0); menu_display(id, menu); }
public VipTMenu_handler(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new key = str_to_num(data); switch(key) { case 1: { VipUsed[id] = true; HasSpeed = true; set_user_maxspeed(id, fast_speed); client_printc(id, "%s Tocmai ai primit !gViteza", PREFIX); } case 2: { set_user_health(id, get_user_health(id) + 5000); set_user_armor(id, get_user_armor(id) + 5000); VipUsed[id] = true; client_printc(id, "%s Tocmai ai primit !g5000 HP!n si !g5000 Armura!n", PREFIX); } case 3: { set_user_health(id, get_user_health(id) + 2000); set_user_armor(id, get_user_armor(id) + 2000); set_user_maxspeed(id, fast_speed); HasSpeed = true; set_pev(id, pev_viewmodel2, "models/bb_cso/v_warhammer_royale.mdl"); g_bHasKnifeB[id] = true; VipUsed[id] = true; client_printc(id, "%s Tocmai ai primit !tViata !nsi un !gWarHammer Royal", PREFIX); } case 4: { set_user_health(id, get_user_health(id) + 2500); set_user_armor(id, get_user_armor(id) + 2500); set_user_maxspeed(id, fast_speed); HasSpeed = true; set_pev(id, pev_viewmodel2, "models/bb_cso/v_wolf_kosa.mdl"); g_bHasKnifeW[id] = true; set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 125); VipUsed[id] = true; client_printc(id, "%s Tocmai ai primit !tViata !nsi un !gWolf Blade", PREFIX); } } menu_destroy(menu); return PLUGIN_HANDLED; }
// Colour Chat stock client_printc(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^x04"); // Green Color replace_all(msg, 190, "!n", "^x01"); // Default Color replace_all(msg, 190, "!t", "^x03"); // Team Color if (id) players[0] = id; else get_players(players, count, "ch"); for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } }
Last edited by Raul3w; 06-29-2017 at 07:53.
|
|