#include #include #include #include #include #include #include #include #define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1)) #define VERSION "1.0" #define AUTHOR "Sh0oT3R edit by Eustachy8" #define FIRERATE 0.2 #define HITSD 0.7 #define RELOADSPEED 5.0 #define DAMAGE 45.0 #define DAMAGE_MULTI 3.0 #define CSW_WPN CSW_FAMAS new const weapon[] = "weapon_famas" new const spr_beam[] = "sprites/plasma/plasma_beam.spr" new const spr_exp[] = "sprites/plasma/plasma_exp.spr" new const spr_blood[] = "sprites/blood.spr" new const snd_fire[][] = { "plasma/plasma_fire.wav" } new const snd_reload[][] = { "plasma/plasma_reload.wav" } new const snd_hit[][] = { "plasma/plasma_hit.wav" } new bool:ma_klase[33] new g_iCurWpn[33], Float:g_flLastFireTime[33] new g_sprBeam, g_sprExp, g_sprBlood, g_msgDamage, g_msgScreenFade, g_msgScreenShake const m_pPlayer = 41 const m_fInReload = 54 const m_pActiveItem = 373 const m_flNextAttack = 83 const m_flTimeWeaponIdle = 48 const m_flNextPrimaryAttack = 46 const m_flNextSecondaryAttack = 47 const UNIT_SECOND = (1<<12) const ENG_NULLENT = -1 const WPN_MAXCLIP = 25 const ANIM_FIRE = 5 const ANIM_DRAW = 10 const ANIM_RELOAD = 9 const EV_INT_WEAPONKEY = EV_INT_impulse const WPNKEY = 2816 new const nazwa[] = "Space division"; new const opis[] = "Masz karabin plazmowy"; new const bronie = 1<= WPN_MAXCLIP) { entity_set_int(id, EV_INT_button, iButton & ~IN_RELOAD) set_wpnanim(id, 0) } else if(iClip == WPN_MAXCLIP) { if(iBpAmmo) { reload(id, wpn, 1) } } } } } public fw_Reload_Post(wpn) { static id id = get_pdata_cbase(wpn, m_pPlayer, 4) if(is_user_alive(id) && ma_klase[id] && get_pdata_int(wpn, m_fInReload, 4)) { reload(id, wpn) } } public primary_attack(id) { set_wpnanim(id, ANIM_FIRE) entity_set_vector(id, EV_VEC_punchangle, Float:{ -1.5, 0.0, 0.0 }) emit_sound(id, CHAN_WEAPON, snd_fire[random_num(0, sizeof snd_fire - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) static iTarget, iBody, iEndOrigin[3], iStartOrigin[3] get_user_origin(id, iStartOrigin, 1) get_user_origin(id, iEndOrigin, 3) fire_effects(iStartOrigin, iEndOrigin) get_user_aiming(id, iTarget, iBody) new iEnt = create_entity("info_target") static Float:flOrigin[3] IVecFVec(iEndOrigin, flOrigin) entity_set_origin(iEnt, flOrigin) remove_entity(iEnt) new team = get_user_team(iTarget); if(is_user_alive(iTarget)) { if(HITSD > 0.0) { static Float:flVelocity[3] get_user_velocity(iTarget, flVelocity) xs_vec_mul_scalar(flVelocity, HITSD, flVelocity) set_user_velocity(iTarget, flVelocity) } if(get_user_team(id) != team) { new iHp = pev(iTarget, pev_health) new Float:iDamage, iBloodScale if(iBody != HIT_HEAD) { iDamage = DAMAGE iBloodScale = 10 } else { iDamage = DAMAGE*DAMAGE_MULTI iBloodScale = 25 } if(iHp > iDamage) { make_blood(iTarget, iBloodScale) set_pev(iTarget, pev_health, iHp-iDamage) damage_effects(iTarget) } else if(iHp <= iDamage) { ExecuteHamB(Ham_Killed, iTarget, id, 2) } } } else { emit_sound(id, CHAN_WEAPON, snd_hit[random_num(0, sizeof snd_hit - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) } } stock fire_effects(iStartOrigin[3], iEndOrigin[3]) { message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(0) write_coord(iStartOrigin[0]) write_coord(iStartOrigin[1]) write_coord(iStartOrigin[2]) write_coord(iEndOrigin[0]) write_coord(iEndOrigin[1]) write_coord(iEndOrigin[2]) write_short(g_sprBeam) write_byte(1) write_byte(5) write_byte(10) write_byte(25) write_byte(0) write_byte(0) write_byte(255) write_byte(0) write_byte(100) write_byte(0) message_end() message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(3) write_coord(iEndOrigin[0]) write_coord(iEndOrigin[1]) write_coord(iEndOrigin[2]) write_short(g_sprExp) write_byte(10) write_byte(15) write_byte(4) message_end() } stock reload(id, wpn, force_reload = 0) { set_pdata_float(id, m_flNextAttack, RELOADSPEED, 5) set_wpnanim(id, ANIM_RELOAD) emit_sound(id, CHAN_WEAPON, snd_reload[random_num(0, sizeof snd_reload - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) if(force_reload) set_pdata_int(wpn, m_fInReload, 1, 4) } stock damage_effects(id) { message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, _, id) write_byte(0) write_byte(0) write_long(DMG_NERVEGAS) write_coord(0) write_coord(0) write_coord(0) message_end() message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, {0,0,0}, id) write_short(1<<13) write_short(1<<14) write_short(0x0000) write_byte(0) write_byte(255) write_byte(0) write_byte(100) message_end() message_begin(MSG_ONE, g_msgScreenShake, {0,0,0}, id) write_short(0xFFFF) write_short(1<<13) write_short(0xFFFF) message_end() } stock make_blood(id, scale) { new Float:iVictimOrigin[3] pev(id, pev_origin, iVictimOrigin) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(115) write_coord(floatround(iVictimOrigin[0]+random_num(-20,20))) write_coord(floatround(iVictimOrigin[1]+random_num(-20,20))) write_coord(floatround(iVictimOrigin[2]+random_num(-20,20))) write_short(g_sprBlood) write_short(g_sprBlood) write_byte(248) write_byte(scale) message_end() } stock set_wpnanim(id, anim) { entity_set_int(id, EV_INT_weaponanim, anim) message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id) write_byte(anim) write_byte(entity_get_int(id, EV_INT_body)) message_end() } stock make_punch(id, velamount) { static Float:flNewVelocity[3], Float:flCurrentVelocity[3] velocity_by_aim(id, -velamount, flNewVelocity) get_user_velocity(id, flCurrentVelocity) xs_vec_add(flNewVelocity, flCurrentVelocity, flNewVelocity) set_user_velocity(id, flNewVelocity) } stock fm_give_item(index, const item[]) { if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10)) return 0; new ent = fm_create_entity(item); if (!pev_valid(ent)) return 0; new Float:origin[3]; pev(index, pev_origin, origin); set_pev(ent, pev_origin, origin); set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN); dllfunc(DLLFunc_Spawn, ent); new save = pev(ent, pev_solid); dllfunc(DLLFunc_Touch, ent, index); if (pev(ent, pev_solid) != save) return ent; engfunc(EngFunc_RemoveEntity, ent); return -1; } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\ rtf1\ ansi\ deff0{\ fonttbl{\ f0\ fnil Tahoma;}}n\ viewkind4\ uc1\ pard\ lang1049\ f0\ fs16 n\ par } */