PHP Code:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#define PLUGIN "Furien Clasic"
#define VERSION "2.0"
#define AUTHOR "Aragon*"
#define DMG_HEGRENADE (1<<24)
#define FURIEN_GRAVITY 0.4
#define FURIEN_SPEED 750.0
#define TEAM_FURIEN 1
#define TEAM_ANTIFURIEN 2
#define TASKID_CANPLANT 10001
#define TASKID_C4COUNTDOWN 453
#define VIP_GOLD_LEVEL ADMIN_LEVEL_H
#define VIP_SILVER_LEVEL ADMIN_LEVEL_G
#define FOUNDER_LEVEL ADMIN_IMMUNITY
#if cellbits == 32
#define OFFSET_BZ 235
#else
#define OFFSET_BZ 268
#endif
//Settings
new bool:MakeVisible[33], Float:Wallorigin[33][3]
//Parachute
#define PARACHUTE_CLASS "Parachute"
new ParaENT[33];
new cvar_gamedescription, furienspawnhp, antifurienspawnhp, removebuyzone, cvar_autojoin_class, cvar_autojoin_team, cvar_aim_info,
MSGID_SayText, MSGID_StatusIcon, MSGID_TextMsg, MSGID_SendAudio, MSGID_ShowMenu, MSGID_VGUIMenu, MSGID_Health, MSGID_ScreenFade,
bool:CanPlant, C4_CountDownDelay;
public plugin_cfg() {
server_cmd("amx_cvar mp_playerid 2")
server_cmd("amx_cvar sv_maxspeed 999")
server_cmd("amx_cvar sv_restart 5")
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
cvar_gamedescription = register_cvar("furien_gamename", "Furien Romania")
antifurienspawnhp = register_cvar("antifurien_spawnhp", "135")
furienspawnhp = register_cvar("furien_spawnhp", "100")
cvar_autojoin_team = register_cvar("furien_team", "5")
cvar_autojoin_class = register_cvar("furien_class", "5")
cvar_aim_info = register_cvar("furien_enable_aiminfo", "0")
MSGID_SayText = get_user_msgid("SayText")
MSGID_StatusIcon = get_user_msgid("StatusIcon")
MSGID_TextMsg = get_user_msgid("TextMsg")
MSGID_SendAudio = get_user_msgid("SendAudio")
MSGID_ShowMenu = get_user_msgid("ShowMenu")
MSGID_VGUIMenu = get_user_msgid("VGUIMenu")
MSGID_ScreenFade = get_user_msgid("ScreenFade")
register_clcmd("jointeam", "CMD_BlockJoinTeam")
register_clcmd("jointeam 1", "CMD_BlockJoinTeam")
register_clcmd("jointeam 2", "CMD_BlockJoinTeam")
register_clcmd("jointeam 3", "CMD_BlockJoinTeam")
register_clcmd("chooseteam", "CMD_BlockChooseTeam")
register_clcmd("say /beneficii", "CmdShowMotd")
register_clcmd("say /rs", "CmdResetScore")
register_clcmd("say_team /rs", "CmdResetScore")
register_clcmd("say /resetscore", "CmdResetScore")
register_clcmd("say_team /resetscore", "CmdResetScore")
RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1)
RegisterHam(Ham_Touch, "weaponbox", "HAM_Touch_Weapon")
RegisterHam(Ham_Touch, "armoury_entity", "HAM_Touch_Weapon")
RegisterHam(Ham_Touch, "weapon_shield", "HAM_Touch_Weapon")
RegisterHam(Ham_TakeDamage, "player", "SuperKnife_TakeDamage")
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_c4", "C4_PrimaryAttack");
register_forward(FM_PlayerPreThink, "Player_PreThink");
register_forward(FM_AddToFullPack, "FWD_AddToFullPack", 1);
register_forward(FM_PlayerPreThink, "FWD_ParachutePreThink");
register_forward(FM_GetGameDescription, "FWD_GameDescription")
register_event("CurWeapon", "EVENT_CurWeapon", "be", "1=1")
register_event("DeathMsg", "EVENT_Death", "a");
register_event("SendAudio", "EVENT_SwitchTeam", "a", "1=0", "2=%!MRAD_ctwin");
register_event("HLTV", "EVENT_NewRound", "a", "1=0", "2=0");
register_event("TextMsg", "EVENT_FireINTheHole", "b", "2&#Game_radio", "4&#Fire_in_the_hole")
register_event("TextMsg", "EVENT_FireINTheHole", "b", "3&#Game_radio", "5&#Fire_in_the_hole")
register_message(MSGID_StatusIcon, "MSG_StatusIcon");
register_message(MSGID_TextMsg, "MSG_TextMessage");
register_message(MSGID_ShowMenu, "MSG_ShowMenu");
register_message(MSGID_VGUIMenu, "MSG_VGUIMenu");
register_message(MSGID_SendAudio, "MSG_SendAudio");
register_message(MSGID_Health, "MSG_Health")
register_message(MSGID_ScreenFade, "MSG_ScreenFade")
}
public plugin_precache() {
removebuyzone = register_cvar("furien_removebuyzone", "1")
if(get_pcvar_num(removebuyzone)) {
remove_entity_name("info_map_parameters");
remove_entity_name("func_buyzone");
new Entity = create_entity("info_map_parameters");
DispatchKeyValue(Entity, "buying", "3");
DispatchSpawn(Entity);
}
}
public client_connect(id) {
client_cmd(id, "cl_forwardspeed 999.0")
client_cmd(id, "cl_sidespeed 999.0")
client_cmd(id, "cl_backspeed 999.0")
}
public client_putinserver(id) {
client_cmd(id, "cl_forwardspeed 999.0")
client_cmd(id, "cl_sidespeed 999.0")
client_cmd(id, "cl_backspeed 999.0")
}
public Ham_Spawn_Post(id) {
if(is_user_connected(id) && is_user_alive(id)) {
strip_user_weapons(id)
switch(get_user_team(id)) {
case TEAM_FURIEN: {
fm_give_item(id, "weapon_hegrenade")
fm_give_item(id, "weapon_knife")
fm_give_item(id, "weapon_flashbang")
set_user_footsteps(id, 1)
fm_set_user_health(id, get_pcvar_num(furienspawnhp))
}
case TEAM_ANTIFURIEN: {
fm_give_item(id, "weapon_flashbang")
fm_give_item(id, "weapon_hegrenade")
fm_give_item(id, "weapon_knife")
set_user_footsteps(id, 0)
fm_set_user_health(id, get_pcvar_num(antifurienspawnhp))
}
}
}
}
public EVENT_NewRound() {
CanPlant = false;
new Float:FloatTime = get_cvar_num("mp_freezetime") + (get_cvar_num("mp_roundtime") * 60) - 60.0
set_task(FloatTime, "TASK_CanPlant", TASKID_CANPLANT)
remove_task(TASKID_C4COUNTDOWN)
}
public EVENT_FireINTheHole()
return PLUGIN_HANDLED
public HAM_Touch_Weapon(ent, id) {
if(is_user_alive(id) && get_user_team(id) == TEAM_FURIEN && !(get_pdata_cbase(ent, 39, 4) > 0))
return HAM_SUPERCEDE
return HAM_IGNORED
}
public SuperKnife_TakeDamage(Victim, Inflictor, Attacker, Float:Damage, DamageType) {
if(is_user_connected(Attacker) && is_user_alive(Attacker) && is_user_connected(Victim)) {
if(get_user_flags(Victim) & VIP_GOLD_LEVEL) {
if(DamageType & DMG_HEGRENADE)
return HAM_SUPERCEDE
}
}
return HAM_IGNORED
}
public C4_PrimaryAttack(Ent) {
if(!CanPlant)
return HAM_SUPERCEDE
return HAM_IGNORED
}
public CmdResetScore(id) {
if(get_user_frags(id) == 0 && get_user_deaths(id) == 0)
ColorChat(id, "!gScorul tau este deja!t 0-0!g !")
else {
for(new i = 0; i < 2; i++) {
cs_set_user_deaths(id, 0);
set_user_frags(id, 0);
}
ColorChat(id, "!gTi-ai resetat scorul cu succes !")
}
}
public CMD_BlockJoinTeam(id) {
console_print(id, "*** Nu ai voie sa foloseti JoinTeam ! ***")
return 1;
}
public CMD_BlockChooseTeam(id) {
console_print(id, "*** Nu ai voie sa foloseti ChooseTeam ! ***")
return 1;
}
public CmdShowMotd(id)
show_motd(id, "addons/amxmodx/configs/beneficii.html")
/////////////////////////////////////////////////////////////////////////
public EVENT_CurWeapon(id) {
if(is_user_connected(id)) {
new PlayerHealth;
PlayerHealth = get_user_health(id)
if(PlayerHealth == 256)
fm_set_user_health(id, 255)
}
}
public EVENT_Death() {
static Attacker, Victim;
Attacker = read_data(1)
Victim = read_data(2)
if(Victim == Attacker)
return 1;
if(is_user_connected(Attacker)) {
if(get_user_flags(Attacker) & VIP_GOLD_LEVEL) {
cs_set_user_money(Attacker, cs_get_user_money(Attacker) + 6000)
fm_set_user_health(Attacker, get_user_health(Attacker) + 60)
fm_set_user_armor(Attacker, get_user_armor(Attacker) + 60)
}
else if(get_user_flags(Attacker) & VIP_SILVER_LEVEL) {
cs_set_user_money(Attacker, cs_get_user_money(Attacker) + 3000)
fm_set_user_health(Attacker, get_user_health(Attacker) + 30)
fm_set_user_armor(Attacker, get_user_armor(Attacker) + 30)
}
else if(get_user_flags(Attacker) & FOUNDER_LEVEL) {
cs_set_user_money(Attacker, cs_get_user_money(Attacker) + 7000)
fm_set_user_health(Attacker, get_user_health(Attacker) + 70)
fm_set_user_armor(Attacker, get_user_armor(Attacker) + 70)
}
else {
if(get_user_team(Victim) == 2)
cs_set_user_money(Attacker, cs_get_user_money(Attacker) + 1200)
else if(get_user_team(Victim) == 1)
cs_set_user_money(Attacker, cs_get_user_money(Attacker) + 3000)
}
}
return 1;
}
public MSG_StatusIcon(msg_id, msg_dest, id) {
static Attrib
Attrib = get_msg_arg_int(2)
if(Attrib == (1<<1))
set_msg_arg_int(2, ARG_BYTE, 0)
new Icon[8];
get_msg_arg_string(2, Icon, 7);
if(get_pcvar_num(removebuyzone)) {
static const BuyZone[] = "buyzone";
if(equal(Icon, BuyZone)) {
set_pdata_int(id, OFFSET_BZ, get_pdata_int(id, OFFSET_BZ, 5) & ~(1 << 0), 5);
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
public MSG_ShowMenu(msgid, dest, id) {
if(!Should_AutoJoin(id))
return PLUGIN_CONTINUE
static team_select[] = "#Team_Select"
static menu_text_code[sizeof team_select]
get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
if(!equal(menu_text_code, team_select))
return PLUGIN_CONTINUE
JoinTeam_Task(id, msgid)
return PLUGIN_HANDLED
}
public MSG_VGUIMenu(msgid, dest, id) {
if(get_msg_arg_int(1) != 2 || !Should_AutoJoin(id))
return PLUGIN_CONTINUE
JoinTeam_Task(id, msgid)
return PLUGIN_HANDLED
}
public MSG_SendAudio() {
static Sound[17]
get_msg_arg_string(2, Sound, sizeof Sound - 1)
if(equal(Sound, "terwin") || equal(Sound, "ctwin") || equal(Sound, "rounddraw") || equal(Sound, "bombpl") || equal(Sound, "bombdef"))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public MSG_Health(msgid, dest, id) {
static Health;
Health = get_msg_arg_int(1)
if(Health > 255)
set_msg_arg_int(1, ARG_BYTE, 255);
else if(Health == 256)
set_msg_arg_int(1, ARG_BYTE, get_user_health(id) + 10)
}
public MSG_ScreenFade(msgid, dest, id) {
if(is_user_connected(id)) {
if(get_user_flags(id) & VIP_GOLD_LEVEL) {
static data[4]
data[0] = get_msg_arg_int(4)
data[1] = get_msg_arg_int(5)
data[2] = get_msg_arg_int(6)
data[3] = get_msg_arg_int(7)
if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
bool:Should_AutoJoin(id) {
return(get_pcvar_num(cvar_autojoin_team) && !get_user_team(id) && !task_exists(id))
}
JoinTeam_Task(id, menu_msgid) {
static param_menu_msgid[2]
param_menu_msgid[0] = menu_msgid
set_task(0.1, "Force_JoinTeam", id, param_menu_msgid, sizeof param_menu_msgid)
}
public Force_JoinTeam(menu_msgid[], id) {
if(get_user_team(id))
return
static team[2], class[2]
get_pcvar_string(cvar_autojoin_team, team, sizeof team - 1)
get_pcvar_string(cvar_autojoin_class, class, sizeof class - 1)
Force_Team_Join(id, menu_msgid[0], team, class)
}
stock Force_Team_Join(id, menu_msgid, team[] = "5", class[] = "0") {
static jointeam[] = "jointeam"
if(class[0] == '0') {
engclient_cmd(id, jointeam, team)
return
}
static msg_block, joinclass[] = "joinclass"
msg_block = get_msg_block(menu_msgid)
set_msg_block(menu_msgid, BLOCK_SET)
engclient_cmd(id, jointeam, team)
engclient_cmd(id, joinclass, class)
set_msg_block(menu_msgid, msg_block)
}
public bomb_planted(planter) {
C4_CountDownDelay = get_cvar_num("mp_c4timer") - 1
TASK_C4_CountDown();
set_hudmessage(random(255), random(255), random(255), -1.0, -1.0, 1, 3.1, 3.0)
show_hudmessage(0, "Furienii au plantat bomba!")
}
public EVENT_SwitchTeam() {
new Players[32], PlayersNum, id;
get_players(Players, PlayersNum)
if(PlayersNum) {
for(new i; i < PlayersNum; i++) {
id = Players[i]
BeginDelay(id)
}
}
}
public BeginDelay(id) {
if(is_user_connected(id)) {
switch(id) {
case 1..7: set_task(0.1, "BeginTeamSwap", id)
case 8..15: set_task(0.2, "BeginTeamSwap", id)
case 16..23: set_task(0.3, "BeginTeamSwap", id)
case 24..32: set_task(0.4, "BeginTeamSwap", id)
}
}
}
public BeginTeamSwap(id) {
if(is_user_connected(id)) {
switch(get_user_team(id)) {
case TEAM_FURIEN: cs_set_user_team(id, CS_TEAM_CT)
case TEAM_ANTIFURIEN: cs_set_user_team(id, CS_TEAM_T)
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
public Player_PreThink(id) {
if(is_user_connected(id)) {
if(get_user_team(id) == TEAM_FURIEN) {
if(pev(id, pev_gravity) > FURIEN_GRAVITY && pev(id, pev_gravity) > 0.1)
set_pev(id, pev_gravity, FURIEN_GRAVITY)
if(pev(id, pev_maxspeed) < FURIEN_SPEED && pev(id, pev_maxspeed) > 1.0) {
set_pev(id, pev_maxspeed, FURIEN_SPEED)
set_user_footsteps(id, 1)
}
}
if(get_pcvar_num(cvar_aim_info)) {
new Target, Body;
get_user_aiming(id, Target, Body);
if(is_user_alive(id) && is_user_connected(Target) && is_user_alive(Target)) {
new TargetTeam, PlayerTeam, TargetName[32], Message[128], TargetHealth, TargetArmor, RED, GREEN, BLUE;
TargetTeam = get_user_team(Target)
PlayerTeam = get_user_team(id)
get_user_name(Target, TargetName, 31)
TargetHealth = get_user_health(Target)
TargetArmor = get_user_armor(Target)
if(PlayerTeam == TEAM_FURIEN && TargetTeam == TEAM_ANTIFURIEN) {
formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
RED = 20
GREEN = 200
BLUE = 50
}
else if(PlayerTeam == TEAM_FURIEN && TargetTeam == TEAM_FURIEN) {
formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
RED = 200
GREEN = 20
BLUE = 20
}
else if(PlayerTeam == TEAM_ANTIFURIEN && TargetTeam == TEAM_ANTIFURIEN) {
formatex(Message, sizeof(Message)-1, "%s^nHP: %i | AP: %i", TargetName, TargetHealth, TargetArmor)
RED = 200
GREEN = 20
BLUE = 20
}
else if(PlayerTeam == TEAM_ANTIFURIEN && TargetTeam == TEAM_FURIEN)
return
set_hudmessage(RED, GREEN, BLUE, -1.0, -1.0, 0, 0.0, 0.1, 0.0, 0.0, -1);
show_hudmessage(id, "%s", Message)
}
}
}
}
public FWD_AddToFullPack(es, e, ent, host, host_flags, player, p_set) {
if(is_user_connected(ent) && is_user_connected(host) && is_user_alive(ent)) {
if(is_user_alive(host) && get_user_team(ent) == 1 && get_user_team(host) == 1
|| !is_user_alive(host) && get_user_team(ent) == 1 && pev(host, pev_iuser2) == ent
|| get_user_team(ent) == 1 && pev(ent, pev_maxspeed) <= 1.0) {
set_es(es, ES_RenderFx, kRenderFxNone);
set_es(es, ES_RenderMode, kRenderTransTexture);
set_es(es, ES_RenderAmt, 255);
}
else if(get_user_team(ent) == 1) {
set_es(es, ES_RenderFx, kRenderFxNone);
set_es(es, ES_RenderMode, kRenderTransTexture);
static Float:Origin[3]
pev(ent, pev_origin, Origin)
if(get_user_weapon(ent) == CSW_KNIFE && !MakeVisible[ent] && fm_get_speed(ent) <= 5 || get_user_weapon(ent) == CSW_KNIFE && !MakeVisible[ent] && Origin[0] == Wallorigin[ent][0] && Origin[1] == Wallorigin[ent][1] && Origin[2] == Wallorigin[ent][2])
set_es(es, ES_RenderAmt, 0);
else
set_es(es, ES_RenderAmt, 255);
}
}
}
public FWD_ParachutePreThink(id) {
if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
new Float:FallSpeed = -50.0;
new Float:Frame;
new Button = pev(id, pev_button);
new OldButton = pev(id, pev_oldbuttons);
new Flags = pev(id, pev_flags);
if(ParaENT[id] > 0 &&(Flags & FL_ONGROUND)) {
if(pev(ParaENT[id],pev_sequence) != 2) {
set_pev(ParaENT[id], pev_sequence, 2);
set_pev(ParaENT[id], pev_gaitsequence, 1);
set_pev(ParaENT[id], pev_frame, 0.0);
set_pev(ParaENT[id], pev_fuser1, 0.0);
set_pev(ParaENT[id], pev_animtime, 0.0);
return;
}
pev(ParaENT[id],pev_fuser1, Frame);
Frame += 2.0;
set_pev(ParaENT[id],pev_fuser1,Frame);
set_pev(ParaENT[id],pev_frame,Frame);
if(Frame > 254.0) {
engfunc(EngFunc_RemoveEntity, ParaENT[id]);
ParaENT[id] = 0;
}
else {
engfunc(EngFunc_RemoveEntity, ParaENT[id]);
ParaENT[id] = 0;
}
return;
}
if(Button & IN_USE) {
new Float:Velocity[3];
pev(id, pev_velocity, Velocity);
if(Velocity[2] < 0.0) {
if(ParaENT[id] <= 0) {
ParaENT[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
if(ParaENT[id] > 0) {
set_pev(ParaENT[id],pev_classname, PARACHUTE_CLASS);
set_pev(ParaENT[id], pev_aiment, id);
set_pev(ParaENT[id], pev_owner, id);
set_pev(ParaENT[id], pev_movetype, MOVETYPE_FLY);
set_pev(ParaENT[id], pev_sequence, 0);
set_pev(ParaENT[id], pev_gaitsequence, 1);
set_pev(ParaENT[id], pev_frame, 0.0);
set_pev(ParaENT[id], pev_fuser1, 0.0);
}
}
if(ParaENT[id] > 0) {
set_pev(id, pev_sequence, 3);
set_pev(id, pev_gaitsequence, 1);
set_pev(id, pev_frame, 1.0);
set_pev(id, pev_framerate, 1.0);
Velocity[2] = (Velocity[2] + 40.0 < FallSpeed) ? Velocity[2] + 40.0 : FallSpeed;
set_pev(id, pev_velocity, Velocity);
if(pev(ParaENT[id],pev_sequence) == 0) {
pev(ParaENT[id],pev_fuser1, Frame);
Frame += 1.0;
set_pev(ParaENT[id],pev_fuser1,Frame);
set_pev(ParaENT[id],pev_frame,Frame);
if(Frame > 100.0) {
set_pev(ParaENT[id], pev_animtime, 0.0);
set_pev(ParaENT[id], pev_framerate, 0.4);
set_pev(ParaENT[id], pev_sequence, 1);
set_pev(ParaENT[id], pev_gaitsequence, 1);
set_pev(ParaENT[id], pev_frame, 0.0);
set_pev(ParaENT[id], pev_fuser1, 0.0);
}
}
}
}
else if(ParaENT[id] > 0) {
engfunc(EngFunc_RemoveEntity, ParaENT[id]);
ParaENT[id] = 0;
}
}
else if((OldButton & IN_USE) && ParaENT[id] > 0) {
engfunc(EngFunc_RemoveEntity, ParaENT[id]);
ParaENT[id] = 0;
}
}
}
public FWD_GameDescription() {
static GameName[32]
get_pcvar_string(cvar_gamedescription, GameName, 31)
forward_return(FMV_STRING, GameName)
return FMRES_SUPERCEDE
}
public TASK_CanPlant() {
CanPlant = true;
set_hudmessage(random(255), random(255), random(255), -1.0, -1.0, 1, 3.1, 3.0)
show_hudmessage(0, "")
}
public TASK_C4_CountDown() {
new Red, Green, Blue
if(C4_CountDownDelay > 10)
Red = 0, Green = 255, Blue = 0;
else if(C4_CountDownDelay > 5)
Red = 255, Green = 200, Blue = 0;
else if(C4_CountDownDelay <= 5)
Red = 255, Green = 0, Blue = 0;
if(C4_CountDownDelay) {
new Message[256];
formatex(Message,sizeof(Message)-1,"----------^n| C4: %d |^n----------", C4_CountDownDelay);
set_hudmessage(Red, Green, Blue, -1.0, 0.78, 0, 6.0, 1.0)
show_hudmessage(0, "%s", Message)
set_task(1.0, "TASK_C4_CountDown", TASKID_C4COUNTDOWN);
C4_CountDownDelay--;
}
else if(!C4_CountDownDelay)
C4_CountDownDelay = 0;
}
stock ColorChat(const id, const input[], any:...) {
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^3");
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, MSGID_SayText, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}