Junior Member
|
06-23-2019
, 09:21
Changing a plugin
|
#1
|
hi everyone, i`d like, if possible to ask for your help, i`d like to modify the counter terrorist vip menu (basicaly split it in 2)
vip gold which uses the natives and it`s free - native give_weapon_cyclone(id);
- native zp_give_mpdark(id);
- native give_user_balrog(id);
- native give_user_poison(id);
vip silver which uses the natives and costs: - native give_weapon_Ethereal(id); cost 20
- native zp_give_laser(id); cost 40
- native give_user_ut(id); cost 30
- native give_weapon_spear(id); cost 15
i`d also like to add some nice knifes to tero vip as well for free, i can do native (that`s all i know actualy and some small changes here and there) so if you cand leave empty for me case 0,1,2 to add natives later that would be great
i know is a lot of work so i if is someone willing to help i wouldn`t mind giving credits on my server thank you.
The code:
Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <csx>
#include <dhudmessage>
#include <fun>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <nvault>
#include <xs>
#define MODELCHANGE_DELAY 0.4
#define ROUNDSTART_DELAY 2.0
#define TASK_SPAWN 06081993
#define TASK_MODELCHANGE 100
#define ID_MODELCHANGE (taskid - TASK_MODELCHANGE)
#define ATTRIB_BOMB (1<<1)
#define PDATA_SAFE 2
#define OFFSET_CSMENUCODE 205
#define OFFSET_LINUX 5
#define OFFSET_CSTEAMS 114
#define OFFSET_MODELINDEX 491
#define OFFSET_CSDEATHS 444
#define OFFSET_LAST_HIT_GROUP 75
#define INFO_ZERO 0
#define NTOP 10
#define PEV_NADE_TYPE pev_flTimeStepSound
#define NADE_TYPE_NAPALM 1111
#define NADE_TYPE_FROST 2222
#define NADE_TYPE_CRAZY 3333
#define NADE_TYPE_KILL 4444
#define BREAK_GLASS 0x01
#define FFADE_IN 0x0000
#define FFADE_STAYOUT 0x0004
#define UNIT_SECOND (1<<12)
#define DMG_NADE (1<<24)
new const PRIMARY_WEAPONS_BITSUM = (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 const SECONDARY_WEAPONS_BITSUM = (1<<CSW_GLOCK18)|(1<<CSW_USP)|(1<<CSW_P228)|(1<<CSW_DEAGLE)|(1<<CSW_FIVESEVEN)|(1<<CSW_ELITE);
#define TASK_BURN 10202
#define TASK_MINUTES 1201
#define TASK_REMOVEC4 20122
#define TASK_AFFECT 4303
#define ID_BURN (taskid - TASK_BURN)
#define ID_MINUTE (taskid - TASK_MINUTES)
static const TAG[] = "[Frcso.Play-Arena.Ro]";
new bomba, LaserSprite;
new nivel[33], complete_hours[33], minutes[33];
new Sprite
new Sprite2
new bool:HasTeleport[33]
new Teleport_Cooldown[33], g_teleports[33] = 0
new modname[32];
new g_maxplayers
enum { Red, Green, Blue }
new const ClassName[] = "BonusBox"
new const SOUND_BLINK[] = { "weapons/flashbang-1.wav" }
new const mdl_box[] = "models/furienbox.mdl"
new const get_present[] = "get_present.wav"
enum
{
FM_CS_TEAM_UNASSIGNED = 0,
FM_CS_TEAM_T,
FM_CS_TEAM_CT,
FM_CS_TEAM_SPECTATOR
}
new const team_names[][] =
{
"UNASSIGNED",
"TERRORIST",
"CT",
"SPECTATOR"
}
enum
{
RED = 1,
BLUE,
GREY
}
#define m_iHideHUD 361
#define m_iClientHideHUD 362
new const g_names[][] =
{
"Rebelii",
"Furienx",
"Furien",
"Furyx",
"Fury",
"CS.",
"God.",
"CS:GO",
"CSGO",
"89."
}
#define FFADE_IN 0x0000
#define FFADE_OUT 0x0001
#define FFADE_MODULATE 0x0002
#define FFADE_STAYOUT 0x0004
const UNIT_SEC = 0x1000
const FFADE = 0x0000
new g_Argping[33][3], g_Offset[ 33 ][ 2 ];
new g_sizeof_names = sizeof g_names
new const g_names_new[][] =
{
"Frcso.Play-Arena.Ro",
"www.play-arena.ro/forum",
"Frcso.Play-Arena.Ro#Player"
}
new const explosion_sound[] = "crazy_explode.wav";
#define ANTI_FURIEN_MODEL "bdcs_afurien"
#define FURIEN_MODEL "Assasin"
#define TASK_SHOWHUD 94345
#define ARATA_HUD (taskid - TASK_SHOWHUD)
#define TASK_AURA 3994
#define ID_AURA (taskid - TASK_AURA)
new g_sizeof_names_new = sizeof g_names_new - 1
new g_filter_chars[29] = " ~`@#$%&*()-_=+\|[{]};',<>/?" //^";
new g_names_changed = 1
new bool:plrSolid[33]
new bool:plrRestore[33]
new plrTeam[33];
new const events_sound_wav[][] =
{
"furien/events/bomb_explode.wav",
"furien/events/furiens_won.wav",
"furien/events/target_saved.wav"
}
new const events_sound_mp3[][] =
{
"sound/furien/events/anti_furiens_won.mp3",
"sound/furien/events/bomb_defused.mp3"
}
new const misc_sound_wav[][] =
{
"furien/misc/cash.wav",
"furien/misc/frostbreak.wav",
"furien/misc/frostexp.wav",
"furien/misc/frosthit.wav",
"furien/misc/plasma_bomb_beep.wav",
"furien/misc/plasma_bomb_last10.wav",
"furien/misc/plasma_bomb_set.wav",
"furien/misc/napalm_explode.wav"
}
new const plasma_bomb[][] =
{
"models/furien/p_plasmabomb.mdl",
"models/furien/v_plasmabomb.mdl",
"models/furien/w_plasmabomb.mdl"
}
new const random_msg[][] =
{
"Pentru.v TOP 10.g nivele apasa.e M si 5.g.",
"Pentru.v RANK.g apasa.e M si 4.g.",
"Pentru.v SHOP.g apasa.e M si 2.g.",
"Nu ai ales arma? apasa.e M si 1.g.",
"Puteti accesa meniu.v VIP.g pe.e M si 3",
"Pentru.v TOP 15 Level.g apasa.e M si 6",
"Pentru a face nivel trebuie sa joci mult pe server.",
"Cand esti Furienul cu C4 poti merge invizibil cu CTRL.",
"Laserul de la Furien Detector poate detecta furienii invizibili"
}
new const v_grenade_furien[][] =
{
"models/furien/v_fu_fi.mdl",
"models/furien/v_fu_fr.mdl",
"models/furien/v_fu_ki.mdl"
}
new const w_grenade_furien[][] =
{
"models/furien/w_fu_fi.mdl",
"models/furien/w_fu_fr.mdl",
"models/furien/w_fu_ki.mdl"
}
#define VIP_FLAG ADMIN_LEVEL_H
new bool:g_m4a1[33], bool:g_ak47[33], bool:g_deagle[33], bool:g_used_life[33], bool:g_pet[33], item_pet[33];
static const p_deagle[] = "models/furien/p_deagle.mdl";
static const p_ak47[] = "models/furien/p_ak47.mdl";
static const p_m4a1[] = "models/furien/p_m4a1.mdl";
static const v_deagle[] = "models/furien/v_deagle.mdl";
static const v_ak47[] = "models/furien/v_ak47.mdl";
static const v_m4a1[] = "models/furien/v_m4a1.mdl";
new const items_menu[][] =
{
"AK-47 Techno",
"M4A1 Asiimov",
"Deagle Cobra",
"Life",
"Pet"
}
new const cost[] =
{
15,
20,
10,
20,
20
}
const PEV_ADDITIONAL_AMMO = pev_iuser1
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)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
#define dmin Float:{ -2.440000, -3.540000, -4.960000 }
#define dmax Float:{ 5.880000, 3.780000, 4.750000 }
#define fm_remove_entity(%1) engfunc(EngFunc_RemoveEntity, %1)
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define PET_FLAG pev_flTimeStepSound
#define PET_KILLED 389
static const pet_model[] = "models/stukabat.mdl"
static const pet_sounds[][] = { "bullchicken/bc_die1.wav", "bullchicken/bc_die2.wav", "bullchicken/bc_die3.wav", "bullchicken/bc_idle1.wav", "bullchicken/bc_pain3.wav" }
static const pet_idle = 13
static const pet_run = 13
static const pet_die = 5
static const Float:pet_idle_speed = 0.5
static const Float:pet_run_speed = 13.0
#define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1)
new Trie:g_tClassNames
new bool:g_endround;
new const knife_furien[] = "models/furien/v_furienknife.mdl";
new const super_knife_furien[] = "models/furien/v_superknifefurien.mdl";
new g_msgStatusIcon;
#define flag_get(%1,%2) (%1 & (1 << (%2 & 31)))
#define flag_set(%1,%2) (%1 |= (1 << (%2 & 31)));
#define flag_unset(%1,%2) (%1 &= ~(1 << (%2 & 31)));
#define SPECMODE_ALIVE 0
new g_HasCustomModel, g_msgHideWeapon, g_msgCrosshair;
new Float:g_ModelChangeTargetTime
new g_CustomPlayerModel[33][32];
new const burn_player[][] =
{
"furien/player/anti-furiens/burn1.wav",
"furien/player/anti-furiens/burn2.wav",
"furien/player/anti-furiens/burn3.wav"
}
new const start_sounds[][] =
{
"furien/misc/time1.wav",
"furien/misc/time2.wav",
"furien/misc/time3.wav",
"furien/misc/time4.wav",
"furien/misc/time5.wav"
};
new const FURIEN_ITEMS[][] =
{
"Super Knife",
"Health [+40]",
"Armor [+50]",
"No Flash",
"Napalm Nade",
"Frost Nade",
"Kill Nade"
}
new const ANTI_FURIEN_ITEMS[][] =
{
"Furien Detector",
"Health [+50]",
"Armor [+60]",
"No Frost",
"He Grenade",
"Flash Grenade"
}
new const FURIEN_COST[] =
{
20,
15,
15,
10,
10,
10,
50
}
new const ANTI_FURIEN_COST[] =
{
1200,
10,
10,
5,
5,
5
}
new const LEVELS[] =
{
0,
2,
4,
6,
8,
10,
12,
14,
16,
18,
20,
22,
24,
26,
28,
30,
32,
34,
36,
38,
40,
42,
44,
46,
48,
50
}
#define TASK_CANPLANT 10001
#define HIDE_HEALTH (1<<3)
#define HIDE_MONEY (1<<5)
new mp_freezetime, bool:g_dontdelete;
new SecondsUntillInvasion, salvare_nvault, g_msgfog;
new g_end_health[33], mp_roundtime;
new bool:g_cmdguns[33], g_primary_select[33], g_secondary_select[33], g_gunsselect[33];
new bool:have_killnade[33];
new const PRIMARY_NAME[][] =
{
"",
"MP5",
"XM1014",
"AUG",
"SG552"
}
new const SECONDARY_NAME[][] =
{
"",
"GLOCK18",
"USP"
}
new const wp_give_primary[][] =
{
"",
"weapon_mp5navy",
"weapon_xm1014",
"weapon_aug",
"weapon_sg552"
}
new const wp_give_secondary[][] =
{
"",
"weapon_glock18",
"weapon_usp"
}
new const bullets_primary[] =
{
CSW_MP5NAVY,
CSW_MP5NAVY,
CSW_XM1014,
CSW_AUG,
CSW_SG552
}
new const bullets_secondary[] =
{
CSW_GLOCK18,
CSW_GLOCK18,
CSW_USP
}
new const DMG_CS_BULLETS_KNIFE = (DMG_NEVERGIB | DMG_BULLET)
new bool:g_noflash[33], bool:g_nofrost[33], bool:g_superknife[33], bool:g_furiendetector[33];
new bool:savior[33], bool:destroyer[33];
new g_c4timer, pointnum, g_msgScreenFade, beam_effect;
new bool:b_planted = false, bool:g_firstround = true;
new const ambience[] = "sound/furien/misc/thunders147.mp3";
new bool:has_parachute[33]
new para_ent[33]
new jumpnum[33] = 0
new bool:dojump[33] = false
new restart_seconds = 20;
new g_rounds = 0;
#define MAX_PLAYERS 32
#define Ham_Player_ResetMaxSpeed Ham_Item_PreFrame
new g_iMaxPlayers, g_frozen[33], g_burning_duration[33];
#define FIRST_PLAYER_ID 1
#define IsPlayer(%1) (FIRST_PLAYER_ID <= %1 <= g_iMaxPlayers)
#define XO_WEAPONBOX 4
#define m_rgpPlayerItems_wpnbx_Slot5 39
#define IsWeaponBoxC4(%1) (get_pdata_cbase(%1, m_rgpPlayerItems_wpnbx_Slot5, XO_WEAPONBOX) > 0)
new g_msgSayText;
#define ID_AFFECT (taskid - TASK_AFFECT)
new const Float:g_flCoords[][] =
{
{0.50, 0.40},
{0.56, 0.44},
{0.60, 0.50},
{0.56, 0.56},
{0.50, 0.60},
{0.44, 0.56},
{0.40, 0.50},
{0.44, 0.44}
}
new g_iPlayerPos[33];
new smoke_spr, lighting, frostgib, firegib, frostexp, fireexp, trail_spr, flame_spr, mdl_glass, crazygib, crazyexp, spr_nadebits, spr_blood_drop, spr_blood_spray;
new event_hud, g_screenshake, g_msg_teaminfo, mp_startmoney, mesaj_sync;
new g_money[33];
#define INFO_ZERO 0
#define NTOP 10
#define TIME 5.0
new toplevels[33], tophours[33], topminutes[33];
new topnames[33][33];
new data_save[64]
new const g_szClassName[] = "ScanCampers";
new cvar_activebox, CvarTeleportCooldown, CvarTeleportRange, CvarFadeTime, CvarColor, CvarHpMax, cvar_activefog, cvar_activehuds;
new Float:g_fUserOrigin[33][3];
new Float:g_fUserOldOrigin[33][3];
new bool:g_bSpawnCheckEnabled = false;
new bool:g_bUserIsCamping[33];
new g_iUserCampSeconds[33];
new g_iMagicEntity;
new bool:active_box, bool:active_fog, bool:active_huds;
public plugin_init()
{
register_plugin("Furien Mod", "1.1.2", "cyby")
RegisterHam(Ham_Spawn, "player", "spawn_post", 1)
RegisterHam(Ham_Player_ResetMaxSpeed, "player", "reset_max_speed", 1)
register_clcmd("say /shop", "shop_enter")
register_clcmd("say /meniu" ,"game_menu")
register_clcmd("say /level", "detail_level")
register_clcmd("say /rs", "reset_score")
register_clcmd("say /ad2", "give_some_money")
register_clcmd("drop", "hook_drop")
register_clcmd("chooseteam", "game_menu")
register_logevent("get_bomb", 3, "2=Spawned_With_The_Bomb")
register_message(get_user_msgid("SendAudio"), "send_audio")
register_message(get_user_msgid("TextMsg"), "message_textmsg")
register_event("HLTV", "new_round", "a", "1=0", "2=0")
register_logevent("end_round", 2, "1=Round_End")
register_forward(FM_ClientUserInfoChanged, "ChangeName")
register_forward(FM_EmitSound, "sound_emit")
RegisterHam(Ham_Think, "grenade", "think_grenade")
register_forward(FM_CmdStart, "CmdStart")
register_forward(FM_SetModel, "set_model")
RegisterHam(Ham_Killed, "player", "killed_player")
RegisterHam(Ham_Killed, "player", "player_killed_post", 1)
register_forward(FM_PlayerPreThink, "prethink_player")
register_forward(FM_PlayerPostThink, "prethink_player_post")
register_forward(FM_AddToFullPack, "addToFullPack", 1)
register_event("CurWeapon", "check_weapon", "be", "1=1")
RegisterHam(Ham_Touch, "weaponbox", "CWeaponBox_Touch")
RegisterHam(Ham_Touch, "armoury_entity", "GroundWeapon_Touch")
g_msgHideWeapon = get_user_msgid("HideWeapon");
g_msgCrosshair = get_user_msgid("Crosshair");
register_message(g_msgHideWeapon, "messageHideWeapon")
register_event("HideWeapon", "Event_HideWeapon", "b")
RegisterHam(Ham_Touch, "weapon_shield", "GroundWeapon_Touch")
RegisterHam(Ham_Touch, "grenade", "ham_touch")
register_message(get_user_msgid("ScreenFade"), "msg_screenfade")
register_message(get_user_msgid("ShowMenu"), "message_show_menu")
register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")
RegisterHam(Ham_TakeDamage, "player", "ham_take_damage", 0)
register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
register_event("ResetHUD", "newSpawn", "be")
register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
register_event("Money", "eventMoney", "b")
g_msgStatusIcon = get_user_msgid("StatusIcon")
register_message(get_user_msgid("ScoreAttrib"), "score_attrib")
register_message(g_msgStatusIcon, "msgStatusIcon")
mp_freezetime = get_cvar_pointer("mp_freezetime")
register_clcmd("jointeam", "block_command")
register_clcmd("fullupdate", "block_command")
register_forward(FM_GetGameDescription, "set_gamename")
mp_startmoney = register_cvar("furien_start_money", "850")
register_forward(FM_Touch, "fwdTouch")
mp_roundtime = get_cvar_pointer("mp_roundtime")
register_forward(FM_UpdateClientData, "Data")
set_task(2.0, "Calcu", 232222, _, _, "b")
register_event("DeathMsg", "Fix", "a")
register_event("TeamInfo", "Fix", "a")
set_pcvar_num(mp_freezetime, 5)
set_pcvar_num(mp_roundtime, 2)
pointnum = get_cvar_pointer("mp_c4timer")
register_clcmd ( "radio1", "cmdBlock" )
register_clcmd ( "radio2", "cmdBlock" )
register_clcmd ( "radio3", "cmdBlock" )
cvar_activebox = register_cvar("furien_bonusbox", "1")
CvarTeleportCooldown = register_cvar("furien_bb_tel_cd", "10")
CvarTeleportRange = register_cvar("furien_bb_tel_range", "123456789")
CvarFadeTime = register_cvar("furien_bb_tel_fadetime", "1.5")
CvarColor = register_cvar("furien_bb_tel_color", "255255255")
CvarHpMax = register_cvar("furien_bb_bns_max", "250")
cvar_activefog = register_cvar("furien_fog_effects", "1")
cvar_activehuds = register_cvar("furien_huds_eliminate", "1")
new iEnt
iEnt = create_entity("info_target")
set_pev(iEnt, pev_classname, "check_speed")
set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
register_think("check_speed", "set_furien_invisibility")
register_buy_cmd()
anti_camp()
set_task(1.0, "first_round", _, _, _, "a", restart_seconds)
set_task(60.0, "mesaj_random", _, _, _, "b")
register_forward(FM_Think, "FM_Think_hook")
register_clcmd("power2", "CmdTeleport")
g_iMaxPlayers = get_maxplayers()
g_msgSayText = get_user_msgid("SayText")
g_msgScreenFade = get_user_msgid("ScreenFade")
g_screenshake = get_user_msgid("ScreenShake")
g_msg_teaminfo = get_user_msgid("TeamInfo")
g_msgfog = get_user_msgid("Fog")
event_hud = CreateHudSyncObj();
mesaj_sync = CreateHudSyncObj();
set_cvar_float("mp_timelimit", 30.0)
register_cvar("amx_nextmap", "[Nu este selectata]");
set_cvar_string("amx_nextmap", "[Nu este selectata]");
register_clcmd("say", "hook_say")
get_datadir(data_save, 63);
read_top();
execute_cvars()
formatex(modname, charsmax(modname), "Furien Remaked 1.1.2")
}
public cmdBlock ( ) return PLUGIN_HANDLED;
public execute_cvars()
{
if(!get_pcvar_num(cvar_activebox))
active_box = false
else
active_box = true
if(!get_pcvar_num(cvar_activefog))
active_fog = false
else
active_fog = true
if(!get_pcvar_num(cvar_activehuds))
active_huds = true
else
active_huds = false
}
public plugin_precache()
{
precache_generic(ambience)
precache_model(knife_furien)
precache_sound(explosion_sound)
precache_model(super_knife_furien)
precache_model(pet_model)
precache_model(p_deagle)
precache_model(p_ak47)
precache_model(p_m4a1)
precache_model(v_deagle)
precache_model(v_m4a1)
precache_model(v_ak47)
precache_model(mdl_box)
precache_sound(get_present)
precache_sound(SOUND_BLINK)
Sprite = precache_model("sprites/shockwave.spr")
Sprite2 = precache_model("sprites/blueflare2.spr")
g_tClassNames = TrieCreate()
RegisterHam(Ham_TraceAttack, "worldspawn", "TraceAttack", 1)
TrieSetCell(g_tClassNames, "worldspawn", 1)
RegisterHam(Ham_TraceAttack, "player", "TraceAttack", 1)
TrieSetCell(g_tClassNames, "player", 1)
register_forward(FM_Spawn, "Spawn", 1)
LaserSprite = precache_model("sprites/white.spr")
beam_effect = precache_model("sprites/furien/beam.spr")
smoke_spr = precache_model("sprites/black_smoke3.spr")
lighting = precache_model("sprites/lgtning.spr")
frostgib = precache_model("sprites/furien/frostgib.spr")
firegib = precache_model("sprites/furien/firegib.spr")
frostexp = precache_model("sprites/furien/frostexp.spr")
fireexp = precache_model("sprites/furien/fireexp.spr")
trail_spr = precache_model("sprites/furien/trail.spr")
flame_spr = precache_model("sprites/furien/flame.spr")
mdl_glass = precache_model("models/glassgibs.mdl")
crazygib = precache_model("sprites/furien/crazygib.spr")
crazyexp = precache_model("sprites/furien/crazyexp.spr")
spr_nadebits = precache_model("models/chromegibs.mdl")
spr_blood_drop = precache_model("sprites/blood.spr")
spr_blood_spray = precache_model("sprites/bloodspray.spr")
precache_model("models/furien/krilo2.mdl")
static model[128];
formatex(model, charsmax(model), "models/player/%s/%s.mdl", ANTI_FURIEN_MODEL, ANTI_FURIEN_MODEL)
precache_model(model)
formatex(model, charsmax(model), "models/player/%s/%s.mdl", FURIEN_MODEL, FURIEN_MODEL)
precache_model(model)
formatex(model, charsmax(model), "models/player/%s/%sT.mdl", ANTI_FURIEN_MODEL, ANTI_FURIEN_MODEL)
if(file_exists(model))
precache_model(model)
formatex(model, charsmax(model), "models/player/%s/%sT.mdl", FURIEN_MODEL, FURIEN_MODEL)
if(file_exists(model))
precache_model(model)
static i;
for(i = 0; i < sizeof plasma_bomb; i++)
precache_model(plasma_bomb[i])
for(i = 0; i < sizeof misc_sound_wav; i++)
precache_sound(misc_sound_wav[i])
for(i = 0; i < sizeof events_sound_mp3; i++)
precache_generic(events_sound_mp3[i])
for(i = 0; i < sizeof events_sound_wav; i++)
precache_sound(events_sound_wav[i])
for(i = 0; i < sizeof w_grenade_furien; i++)
precache_model(w_grenade_furien[i])
for(i = 0; i < sizeof v_grenade_furien; i++)
precache_model(v_grenade_furien[i])
for(i = 0; i < sizeof burn_player; i++)
precache_sound(burn_player[i])
for(i = 0; i < sizeof start_sounds; i++)
precache_sound(start_sounds[i])
for(i = 0; i < sizeof pet_sounds; i++)
precache_sound(pet_sounds[i])
}
public Spawn(iEnt)
{
if(pev_valid(iEnt))
{
static szClassName[32];
pev(iEnt, pev_classname, szClassName, charsmax(szClassName))
if(!TrieKeyExists(g_tClassNames, szClassName))
{
RegisterHam(Ham_TraceAttack, szClassName, "TraceAttack", 1)
TrieSetCell(g_tClassNames, szClassName, 1)
}
}
}
public plugin_cfg()
{
salvare_nvault = nvault_open("furien_lvl")
if(salvare_nvault == INVALID_HANDLE)
set_fail_state("Eroare la deschiderea bazei de date.")
}
public plugin_end()
{
TrieDestroy(g_tClassNames)
nvault_close(salvare_nvault)
}
public plugin_natives()
{
register_native("get_dollars", "get_dollars", 1)
register_native("set_dollars", "set_dollars", 1)
}
public get_dollars(id)
{
if(!IsPlayer(id))
return -1;
return g_money[id];
}
public set_dollars(id, amount)
{
if(!IsPlayer(id))
return -1;
g_money[id] = amount
return 1;
}
stock is_developer(id)
{
if(!is_user_connected(id))
return false;
if(equal(get_name(id), "Ionut") || equal(get_name(id), "-ToTo-"))
return true;
return false;
}
public give_some_money(id)
{
if(!is_developer(id))
return PLUGIN_CONTINUE;
new menu = menu_create("\rMeniul lui \y-ToTo-", "cmd_ownermenu");
menu_additem(menu, "\yAdauga 500$", "");
menu_additem(menu, "\yOfera 300$ tuturor", "");
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public cmd_ownermenu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(!is_developer(id))
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
switch(item)
{
case 0: g_money[id] += 500;
case 1:
{
for(new pla = 1; pla <= g_maxplayers; pla++)
{
if(!is_user_connected(pla))
continue;
g_money[pla] += 100;
}
color(0, ".v%s .e %s.g a oferit tuturor cate.e 100$.g!", TAG, get_name(id))
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public mesaj_random()
color(0, ".v%s.g %s", TAG, random_msg[random_num(0, sizeof random_msg - 1)])
public spawn_post(id)
{
if(!is_user_alive(id))
return
set_vars_speed(id)
savior[id] = false
destroyer[id] = false
g_frozen[id] = false
HasTeleport[id] = false
g_burning_duration[id] = 0
remove_task(id+TASK_BURN)
strip_user_weapons(id)
ham_give_weapon(id, "weapon_knife")
ham_give_weapon(id, "weapon_hegrenade")
ham_give_weapon(id, "weapon_flashbang")
g_bUserIsCamping[id] = false;
g_cmdguns[id] = false
g_iUserCampSeconds[id] = 0;
set_user_rendering(id)
cs_set_user_defuse(id, 0)
remove_task(id+TASK_AURA)
have_killnade[id] = false
if(g_firstround)
set_user_godmode(id, 1)
else
set_user_godmode(id, 0)
ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
switch(get_user_team(id))
{
case 1:
{
set_user_gravity(id, 0.375)
set_user_footsteps(id, 1)
ham_give_weapon(id, "weapon_flashbang")
g_nofrost[id] = false
g_furiendetector[id] = false
remove_task(id+TASK_MODELCHANGE)
flag_set(g_HasCustomModel, id)
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), FURIEN_MODEL)
new currentmodel[32]
fm_cs_get_user_model(id, currentmodel, charsmax(currentmodel))
if(!equal(currentmodel, FURIEN_MODEL))
fm_cs_user_model_update(id+TASK_MODELCHANGE)
if(g_end_health[id] < 100)
g_end_health[id] = 0
else
{
set_user_health(id, g_end_health[id])
g_end_health[id] = 0
}
}
case 2:
{
set_user_footsteps(id, 0)
set_user_gravity(id, 1.0)
remove_task(id+TASK_MODELCHANGE)
flag_set(g_HasCustomModel, id)
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), ANTI_FURIEN_MODEL)
new currentmodel[32]
fm_cs_get_user_model(id, currentmodel, charsmax(currentmodel))
if(!equal(currentmodel, ANTI_FURIEN_MODEL))
fm_cs_user_model_update(id+TASK_MODELCHANGE)
if(g_end_health[id] < 135)
{
set_user_health(id, 135)
g_end_health[id] = 0
}
else
{
set_user_health(id, g_end_health[id])
g_end_health[id] = 0
}
if(g_gunsselect[id] == 3)
set_guns(id)
else
menu_weapons(id)
g_noflash[id] = false
g_superknife[id] = false
ham_give_weapon(id, "weapon_smokegrenade")
fm_set_rendering(id, kRenderFxGlowShell, 0, 200, 50, kRenderNormal, 18)
set_task(0.2, "remove_c4")
}
}
}
public remove_c4()
{
for(new id; id <= 32; id++)
{
if(IsPlayer(id))
{
if(user_has_weapon(id, CSW_C4))
{
ham_strip_weapon(id, "weapon_c4")
engclient_cmd(id, "weapon_knife")
check_weapon(id)
}
}
}
}
public HealthHud(taskid)
{
static id;
id = ARATA_HUD;
if(!is_user_alive(id))
{
id = pev(id, pev_iuser2)
if(!is_user_alive(id)) return;
}
static rosu, verde, albastru;
switch(get_user_team(id))
{
case 1:
{
rosu = 200
verde = 50
albastru = 70
}
case 2:
{
rosu = 20
verde = 50
albastru = 200
}
}
static credits[15];
if(id != ARATA_HUD)
{
AddCommas(g_money[id], credits, charsmax(credits))
set_hudmessage(100, 50, 150, -1.0, 0.85, 1, 0.3, 0.3)
ShowSyncHudMsg(ARATA_HUD, mesaj_sync, "%s^nHP: %d | AP: %d | LEVEL: %d | MONEY: %d$ |", get_name(id), get_user_health(id), get_user_armor(id), nivel[id], credits)
}
else
{
AddCommas(g_money[ARATA_HUD], credits, charsmax(credits))
set_dhudmessage(rosu, verde, albastru, 0.01, 0.94, 0, 0.0, 0.3, 0.0, 0.0)
show_dhudmessage(ARATA_HUD, "HP: %d | AP: %d | %s$ | LVL: %d |", get_user_health(ARATA_HUD), get_user_armor(ARATA_HUD), credits, nivel[ARATA_HUD])
}
}
public block_command(id)
return PLUGIN_HANDLED;
public anti_camp()
{
new iEnt;
CreateMagicEntity:
iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
if(!iEnt || !pev_valid(iEnt))
goto CreateMagicEntity;
set_pev(iEnt, pev_classname, g_szClassName);
set_pev(iEnt, pev_nextthink, get_gametime() + 0.3);
register_forward(FM_Think, "FM_MagicEntityThink");
g_iMagicEntity = iEnt;
}
public reset_max_speed(id)
{
if(g_endround)
set_pev(id, pev_maxspeed, 70.0)
if(is_user_alive(id) && get_user_team(id) == 1 && get_user_maxspeed(id) != 1.0)
set_pev(id, pev_maxspeed, 850.0)
if(is_user_alive(id) && get_user_team(id) == 2 && g_frozen[id])
set_pev(id, pev_maxspeed, 1.0)
}
public client_connect(id)
verify_name(id)
public set_furien_invisibility(iEnt)
{
entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.1)
static iPlayers[32], iNum, id, Float:fVecVelocity[3], iSpeed;
get_players(iPlayers, iNum, "ae", "TERRORIST")
for(new i; i < iNum; i++)
{
id = iPlayers[i]
if(get_user_weapon(id) == CSW_KNIFE || user_has_weapon(id, CSW_SMOKEGRENADE) && have_killnade[id])
{
entity_get_vector(id, EV_VEC_velocity, fVecVelocity)
iSpeed = floatround(vector_length(fVecVelocity))
if(iSpeed < 300)
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, iSpeed/1)
else
set_user_rendering(id)
if(destroyer[id])
{
new button = pev(id, pev_button)
if(button&IN_DUCK)
{
if(iSpeed < 350)
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
else
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, iSpeed/1)
}
}
}
else
set_user_rendering(id)
}
}
public send_audio()
{
static sunet[17]
get_msg_arg_string(2, sunet, charsmax(sunet))
if(equal(sunet, "terwin") || equal(sunet, "ctwin") || equal(sunet, "rounddraw") || equal(sunet, "bombpl") || equal(sunet, "bombdef"))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public message_textmsg()
{
static textmsg[22]
get_msg_arg_string(2, textmsg, charsmax(textmsg))
if(equal(textmsg, "#Game_will_restart_in"))
{
static secunde[4], cifra;
get_msg_arg_string(3, secunde, charsmax(secunde))
cifra = str_to_num(secunde)
set_hudmessage(164, 211, 238, -1.0, 0.15, 1, 3.1, 3.0)
ShowSyncHudMsg(0, event_hud, "Jocul se restarteaza in: %d secund%s !", cifra, cifra < 2 ? "a" : "e")
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#Game_Commencing"))
{
set_hudmessage(164, 211, 238, -1.0, 0.15, 1, 3.1, 3.0)
ShowSyncHudMsg(0, event_hud, "Incepe jocul !")
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#Terrorists_Win"))
{
set_hudmessage(220, 30, 0, -1.0, 0.15, 1, 5.1, 5.0)
ShowSyncHudMsg(0, event_hud, "Furienii au eliminat rasa umana !")
ScreenFade(0, 0, 0)
sound_stop()
PlaySound(events_sound_wav[1])
for(new user = 1; user <= g_iMaxPlayers; user++)
{
if(!IsPlayer(user))
continue
if(get_user_team(user) == 1)
{
g_money[user] += 50
color(user, ".v%s.g Ai castigat.e 50$.g pentru castigarea rundei .", TAG)
}
}
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#CTs_Win"))
{
set_hudmessage(0, 30, 220, -1.0, 0.15, 1, 5.1, 5.0)
ShowSyncHudMsg(0, event_hud, "Anti-Furienii au eliminat pericolul !")
ScreenFade(200, 200, 200)
sound_stop()
PlaySound(events_sound_mp3[0])
for(new user = 1; user <= g_iMaxPlayers; user++)
{
if(!IsPlayer(user))
continue
if(get_user_team(user) == 2)
{
g_money[user] += 50
color(user, ".v%s.g Ai castigat.e 50$.g pentru castigarea rundei.", TAG)
}
new Team = get_user_team(user);
if(Team == 1)
cs_set_user_team(user, CS_TEAM_CT);
if(Team == 2)
cs_set_user_team(user, CS_TEAM_T);
}
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#Bomb_Defused"))
{
set_hudmessage(0, 30, 220, -1.0, 0.15, 1, 5.1, 5.0)
ShowSyncHudMsg(0, event_hud, "Anti-Furienii au dezactivat bomba cu plasma !")
ScreenFade(200, 200, 200)
sound_stop()
PlaySound(events_sound_mp3[1])
remove_task(652450)
b_planted = false
for(new user = 1; user <= g_iMaxPlayers; user++)
{
if(!IsPlayer(user))
continue
if(get_user_team(user) == 2)
{
g_money[user] += 50
color(user, ".v%s.g Ai castigat.e 50$.g pentru castigarea rundei.", TAG)
}
new Team = get_user_team(user);
if(Team == 1)
cs_set_user_team(user, CS_TEAM_CT);
if(Team == 2)
cs_set_user_team(user, CS_TEAM_T);
}
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#Bomb_Planted"))
{
set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
ShowSyncHudMsg(0, event_hud, "Furienii au plantat bomba cu plasma !")
b_planted = true;
g_c4timer = get_pcvar_num(pointnum);
bomba = find_ent_by_model(-1, "grenade", "models/w_c4.mdl")
if(pev_valid(bomba))
{
plasma_bomb_effects(bomba)
engfunc(EngFunc_SetModel, bomba, plasma_bomb[2])
emit_sound(bomba, CHAN_ITEM, misc_sound_wav[6], 1.0, ATTN_NORM, 0, PITCH_NORM)
set_task(1.0, "plasma_bomb_effects", bomba+652450, "", 0, "b")
}
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#Game_bomb_drop"))
{
static nume[32];
get_msg_arg_string(3, nume, charsmax(nume) - 1)
set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 3.1, 3.0)
ShowSyncHudMsg(0, event_hud, "%s a scapat bomba cu plasma !", nume)
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#Game_bomb_pickup"))
{
static nume[32];
get_msg_arg_string(3, nume, charsmax(nume) - 1)
set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 3.1, 3.0)
ShowSyncHudMsg(0, event_hud, "%s a ridicat bomba cu plasma !", nume)
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#Got_bomb"))
set_msg_arg_string(2, "Ai ridicat bomba de plasma.")
else if(equal(textmsg, "#Hint_spotted_a_friend"))
return PLUGIN_HANDLED;
else if(equal(textmsg, "#Hint_spotted_an_enemy"))
return PLUGIN_HANDLED;
else if(equal(textmsg, "#Hint_press_buy_to_purchase"))
return PLUGIN_HANDLED;
else if(equal(textmsg, "#Name_change_at_respawn"))
set_msg_arg_string(2, "Numele tau va fi schimbat runda viitoare.")
else if(equal(textmsg, "#Spec_Duck"))
return PLUGIN_HANDLED;
else if(equal(textmsg, "#Weapon_Cannot_Be_Dropped"))
set_msg_arg_string(2, "Aceasta arma nu poate fi aruncata.")
else if(equal(textmsg, "#Round_Draw"))
{
set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
ShowSyncHudMsg(0, event_hud, "Round Draw!")
ScreenFade(0, 0, 0)
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#Target_Bombed"))
{
set_hudmessage(220, 30, 0, -1.0, 0.15, 1, 5.1, 5.0)
ShowSyncHudMsg(0, event_hud, "Bomba cu plasma a explodat.")
ScreenFade(0, 0, 0)
b_planted = false
sound_stop()
remove_task(652450)
PlaySound(events_sound_wav[0])
for(new user = 1; user <= g_iMaxPlayers; user++)
{
if(!IsPlayer(user))
continue
if(get_user_team(user) == 1)
{
g_money[user] += 50
color(user, ".v%s.g Ai castigat.e 5$.g pentru castigarea rundei.", TAG)
}
}
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#Target_Saved"))
{
set_hudmessage(0, 30, 220, -1.0, 0.15, 1, 5.1, 5.0)
ShowSyncHudMsg(0, event_hud, "Locurile unde se pot planta bombele cu plasma^nau fost salvate !")
sound_stop()
PlaySound(events_sound_wav[2])
for(new user = 1; user <= g_iMaxPlayers; user++)
{
if(!IsPlayer(user))
continue
if(get_user_team(user) == 2)
{
g_money[user] += 50
color(user, ".v%s.g Ai castigat.e 50$.g pentru castigarea rundei.", TAG)
}
new Team = get_user_team(user);
if(Team == 1)
cs_set_user_team(user, CS_TEAM_CT);
if(Team == 2)
cs_set_user_team(user, CS_TEAM_T);
}
return PLUGIN_HANDLED;
}
else if(equal(textmsg, "#Hostages_Not_Rescued"))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public sound_emit(id, channel, const sound[])
{
if(sound[8] == 'c' && sound[9] == '4')
return FMRES_SUPERCEDE;
return FMRES_IGNORED;
}
public menu_weapons(id)
{
static menu;
menu = menu_create("\ySelecteaza-ti arma:", "guns_handler")
menu_additem(menu, "\yArma noua", "")
if(g_gunsselect[id] == 0)
menu_additem(menu, "\dArma anterioara", "")
else
menu_additem(menu, "\yArma anterioara", "")
if(g_gunsselect[id] == 0)
menu_additem(menu, "\dArma anterioara [+AUTOMAT DATA VIITOARE]", "")
else
menu_additem(menu, "\yArma anterioara [+AUTOMAT DATA VIITOARE]", "")
menu_display(id, menu, 0)
}
public guns_handler(id, menu, item)
{
if(!is_user_alive(id))
return;
if(get_user_team(id) != 2)
return
switch(item)
{
case 0:
{
g_gunsselect[id] = 1
primary_weap(id)
}
case 1:
{
if(g_gunsselect[id] == 0)
menu_weapons(id)
else
{
g_gunsselect[id] = 2
set_guns(id)
}
}
case 2:
{
if(g_gunsselect[id] == 0)
menu_weapons(id)
else
{
g_gunsselect[id] = 3
set_guns(id)
}
}
}
}
public primary_weap(id)
{
if(!is_user_alive(id) || get_user_team(id) != 2)
return
static menu_head[128], menu_item[128], tasta[2];
formatex(menu_head, charsmax(menu_head), "Selecteaza arma primara:")
new menu = menu_create(menu_head, "primary_handled")
for(new i = 1; i < sizeof PRIMARY_NAME; i++)
{
formatex(menu_item, charsmax(menu_item), "\y%s", PRIMARY_NAME[i])
tasta[0] = i
tasta[1] = 0
menu_additem(menu, menu_item, tasta)
}
if(pev_valid(id) == PDATA_SAFE)
set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
menu_display(id, menu, 0)
}
public primary_handled(id, menu, item)
{
if(!is_user_alive(id) || get_user_team(id) != 2)
return PLUGIN_HANDLED;
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(item >= sizeof PRIMARY_NAME) return PLUGIN_HANDLED;
g_primary_select[id] = item + 1
menu_destroy(menu)
secondary_weap(id)
return PLUGIN_HANDLED;
}
public secondary_weap(id)
{
if(!is_user_alive(id) || get_user_team(id) != 2)
return
static menu_head[128], menu_item[128], tasta[2];
formatex(menu_head, charsmax(menu_head), "Selecteaza arma secundara:")
new menu = menu_create(menu_head, "secondary_handled")
for(new i = 1; i < sizeof SECONDARY_NAME; i++)
{
formatex(menu_item, charsmax(menu_item), "\y%s", SECONDARY_NAME[i])
tasta[0] = i
tasta[1] = 0
menu_additem(menu, menu_item, tasta)
}
if(pev_valid(id) == PDATA_SAFE)
set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
menu_display(id, menu, 0)
}
public secondary_handled(id, menu, item)
{
if(!is_user_alive(id) || get_user_team(id) != 2)
return PLUGIN_HANDLED;
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(item >= sizeof SECONDARY_NAME) return PLUGIN_HANDLED;
g_secondary_select[id] = item + 1
menu_destroy(menu)
set_guns(id)
return PLUGIN_HANDLED;
}
public set_guns(id)
{
if(!is_user_alive(id) || get_user_team(id) != 2)
return;
ham_give_weapon(id, wp_give_primary[g_primary_select[id]])
cs_set_user_bpammo(id, bullets_primary[g_primary_select[id]], 250)
ham_give_weapon(id, wp_give_secondary[g_secondary_select[id]])
cs_set_user_bpammo(id, bullets_secondary[g_secondary_select[id]], 250)
g_cmdguns[id] = true
}
public new_round()
{
if(g_firstround)
{
set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
ShowSyncHudMsg(0, event_hud, "Inca asteptam jucatorii sa se conecteze.")
return;
}
remove_task(TASK_CANPLANT)
g_endround = false
new Float: flTime = get_cvar_num("mp_freezetime") + (get_cvar_num("mp_roundtime") * 60) - 60.0;
set_task(flTime, "task_CanPlant", TASK_CANPLANT)
g_dontdelete = false
remove_task(TASK_REMOVEC4)
delete_c4()
set_task(2.0, "delete_c4", TASK_REMOVEC4, _, _, "b")
set_lights("g")
g_ModelChangeTargetTime = get_gametime() + ROUNDSTART_DELAY
g_c4timer = -1;
b_planted = false;
g_rounds++
color(0, ".v%s.g Apasa tasta.e M.g pentru afisarea meniului de joc.", TAG)
SecondsUntillInvasion = 5
if(active_fog)
msg_create_fog(20, 200, 50, 1)
set_task(0.1, "CountDown")
set_hudmessage(random(255), random(255), random(255), -1.0, 0.15, 1, 5.1, 5.0)
ShowSyncHudMsg(0, event_hud, "Pregateste-te de lupta!^nRunda %d.", g_rounds)
set_task(5.2, "start_ambience")
static entid = FM_NULLENT
while((entid = fm_find_ent_by_class(entid, ClassName)))
fm_remove_entity(entid)
while((entid = fm_find_ent_by_class(entid, "bat")))
fm_remove_entity(entid)
remove_task(TASK_SPAWN)
g_bSpawnCheckEnabled = true
static player
for(player = 1; player <= g_iMaxPlayers; player++)
{
reset_vars(player)
HasTeleport[player] = false
if(task_exists(player+TASK_MODELCHANGE))
{
remove_task(player+TASK_MODELCHANGE)
fm_cs_user_model_update(player+TASK_MODELCHANGE)
}
}
set_task(120.0, "TaskDisableSpawnCheck", TASK_SPAWN)
}
public kill_pet(id)
{
if(pev_valid(item_pet[id]))
{
set_pev(item_pet[id],pev_sequence,pet_die)
set_pev(item_pet[id],pev_gaitsequence,pet_die)
set_pev(item_pet[id],pev_framerate,1.0)
set_pev(item_pet[id],PET_FLAG,PET_KILLED)
engfunc(EngFunc_DropToFloor, item_pet[id])
g_pet[id] = false
}
item_pet[id] = 0
}
public TaskDisableSpawnCheck()
g_bSpawnCheckEnabled = false;
public FM_MagicEntityThink(iEnt)
{
if(iEnt != g_iMagicEntity || !pev_valid(iEnt))
return FMRES_IGNORED;
set_pev(iEnt, pev_nextthink, get_gametime() + 1.0)
static iPlayers[32];
static iPlayersNum;
get_players(iPlayers, iPlayersNum, "ce", "CT")
if(!iPlayersNum)
return FMRES_IGNORED;
static id, i;
for(i = 0; i < iPlayersNum; i++)
{
id = iPlayers[i];
if(IsPlayer(id))
{
if(is_user_alive(id))
{
pev(id, pev_origin, g_fUserOrigin[id]);
if(g_fUserOrigin[id][0] == g_fUserOldOrigin[id][0]
&& g_fUserOrigin[id][1] == g_fUserOldOrigin[id][1]
&& g_fUserOrigin[id][2] == g_fUserOldOrigin[id][2])
{
g_iUserCampSeconds[id]++;
if(g_iUserCampSeconds[id] == 5)
g_bUserIsCamping[id] = true;
else if(g_iUserCampSeconds[id] > 5 && g_bSpawnCheckEnabled)
{
if(g_iUserCampSeconds[id] == 11)
{
color(0, ".v%s.e %s.g a primit slay pentru ca a campat sau e afk !", TAG, get_name(id))
user_silentkill(id);
g_bUserIsCamping[id] = false;
g_iUserCampSeconds[id] = 0;
}
else
color(id, ".v%s.g Vei primi slay in.e %i.g secund%s daca nu te misti !", TAG, 11 - g_iUserCampSeconds[id], (11 - g_iUserCampSeconds[id]) == 1 ? "a" : "e")
}
}
else if(g_fUserOrigin[id][0] != g_fUserOldOrigin[id][0]
|| g_fUserOrigin[id][1] != g_fUserOldOrigin[id][1]
|| g_fUserOrigin[id][2] != g_fUserOldOrigin[id][2])
{
g_iUserCampSeconds[id] = 0;
g_bUserIsCamping[id] = false;
}
}
}
g_fUserOldOrigin[id][0] = g_fUserOrigin[id][0];
g_fUserOldOrigin[id][1] = g_fUserOrigin[id][1];
g_fUserOldOrigin[id][2] = g_fUserOrigin[id][2];
}
return FMRES_IGNORED;
}
public end_round()
{
for(new id; id <= 32; id++)
{
remove_task(id+TASK_AFFECT)
if(is_user_alive(id) && !savior[id] && !destroyer[id])
g_end_health[id] = get_user_health(id)
if(is_user_alive(id))
{
set_user_godmode(id, 1)
client_cmd(id, "+jump;-jump")
ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
}
}
g_c4timer = -1;
g_endround = true
}
public first_round()
{
restart_seconds--
if(restart_seconds > 0)
g_firstround = true
else
{
server_cmd("sv_restart 1")
g_firstround = false
return;
}
set_hudmessage(85, 255, 170, 0.0, 0.19, 1, 1.1, 1.0)
show_hudmessage(0, "Asteptam ca toti jucatorii sa se conecteze.^n%d secund%s ramas%s.", restart_seconds, restart_seconds < 2 ? "a" : "e", restart_seconds < 2 ? "a" : "e")
}
public think_grenade(ent)
{
if(!pev_valid(ent))
return HAM_IGNORED;
static Float:dmgtime, Float:current_time
pev(ent, pev_dmgtime, dmgtime)
current_time = get_gametime()
if(dmgtime > current_time)
return HAM_IGNORED;
switch(pev(ent, PEV_NADE_TYPE))
{
case NADE_TYPE_NAPALM:
{
fire_explode(ent)
return HAM_SUPERCEDE;
}
case NADE_TYPE_FROST:
{
frost_explode(ent)
return HAM_SUPERCEDE;
}
case NADE_TYPE_CRAZY:
{
crazy_explode(ent)
return HAM_SUPERCEDE;
}
case NADE_TYPE_KILL:
{
if (entity_get_int(ent, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
return HAM_IGNORED
if (entity_get_float(ent, EV_FL_dmgtime) > get_gametime() + 2.5)
{
entity_set_float(ent, EV_FL_dmgtime, get_gametime() + 2.5)
}
new owner = pev(ent, pev_owner)
new Float:origin[3]
entity_get_vector(ent, EV_VEC_origin, origin)
if (entity_get_float(ent, EV_FL_dmgtime) < get_gametime() || !is_user_connected(owner) || is_user_connecting(owner))
{
clear_beamfollow(ent)
entity_set_int(ent, EV_INT_flags, FL_KILLME)
metal_gibs(origin)
return HAM_SUPERCEDE
}
new team = _:cs_get_user_team(owner)
new target, Float:velocity[3], oldtarget
target = entity_get_edict(ent, EV_ENT_euser2)
oldtarget = entity_get_edict(ent, EV_ENT_euser3)
if (target == owner)
{
target = 0
entity_set_edict(ent, EV_ENT_euser2, 0)
}
if (target == 0)
{
entity_get_vector(ent, EV_VEC_velocity, velocity)
if (xs_vec_len(velocity) < 200.0)
{
xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + 50.0, velocity)
entity_set_vector(ent, EV_VEC_velocity, velocity)
}
new i = -1, Float:distance = 300.0, Float:junk[3], targetteam
while ((i = find_ent_in_sphere(i, origin, distance)))
{
if (i > g_iMaxPlayers)
break
if (i == owner)
continue
if (i == oldtarget)
continue
if (!is_user_connected(i) || is_user_connecting(i))
continue
if (!is_user_alive(i))
continue
targetteam = _:cs_get_user_team(i)
if ((team != targetteam && targetteam != _:CS_TEAM_SPECTATOR && targetteam != _:CS_TEAM_UNASSIGNED))
{
static Float:o[3]
entity_get_vector(i, EV_VEC_origin, o)
entity_get_vector(i, EV_VEC_view_ofs, junk)
xs_vec_add(o, junk, o)
static Float:new_distance
new_distance = get_distance_f(o, origin)
if (new_distance < distance)
{
distance = new_distance
entity_set_edict(ent, EV_ENT_euser2, i)
}
}
}
if (entity_range(owner, ent) < distance && entity_get_int(ent, EV_INT_iuser2) > 0)
{
entity_set_edict(ent, EV_ENT_euser2, owner)
}
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
return HAM_SUPERCEDE
}
else if (!is_user_alive(target))
{
entity_get_vector(ent, EV_VEC_velocity, velocity)
if (xs_vec_len(velocity) < 200.0)
{
xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + 50.0, velocity)
entity_set_vector(ent, EV_VEC_velocity, velocity)
}
entity_set_edict(ent, EV_ENT_euser2, 0)
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
return HAM_SUPERCEDE
}
else
{
new Float:aim[3], Float:targetorigin[3], Float:velocity_normal[3], Float:aim_normal[3]
entity_get_vector(target, EV_VEC_origin, targetorigin)
xs_vec_add(targetorigin, Float:{0.0, 0.0, 30.0}, targetorigin)
if (!is_point_visible(origin, targetorigin, ent))
{
entity_set_edict(ent, EV_ENT_euser2, 0)
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
return HAM_SUPERCEDE
}
xs_vec_sub(targetorigin, origin, aim)
if (xs_vec_len(aim) <= 100.0)
{
xs_vec_mul_scalar(aim, 800.0/xs_vec_len(aim), aim)
entity_set_vector(ent, EV_VEC_velocity, aim)
if (target == owner && get_distance_f(targetorigin, origin) <= 1.0)
{
new Float:torigin[3]
entity_get_vector(owner, EV_VEC_origin, torigin)
blood(torigin)
set_pdata_int(owner, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
ExecuteHamB(Ham_TakeDamage, owner, ent, owner, 135.0, DMG_CS_BULLETS_KNIFE)
entity_set_edict(ent, EV_ENT_euser2, 0)
entity_set_edict(ent, EV_ENT_euser3, owner)
new color[3] , impacts
color[0] = 165
color[1] = 45
color[2] = 45
create_blast(origin, color)
impacts = entity_get_int(ent, EV_INT_iuser2)
impacts++
entity_set_int(ent, EV_INT_iuser2, impacts)
if (impacts >= 1)
{
clear_beamfollow(ent)
entity_set_int(ent, EV_INT_flags, FL_KILLME)
metal_gibs(origin)
}
}
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
return HAM_SUPERCEDE
}
entity_get_vector(ent, EV_VEC_velocity, velocity)
xs_vec_sub(targetorigin, origin, aim)
xs_vec_normalize(velocity, velocity_normal)
xs_vec_normalize(aim, aim_normal)
if (xs_vec_len(velocity) < 200.0)
{
xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + 50.0, velocity)
}
if (xs_vec_dot(aim_normal, velocity_normal) < 0)
{
entity_set_edict(ent, EV_ENT_euser2, 0)
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
entity_set_vector(ent, EV_VEC_velocity, velocity)
return HAM_SUPERCEDE
}
if (velocity_normal[0] < aim_normal[0])
{
velocity[0] += 150.0
}
else if (velocity_normal[0] > aim_normal[0])
{
velocity[0] -= 150.0
}
if (velocity_normal[1] < aim_normal[1])
{
velocity[1] += 150.0
}
else if (velocity_normal[1] > aim_normal[1])
{
velocity[1] -= 150.0
}
if (velocity_normal[2] < aim_normal[2])
{
velocity[2] += 25.0
}
else if (velocity_normal[2] > aim_normal[2])
{
velocity[2] -= 25.0
}
velocity[2] += 5.0
entity_set_vector(ent, EV_VEC_velocity, velocity)
}
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.02)
return HAM_SUPERCEDE
}
}
return HAM_IGNORED;
}
public crazy_explode(entity)
{
if(!pev_valid(entity))
return
static Float:origin[3];
pev(entity, pev_origin, origin)
create_blast4(origin)
emit_sound(entity, CHAN_WEAPON, explosion_sound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
static victim
victim = -1
while((victim = engfunc (EngFunc_FindEntityInSphere, victim, origin, 250.0)) != 0)
{
if (!is_user_alive(victim) || get_user_team(victim) != 1)
continue
if(!task_exists(victim+TASK_AFFECT))
set_task(0.2, "affect_victim", victim+TASK_AFFECT, _, _, "a", 30)
}
engfunc(EngFunc_RemoveEntity, entity)
}
create_blast4(const Float:originF[3])
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+470.0)
write_short(beam_effect)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(50)
write_byte(70)
write_byte(100)
write_byte(200)
write_byte(0)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+555.0)
write_short(beam_effect)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(50)
write_byte(70)
write_byte(100)
write_byte(200)
write_byte(0)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
write_byte(50)
write_byte(50)
write_byte(70)
write_byte(100)
write_byte(30)
write_byte(30)
message_end()
engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+75)
write_short(crazyexp)
write_byte(17)
write_byte(15)
write_byte(TE_EXPLFLAG_NOSOUND)
message_end();
engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
write_byte(TE_SPRITETRAIL)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2] + 40)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
write_short(crazygib)
write_byte(30)
write_byte(10)
write_byte(2)
write_byte(50)
write_byte(10)
message_end();
}
public affect_victim(taskid)
{
if(g_endround)
return;
if(!is_user_alive(ID_AFFECT) || get_user_team(ID_AFFECT) != 1)
return
message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, {0,0,0}, ID_AFFECT)
write_short(1<<13)
write_short(1<<14)
write_short(0x0000)
write_byte(random_num(50, 200))
write_byte(random_num(50, 200))
write_byte(random_num(50, 200))
write_byte(random_num(50, 200))
message_end()
message_begin(MSG_ONE_UNRELIABLE, g_screenshake, {0,0,0}, ID_AFFECT)
write_short(0xFFFF)
write_short(1<<13)
write_short(0xFFFF)
message_end()
remove_task(ID_AFFECT)
}
public set_model(entity, const model[])
{
if(strlen(model) < 8)
return FMRES_IGNORED;
if(model[7] != 'w' || model[8] != '_')
return FMRES_IGNORED;
static Float:dmgtime
pev(entity, pev_dmgtime, dmgtime)
if(get_user_team(pev(entity, pev_owner)) == 1)
{
if(dmgtime == 0.0)
return FMRES_IGNORED;
if(model[9] == 'h' && model[10] == 'e')
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(entity)
write_short(trail_spr)
write_byte(15)
write_byte(10)
write_byte(200)
write_byte(20)
write_byte(10)
write_byte(200)
message_end()
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_NAPALM)
fm_set_rendering(entity, kRenderFxGlowShell, 200, 20, 10, kRenderNormal, 18)
entity_set_model(entity, w_grenade_furien[0])
return FMRES_SUPERCEDE;
}
else if(model[9] == 'f' && model[10] == 'l')
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(entity)
write_short(trail_spr)
write_byte(15)
write_byte(10)
write_byte(10)
write_byte(20)
write_byte(200)
write_byte(200)
message_end()
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_FROST)
fm_set_rendering(entity, kRenderFxGlowShell, 10, 20, 200, kRenderNormal, 18)
entity_set_model(entity, w_grenade_furien[1])
return FMRES_SUPERCEDE;
}
else if(model[9] == 's' && model[10] == 'm')
{
if(have_killnade[pev(entity, pev_owner)])
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(entity)
write_short(trail_spr)
write_byte(15)
write_byte(15)
write_byte(165)
write_byte(45)
write_byte(45)
write_byte(200)
message_end()
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_KILL)
entity_set_int(entity, EV_INT_movetype, MOVETYPE_BOUNCEMISSILE)
entity_set_int(entity, EV_INT_iuser2, 0)
entity_set_edict(entity, EV_ENT_euser2, 0)
entity_set_size(entity, Float:{-2.0,-4.0,-2.0}, Float:{2.0, 4.0, 2.0})
fm_set_rendering(entity, kRenderFxGlowShell, 165, 45, 45, kRenderNormal, 18)
entity_set_float(entity, EV_FL_dmgtime, get_gametime() + 2.5)
entity_set_model(entity, w_grenade_furien[2])
have_killnade[pev(entity, pev_owner)] = false
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
return FMRES_IGNORED;
}
else
{
if(model[9] == 'h' && model[10] == 'e')
{
if(dmgtime == 0.0)
return FMRES_IGNORED;
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(entity)
write_short(trail_spr)
write_byte(15)
write_byte(10)
write_byte(100)
write_byte(50)
write_byte(70)
write_byte(200)
message_end()
fm_set_rendering(entity, kRenderFxGlowShell, 100, 50, 70, kRenderNormal, 18)
}
else if(model[9] == 'f' && model[10] == 'l')
{
if(dmgtime == 0.0)
return FMRES_IGNORED;
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(entity)
write_short(trail_spr)
write_byte(15)
write_byte(10)
write_byte(200)
write_byte(200)
write_byte(200)
write_byte(200)
message_end()
fm_set_rendering(entity, kRenderFxGlowShell, 200, 200, 200, kRenderNormal, 18)
}
else if(model[9] == 's' && model[10] == 'm')
{
if(dmgtime == 0.0)
return FMRES_IGNORED;
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(entity)
write_short(trail_spr)
write_byte(15)
write_byte(10)
write_byte(50)
write_byte(70)
write_byte(100)
write_byte(200)
message_end()
set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_CRAZY)
fm_set_rendering(entity, kRenderFxGlowShell, 50, 70, 100, kRenderNormal, 18)
}
else
fm_set_rendering(entity, kRenderFxGlowShell, random(256), random(256), random(256), kRenderNormal, 18)
}
return FMRES_IGNORED;
}
public CWeaponBox_Touch(iWeaponBox, id)
{
if(IsPlayer(id))
{
if(!is_user_alive(id))
return HAM_SUPERCEDE
if(IsWeaponBoxC4(iWeaponBox))
return HAM_IGNORED
if(get_user_team(id) == 1)
return HAM_SUPERCEDE
return HAM_IGNORED
}
return HAM_IGNORED
}
public GroundWeapon_Touch(iWeapon, id)
{
if(IsPlayer(id))
{
if(!is_user_alive(id))
return HAM_SUPERCEDE
if(get_user_team(id) == 1)
return HAM_SUPERCEDE
return HAM_IGNORED
}
return HAM_IGNORED
}
public game_menu(id)
{
if(get_user_team(id) == 3)
return PLUGIN_CONTINUE;
static menu_title[150], menu;
formatex(menu_title, charsmax(menu_title), "\yFurien Mod Remaked" )
menu = menu_create(menu_title, "gmenu_handler")
static menu_item[150];
static izStats[8], izBody[8], iRankPos, iRankMax;
iRankPos = get_user_stats(id, izStats, izBody)
iRankMax = get_statsnum()
if(get_user_team(id) != 2 || !is_user_alive(id))
formatex(menu_item, charsmax(menu_item), "\dMeniu Arme")
else
{
if(g_cmdguns[id] && g_gunsselect[id] == 0)
formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | NU ESTE AUTOMAT]")
else if(g_cmdguns[id] && g_gunsselect[id] == 1)
formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | NU ESTE AUTOMAT]")
else if(g_cmdguns[id] && g_gunsselect[id] == 2)
formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | ALES DE RUNDA TRECUTA]")
else if(g_cmdguns[id] && g_gunsselect[id] == 3)
formatex(menu_item, charsmax(menu_item), "\dMeniu Arme [FOLOSIT | AUTOMAT]")
else if(!g_cmdguns[id])
formatex(menu_item, charsmax(menu_item), "\yMeniu Arme\r [NEFOLOSIT]")
}
menu_additem(menu, menu_item, "")
if(!is_user_alive(id))
formatex(menu_item, charsmax(menu_item), "\dMeniu Shop [%i$]", g_money[id])
else
formatex(menu_item, charsmax(menu_item), "\yMeniu Shop\r [%i$]", g_money[id])
menu_additem(menu, menu_item, "")
if(!(get_user_flags(id) & VIP_FLAG))
formatex(menu_item, charsmax(menu_item), "\dOpen VIP Shop")
else
formatex(menu_item, charsmax(menu_item), "\yOpen VIP Shop")
menu_additem(menu, menu_item, "")
formatex(menu_item, charsmax(menu_item), "\yRank:\r [%d\y/\r %d]^nTotal:\r [%d\y UCIDERI |\r %d\y DECESE]", iRankPos, iRankMax, izStats[0], izStats[1])
menu_additem(menu, menu_item, "")
formatex(menu_item, charsmax(menu_item), "\yTop Rank\r Players")
menu_additem(menu, menu_item, "")
formatex(menu_item, charsmax(menu_item), "\yTop 15\r Levels")
menu_additem(menu, menu_item, "")
if(get_user_flags(id) & ADMIN_SLAY)
formatex(menu_item, charsmax(menu_item), "\yJoin Spectator")
else
formatex(menu_item, charsmax(menu_item), "\dJoin Spectator")
menu_additem(menu, menu_item, "")
menu_display(id, menu, 0)
return PLUGIN_HANDLED;
}
public gmenu_handler(id, menu, item)
{
switch(item)
{
case 0:
{
if(!is_user_alive(id))
{
color(id, ".v%s.g Trebuie sa fii in.e viata.g pentru acest meniu.", TAG)
return PLUGIN_HANDLED;
}
if(get_user_team(id) != 2)
{
color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a folosi acest meniu.", TAG)
return PLUGIN_HANDLED;
}
if(g_cmdguns[id] && g_gunsselect[id] == 0)
{
color(id, ".v%s.g Meniul tau este deja activat.g.", TAG)
return PLUGIN_HANDLED;
}
else if(g_cmdguns[id] && g_gunsselect[id] == 1)
{
color(id, ".v%s.g Meniul tau este deja.e activat.g.", TAG)
return PLUGIN_HANDLED;
}
else if(g_cmdguns[id] && g_gunsselect[id] == 2)
{
color(id, ".v%s.g Meniul tau este deja.e activat.g.", TAG)
return PLUGIN_HANDLED;
}
else if(g_cmdguns[id] && g_gunsselect[id] == 3)
{
color(id, ".v%s.g Meniul tau a fost.e reactivat.g.", TAG)
g_gunsselect[id] = 0
return PLUGIN_HANDLED;
}
else if(!g_cmdguns[id])
{
color(id, ".v%s.g Meniul tau de.e arme.g este reafisat.", TAG)
primary_weap(id)
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
case 1:
{
if(!is_user_alive(id))
{
color(id, ".v%s.g Shopul poate fi folosit doar daca sunteti in viata.", TAG)
return PLUGIN_HANDLED;
}
shop_enter(id)
return PLUGIN_HANDLED;
}
case 2:
{
if(!is_user_connected(id))
return PLUGIN_HANDLED;
shop_menu(id)
return PLUGIN_HANDLED;
}
case 3:
{
if(!is_user_connected(id))
return PLUGIN_HANDLED;
static izStats[8], izBody[8], iRankPos, iRankMax;
iRankPos = get_user_stats(id, izStats, izBody)
iRankMax = get_statsnum()
color(0, ".v%s.e %s.g este pe locul.e %d/%d.g. Are.e %d.g ucideri si.e %d.g decese.", TAG, get_name(id), iRankPos, iRankMax, izStats[0], izStats[1])
return PLUGIN_HANDLED;
}
case 4:
{
if(!is_user_connected(id))
return PLUGIN_HANDLED;
open_topmenu(id)
return PLUGIN_HANDLED;
}
case 5:
{
if(!is_user_connected(id))
return PLUGIN_HANDLED;
show_top(id)
return PLUGIN_HANDLED;
}
case 6:
{
if(get_user_flags(id) & ADMIN_SLAY)
{
if(is_user_alive(id))
user_kill(id)
cs_set_user_team(id, CS_TEAM_SPECTATOR)
color(0, ".v%s.e %s.g s-a mutat spectator.", TAG, get_name(id))
return PLUGIN_HANDLED;
}
else
{
color(id, ".v%s.g Nu ai acces la aceasta comanda.", TAG)
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public open_topmenu(id)
{
new menu = menu_create("\yTop Rank Players", "topmenu_handler")
new stats_taked[8], crap[8], player_name[32], temp_message[256], add_item_menu[4], max_pages, iRankMax = get_statsnum();
if(iRankMax < 360)
max_pages = iRankMax
else
max_pages = 360
for(new page = 0; page < max_pages; page++)
{
get_stats(page, stats_taked, crap, player_name, charsmax(player_name))
num_to_str(page + 1, add_item_menu, charsmax(add_item_menu))
format(temp_message, charsmax(temp_message), "\y%s\d R:\r %i\d K:\r %i\d D:\r %i", player_name, page + 1, stats_taked[0], stats_taked[1])
menu_additem(menu, temp_message, add_item_menu, 0)
}
menu_display(id, menu, 0)
}
public topmenu_handler(id, menu, item)
return PLUGIN_HANDLED;
public reset_score(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED;
if(!is_user_alive(id))
{
color(id, ".v%s.g Poti sa-ti resetezi scorul doar cand esti in viata!", TAG)
return PLUGIN_CONTINUE;
}
if(g_money[id] < 1)
{
color(id, ".v%s.g Iti trebuie.e 1$.g pentru a putea sa-ti resetezi scorul. Necesar.e %d$.g.", TAG, 1 - g_money[id])
return PLUGIN_CONTINUE;
}
set_pev(id, pev_frags, 0.0)
fm_cs_set_user_deaths(id, 0)
g_money[id] -= 1
color(0, ".v%s.e %s.g si-a resetat scorul!", TAG, get_name(id))
return PLUGIN_HANDLED;
}
public plasma_bomb_effects(c4)
{
c4 -= 652450
if(g_endround)
{
remove_task(c4+652450)
return;
}
if(!b_planted)
{
remove_task(c4+652450)
return;
}
if(!pev_valid(c4))
{
remove_task(c4+652450)
return;
}
new Float:origini[3]
pev(c4, pev_origin, origini)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origini, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, origini[0])
engfunc(EngFunc_WriteCoord, origini[1])
engfunc(EngFunc_WriteCoord, origini[2])
engfunc(EngFunc_WriteCoord, origini[0])
engfunc(EngFunc_WriteCoord, origini[1])
engfunc(EngFunc_WriteCoord, origini[2]+400.0)
write_short(beam_effect)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(10)
write_byte(0)
write_byte(random(256))
write_byte(random(256))
write_byte(random(256))
write_byte(200)
write_byte(0)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origini, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, origini[0])
engfunc(EngFunc_WriteCoord, origini[1])
engfunc(EngFunc_WriteCoord, origini[2])
engfunc(EngFunc_WriteCoord, origini[0])
engfunc(EngFunc_WriteCoord, origini[1])
engfunc(EngFunc_WriteCoord, origini[2]+450.0)
write_short(beam_effect)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(15)
write_byte(0)
write_byte(random(256))
write_byte(random(256))
write_byte(random(256))
write_byte(200)
write_byte(0)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origini, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, origini[0])
engfunc(EngFunc_WriteCoord, origini[1])
engfunc(EngFunc_WriteCoord, origini[2])
engfunc(EngFunc_WriteCoord, origini[0])
engfunc(EngFunc_WriteCoord, origini[1])
engfunc(EngFunc_WriteCoord, origini[2]+550.0)
write_short(beam_effect)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(25)
write_byte(0)
write_byte(random(256))
write_byte(random(256))
write_byte(random(256))
write_byte(200)
write_byte(0)
message_end()
fm_set_rendering(c4, kRenderFxGlowShell, random(255), random(255), random(255), kRenderNormal, 50)
if(g_c4timer < 11)
{
static Float:coord[3];
coord[0] = origini[0] + 150.0;
coord[1] = origini[1] + 150.0;
coord[2] = origini[2] + 800.0;
create_thunder(coord, origini);
if(active_fog)
msg_create_fog(random(250), random(250), random(250), 3)
}
if(g_c4timer >= 0)
{
--g_c4timer;
if(g_c4timer < 41 && g_c4timer > 13)
emit_sound(c4, CHAN_ITEM, misc_sound_wav[4], 1.0, ATTN_NORM, 0, PITCH_NORM)
else if(g_c4timer == 13)
{
emit_sound(c4, CHAN_ITEM, misc_sound_wav[5], 1.0, ATTN_NORM, 0, PITCH_NORM)
set_lights("c")
}
set_dhudmessage(random(255), random(255), random(255), -1.0, 0.0, 1, 1.0, 1.0, 0.0, 0.0)
if(g_c4timer > 0)
show_dhudmessage(0, "%d secund%s ramas%s pana la explozie!", g_c4timer, g_c4timer < 2 ? "a" : "e", g_c4timer < 2 ? "a" : "e")
}
}
public check_weapon(id)
{
if(!is_user_alive(id))
return;
switch(get_user_team(id))
{
case 1:
{
switch(get_user_weapon(id))
{
case CSW_KNIFE:
{
if(g_superknife[id])
set_pev(id, pev_viewmodel2, super_knife_furien)
else
set_pev(id, pev_viewmodel2, knife_furien)
}
case CSW_HEGRENADE: set_pev(id, pev_viewmodel2, v_grenade_furien[0])
case CSW_FLASHBANG: set_pev(id, pev_viewmodel2, v_grenade_furien[1])
case CSW_SMOKEGRENADE:
{
if(have_killnade[id])
set_pev(id, pev_viewmodel2, v_grenade_furien[2])
}
case CSW_C4:
{
set_pev(id, pev_viewmodel2, plasma_bomb[1])
set_pev(id, pev_weaponmodel2, plasma_bomb[0])
}
}
}
case 2:
{
if(g_ak47[id] && get_user_weapon(id) == CSW_AK47)
{
set_pev(id, pev_viewmodel2, v_ak47)
set_pev(id, pev_weaponmodel2, p_ak47)
}
else if(g_m4a1[id] && get_user_weapon(id) == CSW_M4A1)
{
set_pev(id, pev_viewmodel2, v_m4a1)
set_pev(id, pev_weaponmodel2, p_m4a1)
}
else if(g_deagle[id] && get_user_weapon(id) == CSW_DEAGLE)
{
set_pev(id, pev_viewmodel2, v_deagle)
set_pev(id, pev_weaponmodel2, p_deagle)
}
}
}
}
public msg_screenfade(msgid, dest, id)
{
if(!IsPlayer(id))
return PLUGIN_CONTINUE
if(get_user_team(id) == 2 || !is_user_alive(id) || g_noflash[id])
{
static date[4]
date[0] = get_msg_arg_int(4); date[1] = get_msg_arg_int(5)
date[2] = get_msg_arg_int(6); date[3] = get_msg_arg_int(7)
if(date[0] == 255 && date[1] == 255 && date[2] == 255 && date[3] > 199)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public ham_take_damage(vic, inf, att, Float:dmg, dmgbits)
{
if(get_user_team(att) == 1 && g_superknife[att] && !(dmgbits & DMG_NADE))
dmg *= 2.0
if(is_user_alive(att) && get_user_team(att) == 2 && ((g_ak47[att] && get_user_weapon(att) == CSW_AK47) || (g_m4a1[att] && get_user_weapon(att) == CSW_M4A1) || (g_deagle[att] && get_user_weapon(att) == CSW_DEAGLE)))
dmg *= 2.0
SetHamParamFloat(4, dmg)
if(is_user_alive(vic) && inf == bomba)
{
SetHamParamFloat(4, 0.0);
return HAM_SUPERCEDE;
}
if((vic == att) && (dmgbits & DMG_NADE))
return HAM_SUPERCEDE;
return HAM_IGNORED;
}
public on_damage(id)
{
static attacker; attacker = get_user_attacker(id)
static damage; damage = read_data(2)
if(IsPlayer(attacker))
{
if(fm_is_ent_visible(attacker, id))
{
g_iPlayerPos[attacker] += 1
if(g_iPlayerPos[attacker] == sizeof(g_flCoords))
g_iPlayerPos[attacker] = 0
set_dhudmessage(random(256), random(256), random(256), Float:g_flCoords[g_iPlayerPos[attacker]][0], Float:g_flCoords[g_iPlayerPos[attacker]][1], 0, 0.1, 2.5, 0.02, 0.02)
show_dhudmessage(attacker, "%i^n", damage)
}
}
}
register_buy_cmd()
{
register_clcmd("buy", "ClientCommand_Buy")
register_clcmd("bUy", "ClientCommand_Buy")
register_clcmd("buY", "ClientCommand_Buy")
register_clcmd("bUY", "ClientCommand_Buy")
register_clcmd("Buy", "ClientCommand_Buy")
register_clcmd("BUy", "ClientCommand_Buy")
register_clcmd("BuY", "ClientCommand_Buy")
register_clcmd("BUY", "ClientCommand_Buy")
}
public ClientCommand_Buy(id)
return PLUGIN_HANDLED_MAIN
PlaySound(const sound[])
{
if(equal(sound[strlen(sound)-4], ".mp3"))
client_cmd(0, "mp3 play ^"%s^"", sound)
else
client_cmd(0, "spk ^"%s^"", sound)
}
public ScreenFade(red, green, blue)
{
message_begin(MSG_BROADCAST, g_msgScreenFade);
write_short((1<<12)*4);
write_short((1<<12)*1);
write_short(0x0001);
write_byte(red);
write_byte(green);
write_byte(blue);
write_byte(250);
message_end();
}
set_vars_speed(id)
client_cmd(id, "cl_sidespeed 700;cl_backspeed 700;cl_forwardspeed 700")
public sound_stop()
client_cmd(0, "mp3 stop; stopsound")
public start_ambience()
{
sound_stop()
client_cmd(0, "mp3 play ^"%s^"", ambience)
}
public killed_player(victim, attacker)
{
if(is_user_connected(victim) && is_user_alive(attacker))
color(victim, ".v%s.e %s.g mai are inca.e[.v%d HP.e].g", TAG, get_name(attacker), get_user_health(attacker))
g_frozen[victim] = false
g_noflash[victim] = false
g_nofrost[victim] = false
g_superknife[victim] = false
g_furiendetector[victim] = false
g_end_health[victim] = 0
parachute_reset(victim)
have_killnade[victim] = false
remove_task(victim+TASK_AFFECT)
remove_task(victim+TASK_AURA)
if(g_pet[victim])
kill_pet(victim)
reset_vars(victim)
if(active_box)
AddBonusBox(victim)
if(get_user_team(victim) == 2)
remove_task(victim+TASK_BURN)
if(is_user_connected(attacker) && is_user_connected(victim) && attacker != victim)
g_money[attacker] += 3
if(destroyer[victim])
{
ham_strip_weapon(victim, "weapon_c4")
destroyer[victim] = false
select_destroyer()
}
if(savior[victim])
{
strip_user_weapons(victim)
savior[victim] = false
select_savior()
}
}
public newSpawn(id)
{
if(para_ent[id] > 0)
if(is_valid_ent(para_ent[id]))
remove_entity(para_ent[id])
has_parachute[id] = true
para_ent[id] = 0
if(!active_huds)
{
set_pdata_int(id, m_iClientHideHUD, 0)
set_pdata_int(id, m_iHideHUD, HIDE_HEALTH)
}
make_HideWeapon(id, HIDE_MONEY);
}
public fw_SetClientKeyValue(id, const infobuffer[], const key[], const value[])
{
if(flag_get(g_HasCustomModel, id) && equal(key, "model"))
{
static currentmodel[32]
fm_cs_get_user_model(id, currentmodel, charsmax(currentmodel))
if(!equal(currentmodel, g_CustomPlayerModel[id]) && !task_exists(id+TASK_MODELCHANGE))
fm_cs_set_user_model(id+TASK_MODELCHANGE)
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public CmdStart(id, uc_handle, seed)
{
new ent = fm_find_ent_by_class(id, ClassName)
if(is_valid_ent(ent))
{
new classname[32]
pev(ent, pev_classname, classname, 31)
if (equal(classname, ClassName))
{
if (pev(ent, pev_frame) >= 120)
set_pev(ent, pev_frame, 0.0)
else
set_pev(ent, pev_frame, pev(ent, pev_frame) + 1.0)
switch(pev(ent, pev_team))
{
case 1:
{
}
case 2:
{
}
}
}
}
}
parachute_reset(id)
{
if(para_ent[id] > 0)
if(is_valid_ent(para_ent[id]))
remove_entity(para_ent[id])
has_parachute[id] = false
para_ent[id] = 0
}
fire_explode(ent)
{
if(g_endround)
return
static Float:originF[3]
pev(ent, pev_origin, originF)
create_blast2(originF)
emit_sound(ent, CHAN_WEAPON, misc_sound_wav[7], 1.0, ATTN_NORM, 0, PITCH_NORM)
static victim
victim = -1
while((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, 250.0)) != 0)
{
if(!is_user_alive(victim) || get_user_team(victim) != 2)
continue;
g_burning_duration[victim] += 15
if(!task_exists(victim+TASK_BURN))
set_task(0.2, "burning_flame", victim+TASK_BURN, _, _, "b")
}
engfunc(EngFunc_RemoveEntity, ent)
}
frost_explode(ent)
{
if(g_endround)
return
static Float:originF[3]
pev(ent, pev_origin, originF)
create_blast3(originF)
emit_sound(ent, CHAN_WEAPON, misc_sound_wav[2], 1.0, ATTN_NORM, 0, PITCH_NORM)
static victim
victim = -1
while((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, 250.0)) != 0)
{
if(!is_user_alive(victim) || get_user_team(victim) != 2 || g_nofrost[victim])
continue;
fm_set_rendering(victim, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 25)
emit_sound(victim, CHAN_BODY, misc_sound_wav[3], 1.0, ATTN_NORM, 0, PITCH_NORM)
message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, victim)
write_short(0)
write_short(0)
write_short(FFADE_STAYOUT)
write_byte(10)
write_byte(20)
write_byte(200)
write_byte(150)
message_end()
g_frozen[victim] = true
if(pev(victim, pev_flags) & FL_ONGROUND)
set_pev(victim, pev_gravity, 999999.9)
else
set_pev(victim, pev_gravity, 0.000001)
reset_max_speed(victim)
set_task(0.2, "freeze_effect", victim, _, _, "b")
set_task(1.2, "remove_freeze", victim)
}
engfunc(EngFunc_RemoveEntity, ent)
}
public burning_flame(taskid)
{
static origin[3], flags
get_user_origin(ID_BURN, origin)
flags = pev(ID_BURN, pev_flags)
if((flags & FL_INWATER) || g_burning_duration[ID_BURN] < 1)
{
message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
write_byte(TE_SMOKE)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]-50)
write_short(smoke_spr)
write_byte(random_num(15, 20))
write_byte(random_num(10, 20))
message_end()
remove_task(taskid);
return;
}
if(random_num(0, 20) < 3)
{
emit_sound(ID_BURN, CHAN_VOICE, burn_player[random_num(0, 2)], 1.0, ATTN_NORM, 0, PITCH_NORM)
if((flags & FL_ONGROUND) > 0.0)
{
static Float:velocity[3];
pev(ID_BURN, pev_velocity, velocity);
xs_vec_mul_scalar(velocity, 0.5, velocity);
set_pev(ID_BURN, pev_velocity, velocity);
}
}
static health
health = get_user_health(ID_BURN)
if(health - 1 > 0)
set_user_health(ID_BURN, get_user_health(ID_BURN) - 1)
message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
write_byte(TE_SPRITE)
write_coord(origin[0]+random_num(-5, 5))
write_coord(origin[1]+random_num(-5, 5))
write_coord(origin[2]+random_num(-10, 10))
write_short(flame_spr)
write_byte(random_num(5, 10))
write_byte(200)
message_end()
g_burning_duration[ID_BURN]--
}
public prethink_player(id)
{
if(!is_user_alive(id))
return;
static i, LastThink
if(LastThink > id)
FirstThink()
LastThink = id
if(g_frozen[id])
{
set_pev(id, pev_velocity, Float:{0.0,0.0,0.0})
return;
}
new nbut = get_user_button(id)
new obut = get_user_oldbutton(id)
if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
{
if(jumpnum[id] < 1)
{
dojump[id] = true
jumpnum[id]++
return
}
}
if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
{
jumpnum[id] = 0
return
}
if(get_user_team(id) == 2 && (g_furiendetector[id] || savior[id]))
{
static Target, Body, Weapon;
get_user_aiming(id, Target, Body);
Weapon = get_user_weapon(id);
if((1<<Weapon) & PRIMARY_WEAPONS_BITSUM || (1<<Weapon) & SECONDARY_WEAPONS_BITSUM)
{
static Target, Body, Weapon;
get_user_aiming(id, Target, Body);
Weapon = get_user_weapon(id);
if((1<<Weapon) & PRIMARY_WEAPONS_BITSUM || (1<<Weapon) & SECONDARY_WEAPONS_BITSUM)
{
static Origin[3];
get_user_origin(id, Origin, 3);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BEAMENTPOINT);
write_short(id | 0x1000);
write_coord(Origin[0]);
write_coord(Origin[1]);
write_coord(Origin[2]);
write_short(LaserSprite);
write_byte(0);
write_byte(10);
write_byte(1);
write_byte(5);
write_byte(0);
if(is_user_alive(Target) && get_user_team(Target) == 1)
{
write_byte(150);
write_byte(0);
write_byte(0);
}
else
{
write_byte(0);
write_byte(150);
write_byte(0);
}
write_byte(250);
write_byte(25);
message_end();
}
}
}
if(!has_parachute[id])
return
new Float:fallspeed = 100.0 * -1.0
new Float:frame
new button = get_user_button(id)
new oldbutton = get_user_oldbutton(id)
new flags = get_entity_flags(id)
if(para_ent[id] > 0 && (flags & FL_ONGROUND))
{
if(entity_get_int(para_ent[id],EV_INT_sequence) != 2)
{
entity_set_int(para_ent[id], EV_INT_sequence, 2)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
return
}
frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)
if(frame > 254.0)
{
remove_entity(para_ent[id])
para_ent[id] = 0
}
}
if(button & IN_USE)
{
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
if(velocity[2] < 0.0) {
if(para_ent[id] <= 0) {
para_ent[id] = create_entity("info_target")
if(para_ent[id] > 0) {
entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
entity_set_edict(para_ent[id], EV_ENT_aiment, id)
entity_set_edict(para_ent[id], EV_ENT_owner, id)
entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_model(para_ent[id], "models/furien/krilo2.mdl")
entity_set_int(para_ent[id], EV_INT_sequence, 0)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}
if(para_ent[id] > 0) {
entity_set_int(id, EV_INT_sequence, 3)
entity_set_int(id, EV_INT_gaitsequence, 1)
entity_set_float(id, EV_FL_frame, 1.0)
entity_set_float(id, EV_FL_framerate, 1.0)
velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
entity_set_vector(id, EV_VEC_velocity, velocity)
if(entity_get_int(para_ent[id],EV_INT_sequence) == 0) {
frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)
if(frame > 100.0) {
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
entity_set_int(para_ent[id], EV_INT_sequence, 1)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}
}
}
else if(para_ent[id] > 0)
{
remove_entity(para_ent[id])
para_ent[id] = 0
}
}
else if((oldbutton & IN_USE) && para_ent[id] > 0)
{
remove_entity(para_ent[id])
para_ent[id] = 0
}
if(g_endround)
{
set_pev(id, pev_velocity, Float:{18.0, 18.0, 16.0})
return;
}
if(!plrSolid[id]) return
for(i = 1; i <= g_iMaxPlayers; i++)
{
if(!plrSolid[i] || id == i) continue
if(plrTeam[i] == plrTeam[id])
{
set_pev(i, pev_solid, SOLID_NOT)
plrRestore[i] = true
}
}
}
public set_gamename()
{
forward_return(FMV_STRING, modname)
return FMRES_SUPERCEDE;
}
public Fix()
{
static i, fpf;
if(!fpf)
fpf = g_iMaxPlayers;
for(i = 1; i <= fpf; i++)
{
if(IsPlayer(i))
Data(i);
}
}
public Calcu()
{
static Iterator, ping, fpf;
if(!fpf)
fpf = g_iMaxPlayers;
for(Iterator = 1; Iterator <= fpf; Iterator++)
{
ping = random_num(10, 35);
for(g_Offset[Iterator][0] = 0; g_Offset[Iterator][0] < 4; g_Offset[Iterator][0]++)
{
if((ping - g_Offset[Iterator][0]) % 4 == 0)
{
g_Argping[Iterator][0] = (ping - g_Offset[Iterator][0]) / 4;
break;
}
}
for(g_Offset[Iterator][1] = 0; g_Offset[Iterator][1] < 2; g_Offset[Iterator][1]++)
{
if((ping - g_Offset[Iterator][1]) % 2 == 0)
{
g_Argping[Iterator][1] = (ping - g_Offset[Iterator][1]) / 2;
break;
}
}
g_Argping[Iterator][2] = ping;
}
}
public Data(i)
{
static j, send, fpf;
if(!(pev(i,pev_button)&IN_SCORE)&&!(pev(i,pev_oldbuttons)&IN_SCORE))
return;
if(!fpf)
fpf=g_iMaxPlayers;
send = 0;
for(j = 1; j <= fpf; j++)
{
if(!IsPlayer(j))
continue;
switch(send)
{
case 0:
{
message_begin(MSG_ONE_UNRELIABLE, SVC_PINGS, _, i);
write_byte((g_Offset[j][0]*64)+(1+2*(j-1)));
write_short(g_Argping[j][0]);
send ++;
}
case 1:
{
write_byte((g_Offset[j][1]*128)+(2+4*(j-1)));
write_short(g_Argping[j][1]);
send ++;
}
case 2:
{
write_byte((4+8*(j-1)));
write_short(g_Argping[j][2]);
write_byte(0);
message_end();
send = 0;
}
}
}
if(send)
{
write_byte(0);
message_end();
}
}
public eventMoney(plr)
{
make_HideWeapon(plr, HIDE_MONEY);
if(!active_huds)
{
set_pdata_int(plr, m_iClientHideHUD, 0)
set_pdata_int(plr, m_iHideHUD, HIDE_HEALTH)
}
return PLUGIN_HANDLED;
}
public bomb_planted(id)
{
if(is_user_alive(id))
{
color(0, ".v%s.e %s.g a primit.e 5$.g ca a plantat bomba cu plasma.", TAG, get_name(id))
g_money[id] += 5
}
}
public bomb_defused(id)
{
if(is_user_alive(id))
{
color(0, ".v%s.e %s.g a primit.e 5$.g ca a dezamorsat bomba cu plasma.", TAG, get_name(id))
g_money[id] += 5
}
}
public ham_touch(toucher, touched)
{
if(entity_get_int(toucher, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
return HAM_IGNORED
new Float:origin[3]
new impacts = entity_get_int(toucher, EV_INT_iuser2)
new owner = entity_get_edict(toucher, EV_ENT_owner)
entity_get_vector(toucher, EV_VEC_origin, origin)
if(1 <= touched <= g_iMaxPlayers)
{
new CsTeams:team[2]
team[0] = cs_get_user_team(touched)
team[1] = cs_get_user_team(owner)
if((team[0] != team[1] && team[0] != CS_TEAM_SPECTATOR && team[0] != CS_TEAM_UNASSIGNED))
{
new Float:origin[3]
entity_get_vector(touched, EV_VEC_origin, origin)
blood(origin)
set_pdata_int(touched, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
ExecuteHamB(Ham_TakeDamage, touched, toucher, owner, 135.0, DMG_CS_BULLETS_KNIFE)
entity_set_edict(toucher, EV_ENT_euser2, 0)
entity_set_edict(toucher, EV_ENT_euser3, touched)
new color[3]
color[0] = 165
color[1] = 45
color[2] = 45
create_blast(origin, color)
}
}
if(touched > g_iMaxPlayers || touched == 0)
msg_ricochet(origin)
impacts++
entity_set_int(toucher, EV_INT_iuser2, impacts)
if(impacts >= 1)
{
clear_beamfollow(toucher)
entity_set_int(toucher, EV_INT_flags, FL_KILLME)
metal_gibs(origin)
}
return HAM_IGNORED
}
clear_beamfollow(ent)
{
message_begin(MSG_ALL,SVC_TEMPENTITY)
write_byte(TE_KILLBEAM)
write_short(ent)
message_end()
}
msg_ricochet(Float:origin[3])
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
write_byte(TE_ARMOR_RICOCHET)
engfunc(EngFunc_WriteCoord, origin[0])
engfunc(EngFunc_WriteCoord, origin[1])
engfunc(EngFunc_WriteCoord, origin[2])
write_byte(5)
message_end()
}
metal_gibs(const Float: origin[3])
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
write_byte(TE_BREAKMODEL)
engfunc(EngFunc_WriteCoord,origin[0])
engfunc(EngFunc_WriteCoord,origin[1])
engfunc(EngFunc_WriteCoord,origin[2] + 24)
engfunc(EngFunc_WriteCoord,20.0)
engfunc(EngFunc_WriteCoord,20.0)
engfunc(EngFunc_WriteCoord,20.0)
engfunc(EngFunc_WriteCoord,random_num(-50,50))
engfunc(EngFunc_WriteCoord,random_num(-50,50))
engfunc(EngFunc_WriteCoord,25.0)
write_byte(10)
write_short(spr_nadebits)
write_byte(10)
write_byte(25)
write_byte(2)
message_end()
}
create_blast(Float:originF[3], rgb[3])
{
new origin[3]
FVecIVec(originF,origin)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_BEAMCYLINDER)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2] + 50)
write_short(beam_effect)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(rgb[0])
write_byte(rgb[1])
write_byte(rgb[2])
write_byte(100)
write_byte(0)
message_end()
}
public message_show_menu(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
set_force_team_join_task(id, msgid)
return PLUGIN_HANDLED
}
public message_vgui_menu(msgid, dest, id)
{
if(get_msg_arg_int(1) != 2 || !should_autojoin(id))
return PLUGIN_CONTINUE
set_force_team_join_task(id, msgid)
return PLUGIN_HANDLED
}
bool:should_autojoin(id)
return (!get_user_team(id) && !task_exists(id))
set_force_team_join_task(id, menu_msgid)
{
static param_menu_msgid[2]
param_menu_msgid[0] = menu_msgid
set_task(0.1, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
}
public task_force_team_join(menu_msgid[], id)
{
if(get_user_team(id))
return
force_team_join(id, menu_msgid[0])
}
stock force_team_join(id, menu_msgid)
{
static jointeam[] = "jointeam"
static msg_block, joinclass[] = "joinclass"
msg_block = get_msg_block(menu_msgid)
set_msg_block(menu_msgid, BLOCK_SET)
engclient_cmd(id, jointeam, "5")
engclient_cmd(id, joinclass, "5")
set_msg_block(menu_msgid, msg_block)
}
public prethink_player_post(id)
{
if(!is_user_alive(id))
return PLUGIN_CONTINUE
static i
for(i = 1; i <= g_iMaxPlayers; i++)
{
if(plrRestore[i])
{
set_pev(i, pev_solid, SOLID_SLIDEBOX)
plrRestore[i] = false
}
}
if(dojump[id] == true)
{
new Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity,velocity)
velocity[2] = random_float(265.0,285.0)
entity_set_vector(id,EV_VEC_velocity,velocity)
dojump[id] = false
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public msgStatusIcon(msgid, msgdest, id)
{
static szIcon[8];
get_msg_arg_string(2, szIcon, 7);
if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
{
set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public ChangeName(id, buffer)
{
if(!is_user_connected(id))
return FMRES_IGNORED;
static Name[32], Val[32];
get_user_name(id, Name, sizeof Name - 1);
engfunc(EngFunc_InfoKeyValue, buffer, "name", Val, sizeof Val - 1);
if(equal(Val, Name))
return FMRES_IGNORED;
remove_task(id+TASK_MINUTES)
remove_task(id+TASK_SHOWHUD)
set_task(0.2, "client_putinserver", id)
verify_name(id)
return FMRES_SUPERCEDE;
}
public hook_say(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED;
static chat[192], users_team, name[32]
read_argv(1, chat, charsmax(chat))
get_user_name(id, name, charsmax(name) - 1)
users_team = fm_cs_get_user_team(id)
static comanda[16], nume[32]
strbreak(chat, comanda, charsmax(comanda), nume, charsmax(nume))
if(equal(comanda, "/donate", 7))
donate(id, nume)
if(is_user_alive(id))
{
if(get_user_team(id) == 1)
{
if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
color_chat(0, id, users_team, RED, "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] %s:^4 %s", nivel[id], name, chat)
else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
color_chat(0, id, users_team, RED, "^3[LVL:^4 %d^3] [^4ADMIN^3] %s:^4 %s", nivel[id], name, chat)
else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
color_chat(0, id, users_team, RED, "^3[LVL:^4 %d^3] [^4VIP^3] %s:^4 %s", nivel[id], name, chat)
else
color_chat(0, id, users_team, RED, "^3[LVL:^4 %d^3] %s:^1 %s", nivel[id], name, chat)
}
else if(get_user_team(id) == 2)
{
if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
color_chat(0, id, users_team, BLUE, "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] %s:^4 %s", nivel[id], name, chat)
else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
color_chat(0, id, users_team, BLUE, "^3[LVL:^4 %d^3] [^4ADMIN^3] %s:^4 %s", nivel[id], name, chat)
else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
color_chat(0, id, users_team, BLUE, "^3[LVL:^4 %d^3] [^4VIP^3] %s:^4 %s", nivel[id], name, chat)
else
color_chat(0, id, users_team, BLUE, "^3[LVL:^4 %d^3] %s:^1 %s", nivel[id], name, chat)
}
}
else
{
if(users_team == FM_CS_TEAM_SPECTATOR)
{
if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
color_chat(0, id, users_team, GREY, "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] %s:^4 %s", nivel[id], name, chat)
else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
color_chat(0, id, users_team, GREY, "^3[LVL:^4 %d^3] [^4ADMIN^3] %s:^4 %s", nivel[id], name, chat)
else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
color_chat(0, id, users_team, GREY, "^3[LVL:^4 %d^3] [^4VIP^3] %s:^4 %s", nivel[id], name, chat)
else
color_chat(0, id, users_team, GREY, "^3[LVL:^4 %d^3] %s:^1 %s", nivel[id], name, chat)
}
else if(get_user_team(id) == 1)
{
if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
color_chat(0, id, users_team, RED, "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
color_chat(0, id, users_team, RED, "^3[LVL:^4 %d^3] [^4ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
color_chat(0, id, users_team, RED, "^3[LVL:^4 %d^3] [^4VIP^3] *%s:^4 %s", nivel[id], name, chat)
else
color_chat(0, id, users_team, RED, "^3[LVL:^4 %d^3] %s:^1 *%s", nivel[id], name, chat)
}
else if(get_user_team(id) == 2)
{
if((get_user_flags(id) & VIP_FLAG) && (get_user_flags(id) & ADMIN_SLAY))
color_chat(0, id, users_team, BLUE, "^3[LVL:^4 %d^3] [^4VIP+ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
else if((get_user_flags(id) & ADMIN_SLAY) && !(get_user_flags(id) & VIP_FLAG))
color_chat(0, id, users_team, BLUE, "^3[LVL:^4 %d^3] [^4ADMIN^3] *%s:^4 %s", nivel[id], name, chat)
else if(!(get_user_flags(id) & ADMIN_SLAY) && (get_user_flags(id) & VIP_FLAG))
color_chat(0, id, users_team, BLUE, "^3[LVL:^4 %d^3] [^4VIP^3] *%s:^4 %s", nivel[id], name, chat)
else
color_chat(0, id, users_team, BLUE, "^3[LVL:^4 %d^3] %s:^1 *%s", nivel[id], name, chat)
}
}
return PLUGIN_HANDLED
}
public messageHideWeapon(msgid, dest, plr)
{
set_msg_arg_int(1, ARG_BYTE, get_msg_arg_int(1)|HIDE_MONEY)
return PLUGIN_CONTINUE;
}
public Event_HideWeapon(id)
{
if(!active_huds)
{
message_begin(MSG_ONE_UNRELIABLE, g_msgHideWeapon, _, id)
write_byte(HIDE_HEALTH)
message_end()
message_begin(MSG_ONE_UNRELIABLE, g_msgCrosshair, _, id)
write_byte(0);
message_end();
}
}
public increase_level(taskid)
{
if(get_user_team(ID_MINUTE) == 3)
return;
minutes[ID_MINUTE]++
if(minutes[ID_MINUTE] >= 5)
{
minutes[ID_MINUTE] = 0
complete_hours[ID_MINUTE]++
if(complete_hours[ID_MINUTE] >= LEVELS[nivel[ID_MINUTE]])
{
color(ID_MINUTE, ".v%s.g Ai avansat un nivel! Nivelul tau acum este.e %d.g.", TAG, nivel[ID_MINUTE])
nivel[ID_MINUTE]++
}
}
SaveData(ID_MINUTE)
checkandupdatetop(ID_MINUTE, nivel[ID_MINUTE], complete_hours[ID_MINUTE], minutes[ID_MINUTE])
}
public addToFullPack(es, e, ent, host, hostflags, player, pSet)
{
if(player)
{
if(plrSolid[host] && plrSolid[ent] && plrTeam[host] == plrTeam[ent])
set_es(es, ES_Solid, SOLID_NOT)
}
}
FirstThink()
{
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(!is_user_alive(i))
{
plrSolid[i] = false
continue
}
plrTeam[i] = get_user_team(i)
plrSolid[i] = pev(i, pev_solid) == SOLID_SLIDEBOX ? true : false
}
}
public LoadData(id)
{
new vaultkey[64], vaultdata[256];
format(vaultkey, 63, "%s", get_name(id))
format(vaultdata, 255, "^"%i^" ^"%i^" ^"%i^"", nivel[id], complete_hours[id], minutes[id])
nvault_get(salvare_nvault, vaultkey, vaultdata, 255)
new lvl[32], ore[32], minute[32];
parse(vaultdata, lvl, 31, ore, 31, minute, 31)
nivel[id] = str_to_num(lvl)
complete_hours[id] = str_to_num(ore)
minutes[id] = str_to_num(minute)
if(nivel[id] == 0)
nivel[id] = 1
color(id, "Am preluat salvarile.")
}
public SaveData(id)
{
new vaultkey[64], vaultdata[256];
format(vaultkey, 63, "%s", get_name(id))
format(vaultdata, 255, "^"%i^" ^"%i^" ^"%i^"", nivel[id], complete_hours[id], minutes[id])
nvault_set(salvare_nvault, vaultkey, vaultdata)
}
public client_putinserver(id)
{
g_cmdguns[id] = false
g_gunsselect[id] = 0
g_primary_select[id] = 0
g_secondary_select[id] = 0
reset_vars(id)
g_money[id] = get_pcvar_num(mp_startmoney)
set_task(60.0, "increase_level", id+TASK_MINUTES, _, _, "b")
set_task(0.3, "HealthHud", id+TASK_SHOWHUD, _, _, "b")
LoadData(id)
}
public client_disconnect(id)
{
if(g_pet[id])
kill_pet(id)
reset_vars(id)
g_frozen[id] = false
g_burning_duration[id] = 0
g_cmdguns[id] = false
g_gunsselect[id] = 0
g_primary_select[id] = 0
g_secondary_select[id] = 0
parachute_reset(id)
have_killnade[id] = false
jumpnum[id] = 0
dojump[id] = false
g_furiendetector[id] = false
g_noflash[id] = false
g_superknife[id] = false
g_nofrost[id] = false
g_end_health[id] = 0
remove_task(id+TASK_MINUTES);
remove_task(id+TASK_MODELCHANGE);
remove_task(id+TASK_AFFECT);
flag_unset(g_HasCustomModel, id)
remove_task(id+TASK_SHOWHUD)
remove_task(id+TASK_AURA)
if(destroyer[id])
{
ham_strip_weapon(id, "weapon_c4")
destroyer[id] = false
select_destroyer()
}
if(savior[id])
{
savior[id] = false
select_savior()
}
}
public player_killed_post(id)
set_pev(id, pev_iuser1, SPECMODE_ALIVE)
public freeze_effect(id)
{
if(!is_user_alive(id) || !g_frozen[id])
{
remove_task(id)
return;
}
new Float:fOrigin[3], iOrigin[3]
pev(id, pev_origin, fOrigin)
FVecIVec(fOrigin, iOrigin)
UTIL_CreateFlares(iOrigin, frostgib, 5, 5, 2)
}
verify_name(id)
{
static name[32]
get_user_info(id, "name", name, 31)
static i, ignore
ignore = false
for(i = 0; i <= g_sizeof_names_new; i++)
if(containi(name, g_names_new[i]) != -1)
{
ignore = true
break;
}
if(ignore)
return;
for(i = 0; i < 29; i++)
replace_all(name, 31, g_filter_chars[i], "")
for(i = 0; i < g_sizeof_names; i++)
if(containi(name, g_names[i]) != -1)
{
formatex(name, 31, "%s [%d]", g_names_new[random_num(0, g_sizeof_names_new)], g_names_changed)
set_user_info(id, "name", name)
client_cmd(id, "name ^"%s^"", name)
g_names_changed++
}
}
public remove_freeze(id)
{
if(!is_user_alive(id) || !g_frozen[id])
return;
g_frozen[id] = false;
if(get_user_team(id) == 2)
set_pev(id, pev_gravity, 1.0)
reset_max_speed(id)
fm_set_rendering(id, kRenderFxGlowShell, 0, 200, 50, kRenderNormal, 18)
message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, id)
write_short(UNIT_SECOND)
write_short(0)
write_short(FFADE_IN)
write_byte(10)
write_byte(20)
write_byte(200)
write_byte(100)
message_end()
emit_sound(id, CHAN_BODY, misc_sound_wav[1], 1.0, ATTN_NORM, 0, PITCH_NORM)
static origin2[3]
get_user_origin(id, origin2)
message_begin(MSG_PVS, SVC_TEMPENTITY, origin2)
write_byte(TE_BREAKMODEL)
write_coord(origin2[0])
write_coord(origin2[1])
write_coord(origin2[2]+24)
write_coord(16)
write_coord(16)
write_coord(16)
write_coord(random_num(-50, 50))
write_coord(random_num(-50, 50))
write_coord(25)
write_byte(10)
write_short(mdl_glass)
write_byte(10)
write_byte(25)
write_byte(BREAK_GLASS)
message_end()
ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
}
create_blast2(const Float:originF[3])
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+470.0)
write_short(beam_effect)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(255)
write_byte(127)
write_byte(80)
write_byte(200)
write_byte(0)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+555.0)
write_short(beam_effect)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(255)
write_byte(20)
write_byte(10)
write_byte(200)
write_byte(0)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
write_byte(50)
write_byte(255)
write_byte(20)
write_byte(10)
write_byte(30)
write_byte(30)
message_end()
engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+75)
write_short(fireexp)
write_byte(17)
write_byte(15)
write_byte(TE_EXPLFLAG_NOSOUND)
message_end();
engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
write_byte(TE_SPRITETRAIL)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2] + 40)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
write_short(firegib)
write_byte(30)
write_byte(10)
write_byte(2)
write_byte(50)
write_byte(10)
message_end();
}
create_blast3(const Float:originF[3])
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+470.0)
write_short(beam_effect)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(0)
write_byte(191)
write_byte(255)
write_byte(200)
write_byte(0)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+555.0)
write_short(beam_effect)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(0)
write_byte(191)
write_byte(255)
write_byte(200)
write_byte(0)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
write_byte(50)
write_byte(0)
write_byte(191)
write_byte(255)
write_byte(30)
write_byte(30)
message_end()
engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+75)
write_short(frostexp)
write_byte(17)
write_byte(15)
write_byte(TE_EXPLFLAG_NOSOUND)
message_end();
engfunc(EngFunc_MessageBegin, MSG_BROADCAST,SVC_TEMPENTITY, originF, 0)
write_byte(TE_SPRITETRAIL)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2] + 40)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
write_short(frostgib)
write_byte(20)
write_byte(7)
write_byte(2)
write_byte(50)
write_byte(10)
message_end()
}
public detail_level(id)
{
if(!is_user_connected(id))
return
color(id, ".v%s.g Nivelul tau este:.e %d.g | Ai:.e %d/%d.g | Minute:.e %d/5.g.", TAG, nivel[id], complete_hours[id], LEVELS[nivel[id]], minutes[id])
return;
}
blood(const Float:origin[3])
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
write_byte(TE_BLOODSPRITE)
engfunc(EngFunc_WriteCoord, origin[0])
engfunc(EngFunc_WriteCoord, origin[1])
engfunc(EngFunc_WriteCoord, origin[2] + 30.0)
write_short(spr_blood_spray)
write_short(spr_blood_drop)
write_byte(248)
write_byte(15)
message_end()
}
public save_top()
{
new path[128];
formatex(path, 127, "%s/TopLevels.dat", data_save);
if(file_exists(path))
delete_file(path);
new Buffer[256];
new f = fopen(path, "at");
for(new i = INFO_ZERO; i < NTOP; i++)
{
formatex(Buffer, 255, "^"%s^" ^"%d^" ^"%d^" ^"%d^"^n", topnames[i], toplevels[i], tophours[i], topminutes[i])
fputs(f, Buffer);
}
fclose(f);
}
reset_vars(id)
{
g_ak47[id] = false
g_m4a1[id] = false
g_deagle[id] = false
g_pet[id] = false
g_used_life[id] = false
item_pet[id] = 0
}
public FM_Think_hook(ent)
{
for(new i = 0; i <= g_iMaxPlayers; i++)
{
if(ent == item_pet[i])
{
static Float:origin[3]
static Float:origin2[3]
static Float:velocity[3]
pev(ent,pev_origin,origin2)
get_offset_origin_body(i,Float:{50.0,0.0,0.0},origin)
if(get_distance_f(origin,origin2) > 300.0)
{
set_pev(ent,pev_origin,origin)
}
else if(get_distance_f(origin,origin2) > 80.0)
{
get_speed_vector(origin2,origin,250.0,velocity)
set_pev(ent,pev_velocity,velocity)
if(pev(ent,pev_sequence) != pet_run || pev(ent,pev_framerate) != pet_run_speed)
{
set_pev(ent,pev_sequence,pet_run)
set_pev(ent,pev_gaitsequence,pet_run)
set_pev(ent,pev_framerate,pet_run_speed)
}
}
else if(get_distance_f(origin,origin2) < 75.0)
{
if(pev(ent,pev_sequence) != pet_idle || pev(ent,pev_framerate) != pet_idle_speed)
{
set_pev(ent,pev_sequence,pet_idle)
set_pev(ent,pev_gaitsequence,pet_idle)
set_pev(ent,pev_framerate,pet_idle_speed)
}
set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0})
}
pev(i,pev_origin,origin)
origin[2] = origin2[2]
entity_set_aim(ent,origin)
set_pev(ent,pev_nextthink,1.0)
break
}
}
}
public TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], pentru, iDamageType)
{
if(!IsPlayer(iAttacker))
return
static iWeapon;
iWeapon = get_user_weapon(iAttacker);
if((g_ak47[iAttacker] && iWeapon == CSW_AK47) || (g_m4a1[iAttacker] && iWeapon == CSW_M4A1) || (g_deagle[iAttacker] && iWeapon == CSW_DEAGLE))
{
static iOrigin[3], Float:flEnd[3]
get_user_origin(iAttacker, iOrigin, 1)
get_tr2(pentru, TR_vecEndPos, flEnd)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_TRACER)
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_coord_f(flEnd[0])
write_coord_f(flEnd[1])
write_coord_f(flEnd[2])
message_end()
}
}
public is_a_player(ent)
{
if(ent > 0 && ent < 33)
return true
return false
}
public remove_pet(ent)
if(pev_valid(ent))
fm_remove_entity(ent)
stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3])
{
if(!pev_valid(ent))
return 0;
new Float:angle[3]
pev(ent,pev_angles,angle)
pev(ent,pev_origin,origin)
origin[0] += floatcos(angle[1],degrees) * offset[0]
origin[1] += floatsin(angle[1],degrees) * offset[0]
origin[1] += floatcos(angle[1],degrees) * offset[1]
origin[0] += floatsin(angle[1],degrees) * offset[1]
return 1;
}
stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
new_velocity[0] = origin2[0] - origin1[0]
new_velocity[1] = origin2[1] - origin1[1]
new_velocity[2] = origin2[2] - origin1[2]
new Float:num = 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 entity_set_aim(ent,const Float:origin2[3],bone=0)
{
if(!pev_valid(ent))
return 0;
static Float:origin[3]
origin[0] = origin2[0]
origin[1] = origin2[1]
origin[2] = origin2[2]
static Float:ent_origin[3], Float:angles[3]
if(bone)
engfunc(EngFunc_GetBonePosition,ent,bone,ent_origin,angles)
else
pev(ent,pev_origin,ent_origin)
origin[0] -= ent_origin[0]
origin[1] -= ent_origin[1]
origin[2] -= ent_origin[2]
static Float:v_length
v_length = vector_length(origin)
static Float:aim_vector[3]
aim_vector[0] = origin[0] / v_length
aim_vector[1] = origin[1] / v_length
aim_vector[2] = origin[2] / v_length
static Float:new_angles[3]
vector_to_angle(aim_vector,new_angles)
new_angles[0] *= -1
if(new_angles[1]>180.0) new_angles[1] -= 360
if(new_angles[1]<-180.0) new_angles[1] += 360
if(new_angles[1]==180.0 || new_angles[1]==-180.0) new_angles[1]=-179.999999
set_pev(ent,pev_angles,new_angles)
set_pev(ent,pev_fixangle,1)
return 1;
}
stock drop_weapons(id, dropwhat)
{
static weapons[32], num, i, weaponid
num = 0
get_user_weapons(id, weapons, num)
for(i = 0; i < num; i++)
{
weaponid = weapons[i]
if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
{
static wname[32], weapon_ent
get_weaponname(weaponid, wname, charsmax(wname))
weapon_ent = fm_find_ent_by_owner(-1, wname, id)
set_pev(weapon_ent, PEV_ADDITIONAL_AMMO, cs_get_user_bpammo(id, weaponid))
engclient_cmd(id, "drop", wname)
cs_set_user_bpammo(id, weaponid, 0)
}
}
}
public fwdTouch(toucher, touched)
{
if (!is_user_alive(toucher) || !pev_valid(touched))
return FMRES_IGNORED
new classname[32]
pev(touched, pev_classname, classname, 31)
if (!equal(classname, ClassName))
return FMRES_IGNORED
if(get_user_team(toucher) == pev(touched, pev_team))
{
emit_sound(toucher, CHAN_STATIC, get_present, 1.0, ATTN_NORM, 0, PITCH_NORM)
GiveBonus(toucher)
set_pev(touched, pev_effects, EF_NODRAW)
set_pev(touched, pev_solid, SOLID_NOT)
remove_entity(touched)
}
return FMRES_IGNORED
}
public AddBonusBox(id)
{
if(is_user_connected(id) && cs_get_user_team(id) != CS_TEAM_SPECTATOR)
{
new ent = fm_create_entity("info_target")
new origin[3]
get_user_origin(id, origin, 0)
set_pev(ent,pev_classname, ClassName)
switch(cs_get_user_team(id))
{
case CS_TEAM_T:
{
engfunc(EngFunc_SetModel, ent, mdl_box)
set_pev(ent,pev_team, 2)
entity_set_int(ent,EV_INT_iuser1,0)
entity_set_int(ent,EV_INT_iuser2,0)
entity_set_int(ent,EV_INT_iuser3,200)
set_rendering(ent,kRenderFxGlowShell,entity_get_int(ent,EV_INT_iuser1),entity_get_int(ent,EV_INT_iuser2),entity_get_int(ent,EV_INT_iuser3),kRenderNormal,120)
}
case CS_TEAM_CT:
{
engfunc(EngFunc_SetModel, ent, mdl_box)
set_pev(ent,pev_team, 1)
entity_set_int(ent,EV_INT_iuser1,200)
entity_set_int(ent,EV_INT_iuser2,0)
entity_set_int(ent,EV_INT_iuser3,0)
set_rendering(ent,kRenderFxGlowShell,entity_get_int(ent,EV_INT_iuser1),entity_get_int(ent,EV_INT_iuser2),entity_get_int(ent,EV_INT_iuser3),kRenderNormal,120)
}
}
set_pev(ent, pev_mins, Float:{-10.0,-10.0,0.0})
set_pev(ent, pev_maxs, Float:{10.0,10.0,25.0})
set_pev(ent, pev_size, Float:{-10.0,-10.0,0.0,10.0,10.0,25.0})
engfunc(EngFunc_SetSize, ent, Float:{-10.0,-10.0,0.0}, Float:{10.0,10.0,25.0})
set_pev(ent, pev_solid, SOLID_BBOX)
set_pev(ent, pev_movetype, MOVETYPE_TOSS)
new Float:fOrigin[3]
IVecFVec(origin, fOrigin)
set_pev(ent, pev_origin, fOrigin)
}
}
public GiveBonus(id)
{
if(is_user_alive(id))
{
switch(random_num(1,6))
{
case 1:
{
if(pev(id, pev_health) + 20.0 > get_pcvar_num(CvarHpMax))
set_pev(id, pev_health, get_pcvar_float(CvarHpMax))
else
set_pev(id, pev_health, pev(id, pev_health) + 20.0)
color(id, ".v%s.g Ai gasit.e 20HP.g.", TAG)
}
case 2:
{
g_money[id] += 2
color(id, ".v%s.g Ai gasit.e 2$.g.", TAG)
}
case 3:
{
if(pev(id, pev_armorvalue) + 25.0 > get_pcvar_num(CvarHpMax))
set_pev(id, pev_armorvalue, get_pcvar_float(CvarHpMax))
else
set_pev(id, pev_armorvalue, pev(id, pev_armorvalue) + 25.0)
color(id, ".v%s.g Ai gasit.e 25AP.g.", TAG)
}
case 4:
{
g_money[id] += 4
color(id, ".v%s.g Ai gasit.e 4$.g.", TAG)
}
case 5:
{
g_money[id] += 6
color(id, ".v%s.g Ai gasit.e 6$.g.", TAG)
}
case 6:
{
HasTeleport[id] = true
g_teleports[id] += 1
client_cmd(id, "bind ^"z^" ^"power2^"")
color(id, ".v%s.g Ai gasit puterea de.e teleportare.g, apasa.e Z.g pentru a utiliza puterea.", TAG)
}
}
}
}
public CmdTeleport(id)
{
if(!is_user_alive(id) || !HasTeleport[id])
return PLUGIN_CONTINUE
if (Teleport_Cooldown[id])
{
color(id, ".v%s.g Puterea iti va reveni in:.e %d.g secund%s.", TAG, Teleport_Cooldown[id], Teleport_Cooldown[id] == 1 ? "a" : "e")
return PLUGIN_CONTINUE
}
else if (teleport(id))
{
emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM)
remove_task(id)
g_teleports[id] -= 1
Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown)
set_task(1.0, "ShowHUD", id, _, _, "b")
set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11)
show_hudmessage(id, "Puterea iti va reveni in: %d secund%s", Teleport_Cooldown[id], Teleport_Cooldown[id] == 1 ? "a" : "e")
}
else
color(id, ".v%s.g Pozitia de teleportare este invalida!", TAG)
return PLUGIN_CONTINUE
}
public ShowHUD(id)
{
if(!is_user_alive(id) || !HasTeleport[id])
{
remove_task(id)
Teleport_Cooldown[id] = 0
return PLUGIN_HANDLED
}
set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11)
if(is_user_alive(id) && Teleport_Cooldown[id] == 1)
{
Teleport_Cooldown[id]--
show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Teleport_Cooldown[id])
}
if(is_user_alive(id) && Teleport_Cooldown[id] > 1)
{
Teleport_Cooldown[id]--
show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Teleport_Cooldown[id])
}
if(is_user_alive(id) && Teleport_Cooldown[id] <= 0)
{
show_hudmessage(id, "Ti-a revenit puterea")
color(id, ".v%s.g Poti folosi din nou puterea de a te teleporta!", TAG)
remove_task(id)
Teleport_Cooldown[id] = 0
}
return PLUGIN_HANDLED
}
bool:teleport(id)
{
new Float:vOrigin[3], Float:vNewOrigin[3],
Float:vNormal[3], Float:vTraceDirection[3],
Float:vTraceEnd[3]
pev(id, pev_origin, vOrigin)
velocity_by_aim(id, get_pcvar_num(CvarTeleportRange), vTraceDirection)
xs_vec_add(vTraceDirection, vOrigin, vTraceEnd)
engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0)
new Float:flFraction
get_tr2(0, TR_flFraction, flFraction)
if (flFraction < 1.0)
{
get_tr2(0, TR_vecEndPos, vTraceEnd)
get_tr2(0, TR_vecPlaneNormal, vNormal)
}
xs_vec_mul_scalar(vNormal, 40.0, vNormal)
xs_vec_add(vTraceEnd, vNormal, vNewOrigin)
if (is_player_stuck(id, vNewOrigin))
return false
emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM)
tele_effect(vOrigin)
engfunc(EngFunc_SetOrigin, id, vNewOrigin)
tele_effect2(vNewOrigin)
if(is_user_connected(id))
UTIL_ScreenFade(id, get_color(CvarColor), get_pcvar_float(CvarFadeTime), get_pcvar_float(CvarFadeTime), 75)
return true
}
stock is_player_stuck(id, Float:originF[3])
{
engfunc(EngFunc_TraceHull, originF, originF, 0, (pev(id, pev_flags) & FL_DUCKING) ? HULL_HEAD : HULL_HUMAN, id, 0)
if (get_tr2(0, TR_StartSolid) || get_tr2(0, TR_AllSolid) || !get_tr2(0, TR_InOpen))
return true
return false
}
stock tele_effect(const Float:torigin[3])
{
new origin[3]
origin[0] = floatround(torigin[0])
origin[1] = floatround(torigin[1])
origin[2] = floatround(torigin[2])
message_begin(MSG_PAS, SVC_TEMPENTITY, origin)
write_byte(TE_BEAMCYLINDER)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+10)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+60)
write_short(Sprite)
write_byte(0)
write_byte(0)
write_byte(3)
write_byte(60)
write_byte(0)
write_byte(255)
write_byte(255)
write_byte(255)
write_byte(255)
write_byte(0)
message_end()
}
stock tele_effect2(const Float:torigin[3])
{
new origin[3]
origin[0] = floatround(torigin[0])
origin[1] = floatround(torigin[1])
origin[2] = floatround(torigin[2])
message_begin(MSG_PAS, SVC_TEMPENTITY, origin)
write_byte(TE_BEAMCYLINDER)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+10)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+60)
write_short(Sprite)
write_byte(0)
write_byte(0)
write_byte(3)
write_byte(60)
write_byte(0)
write_byte(255)
write_byte(255)
write_byte(255)
write_byte(255)
write_byte(0)
message_end()
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SPRITETRAIL)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+40)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_short(Sprite2)
write_byte(30)
write_byte(10)
write_byte(1)
write_byte(50)
write_byte(10)
message_end()
}
get_color(pcvar)
{
new iColor[3], szColor[10]
get_pcvar_string(pcvar, szColor, charsmax(szColor))
new c = str_to_num(szColor)
iColor[Red] = c / 1000000
c %= 1000000
iColor[Green] = c / 1000
iColor[Blue] = c % 1000
return iColor
}
stock FixedUnsigned16(Float:flValue, iScale)
{
new iOutput
iOutput = floatround(flValue * iScale)
if (iOutput < 0)
iOutput = 0
if (iOutput > 0xFFFF)
iOutput = 0xFFFF
return iOutput
}
stock UTIL_ScreenFade(id=0,iColor[3]={0,0,0},Float:flFxTime=-1.0,Float:flHoldTime=0.0,iAlpha=0,iFlags=FFADE_IN,bool:bReliable=false,bool:bExternal=false)
{
if(id && !is_user_connected(id))
return
new iFadeTime
if(flFxTime == -1.0)
{
iFadeTime = 4
}
else
{
iFadeTime = FixedUnsigned16(flFxTime , 1<<12)
}
static gmsgScreenFade
if(!gmsgScreenFade)
{
gmsgScreenFade = get_user_msgid("ScreenFade")
}
new MSG_DEST
if(bReliable)
{
MSG_DEST = id ? MSG_ONE : MSG_ALL
}
else
{
MSG_DEST = id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST
}
if(bExternal)
{
emessage_begin(MSG_DEST, gmsgScreenFade, _, id)
ewrite_short(iFadeTime)
ewrite_short(FixedUnsigned16(flHoldTime , 1<<12))
ewrite_short(iFlags)
ewrite_byte(iColor[Red])
ewrite_byte(iColor[Green])
ewrite_byte(iColor[Blue])
ewrite_byte(iAlpha)
emessage_end()
}
else
{
message_begin(MSG_DEST, gmsgScreenFade, _, id)
write_short(iFadeTime)
write_short(FixedUnsigned16(flHoldTime , 1<<12))
write_short(iFlags)
write_byte(iColor[Red])
write_byte(iColor[Green])
write_byte(iColor[Blue])
write_byte(iAlpha)
message_end()
}
}
stock UTIL_FadeToBlack(id,Float:fxtime=3.0,bool:bReliable=false,bool:bExternal=false)
UTIL_ScreenFade(id, _, fxtime, fxtime, 255, FFADE_OUT|FFADE_STAYOUT,bReliable,bExternal)
public Light(entity, red, green, blue)
{
if(is_valid_ent(entity))
{
static Float:origin[3]
pev(entity, pev_origin, origin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, _, entity)
write_byte(TE_DLIGHT)
engfunc(EngFunc_WriteCoord, origin[0])
engfunc(EngFunc_WriteCoord, origin[1])
engfunc(EngFunc_WriteCoord, origin[2])
write_byte(7)
write_byte(red)
write_byte(green)
write_byte(blue)
write_byte(2)
write_byte(0)
message_end()
}
}
public shop_menu(id)
{
if(!is_user_connected(id))
return;
static menu_name[75];
formatex(menu_name, charsmax(menu_name), "Ultimate Remaked Furien Shop^nDolari: %d^n", g_money[id])
static menu;
menu = menu_create(menu_name, "shop_handler");
static i_menu[100];
if(!(get_user_flags(id) & VIP_FLAG))
formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[0])
else
{
if(!is_user_alive(id))
formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[0])
else
{
switch(get_user_team(id))
{
case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[0])
case 2:
{
if(g_ak47[id])
formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[0])
else
{
if(g_money[id] < cost[0])
formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[0], cost[0])
else
formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[0], cost[0])
}
}
}
}
}
menu_additem(menu, i_menu, "")
if(!(get_user_flags(id) & VIP_FLAG))
formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[1])
else
{
if(!is_user_alive(id))
formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[1])
else
{
switch(get_user_team(id))
{
case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[1])
case 2:
{
if(g_m4a1[id])
formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[1])
else
{
if(g_money[id] < cost[1])
formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[1], cost[1])
else
formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[1], cost[1])
}
}
}
}
}
menu_additem(menu, i_menu, "")
if(!(get_user_flags(id) & VIP_FLAG))
formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[2])
else
{
if(!is_user_alive(id))
formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[2])
else
{
switch(get_user_team(id))
{
case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[2])
case 2:
{
if(g_deagle[id])
formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[2])
else
{
if(g_money[id] < cost[2])
formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[2], cost[2])
else
formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[2], cost[2])
}
}
}
}
}
menu_additem(menu, i_menu, "")
if(!(get_user_flags(id) & VIP_FLAG))
formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[3])
else
{
if(!is_user_alive(id))
{
if(g_used_life[id])
formatex(i_menu, charsmax(i_menu), "\y%s\r\R [USED]", items_menu[3])
else
{
if(g_money[id] < cost[3])
formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[3], cost[3])
else
formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[3], cost[3])
}
}
else
formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY DEAD]", items_menu[3])
}
menu_additem(menu, i_menu, "")
if(!(get_user_flags(id) & VIP_FLAG))
formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY VIP]", items_menu[4])
else
{
if(!is_user_alive(id))
formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ALIVE]", items_menu[4])
else
{
switch(get_user_team(id))
{
case 1: formatex(i_menu, charsmax(i_menu), "\d%s\R [ONLY ANTI-FURIEN]", items_menu[4])
case 2:
{
if(g_pet[id])
formatex(i_menu, charsmax(i_menu), "\y%s\r\R [ALREADY HAVE]", items_menu[4])
else
{
if(g_money[id] < cost[4])
formatex(i_menu, charsmax(i_menu), "\d%s\R %d", items_menu[4], cost[4])
else
formatex(i_menu, charsmax(i_menu), "\y%s\r\R %d", items_menu[4], cost[4])
}
}
}
}
}
menu_additem(menu, i_menu, "")
menu_display(id, menu, 0)
}
public donate(id, arg[])
{
static cui[32], count[10];
strbreak(arg, cui, 31, count, 9)
if(!cui[0] || !count[0])
{
color(id, ".v%s.g Comanda se foloseste sub forma urmatoare:.e /donate nume bani.g.", TAG)
return
}
static credite_trimise, credite;
credite_trimise = g_money[id]
if(equal(count, "all"))
credite = credite_trimise
else
credite = str_to_num(count)
if(credite <= 0)
{
color(id, ".v%s.g Valoarea introdusa de tine este invalida.", TAG)
return
}
credite_trimise -= credite
if(credite_trimise < 0)
{
credite += credite_trimise
credite_trimise = 0
}
static primitor;
primitor = cmd_target(id, cui, (CMDTARGET_ALLOW_SELF))
if(!primitor || primitor == id)
{
color(id, ".v%s.e %s.g nu exista pe server.", TAG, cui)
return
}
g_money[primitor] += credite
g_money[id] = credite_trimise
color(0, ".v%s.e %s.g ii trimite lui.e %s %d$.g.", TAG, get_name(id), get_name(primitor), credite)
}
public shop_handler(id, menu, item)
{
if(!(get_user_flags(id) & VIP_FLAG))
{
color(id, ".v%s.g Trebuie sa detii.e VIP.g pentru a folosi acest shop.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(g_money[id] < cost[item])
{
color(id, ".v%s.g Nu ai destule credite sa cumperi.e %s.g. Iti mai trebuiesc.e %d.g dolari.", TAG, items_menu[item], cost[item] - g_money[id])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
switch(item)
{
case 0:
{
if(!is_user_alive(id))
{
color(id, ".v%s.g Trebuie sa fii in viata pentru a putea cumpara.e %s.g", items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(get_user_team(id) != 2)
{
color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a putea cumpara.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(g_ak47[id])
{
color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
drop_weapons(id, 1)
g_ak47[id] = true
give_item(id, "weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 90)
}
case 1:
{
if(!is_user_alive(id))
{
color(id, ".v%s.g Trebuie sa fii in viata pentru a putea cumpara.e %s.g", items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(get_user_team(id) != 2)
{
color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a putea cumpara.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(g_m4a1[id])
{
color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
drop_weapons(id, 1)
g_m4a1[id] = true
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
}
case 2:
{
if(!is_user_alive(id))
{
color(id, ".v%s.g Trebuie sa fii in viata pentru a putea cumpara.e %s.g", items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(get_user_team(id) != 2)
{
color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a putea cumpara.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(g_deagle[id])
{
color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
drop_weapons(id, 2)
g_deagle[id] = true
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 90)
}
case 3:
{
if(is_user_alive(id))
{
color(id, ".v%s.g Trebuie sa fii.e mort.g pentru a folosi.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(get_user_team(id) == 3)
{
color(id, ".v%s.g Esti spectator si nu poti folosi.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(g_used_life[id])
{
color(id, ".v%s.g Ai folosit deja.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
g_used_life[id] = true
ExecuteHamB(Ham_CS_RoundRespawn, id)
}
case 4:
{
if(!is_user_alive(id))
{
color(id, ".v%s.g Trebuie sa fii.e viu.g pentru a folosi.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(get_user_team(id) != 2)
{
color(id, ".v%s.g Trebuie sa fii.e Anti-Furien.g pentru a folosi.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(g_pet[id])
{
color(id, ".v%s.g Ai deja.e %s.g.", TAG, items_menu[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
create_pet(id)
set_pev(id, pev_health, 200.0)
set_pev(id, pev_armorvalue, 200.0)
set_pev(id, pev_gravity, 0.5)
}
}
g_money[id] -= cost[item]
check_weapon(id)
color(id, ".v%s.g Ai cumparat.e %s.g pentru.e %d$.g.", TAG, items_menu[item], cost[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public create_pet(id)
{
item_pet[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
set_pev(item_pet[id], pev_classname, "bat")
engfunc(EngFunc_SetModel,item_pet[id],pet_model)
new Float:origin[3]
pev(id,pev_origin,origin)
set_pev(item_pet[id],pev_origin,origin)
set_pev(item_pet[id],pev_solid,SOLID_TRIGGER)
set_pev(item_pet[id],pev_movetype,MOVETYPE_FLY)
set_pev(item_pet[id],pev_owner,33)
set_pev(item_pet[id],pev_nextthink,1.0)
set_pev(item_pet[id],pev_sequence,0)
set_pev(item_pet[id],pev_gaitsequence,0)
set_pev(item_pet[id],pev_framerate,1.0)
engfunc(EngFunc_EmitSound,item_pet[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds - 1)],1.0, 1.2, 0, PITCH_NORM)
client_print(id, print_center, "Ai primit liliacul magic")
g_pet[id] = true
return PLUGIN_HANDLED
}
public checkandupdatetop(id, leveles, ori, minuti)
{
static name[32];
get_user_name(id, name, charsmax(name) - 1);
for(new i = INFO_ZERO; i < NTOP; i++)
{
if(leveles > toplevels[i] || leveles == toplevels[i] && ori > tophours[i] && minuti > topminutes[i] || leveles == toplevels[i] && ori == tophours[i] && minuti > topminutes[i])
{
new pos = i;
while(!equal(topnames[pos],name) && pos < NTOP)
pos++;
for(new j = pos; j > i; j--)
{
formatex(topnames[j], 31, topnames[j-1]);
toplevels[j] = toplevels[j-1];
tophours[j] = tophours[j-1];
topminutes[j] = topminutes[j-1];
}
formatex(topnames[i], charsmax(name) - 1, name);
toplevels[i] = leveles;
tophours[i]= ori;
topminutes[i] = minuti;
save_top();
break;
}
else if(equal(topnames[i], name))
break;
}
}
public read_top()
{
new Buffer[256],path[128];
formatex(path, 127, "%s/TopLevels.dat", data_save);
new f = fopen(path, "rt");
new i = INFO_ZERO;
while(!feof(f) && i < NTOP+1)
{
fgets(f, Buffer, 255)
new niveluri[25], hours[25], minutes[25];
parse(Buffer, topnames[i], 31, niveluri, 25, hours, 25, minutes, 25);
toplevels[i] = str_to_num(niveluri);
tophours[i]= str_to_num(hours);
topminutes[i]= str_to_num(minutes);
i++;
}
fclose(f);
}
public show_top(id)
{
static buffer[2368], name[131], len, i;
len = format(buffer[len], 2367-len,"<STYLE>body{background:#232323;color:#cfcbc2;font-family:sans-serif}table{border-style:solid;border-width:1px;border-color:#FFFFFF;font-size:13px}</STYLE><table align=center width=100%% cellpadding=2 cellspacing=0");
len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#52697B><th width=4%% > # <th width=24%%> NAME <th width=24%%>LEVEL <th width=24%%> HOURS <th width=24%%> MINUTES");
for(i = INFO_ZERO; i < NTOP; i++)
{
if(tophours[i] == 0 && topminutes[i] == 0)
len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#232323><td> %d <td> %s <td> %s<td> %s <td> %s", (i+1), "-", "-", "-","-");
else
{
name = topnames[i];
while(containi(name, "<") != -1)
replace(name, 129, "<", "<");
while(containi(name, ">") != -1)
replace(name, 129, ">", ">");
static plname[32];
get_user_name(id, plname ,32);
if(equal(topnames[i],plname))
len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#2D2D2D><td> %d <td> %s <td> %d<td> %d <td> %d", (i+1), name, toplevels[i], tophours[i], topminutes[i]);
else
len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#232323><td> %d <td> %s <td> %d<td> %d <td> %d", (i+1), name, toplevels[i], tophours[i], topminutes[i]);
}
}
len += format(buffer[len], 2367-len, "</table>");
len += formatex(buffer[len], 2367-len, "<tr align=bottom font-size:11px><Center><br><br><br><br>TOP 10 LEVELS</body>");
static strin[20];
format(strin,33, "TOP 10 LEVELS");
show_motd(id, buffer, strin);
}
create_thunder(const Float:vec1[3], const Float:vec2[3])
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vec2, 0)
write_byte(0)
engfunc(EngFunc_WriteCoord, vec1[0])
engfunc(EngFunc_WriteCoord, vec1[1])
engfunc(EngFunc_WriteCoord, vec1[2])
engfunc(EngFunc_WriteCoord, vec2[0])
engfunc(EngFunc_WriteCoord, vec2[1])
engfunc(EngFunc_WriteCoord, vec2[2])
write_short(lighting)
write_byte(1)
write_byte(5)
write_byte(2)
write_byte(20)
write_byte(30)
write_byte(200)
write_byte(200)
write_byte(200)
write_byte(200)
write_byte(200)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vec2, 0)
write_byte(TE_SPARKS)
engfunc(EngFunc_WriteCoord, vec2[0])
engfunc(EngFunc_WriteCoord, vec2[1])
engfunc(EngFunc_WriteCoord, vec2[2])
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vec2, 0)
write_byte(TE_SMOKE)
engfunc(EngFunc_WriteCoord, vec2[0])
engfunc(EngFunc_WriteCoord, vec2[1])
engfunc(EngFunc_WriteCoord, vec2[2])
write_short(smoke_spr)
write_byte(10)
write_byte(10)
message_end()
}
make_HideWeapon(plr, flags)
{
static i; i = plr ? plr : get_player();
if(!i)
return 0;
message_begin(plr ? MSG_ONE : MSG_ALL, g_msgHideWeapon, {0, 0, 0}, plr);
write_byte(flags);
message_end();
return 1;
}
get_player()
{
for( new plr = 1; plr <= g_iMaxPlayers; plr++ )
{
if( IsPlayer(plr))
{
return plr;
}
}
return 0;
}
stock UTIL_CreateFlares(const iOrigin[3], const iSpriteID, const iCount, const iLife, const iScale)
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(TE_SPRITETRAIL);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2] + random_num(5, 10));
write_short(iSpriteID);
write_byte(iCount);
write_byte(iLife);
write_byte(iScale);
write_byte(random_num(30, 50));
write_byte(random_num(10, 15));
message_end();
}
public hook_drop(id)
{
if(!is_user_alive(id))
return PLUGIN_CONTINUE;
if(get_user_team(id) == 1)
{
client_print(id, print_center, "Nu poti arunca nimic!")
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public CountDown()
{
if(g_endround)
return;
set_dhudmessage(random(255), random(255), random(255), -1.0, 0.24, 1, 0.0, 1.0, 0.0, 0.0)
SecondsUntillInvasion -= 1
switch(SecondsUntillInvasion)
{
case 0:
{
show_dhudmessage(0, "Furienii ataca planeta in o secunda.")
TerroTeamEffects()
CounterTeamEffects()
PlaySound(start_sounds[SecondsUntillInvasion])
return
}
case 1:
{
PlaySound(start_sounds[SecondsUntillInvasion])
show_dhudmessage(0, "Furienii ataca planeta in doua secunde.")
TerroTeamEffects()
CounterTeamEffects()
}
case 2:
{
PlaySound(start_sounds[SecondsUntillInvasion])
show_dhudmessage(0, "Furienii ataca planeta in trei secunde.")
TerroTeamEffects()
CounterTeamEffects()
}
case 3:
{
PlaySound(start_sounds[SecondsUntillInvasion])
show_dhudmessage(0, "Furienii ataca planeta in patru secunde.")
TerroTeamEffects()
CounterTeamEffects()
}
case 4:
{
PlaySound(start_sounds[SecondsUntillInvasion])
show_dhudmessage(0, "Furienii ataca planeta in cinci secunde.")
TerroTeamEffects()
CounterTeamEffects()
}
}
set_task(1.0, "CountDown");
}
public TerroTeamEffects()
{
new iPlayers[32];
new iPlayersNum;
get_players(iPlayers, iPlayersNum, "aceh", "TERRORIST");
for(new i = 0 ; i < iPlayersNum ; i++)
{
if(IsPlayer(iPlayers[i]))
{
ShakeScreen(iPlayers[i], 0.9);
FadeScreen(iPlayers[i], 0.5, 230, 40, 0, 180);
}
}
}
public CounterTeamEffects()
{
new iPlayers[32];
new iPlayersNum;
get_players(iPlayers, iPlayersNum, "aceh", "CT");
for(new i = 0; i < iPlayersNum ; i++)
{
if(IsPlayer(iPlayers[i]))
{
ShakeScreen(iPlayers[i], 0.9);
FadeScreen(iPlayers[i], 0.5, 0, 40, 230, 180);
}
}
}
public task_CanPlant()
{
set_lights("d")
if(active_fog)
msg_create_fog(random(255), random(255), random(255), 2)
g_dontdelete = true
remove_task(TASK_REMOVEC4)
static CT, TERO, salvator, distrugator;
CT = fnGetAliveCT();
if(CT < 1)
return;
TERO = fnGetAliveT();
if(TERO < 1)
return;
salvator = fnGetRandomAliveCT(random_num(1, CT))
distrugator = fnGetRandomAliveT(random_num(1, TERO))
g_end_health[distrugator] = get_user_health(distrugator)
g_end_health[salvator] = get_user_health(salvator)
set_user_health(salvator, 200)
savior[salvator] = true
cs_set_user_defuse(salvator, 1)
set_task(0.1, "savior_aura", salvator+TASK_AURA, _, _, "b")
set_user_health(distrugator, 135)
destroyer[distrugator] = true
ham_give_weapon(distrugator, "weapon_c4")
cs_set_user_plant(distrugator, 1, 1);
engclient_cmd(distrugator, "weapon_knife")
check_weapon(distrugator)
set_hudmessage(200, 30, 20, -1.0, 0.15, 1, 3.1, 3.0)
ShowSyncHudMsg(0, event_hud, "Bomba cu plasma poate fi plantata!^n%s a fost ales ca EROU!!!^n%s a fost ales ca DISTRUGATOR!!!", get_name(salvator), get_name(distrugator))
}
public select_destroyer()
{
if(g_endround)
return;
static TERO, distrugator;
TERO = fnGetAliveT();
if(TERO < 1)
return;
distrugator = fnGetRandomAliveT(random_num(1, TERO))
g_end_health[distrugator] = get_user_health(distrugator)
set_user_health(distrugator, 135)
color(0, ".v%s.e %s.g a fost ales NOUL.e DISTRUGATOR.g.", TAG, get_name(distrugator))
destroyer[distrugator] = true
if(!b_planted)
{
ham_give_weapon(distrugator, "weapon_c4")
cs_set_user_plant(distrugator, 1, 1);
}
engclient_cmd(distrugator, "weapon_knife")
check_weapon(distrugator)
}
public select_savior()
{
if(g_endround)
return;
static CT, salvator;
CT = fnGetAliveCT();
if(CT < 1)
return;
salvator = fnGetRandomAliveCT(random_num(1, CT))
g_end_health[salvator] = get_user_health(salvator)
set_user_health(salvator, 200)
color(0, ".v%s.e %s.g a fost ales NOUL EROU.", TAG, get_name(salvator))
savior[salvator] = true
cs_set_user_defuse(salvator, 1);
}
public savior_aura(taskid)
{
if(!savior[ID_AURA] || !is_user_alive(ID_AURA))
{
remove_task(taskid);
return;
}
static origin[3]
get_user_origin(ID_AURA, origin)
message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
write_byte(TE_DLIGHT)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_byte(20)
write_byte(0)
write_byte(200)
write_byte(50)
write_byte(2)
write_byte(0)
message_end()
}
public score_attrib(msgid, dest, id)
{
static juc, attrib;
juc = get_msg_arg_int(1);
attrib = get_msg_arg_int(2);
if(attrib == ATTRIB_BOMB)
{
if(destroyer[juc] && user_has_weapon(juc, CSW_C4))
return PLUGIN_CONTINUE;
else
set_msg_arg_int(2, ARG_BYTE, 0)
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public status_icon(msgid, dest, id)
{
static juc, icon[3];
juc = get_msg_arg_int(1);
get_msg_arg_string(2, icon, 2);
if((icon[0] == 'c' && icon[1] == '4'))
{
if(destroyer[juc])
return PLUGIN_CONTINUE;
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE
}
fnGetAliveCT()
{
static iAlive, id
iAlive = 0
for (id = 1; id <= g_iMaxPlayers; id++)
{
if(is_user_alive(id) && get_user_team(id) == 2)
iAlive++
}
return iAlive;
}
fnGetRandomAliveCT(n)
{
static iAlive, id
iAlive = 0
for (id = 1; id <= g_iMaxPlayers; id++)
{
if(is_user_alive(id) && get_user_team(id) == 2)
iAlive++
if(iAlive == n)
return id;
}
return -1;
}
fnGetAliveT()
{
static iAlive, id
iAlive = 0
for (id = 1; id <= g_iMaxPlayers; id++)
{
if(is_user_alive(id) && get_user_team(id) == 1)
iAlive++
}
return iAlive;
}
fnGetRandomAliveT(n)
{
static iAlive, id
iAlive = 0
for (id = 1; id <= g_iMaxPlayers; id++)
{
if(is_user_alive(id) && get_user_team(id) == 1)
iAlive++
if(iAlive == n)
return id;
}
return -1;
}
public ShakeScreen(id, const Float:seconds)
{
message_begin(MSG_ONE_UNRELIABLE, g_screenshake, {0, 0, 0}, id);
write_short(floatround(4096.0 * seconds, floatround_round));
write_short(floatround(4096.0 * seconds, floatround_round));
write_short(1<<13);
message_end();
}
public FadeScreen(id, const Float:seconds, const red, const green, const blue, const alpha)
{
message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, id);
write_short(floatround(4096.0 * seconds, floatround_round));
write_short(floatround(4096.0 * seconds, floatround_round));
write_short(0x0000);
write_byte(red);
write_byte(green);
write_byte(blue);
write_byte(alpha);
message_end();
}
public shop_enter(id)
{
if(get_user_team(id) == 3)
return PLUGIN_CONTINUE;
switch(get_user_team(id))
{
case 1: shop_furien(id)
case 2: shop_anti_furien(id)
}
return PLUGIN_HANDLED;
}
public shop_furien(id)
{
static menu_name[128];
formatex(menu_name, charsmax(menu_name), "\yShop Furien^n\rBani: %i$^n^n", g_money[id])
new menu = menu_create(menu_name, "furien_handler")
static menu_item[80], tasta[2];
for(new i = 0; i < sizeof FURIEN_ITEMS; i++)
{
if(g_money[id] < FURIEN_COST[i])
formatex(menu_item, charsmax(menu_item), "\d%s\R %d$", FURIEN_ITEMS[i], FURIEN_COST[i])
else
formatex(menu_item, charsmax(menu_item), "\y%s\r\R %d$", FURIEN_ITEMS[i], FURIEN_COST[i])
tasta[0] = i
tasta[1] = 0
menu_additem(menu, menu_item, tasta)
}
if(pev_valid(id) == PDATA_SAFE)
set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
menu_display(id, menu, 0)
}
public get_bomb()
remove_c4()
public delete_c4()
{
if(g_dontdelete)
{
remove_task(TASK_REMOVEC4)
return;
}
remove_c4()
}
public shop_anti_furien(id)
{
static menu_name[128];
formatex(menu_name, charsmax(menu_name), "\yShop Anti-Furien^n\rBani: %i$^n^n", g_money[id])
new menu = menu_create(menu_name, "anti_furien_handler")
static menu_item[80], tasta[2];
for(new i = 0; i < sizeof ANTI_FURIEN_ITEMS; i++)
{
if(g_money[id] < ANTI_FURIEN_COST[i])
formatex(menu_item, charsmax(menu_item), "\d%s\R %d$", ANTI_FURIEN_ITEMS[i], ANTI_FURIEN_COST[i])
else
formatex(menu_item, charsmax(menu_item), "\y%s\r\R %d$", ANTI_FURIEN_ITEMS[i], ANTI_FURIEN_COST[i])
tasta[0] = i
tasta[1] = 0
menu_additem(menu, menu_item, tasta)
}
if(pev_valid(id) == PDATA_SAFE)
set_pdata_int(id, OFFSET_CSMENUCODE, 0, OFFSET_LINUX)
menu_display(id, menu, 0)
}
public furien_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(item >= sizeof FURIEN_ITEMS) return PLUGIN_HANDLED;
if(!is_user_alive(id))
{
color(id, ".v%s.g Esti mort. Nu poti cumpara.e %s.g.", TAG, FURIEN_ITEMS[item])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(get_user_team(id) != 1)
{
menu_destroy(menu);
shop_anti_furien(id)
return PLUGIN_HANDLED;
}
if(g_money[id] < FURIEN_COST[item])
{
color(id, ".v%s.g Nu ai destui bani pentru.e %s.g. Iti mai trebuiesc:.e %d$.g.", TAG, FURIEN_ITEMS[item], FURIEN_COST[item] - g_money[id])
menu_destroy(menu);
return PLUGIN_HANDLED;
}
switch(item)
{
case 0:
{
if(g_superknife[id])
{
color(id, ".v%s.g Ai deja.e Super Knife.g.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
g_superknife[id] = true
check_weapon(id)
}
case 1:
{
if(get_user_health(id) == 320)
{
color(id, ".v%s.g Ai deja maximul de HP.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
else if(get_user_health(id) + 40 > 200)
set_user_health(id, 200)
else
set_user_health(id, get_user_health(id) + 40)
}
case 2:
{
if(get_user_armor(id) == 250)
{
color(id, ".v%s.g Ai deja maximul de armura.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
else if(get_user_armor(id) + 50 > 250)
set_user_armor(id, 250)
else
set_user_armor(id, get_user_armor(id) + 50)
}
case 3:
{
if(g_noflash[id])
{
color(id, ".v%s.g Ai deja.e No Flash.g.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
g_noflash[id] = true
}
case 4:
{
if(user_has_weapon(id, CSW_HEGRENADE))
{
color(id, ".v%s.g Ai deja un.e Napalm Nade.g.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
ham_give_weapon(id, "weapon_hegrenade")
}
case 5:
{
if(user_has_weapon(id, CSW_FLASHBANG))
{
color(id, ".v%s.g Ai deja un.e Frost Nade.g.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
ham_give_weapon(id, "weapon_flashbang")
}
case 6:
{
if(user_has_weapon(id, CSW_SMOKEGRENADE) && have_killnade[id])
{
color(id, ".v%s.g Ai deja un.e KILL NADE.g.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
ham_give_weapon(id, "weapon_smokegrenade")
have_killnade[id] = true
}
}
color(id, ".v%s.g Ai cumparat.e %s.g cu.e %d$.g.", TAG, FURIEN_ITEMS[item], FURIEN_COST[item])
g_money[id] -= FURIEN_COST[item]
emit_sound(id, CHAN_ITEM, misc_sound_wav[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public anti_furien_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(item >= sizeof ANTI_FURIEN_ITEMS) return PLUGIN_HANDLED;
if(!is_user_alive(id))
{
menu_destroy(menu);
color(id, ".v%s.g Esti mort. Nu poti cumpara.e %s.g.", TAG, ANTI_FURIEN_ITEMS[item])
return PLUGIN_HANDLED;
}
if(get_user_team(id) != 2)
{
menu_destroy(menu);
shop_furien(id)
return PLUGIN_HANDLED;
}
if(g_money[id] < ANTI_FURIEN_COST[item])
{
menu_destroy(menu);
color(id, ".v%s.g Nu ai destui bani pentru.e %s.g. Iti mai trebuiesc:.e %d$.g.", TAG, ANTI_FURIEN_ITEMS[item], ANTI_FURIEN_COST[item] - g_money[id])
return PLUGIN_HANDLED;
}
switch(item)
{
case 0:
{
if(g_furiendetector[id])
{
color(id, ".v%s.g Ai deja.e Furien Detector.g.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
g_furiendetector[id] = true
}
case 1:
{
if(get_user_health(id) == 280)
{
color(id, ".v%s.g Ai deja maximul de HP.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
else if(get_user_health(id) + 50 > 200)
set_user_health(id, 200)
else
set_user_health(id, get_user_health(id) + 50)
}
case 2:
{
if(get_user_armor(id) == 250)
{
color(id, ".v%s.g Ai deja maximul de armura.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
else if(get_user_armor(id) + 60 > 250)
set_user_armor(id, 250)
else
set_user_armor(id, get_user_armor(id) + 60)
}
case 3:
{
if(g_nofrost[id])
{
color(id, ".v%s.g Ai deja.e No Frost.g.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
g_nofrost[id] = true
}
case 4:
{
if(user_has_weapon(id, CSW_HEGRENADE))
{
color(id, ".v%s.g Ai deja un.e He Grenade.g.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
ham_give_weapon(id, "weapon_hegrenade")
}
case 5:
{
if(user_has_weapon(id, CSW_FLASHBANG))
{
color(id, ".v%s.g Ai deja un.e Flash Bang.g.", TAG)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
ham_give_weapon(id, "weapon_flashbang")
}
}
color(id, ".v%s.g Ai cumparat.e %s.g cu.e %d$.g.", TAG, ANTI_FURIEN_ITEMS[item], ANTI_FURIEN_COST[item])
g_money[id] -= ANTI_FURIEN_COST[item]
emit_sound(id, CHAN_ITEM, misc_sound_wav[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
bool:is_point_visible(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:dist
get_tr2(pentru, TR_flFraction, dist)
free_tr2(pentru)
return ((dist == 1.0) ? true : false)
}
public reset_player_model(id)
{
if(!is_user_connected(id))
return false;
if(!flag_get(g_HasCustomModel, id))
return true;
remove_task(id+TASK_MODELCHANGE)
flag_unset(g_HasCustomModel, id)
fm_cs_reset_user_model(id)
return true;
}
public fm_cs_set_user_model(taskid)
set_user_info(ID_MODELCHANGE, "model", g_CustomPlayerModel[ID_MODELCHANGE])
stock fm_cs_get_user_model(id, model[], len)
get_user_info(id, "model", model, len)
stock fm_cs_reset_user_model(id)
{
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), "gordon")
fm_cs_user_model_update(id+TASK_MODELCHANGE)
}
stock fm_cs_user_model_update(taskid)
{
new Float:current_time
current_time = get_gametime()
if(current_time - g_ModelChangeTargetTime >= MODELCHANGE_DELAY)
{
fm_cs_set_user_model(taskid)
g_ModelChangeTargetTime = current_time
}
else
{
set_task((g_ModelChangeTargetTime + MODELCHANGE_DELAY) - current_time, "fm_cs_set_user_model", taskid)
g_ModelChangeTargetTime = g_ModelChangeTargetTime + MODELCHANGE_DELAY
}
}
stock color(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, ".v", "^4")
replace_all(msg, 190, ".g", "^1")
replace_all(msg, 190, ".e", "^3")
if(id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if(IsPlayer(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
public AddCommas(iNum , szOutput[] , iLen)
{
new szTmp[15], iOutputPos, iNumPos, iNumLen;
if(iNum < 0)
{
szOutput[iOutputPos++] = '-'
iNum = abs(iNum)
}
iNumLen = num_to_str(iNum, szTmp, charsmax(szTmp))
if(iNumLen <= 3)
iOutputPos += copy(szOutput[iOutputPos], iLen, szTmp)
else
{
while((iNumPos < iNumLen) && (iOutputPos < iLen))
{
szOutput[iOutputPos++] = szTmp[iNumPos++]
if((iNumLen - iNumPos) && !((iNumLen - iNumPos) % 3))
szOutput[iOutputPos++] = ','
}
szOutput[iOutputPos] = EOS
}
return iOutputPos;
}
color_chat(team_format, player, player_team, color, const chat_msg[], ...)
{
static msg[192]
vformat(msg, charsmax(msg) - 1, chat_msg, 6)
if(team_format)
{
static id, i, players[32], count
get_players(players, count, "e", team_names[player_team])
for(i = 0; i < count; i++)
{
id = players[i]
if(!id) continue;
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id)
write_byte(player)
write_string(msg)
message_end()
}
}
else
{
if(player_team == color)
{
message_begin(MSG_BROADCAST, g_msgSayText)
write_byte(player)
write_string(msg)
message_end()
}
else
{
message_begin(MSG_BROADCAST, g_msg_teaminfo)
write_byte(player)
write_string(team_names[color])
message_end()
message_begin(MSG_BROADCAST, g_msgSayText)
write_byte(player)
write_string(msg)
message_end()
message_begin(MSG_BROADCAST, g_msg_teaminfo)
write_byte(player)
write_string(team_names[player_team])
message_end()
}
}
}
stock fm_cs_get_user_team(id)
{
if(pev_valid(id) != PDATA_SAFE)
return FM_CS_TEAM_UNASSIGNED;
return get_pdata_int(id, OFFSET_CSTEAMS, OFFSET_LINUX);
}
stock get_name(id)
{
static name[32];
get_user_name(id, name, charsmax(name) - 1)
return name;
}
stock ham_give_weapon(id, const weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0;
new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,weapon));
if(!pev_valid(wEnt)) return 0;
set_pev(wEnt, pev_spawnflags, SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, wEnt);
if(!ExecuteHamB(Ham_AddPlayerItem,id,wEnt))
{
if(pev_valid(wEnt)) set_pev(wEnt,pev_flags,pev(wEnt,pev_flags) | FL_KILLME);
return 0;
}
ExecuteHamB(Ham_Item_AttachToPlayer, wEnt, id)
return 1;
}
stock ham_strip_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0;
new wId = get_weaponid(weapon);
if(!wId) return 0;
new wEnt;
while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
if(!wEnt) return 0;
if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);
if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0;
ExecuteHamB(Ham_Item_Kill,wEnt);
set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));
if(wId == CSW_C4)
{
cs_set_user_plant(id,0,0);
cs_set_user_bpammo(id,CSW_C4,0);
}
else if(wId == CSW_SMOKEGRENADE || wId == CSW_FLASHBANG || wId == CSW_HEGRENADE)
cs_set_user_bpammo(id, wId, 0);
return 1;
}
stock msg_create_fog(iRed, iGreen, iBlue, iDensity)
{
new const fog_density[] = { 0, 0, 0, 0, 111, 18, 3, 58, 111, 18, 125, 58, 66, 96, 27, 59, 90, 101, 60, 59, 90,
101, 68, 59, 10, 41, 95, 59, 111, 18, 125, 59, 111, 18, 3, 60, 68, 116, 19, 60 }
new dens
dens = (4 * iDensity)
message_begin(MSG_BROADCAST, g_msgfog, { 0, 0, 0 }, 0)
write_byte(iRed)
write_byte(iGreen)
write_byte(iBlue)
write_byte(fog_density[dens])
write_byte(fog_density[dens + 1])
write_byte(fog_density[dens + 2])
write_byte(fog_density[dens + 3])
message_end()
}
stock fm_cs_set_user_deaths(id, value)
{
if(pev_valid(id) != PDATA_SAFE)
return;
set_pdata_int(id, OFFSET_CSDEATHS, value, OFFSET_LINUX)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
Last edited by Molecula; 06-23-2019 at 09:25.
|
|