Junior Member
|
01-02-2020
, 06:40
Load fails: Plugin file open error SMA
|
#1
|
I found an addons on internet, i put it on my server.. and from that plugin
gone problems
THATS SMA code
Code:
/*============================================================
====================JAILBREAK BY BARSIK=======================
=====================BASED ON CSPUJBM=========================
============================================================*/
/* === HERE ARE DEFINES WHICH YOU CAN TURN ON/OFF === */
// -- Addons
//#define ctpunish_on // Simon addon: Punish CT
#define er_fade // End round fade screen
#define grab_on // Grab for admins
#define hero_on // Main prisoner
#define hook_on // Hook(rope for admins)
#define jailmenu_on // JB server menu
#define rs_on // Round Sound (MP3)
#define supermenu_on // Supermenu
#define svip_bhop_on // Supervip bunnyhop
#define teammanager_on // Team manager + balance
#define vipmenu_on // VIP system
#define voice_on // Simon addon: Voice
#define roulette_on // Russian roulette
#define qasystem_on // Question & Answer system
#define football_on // Football system
#define blockcmds_on // Block some client commands
#define donate_on // Money transfer system
#define reasons_on // Kill reasons
#define roundcontrol_on // Use module 'RoundControl'
// -- Modifications
#define heroweapon_on // Gives super-knife to Main Prisoner
#define vipdoublejump_on // VIP can jump 2 times(1 time in mid-air)
#define nowpnsprites_on // Removes weapon sprites
#define boxwpnmodels_on // Boxing gloves models
/* === END OF THESE DEFINES === */
#define COPYFOR "Fantick"
#define PREFIX "Элитный побег"
#define ADMIN_SKYPE "maximimm"
#define ADMIN_LEVEL ADMIN_BAN // d
#define SUPERADMIN_LEVEL ADMIN_RCON // l
#define VIP_LEVEL ADMIN_LEVEL_A // m
#define SUPERVIP_LEVEL ADMIN_LEVEL_E // q
#define HOOK_LEVEL ADMIN_LEVEL_F // r
#define GRAB_LEVEL ADMIN_LEVEL_G // s
/* === MODELS === */
#define PLAYER_MODEL "justserver"
#define KATANA_P_MODEL "models/cs-fantick/p_katana_knife.mdl"
#define KATANA_V_MODEL "models/cs-fantick/v_katana_knife.mdl"
#define OTVERTKA_P_MODEL "models/extreme-shop/p_otvertka_byess3.mdl"
#define OTVERTKA_V_MODEL "models/servf/v_otvertka.mdl"
#define ELECTRO_P_MODEL "models/extreme-shop/p_electro.mdl"
#define ELECTRO_V_MODEL "models/extreme-shop/v_electro.mdl"
#define BALL_MODEL "models/w_jb_ball.mdl"
/* === MUSIC === */
#define MUSIC_FD "sound/servf/freeday1.mp3"
#define MUSIC_HNS "sound/servf/mus1.mp3"
#define MUSIC_ZOMBIE "sound/cs-fantick/JB/zombie.mp3"
#define PREMUSIC_BOX "sound/cs-fantick/jb_box.mp3"
#define PREMUSIC_MAGIC "sound/servf/magic1.mp3"
/* === SOUNDS === */
#define SOUND_BELL "cs-fantick/klaxon1.wav"
#define SOUND_ALIEN "alien_alarm.wav"
#define SOUND_DUEL "duelka.wav"
#define SOUND_HOOK "cs-fantick/tok.wav"
#define SOUND_ZOMBIE_BEGIN "cs-fantick/zombie.wav"
#define SOUND_CBAR_WALL "cs-fantick/fire_hitwall.wav"
#define SOUND_CBAR_MISS "cs-fantick/fire_miss.wav"
#define SOUND_ERROR "cs-fantick/error.wav"
#define SOUND_KNIFEKILL "cs-fantick/knife.wav"
#define SOUND_MAGIC_SKILL "servf/magic1.wav"
#define SOUND_BALL_BOUNCE "balls/bounce.wav"
/* === SPRITES === */
#define SPRITE_HOOK "sprites/tok.spr"
#define SPRITE_BEACON "sprites/shockwave.spr"
#define SPRITE_FOOTBALL_ICON "sprites/icon_ball.spr"
/* === RoundSound === */
#if defined rs_on
new const roundsound[][] = {
"sound/servf/rend1.mp3",
"sound/servf/rend2.mp3",
"sound/servf/rend3.mp3",
"sound/servf/rend4.mp3",
"sound/servf/rend5.mp3",
"sound/servf/rend6.mp3",
"sound/servf/rend7.mp3",
"sound/servf/rend8.mp3",
"sound/servf/rend9.mp3",
"sound/servf/rend10.mp3"
}
#endif
/*
==================================================
=== THERE IS NOTHING TO CHANGE BELOW THIS LINE ===
==================================================
*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csx>
#if AMXX_VERSION_NUM <= 182
#include <dhudmessage>
#endif
#include <engine>
#include <fakemeta_util>
#include <hamsandwich>
#define VERSION "3.2 [WIP]"
enum(+= 100) {
TASK_STATUS = 2487000,
TASK_FREEDAY,
TASK_MINMODELS,
TASK_ROUNDEND,
TASK_GIVEITEMS,
TASK_BEACON,
TASK_FADE,
TASK_ROLLCD,
TASK_FREEENDPL,
TASK_ATTACK,
TASK_INVIS,
TASK_INVISPL,
TASK_LASTPLAYER,
TASK_NOSIMON,
TASK_ALLOWSIMON
}
#define HUD_DELAY Float:1.0
#define CELL_RADIUS Float:200.0
#define get_bit(%1,%2) (%1 & 1 << (%2 & 31))
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define clear_bit(%1,%2) %1 &= ~(1 << (%2 & 31))
#define vec_copy(%1,%2) (%2[0] = %1[0], %2[1] = %1[1],%2[2] = %1[2])
// Offsets
#define m_flTimeWeaponIdle 48
#define m_flNextAttack 83
#define OFFSET_TEAM 114
#define m_iPrimaryWeapon 116
#define OFFSET_INTERNALMODEL 126
#define m_fNextHudTextArgsGameTime 198
#define m_fGameHUDInitialized 349
#define OFFSET_CSDEATHS 444
#define m_iVGUI 510
// Alien screen color(RGB)
#define ALIEN_RED 210
#define ALIEN_GREEN 255
#define ALIEN_BLUE 255
enum _hud { _hudsync, Float:_x, Float:_y, Float:_time }
enum _duel { _name[16], _csw, _entname[32], _opt[32], _sel[32] }
new gp_PrecacheSpawn, gp_PrecacheKeyValue, gp_SuperKnifeMul, gp_BoxMax, gp_TalkMode, g_zombie[33],
gp_VoiceBlock, gp_RetryTime, gp_ButtonShoot, gp_SimonSteps, gp_GlowModels, mxplr, gp_AutoLastresquest,
gp_NoGame, gp_Motd, gp_GameHP, g_human[33], gp_Effects, g_MaxClients, g_MsgStatusText, g_mp3menu[33],
g_MsgStatusIcon, nick[64], g_MsgClCorpse, g_MsgMOTD, gc_TalkMode, gc_VoiceBlock, gc_SimonSteps,
gc_ButtonShoot, cvar_minpl, Float:gc_SuperKnifeMul, bool:has_used[33], g_used = 0, WeaponsLocked,
fdcooldown[33], lastdeny, cvar_autogamefd, g_MsgText, BeaconSprite, g_mp3[33], g_iMessagesStatusIcon,
ExplodeSprite, g_victim, g_killer, g_systime, g_magic_color[33], g_iMessagesBuyClose, inviscd[33],
g_money[33], cvar_fdlen, g_SyncHud
#if defined reasons_on
new g_victim_r[33]
#endif
#if defined football_on
new const szEntity[][] = {
"worldspawn", "func_wall", "func_door", "func_door_rotating", "func_wall_toggle", "func_breakable",
"func_pushable", "func_train", "func_illusionary", "func_button", "func_rot_button", "func_rotating"
}
new g_iBall, Float:g_vOrigin[3], red_team, blue_team, g_FootballStarted, g_iIconBall, bool:stop
new const g_szBallName[] = "jbb_ball"
#endif
#if defined donate_on
new v_id[33], Float:g_delay[33]
#endif
#if defined roulette_on
new g_has_revolver[33]
#endif
#if defined rs_on
new g_ermp3[33]
#endif
#if defined qasystem_on
new g_answer[6], g_question[32], bool:g_answered
#endif
#if defined teammanager_on
stock const FIRST_JOIN_MSG[] = "#Team_Select"
stock const FIRST_JOIN_MSG_SPEC[] = "#Team_Select_Spect"
stock const INGAME_JOIN_MSG[] = "#IG_Team_Select"
stock const INGAME_JOIN_MSG_SPEC[] = "#IG_Team_Select_Spect"
const iMaxLen = sizeof(INGAME_JOIN_MSG_SPEC)
stock const VGUI_JOIN_TEAM_NUM = 2
new Float:gametime, TCount, CTCount
#endif
#if defined supermenu_on
new g_usedmoney[33], g_usedhp[33], g_usedgrenades[33], g_usedgravity[33], g_usedturbo[33], g_usedrespawns[33]
#endif
#if defined hero_on
new g_hero[33]
#endif
#if defined hook_on
new bool:ishooked[32], hookorigin[32][3], Sbeam, cvar_hookupd
#endif
#if defined grab_on
new p_players_only, p_throw_force, p_min_dist, p_speed, p_grab_force, p_glow_r, p_glow_b, p_glow_g, p_glow_a,
p_glow, client_data[33][4]
#endif
new keysmenu = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)
new T_item_1, T_item_2, T_item_3, T_item_4, T_item_5, T_item_6, T_item_7,T_item_8, T_item_9, CT_item_1, CT_item_3,
bool:g_Otvertka[33], g_Katana[33], g_Electro[33], g_speed[33], g_HasWeapon[33]
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_ELITE)|(1<<CSW_P228)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)|(1<<CSW_FIVESEVEN)
const ALL_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)|(1<<CSW_ELITE)|(1<<CSW_P228)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)|(1<<CSW_FIVESEVEN)
enum Color { NORMAL = 1, GREEN, TEAM_COLOR, GREY, RED, BLUE }
new const TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" }
/* === SOME MODELS AND SOUNDS === */
new const _FistModels[][] = { "models/p_bknuckles.mdl", "models/v_bknuckles.mdl" }
new const _SuperGun[][] = { "models/cs-fantick/p_fire_knife.mdl", "models/cs-fantick/v_fire_knife.mdl" } // Super Knife
new const _CTGun[][] = { "models/p_dubinka.mdl", "models/v_dubinka.mdl" } // CT Knife
new const _MagicGun[][] = { "models/servf/p_magic.mdl", "models/servf/v_magic.mdl" } // Magic day knife
#if defined boxwpnmodels_on
new const _BoxModels[][] = { "models/p_boxer.mdl", "models/v_boxer.mdl" }
#endif
new const _FistSounds[][] = { "weapons/cbar_hitbod2.wav", "weapons/bullet_hit1.wav", "weapons/bullet_hit2.wav" } // 1 - b 2 - w 3 - 1,2
new const _RemoveEntities[][] = {
"func_hostage_rescue", "info_hostage_rescue", "func_bomb_target", "info_bomb_target",
"hostage_entity", "info_vip_start", "func_vip_safetyzone", "func_escapezone"
}
new const _WeaponsFree[][] = { "weapon_m4a1", "weapon_deagle", "weapon_sg550", "weapon_elite", "weapon_ak47", "weapon_mp5navy", "weapon_m3" }
new const _WeaponsFreeCSW[] = { CSW_M4A1, CSW_DEAGLE, CSW_SG550, CSW_ELITE, CSW_AK47, CSW_MP5NAVY, CSW_M3 }
new const _Duel[][_duel] = {
{ "Deagle", CSW_DEAGLE, "weapon_deagle", "UJBM_MENU_LASTREQ_OPT4", "UJBM_MENU_LASTREQ_SEL4" },
{ "m4a1", CSW_M4A1, "weapon_m4a1", "UJBM_MENU_LASTREQ_OPT5", "UJBM_MENU_LASTREQ_SEL9" },
{ "Grenades", CSW_HEGRENADE, "weapon_hegrenade", "UJBM_MENU_LASTREQ_OPT6", "UJBM_MENU_LASTREQ_SEL6" },
{ "m249", CSW_M249, "weapon_m249", "UJBM_MENU_LASTREQ_OPT8", "UJBM_MENU_LASTREQ_SEL8" },
{ "Awp", CSW_AWP, "weapon_awp", "UJBM_MENU_LASTREQ_OPT7", "UJBM_MENU_LASTREQ_SEL7" }
}
// DHudSync: 0=ttinfo / 1=info / 2=simon / 3=ctinfo / 4=player / 5=day / 6=center / 7=help / 8=timer
new const g_HudSync[][_hud] = {
{0, 0.6, 0.2, 2.0},
{0, -1.0, 0.7, 5.0},
{0, -1.0, 0.0, 2.0},
{0, 0.1, 0.3, 2.0},
{0, -1.0, 0.9, 3.0},
{0, 0.75, 0.1, 3.0},
{0, -1.0, 0.6, 3.0},
{0, 0.8, 0.3, 20.0},
{0, -1.0, 0.4, 3.0},
{0, 0.1, 0.5, 2.0},
{0, -1.0, 0.55, 2.0}
}
new g_ShopCommands[][] = {
"usp", "glock", "deagle", "p228", "elites", "fn57", "m3", "xm1014", "mp5", "tmp", "p90",
"mac10", "ump45", "ak47", "galil", "famas", "sg552", "m4a1", "aug", "scout", "awp", "g3sg1",
"sg550", "m249", "vest", "vesthelm", "flash", "hegren", "sgren", "defuser", "nvgs", "shield",
"primammo", "secammo", "km45", "9x19mm", "nighthawk", "228compact", "fiveseven", "12gauge",
"autoshotgun", "mp", "c90", "cv47", "defender", "clarion", "krieg552", "bullpup", "magnum",
"d3au1", "krieg550", "buy", "buyequip", "cl_autobuy", "cl_rebuy", "cl_setautobuy",
"cl_setrebuy", "client_buy_open", "shop"
}
#if defined blockcmds_on
new g_BlockedCommands[][] = {
"radio1", "radio2", "radio3"
}
#endif
// Colors: 0:Simon / 1:Freeday / 2:CT Duel / 3:TT Duel
new const g_Colors[][3] = { {0, 255, 0}, {255, 140, 0}, {0, 0, 255}, {255, 0, 0} }
new Trie:g_CellManagers, g_JailDay, g_PlayerJoin, g_PlayerSpect[33], g_PlayerSimon[33],
g_PlayerWanted, g_PlayerSuperKnife, g_PlayerRevolt, g_PlayerFreeday, g_FreedayAuto,
g_PlayerLast, g_BoxStarted, g_Simon, g_SimonAllowed, g_SimonTalking, g_SimonVoice,
g_RoundStarted, g_RoundEnd, g_Duel, g_DuelA, g_DuelB, g_Buttons[10], g_GameMode = 1,
g_nogamerounds, g_BackToCT = 0, g_Fonarik = 0, g_FreedayAutoAll, can_roll[33],
g_HnsStarted, g_PlayerVoice[33], g_ShopPurchases[33], g_MagicStarted
#if defined roundcontrol_on
#define RC_SOUND (1<<0)
#define RC_MESSAGE (1<<1)
#define RC_SCORE (1<<2)
#define RC_ALL (RC_SOUND|RC_MESSAGE|RC_SCORE)
#define RC_CONTINUE 1
#define RC_SUPERCEDE 2
enum RoundControlEvent { RC_None = 0, RC_Target_Bombed, RC_VIP_Escaped, RC_VIP_Assassinated, RC_Terrorist_Escaped, RC_CTs_PreventEscape,
RC_Escape_Terrorist_Neutralized, RC_Bomb_Defused, RC_CTs_Win, RC_Terrorist_Win, RC_Round_Draw, RC_All_Hostages_Rescued,
RC_Target_Saved, RC_Hostages_Not_Rescued, RC_Terrorist_Not_Escaped, RC_VIP_Not_Escaped, RC_Game_Commencing
}
enum RoundControlWin { WINSTATUS_CT = 1, WINSTATUS_TERRORIST, WINSTATUS_DRAW }
forward RC_CheckWinConditions()
native RC_Commencing()
native RC_RoundEndForce(RoundControlWin:iWinStatus = WINSTATUS_CT,Float:fDelay = 5.0,iFlags = RC_ALL,const szSentence[] = "#Round_Draw",RoundControlEvent:iEventID = RC_None,iScore = 1,bool:bReset = false)
#endif
public plugin_init() {
unregister_forward(FM_Spawn, gp_PrecacheSpawn)
unregister_forward(FM_KeyValue, gp_PrecacheKeyValue)
register_plugin("JailBreak byBarsik", VERSION, "BaRSiK")
register_dictionary("jb_barsik32.txt")
g_MsgStatusText = get_user_msgid("StatusText")
g_MsgStatusIcon = get_user_msgid("StatusIcon")
g_MsgMOTD = get_user_msgid("MOTD")
g_MsgClCorpse = get_user_msgid("ClCorpse")
g_MsgText = get_user_msgid("TextMsg")
g_iMessagesBuyClose = get_user_msgid("BuyClose")
g_iMessagesStatusIcon = get_user_msgid("StatusIcon")
register_message(g_MsgStatusText, "msg_statustext")
register_message(g_MsgStatusIcon, "msg_statusicon")
register_message(g_MsgMOTD, "msg_motd")
register_message(g_MsgClCorpse, "msg_clcorpse")
register_message(g_MsgText, "msg_txtmsg")
register_message(get_user_msgid("SendAudio"), "msg_audio")
register_message(get_user_msgid("Money"), "on_money_change")
#if defined nowpnsprites_on
register_message(get_user_msgid("WeapPickup"), "on_weapon_pickup")
register_message(get_user_msgid("AmmoPickup"), "on_weapon_pickup")
register_message(get_user_msgid("ItemPickup"), "on_weapon_pickup")
#endif
register_event("CurWeapon", "evCurWeapon", "be", "1=1", "2!29")
register_event("CurWeapon", "current_weapon", "be", "1=1", "2=29")
register_event("StatusValue", "player_status", "be", "1=2", "2!0")
register_event("StatusValue", "player_status", "be", "1=1", "2=0")
register_impulse(100, "impulse_100")
RegisterHam(Ham_Touch, "weapon_hegrenade", "player_touchweapon")
RegisterHam(Ham_Touch, "weaponbox", "player_touchweapon")
RegisterHam(Ham_Touch, "armoury_entity", "player_touchweapon")
RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
RegisterHam(Ham_TakeDamage, "player", "player_damage")
RegisterHam(Ham_TraceAttack, "player", "player_attack")
RegisterHam(Ham_TraceAttack, "func_button", "button_attack")
RegisterHam(Ham_Killed, "player", "player_killed", 1)
RegisterHam(Ham_Killed, "player", "player_killed_pre")
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "fw_Knife_PrimaryAttack_Post", 1)
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "fw_Knife_SecondaryAttack_Post", 1)
register_forward(FM_SetClientKeyValue, "FM_SetClientKeyValue_pre")
register_forward(FM_SetClientKeyValue, "set_client_kv")
register_forward(FM_EmitSound, "sound_emit")
register_forward(FM_Voice_SetClientListening, "voice_listening")
register_forward(FM_CmdStart, "player_cmdstart", 1)
register_forward(FM_Touch, "fw_Touch")
register_event("DeathMsg", "DeathMsg", "a")
#if defined grab_on
register_forward(FM_PlayerPreThink, "fm_player_prethink")
p_players_only = register_cvar("gp_players_only", "0")
p_min_dist = register_cvar ("gp_min_dist", "90")
p_throw_force = register_cvar("gp_throw_force", "500")
p_grab_force = register_cvar("gp_grab_force", "8")
p_speed = register_cvar("gp_speed", "5")
p_glow_r = register_cvar("gp_glow_r", "50")
p_glow_g = register_cvar("gp_glow_g", "50")
p_glow_b = register_cvar("gp_glow_b", "50")
p_glow_a = register_cvar("gp_glow_a", "111")
p_glow = register_cvar("gp_glow", "1")
register_clcmd("amx_grab", "force_grab", GRAB_LEVEL, "Grab client & teleport to you.")
register_clcmd("+grab", "grab", GRAB_LEVEL, "bind a key to +grab")
register_clcmd("-grab", "ungrab")
register_clcmd("+push", "push", GRAB_LEVEL, "bind a key to +push")
register_clcmd("-push", "push")
register_clcmd("+pull", "pull", GRAB_LEVEL, "bind a key to +pull")
register_clcmd("-pull", "pull")
#endif
#if defined donate_on
register_clcmd("donate", "donate_hook")
#endif
register_logevent("round_end", 2, "1=Round_End")
register_logevent("round_first", 2, "0=World triggered", "1&Restart_Round_")
register_logevent("round_first", 2, "0=World triggered", "1=Game_Commencing")
register_logevent("round_start", 2, "0=World triggered", "1=Round_Start")
register_clcmd("say /roll", "cmd_roll")
register_clcmd("drop","drop",0,"")
register_clcmd("+simonvoice", "cmd_voiceon")
register_clcmd("-simonvoice", "cmd_voiceoff")
#if defined football_on
RegisterHam(Ham_ObjectCaps, "player", "FwdHamObjectCaps", 1)
register_think(g_szBallName, "FwdThinkBall")
register_touch(g_szBallName, "player", "FwdTouchPlayer")
for(new i; i < sizeof szEntity; i++)
register_touch(g_szBallName, szEntity[i], "FwdTouchWorld")
#endif
#if defined voice_on
register_clcmd("say /voice", "cmd_simon_micr")
#endif
#if defined qasystem_on
register_clcmd("say","on_say")
register_clcmd("say_team","on_say")
#endif
register_clcmd("say /fd", "cmd_freeday")
register_clcmd("say /games", "cmd_simongamesmenu")
register_clcmd("say /menu", "cmd_simonmenu")
register_clcmd("simonmenu", "cmd_simonmenu")
#if defined vipmenu_on
register_clcmd("say /vipmenu", "VIPMenu")
register_clcmd("vipmenu", "VIPMenu")
register_clcmd("say vipmenu", "VIPMenu")
register_clcmd("say_team /vipmenu", "VIPMenu")
register_clcmd("say_team vipmenu", "VIPMenu")
#endif
#if defined hook_on
cvar_hookupd = register_cvar("jb_hook_update", "0")
register_clcmd("+hook","admin_hook",HOOK_LEVEL)
register_clcmd("-hook","admin_hook_off",HOOK_LEVEL)
#endif
#if defined supermenu_on
register_clcmd("supermenu","supermenu",SUPERVIP_LEVEL)
#endif
#if defined jailmenu_on
register_clcmd("csp_menu", "jailmenu")
#endif
#if defined teammanager_on
register_clcmd("chooseteam", "gamemenu")
register_clcmd("jointeam", "gamemenu")
register_clcmd("joinclass", "gamemenu")
register_message(get_user_msgid("ShowMenu"), "message_ShowMenu")
register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu")
#endif
register_clcmd("say /lr", "cmd_lastrequest")
register_clcmd("say /duel", "cmd_lastrequest")
register_clcmd("say /simon", "cmd_simon")
gp_GlowModels = register_cvar("jb_glowmodels", "0")
gp_SimonSteps = register_cvar("jb_simonsteps", "0")
gp_SuperKnifeMul = register_cvar("jb_superknifemultiplier", "3.0")
gp_BoxMax = register_cvar("jb_boxmax", "6")
gp_RetryTime = register_cvar("jb_retrytime", "10.0")
gp_AutoLastresquest = register_cvar("jb_autolastrequest", "1")
gp_Motd = register_cvar("jb_motd", "0")
gp_TalkMode = register_cvar("jb_talkmode", "2") // 0-alltalk / 1-tt talk / 2-tt no talk
gp_VoiceBlock = register_cvar("jb_blockvoice", "0") // 0-dont block / 1-block voicerecord / 2-block voicerecord except simon
gp_ButtonShoot = register_cvar("jb_buttonshoot", "1") // 0-standard / 1-func_button shoots!
gp_NoGame = register_cvar("jb_nogamerounds", "6")
gp_GameHP = register_cvar("jb_hpmultiplier", "180")
gp_Effects= register_cvar("jb_game_effects", "2")
cvar_minpl = register_cvar("jb_min_players_to_respawn", "2")
cvar_autogamefd = register_cvar("jb_autofd_after_game", "1")
cvar_fdlen = register_cvar("jbb_fd_time", "120")
g_MaxClients = get_global_int(GL_maxClients)
for(new i = 0; i < sizeof(g_HudSync); i++)
g_HudSync[i][_hudsync] = CreateHudSyncObj()
g_SyncHud = CreateHudSyncObj()
register_menu("MenuT", keysmenu, "ShopT")
register_menu("MenuCT", keysmenu, "ShopCT")
T_item_1 = register_cvar("jbb_vantuscost", "30")
T_item_2 = register_cvar("jbb_katanacost", "130")
T_item_3 = register_cvar("jbb_electrocost", "70")
T_item_4 = register_cvar("jbb_speedcost", "100")
T_item_5 = register_cvar("jbb_grenadecost", "40")
T_item_6 = register_cvar("jbb_inviscost", "140")
T_item_7 = register_cvar("jbb_gravitycost", "120")
T_item_8 = register_cvar("jbb_weaponcost", "100")
T_item_9 = register_cvar("jbb_freedaycost", "170")
CT_item_1 = register_cvar("jbb_electrocostCT", "40")
CT_item_3 = register_cvar("jbb_extracost", "120")
register_event("CurWeapon", "WeaponChange", "be", "1=1")
register_forward(FM_EmitSound, "fw_EmitSound")
for(new iCommands = 0; iCommands < sizeof g_ShopCommands; iCommands++)
register_clcmd(g_ShopCommands[iCommands], "clcmd_shop")
#if defined blockcmds_on
for(new iCommands = 0; iCommands < sizeof g_BlockedCommands; iCommands++)
register_clcmd(g_BlockedCommands[iCommands], "clcmd_block")
#endif
setup_buttons()
mxplr = get_maxplayers()
return PLUGIN_CONTINUE
}
public plugin_precache() {
static i, fmodel[128]
formatex(fmodel, charsmax(fmodel), "models/player/%s/%s.mdl", PLAYER_MODEL, PLAYER_MODEL)
precache_model(fmodel)
precache_generic(MUSIC_ZOMBIE)
precache_generic(MUSIC_HNS)
precache_generic(MUSIC_FD)
precache_generic(PREMUSIC_BOX)
precache_generic(PREMUSIC_MAGIC)
BeaconSprite = precache_model(SPRITE_BEACON)
ExplodeSprite = precache_model("sprites/ex.spr")
#if defined hook_on
precache_sound(SOUND_HOOK)
Sbeam = precache_model(SPRITE_HOOK)
#endif
#if defined football_on
precache_model(BALL_MODEL)
precache_sound(SOUND_BALL_BOUNCE)
g_iIconBall = precache_model(SPRITE_FOOTBALL_ICON)
#endif
for(i = 0; i < sizeof(_FistModels); i++)
precache_model(_FistModels[i])
#if defined boxwpnmodels_on
for(i = 0; i < sizeof(_BoxModels); i++)
precache_model(_BoxModels[i])
#endif
for(i = 0; i < sizeof(_SuperGun); i++)
precache_model(_SuperGun[i])
for(i = 0; i < sizeof(_CTGun); i++)
precache_model(_CTGun[i])
for(i = 0; i < sizeof(_MagicGun); i++)
precache_model(_MagicGun[i])
for(i = 0; i < sizeof(_FistSounds); i++)
precache_sound(_FistSounds[i])
#if defined rs_on
for(i = 0; i < sizeof roundsound; i++)
precache_generic(roundsound[i])
#endif
precache_sound(SOUND_KNIFEKILL)
precache_sound(SOUND_ERROR)
precache_sound(SOUND_ALIEN)
precache_sound(SOUND_DUEL)
precache_sound(SOUND_BELL)
precache_sound(SOUND_ZOMBIE_BEGIN)
precache_sound("items/gunpickup2.wav")
precache_sound(SOUND_CBAR_WALL)
precache_sound(SOUND_CBAR_MISS)
precache_sound(SOUND_MAGIC_SKILL)
g_CellManagers = TrieCreate()
gp_PrecacheSpawn = register_forward(FM_Spawn, "precache_spawn", 1)
gp_PrecacheKeyValue = register_forward(FM_KeyValue, "precache_keyvalue", 1)
precache_model(KATANA_P_MODEL)
precache_model(KATANA_V_MODEL)
precache_model(ELECTRO_P_MODEL)
precache_model(ELECTRO_V_MODEL)
precache_model(OTVERTKA_P_MODEL)
precache_model(OTVERTKA_V_MODEL)
precache_sound("weapons/katana_deploy.wav")
precache_sound("weapons/katana_hit.wav")
precache_sound("weapons/katana_hitwall.wav")
precache_sound("weapons/katana_slash.wav")
precache_sound("weapons/katana_stab.wav")
precache_sound("extreme-shop/ESlash.wav")
precache_sound("extreme-shop/EConvoca.wav")
precache_sound("extreme-shop/EHitWall.wav")
precache_sound("extreme-shop/EHit2.wav")
precache_sound("extreme-shop/EStab.wav")
}
public plugin_natives() {
register_library("ujbm")
register_native ("get_simon", "_get_simon",0)
register_native ("get_gamemode", "_get_gamemode",0)
register_native ("get_fd", "_get_fd",0)
register_native ("get_wanted", "_get_wanted",0)
register_native ("get_last", "_get_last",0)
}
#if defined nowpnsprites_on
public on_weapon_pickup(msg_id, msg_dest, msg_entity)
return PLUGIN_HANDLED
#endif
public evCurWeapon(id) {
if(!is_user_alive(id))
return
new CsTeams:team = cs_get_user_team(id)
new weapon = get_user_weapon(id)
if(weapon != CSW_KNIFE && team == CS_TEAM_T && (g_GameMode == 3 || g_GameMode == 4)) {
fm_strip_user_weapons(id)
fm_give_item(id, "weapon_knife")
if(g_GameMode == 3) fm_set_user_maxspeed(id, 225.0)
} else if(team == CS_TEAM_CT && weapon != CSW_KNIFE && (g_GameMode == 5 || g_GameMode == 4 || g_GameMode == 8 || g_GameMode == 9)) {
fm_strip_user_weapons(id)
fm_give_item(id, "weapon_knife")
}
}
public _get_simon(iPlugin, iParams)
return g_Simon
public _get_last(iPlugin, iParams)
return g_PlayerLast
public _get_gamemode(iPlugin, iParams)
return g_GameMode
public bool:_get_fd(iPlugin, iParams) {
new id = get_param(1)
if (get_bit(g_PlayerFreeday, id)) return true
return false
}
public bool:_get_wanted(iPlugin, iParams) {
new id = get_param(1)
if (get_bit(g_PlayerWanted, id)) return true
return false
}
public precache_spawn(ent) {
if(is_valid_ent(ent)) {
static szClass[33]
entity_get_string(ent, EV_SZ_classname, szClass, sizeof(szClass))
for(new i = 0; i < sizeof(_RemoveEntities); i++)
if(equal(szClass, _RemoveEntities[i]))
remove_entity(ent)
}
}
public precache_keyvalue(ent, kvd_handle) {
static info[32]
if(!is_valid_ent(ent))
return FMRES_IGNORED
get_kvd(kvd_handle, KV_ClassName, info, charsmax(info))
if(!equal(info, "multi_manager"))
return FMRES_IGNORED
get_kvd(kvd_handle, KV_KeyName, info, charsmax(info))
TrieSetCell(g_CellManagers, info, ent)
return FMRES_IGNORED
}
public client_putinserver(id) {
clear_bit(g_PlayerJoin, id)
clear_bit(g_PlayerSuperKnife, id)
clear_bit(g_PlayerWanted, id)
clear_bit(g_SimonTalking, id)
clear_bit(g_SimonVoice, id)
clear_bit(g_FreedayAuto, id)
g_PlayerSpect[id] = 0
g_PlayerSimon[id] = 0
g_mp3[id] = 1
g_mp3menu[id] = 1
#if defined rs_on
g_ermp3[id] = 1
#endif
can_roll[id] = true
g_money[id] = 0
first_join(id)
#if defined hook_on
remove_hook(id)
#endif
#if defined donate_on
g_delay[id] = 0.0
#endif
}
public client_disconnect(id) {
if(g_Simon == id) {
g_Simon = 0
g_systime = get_systime()
remove_task(TASK_NOSIMON)
set_task(30.0, "task_fd", TASK_NOSIMON)
}
else if(g_PlayerLast == id || (g_Duel && (id == g_DuelA || id == g_DuelB))) {
g_Duel = 0
g_DuelA = 0
g_DuelB = 0
g_PlayerLast = 0
}
#if defined hook_on
remove_hook(id)
#endif
#if defined grab_on
kill_grab(id)
#endif
remove_task(TASK_ROLLCD + id)
remove_task(TASK_FREEENDPL + id)
}
#if defined grab_on
public fm_player_prethink(id) {
if(!is_user_connected(id))
return FMRES_IGNORED
new target
if (client_data[id][0] == -1) {
new Float:orig[3], Float:ret[3], name[32]
get_view_pos(id, orig)
ret = vel_by_aim(id, 9999)
ret[0] += orig[0]
ret[1] += orig[1]
ret[2] += orig[2]
target = traceline(orig, ret, id, ret)
if(0 < target <= mxplr && (cs_get_user_team(id) == CS_TEAM_CT || cs_get_user_team(id) == CS_TEAM_T)) {
if(is_grabbed(target, id)) return FMRES_IGNORED
set_grabbed(id, target)
get_user_name(target, name, 31)
ColorChat(id, GREEN, "[%s]^x01 %L^x04 %s", PREFIX, LANG_SERVER, "JBB_GRAB_YOU", name)
get_user_name(id, name, 31)
ColorChat(target, GREEN, "[%s]^x01 %L^x04 %s", PREFIX, LANG_SERVER, "JBB_GRABBED_YOU", name)
} else if(!get_pcvar_num(p_players_only) && cs_get_user_team(id) == CS_TEAM_CT && is_user_alive(id)) {
new movetype
if(target && pev_valid(target)) {
movetype = pev(target, pev_movetype)
if(movetype != MOVETYPE_WALK && movetype != MOVETYPE_STEP && movetype != MOVETYPE_TOSS)
return FMRES_IGNORED
} else {
target = 0
new ent = engfunc(EngFunc_FindEntityInSphere, -1, ret, 12.0)
while(!target && ent > 0) {
movetype = pev(ent, pev_movetype)
if((movetype == MOVETYPE_WALK || movetype == MOVETYPE_STEP || movetype == MOVETYPE_TOSS) && ent != id)
target = ent
ent = engfunc(EngFunc_FindEntityInSphere, ent, ret, 12.0)
}
}
if(target) {
if(is_grabbed(target, id)) return FMRES_IGNORED
set_grabbed(id, target)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_GRAB_WPN")
}
}
}
target = client_data[id][0]
if(target > 0) {
if(!pev_valid(target) || (pev(target, pev_health) < 1 && pev(target, pev_max_health))) {
unset_grabbed(id)
return FMRES_IGNORED
}
new cdf = client_data[id][3]
if (cdf & (1<<1))
do_pull(id)
else if (cdf & (1<<0))
do_push(id)
if(target > mxplr) grab_think(id)
}
target = client_data[id][1]
if(target > 0) grab_think(target)
return FMRES_IGNORED
}
public grab_think(id) {
new target = client_data[id][0]
if(pev(target, pev_movetype) == MOVETYPE_FLY && !(pev(target, pev_button) & IN_JUMP)) client_cmd(target, "+jump; wait; -jump")
new Float:tmpvec[3], Float:tmpvec2[3], Float:torig[3], Float:tvel[3]
get_view_pos(id, tmpvec)
tmpvec2 = vel_by_aim(id, client_data[id][2])
torig = get_target_origin_f(target)
new force = get_pcvar_num(p_grab_force)
tvel[0] = ((tmpvec[0] + tmpvec2[0]) - torig[0]) * force
tvel[1] = ((tmpvec[1] + tmpvec2[1]) - torig[1]) * force
tvel[2] = ((tmpvec[2] + tmpvec2[2]) - torig[2]) * force
set_pev(target, pev_velocity, tvel)
}
stock Float:get_target_origin_f(id) {
new Float:orig[3]
pev(id, pev_origin, orig)
if(id > mxplr) {
new Float:mins[3], Float:maxs[3]
pev(id, pev_mins, mins)
pev(id, pev_maxs, maxs)
if(!mins[2]) orig[2] += maxs[2] / 2
}
return orig
}
public grab(id) {
if(!(get_user_flags(id) & GRAB_LEVEL && is_user_alive(id) && g_GameMode <= 1)) return PLUGIN_HANDLED
if (!client_data[id][0]) client_data[id][0] = -1
return PLUGIN_HANDLED
}
public ungrab(id) {
unset_grabbed(id)
return PLUGIN_HANDLED
}
public unset_grabbed(id) {
new target = client_data[id][0]
if(target > 0 && pev_valid(target)) {
set_pev(target, pev_renderfx, kRenderFxNone)
set_pev(target, pev_rendercolor, {255.0, 255.0, 255.0})
set_pev(target, pev_rendermode, kRenderNormal)
set_pev(target, pev_renderamt, 16.0)
if(0 < target <= mxplr)
client_data[target][1] = 0
}
client_data[id][0] = 0
}
public set_grabbed(id, target) {
if(get_pcvar_num(p_glow)) {
new Float:color[3]
color[0] = get_pcvar_float(p_glow_r)
color[1] = get_pcvar_float(p_glow_g)
color[2] = get_pcvar_float(p_glow_b)
set_pev(target, pev_renderfx, kRenderFxGlowShell)
set_pev(target, pev_rendercolor, color)
set_pev(target, pev_rendermode, kRenderTransColor)
set_pev(target, pev_renderamt, get_pcvar_float(p_glow_a))
}
if(0 < target <= mxplr)
client_data[target][1] = id
client_data[id][3] = 0
client_data[id][0] = target
new Float:torig[3], Float:orig[3]
pev(target, pev_origin, torig)
pev(id, pev_origin, orig)
client_data[id][2] = floatround(get_distance_f(torig, orig))
if(client_data[id][2] < get_pcvar_num(p_min_dist)) client_data[id][2] = get_pcvar_num(p_min_dist)
}
public push(id) {
client_data[id][3] ^= (1<<0)
return PLUGIN_HANDLED
}
public pull(id) {
client_data[id][3] ^= (1<<1)
return PLUGIN_HANDLED
}
public do_push(id)
if(client_data[id][2] < 9999)
client_data[id][2] += get_pcvar_num(p_speed)
public do_pull(id) {
new mindist = get_pcvar_num(p_min_dist)
new len = client_data[id][2]
if(len > mindist) {
len -= get_pcvar_num(p_speed)
if(len < mindist) len = mindist
client_data[id][2] = len
}
}
public force_grab(id) {
if(~get_user_flags(id) & GRAB_LEVEL) return PLUGIN_HANDLED
new arg[33]
read_argv(1, arg, 32)
new targetid = cmd_target(id, arg, 1)
if(is_grabbed(targetid, id)) return PLUGIN_HANDLED
if(!is_user_alive(targetid)) return PLUGIN_HANDLED
new Float:tmpvec[3], Float:orig[3], Float:torig[3], Float:trace_ret[3]
new bool:safe = false, i
get_view_pos(id, orig)
tmpvec = vel_by_aim(id, get_pcvar_num(p_min_dist))
for(new j = 1; j < 11 && !safe; j++) {
torig[0] = orig[0] + tmpvec[i] * j
torig[1] = orig[1] + tmpvec[i] * j
torig[2] = orig[2] + tmpvec[i] * j
traceline(tmpvec, torig, id, trace_ret)
if(get_distance_f(trace_ret, torig)) break
engfunc(EngFunc_TraceHull, torig, torig, 0, HULL_HUMAN, 0, 0)
if (!get_tr2(0, TR_StartSolid) && !get_tr2(0, TR_AllSolid) && get_tr2(0, TR_InOpen))
safe = true
}
pev(id, pev_origin, orig)
new try[3]
orig[2] += 2
while(try[2] < 3 && !safe) {
for(i = 0; i < 3; i++) switch(try[i]) {
case 0 : torig[i] = orig[i] + (i == 2 ? 80 : 40)
case 1 : torig[i] = orig[i]
case 2 : torig[i] = orig[i] - (i == 2 ? 80 : 40)
}
traceline(tmpvec, torig, id, trace_ret)
engfunc(EngFunc_TraceHull, torig, torig, 0, HULL_HUMAN, 0, 0)
if (!get_tr2(0, TR_StartSolid) && !get_tr2(0, TR_AllSolid) && get_tr2(0, TR_InOpen) && !get_distance_f(trace_ret, torig)) safe = true
try[0]++
if(try[0] == 3) {
try[0] = 0
try[1]++
if(try[1] == 3) {
try[1] = 0
try[2]++
}
}
}
if(safe) {
set_pev(targetid, pev_origin, torig)
set_grabbed(id, targetid)
}
else ColorChat(id, GREEN, "[%s]^x01 %L", LANG_SERVER, "JBB_GRAB_NOT")
return PLUGIN_HANDLED
}
public is_grabbed(target, grabber) {
for(new i = 1; i <= mxplr; i++)
if(client_data[i][0] == target) {
ColorChat(grabber, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_GRAB_ALREADY")
unset_grabbed(grabber)
return true
}
return false
}
public kill_grab(id) {
if(client_data[id][0])
unset_grabbed(id)
else if(client_data[id][1])
unset_grabbed(client_data[id][1])
}
stock traceline(const Float:vStart[3], const Float:vEnd[3], const pIgnore, Float:vHitPos[3]) {
engfunc(EngFunc_TraceLine, vStart, vEnd, 0, pIgnore, 0)
get_tr2(0, TR_vecEndPos, vHitPos)
return get_tr2(0, TR_pHit)
}
stock get_view_pos(const id, Float:vViewPos[3]) {
new Float:vOfs[3]
pev(id, pev_origin, vViewPos)
pev(id, pev_view_ofs, vOfs)
vViewPos[0] += vOfs[0]
vViewPos[1] += vOfs[1]
vViewPos[2] += vOfs[2]
}
stock Float:vel_by_aim(id, speed = 1) {
new Float:v1[3], Float:vBlah[3]
pev(id, pev_v_angle, v1)
engfunc(EngFunc_AngleVectors, v1, v1, vBlah, vBlah)
v1[0] *= speed
v1[1] *= speed
v1[2] *= speed
return v1
}
#endif
public DeathMsg() {
new victim = read_data(2)
#if defined grab_on
kill_grab(victim)
#endif
#if defined reasons_on
new killer = read_data(1)
if (get_user_team(killer) == 2 && get_user_team(victim) == 1) {
g_victim_r[killer] = victim
new lang[128]
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_REASON_MENU")
new menu = menu_create(lang, "deathmsg_handler")
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_REASON1")
menu_additem(menu, lang, "1", 0)
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_REASON2")
menu_additem(menu, lang, "2", 0)
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_REASON3")
menu_additem(menu, lang, "3", 0)
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_REASON4")
menu_additem(menu, lang, "4", 0)
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_REASON5")
menu_additem(menu, lang, "5", 0)
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_REASON6")
menu_additem(menu, lang, "6", 0)
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_REASON7")
menu_additem(menu, lang, "7", 0)
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, lang)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
if(g_GameMode <= 1) menu_display(killer, menu, 0)
}
#endif
}
#if defined reasons_on
public deathmsg_handler(id, menu, item) {
if(item < 0 || g_GameMode > 1) return PLUGIN_CONTINUE
new cmd[3], access, callback
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)
new key = str_to_num(cmd)
new reason[12]
switch (key) {
case 1: reason = "JBB_REASON1"
case 2: reason = "JBB_REASON2"
case 3: reason = "JBB_REASON3"
case 4: reason = "JBB_REASON4"
case 5: reason = "JBB_REASON5"
case 6: reason = "JBB_REASON6"
case 7: {
reason = "JBB_REASON7"
set_bit(g_FreedayAuto, g_victim_r[id])
}
}
static kname[32], vname[32]
get_user_name(id, kname, charsmax(kname))
get_user_name(g_victim_r[id], vname, charsmax(vname))
replace_all(reason, charsmax(reason), "\y", "")
replace_all(reason, charsmax(reason), "\d", "")
replace_all(reason, charsmax(reason), "\w", "")
replace_all(reason, charsmax(reason), "\r", "")
ColorChat(0, GREEN, "[%s]^x01 %L ^x04^"%L^"", PREFIX, LANG_SERVER, "JBB_REASON_TEXT", kname, vname, LANG_SERVER, reason)
return PLUGIN_HANDLED
}
#endif
public client_PostThink(id) {
if(id != g_Simon || !gc_SimonSteps || !is_user_alive(id) || !(entity_get_int(id, EV_INT_flags) & FL_ONGROUND) || entity_get_int(id, EV_ENT_groundentity))
return PLUGIN_CONTINUE
static Float:origin[3]
static Float:last[3]
entity_get_vector(id, EV_VEC_origin, origin)
if(get_distance_f(origin, last) < 32.0) {
return PLUGIN_CONTINUE
}
vec_copy(origin, last)
if(entity_get_int(id, EV_INT_bInDuck)) origin[2] -= 18.0
else origin[2] -= 36.0
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, {0,0,0}, 0)
write_byte(TE_WORLDDECAL)
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2]))
write_byte(105)
message_end()
return PLUGIN_CONTINUE
}
public msg_statustext(msgid, dest, id)
return PLUGIN_HANDLED
public msg_statusicon(msgid, dest, id) {
static icon[5]
get_msg_arg_string(2, icon, charsmax(icon))
if(icon[0] == 'b' && icon[2] == 'y' && icon[3] == 'z') {
set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0))
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public msg_motd(msgid, dest, id) {
if(get_pcvar_num(gp_Motd))
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public msg_txtmsg(msgId, msgDest, msgEntity) {
static msg[32]
get_msg_arg_string(2, msg, charsmax(msg))
if(equal(msg, "#Terrorists_Win")) {
client_print(0, print_center, "%L", LANG_SERVER, "WIN_PRISONERS")
return PLUGIN_HANDLED
} else if(equal(msg, "#CTs_Win")) {
client_print(0, print_center, "%L", LANG_SERVER, "WIN_GUARDS")
return PLUGIN_HANDLED
} else if(equal(msg, "#Game_Commencing") || equal(msg, "#Game_will_restart_in") || equal(msg, "#Game_teammate_attack") || equal(msg, "#Killed_Teammate") || equal(msg, "#Fire_in_the_hole"))
return PLUGIN_HANDLED
if(get_msg_args() != 5 || get_msg_argtype(3) != ARG_STRING || get_msg_argtype(5) != ARG_STRING)
return PLUGIN_CONTINUE
new arg3[16]
get_msg_arg_string(3, arg3, 15)
if(!equal(arg3, "#Game_radio"))
return PLUGIN_CONTINUE
new arg5[20]
get_msg_arg_string(5, arg5, 19)
if(equal(arg5, "#Fire_in_the_hole"))
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public msg_audio() {
if(get_msg_args() != 3 || get_msg_argtype(2) != ARG_STRING)
return PLUGIN_CONTINUE
new arg2[20]
get_msg_arg_string(2, arg2, 19)
if(equal(arg2[1], "!MRAD_FIREINHOLE"))
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public msg_clcorpse(msgid, dest, id)
return PLUGIN_HANDLED
public current_weapon(id) {
if(!is_user_alive(id))
return PLUGIN_CONTINUE
if(get_user_weapon(id) != CSW_KNIFE)
return PLUGIN_CONTINUE
if(g_GameMode == 4 && g_MagicStarted) {
set_pev(id, pev_viewmodel2, _MagicGun[1])
set_pev(id, pev_weaponmodel2, _MagicGun[0])
return PLUGIN_CONTINUE
}
if(g_DuelA == id || g_DuelB == id) {
set_pev(id, pev_viewmodel2, _BoxModels[1])
set_pev(id, pev_weaponmodel2, _BoxModels[0])
return PLUGIN_CONTINUE
}
if(get_bit(g_PlayerSuperKnife, id)) {
set_pev(id, pev_viewmodel2, _SuperGun[1])
set_pev(id, pev_weaponmodel2, _SuperGun[0])
} else if (cs_get_user_team(id) == CS_TEAM_T) {
#if defined boxwpnmodels_on
if(g_BoxStarted) {
set_pev(id, pev_viewmodel2, _BoxModels[1])
set_pev(id, pev_weaponmodel2, _BoxModels[0])
} else {
set_pev(id, pev_viewmodel2, _FistModels[1])
set_pev(id, pev_weaponmodel2, _FistModels[0])
}
#else
set_pev(id, pev_viewmodel2, _FistModels[1])
set_pev(id, pev_weaponmodel2, _FistModels[0])
#endif
} else if (cs_get_user_team(id) == CS_TEAM_CT) {
set_pev(id, pev_viewmodel2, _CTGun[1])
set_pev(id, pev_weaponmodel2, _CTGun[0])
}
return PLUGIN_CONTINUE
}
public player_status(id) {
static type, player, CsTeams:team, name[32], health
type = read_data(1)
player = read_data(2)
switch(type) {
case(1): ClearSyncHud(id, g_HudSync[1][_hudsync])
case(2): {
if(!is_user_connected(player))
return PLUGIN_HANDLED
team = cs_get_user_team(player)
if((team != CS_TEAM_T) && (team != CS_TEAM_CT))
return PLUGIN_HANDLED
health = get_user_health(player)
get_user_name(player, name, charsmax(name))
if(player == g_Simon) player_hudmessage(id, 4, 2.0, {0, 255, 0}, "%L", LANG_SERVER, "JBB_SIMON_STATUS", name)
else player_hudmessage(id, 4, 2.0, {0, 255, 0}, "%L", LANG_SERVER, (team == CS_TEAM_T) ? "UJBM_PRISONER_STATUS" : "UJBM_GUARD_STATUS", name, health)
}
}
return PLUGIN_HANDLED
}
public impulse_100(id) {
if(!get_bit(g_Fonarik,id))
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public player_spawn(id) {
static CsTeams:team
if(!is_user_connected(id))
return HAM_IGNORED
set_pdata_float(id, m_fNextHudTextArgsGameTime, get_gametime() + 999999.0)
player_strip_weapons(id)
if(g_RoundEnd) {
g_RoundEnd = 0
g_JailDay++
}
if(g_GameMode > 1 && g_GameMode != 100)
user_silentkill(id)
remove_task(TASK_FREEENDPL + id)
g_Otvertka[id] = false
g_Katana[id] = false
g_Electro[id] = false
g_speed[id] = false
g_HasWeapon[id] = false
#if defined roulette_on
g_has_revolver[id] = false
#endif
#if defined voice_on
if(g_PlayerVoice[id] > 0) g_PlayerVoice[id]--
#endif
#if defined donate_on
g_delay[id] = 0.0
#endif
cs_set_user_nvg (id, false)
g_magic_color[id] = 0
g_ShopPurchases[id] = 0
fm_give_item(id, "weapon_knife")
remove_task(id + TASK_BEACON)
remove_task(TASK_ROLLCD + id)
roll_reset(id)
fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
clear_bit(g_PlayerWanted, id)
clear_bit(g_PlayerSuperKnife, id)
team = cs_get_user_team(id)
switch(team) {
case(CS_TEAM_T): {
g_PlayerLast = 0
jb_set_user_model(id, PLAYER_MODEL)
entity_set_int(id, EV_INT_body, 2)
if (g_GameMode == 0)
entity_set_int(id, EV_INT_skin, 3)
else if(get_bit(g_FreedayAuto, id)) {
freeday_set(0, id)
if (g_mp3[id]) client_cmd(id,"mp3 play %s", MUSIC_FD)
clear_bit(g_FreedayAuto, id)
get_user_name(id, nick, 63)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "UJBM_PRISONER_HASFREEDAY", nick)
}
else entity_set_int(id, EV_INT_skin, random_num(0, 2))
cs_set_user_armor(id, 0, CS_ARMOR_NONE)
}
case(CS_TEAM_CT): {
g_PlayerSimon[id]++
entity_set_int(id, EV_INT_body, 3)
cs_set_user_armor(id, 50, CS_ARMOR_VESTHELM)
}
}
if (g_GameMode == 5) {
if (cs_get_user_team(id) == CS_TEAM_CT){
entity_set_int(id, EV_INT_body, 2)
entity_set_int(id, EV_INT_skin, random_num(0, 2))
set_bit(g_BackToCT, id)
cs_set_user_team2(id, CS_TEAM_T)
}
new j = 0
fm_strip_user_weapons(id)
j = random_num(0, sizeof(_WeaponsFree) - 1)
fm_give_item(id, "weapon_knife")
fm_give_item(id, _WeaponsFree[j])
cs_set_user_bpammo(id, _WeaponsFreeCSW[j], 1024)
}
return HAM_IGNORED
}
public task_inviz()
fm_set_user_rendering(g_Simon, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
public player_damage(victim, ent, attacker, Float:damage, bits) {
#if defined grab_on
if(bits & DMG_FALL && client_data[victim][1])
return HAM_SUPERCEDE
#endif
if (!is_user_connected(attacker) || victim == attacker || !is_user_connected(victim))
return HAM_IGNORED
if(g_RoundEnd)
return HAM_SUPERCEDE
static CsTeams:ateam, CsTeams:vteam
new armor, Float:newdamage
ateam = cs_get_user_team(attacker)
vteam = cs_get_user_team(victim)
armor = get_user_armor(victim)
newdamage = damage
if(ateam == CS_TEAM_T && vteam == CS_TEAM_T && !g_BoxStarted && IsGrenade(ent))
return HAM_SUPERCEDE
if(task_exists(attacker + TASK_INVISPL)) {
fm_set_user_rendering(attacker, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
ColorChat(attacker, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "INVIS_END")
remove_task(attacker + TASK_INVISPL)
}
if (get_user_weapon(attacker) == CSW_KNIFE && !IsGrenade(ent)) {
if(g_Katana[attacker]) newdamage = damage*5.0
else if(g_Electro[attacker]) newdamage = damage*3.0
else if(g_Otvertka[attacker]) newdamage = damage*1.7
}
switch(g_GameMode) {
case(2,9): {
if(cs_get_user_team(victim) == CS_TEAM_CT)
return HAM_SUPERCEDE
}
case(4): return HAM_SUPERCEDE
case(5): {
if(g_Simon == attacker) {
fm_set_user_rendering(attacker, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
remove_task(TASK_INVIS)
set_task(3.1, "task_inviz", TASK_INVIS)
}
}
}
switch(g_Duel) {
case(0): {
if(attacker == ent && get_user_weapon(attacker) == CSW_KNIFE && get_bit(g_PlayerSuperKnife, attacker))
newdamage = damage * gc_SuperKnifeMul
}
case(2): {
if(attacker != g_PlayerLast)
return HAM_SUPERCEDE
}
default: {
if((victim == g_DuelA && attacker == g_DuelB) || (victim == g_DuelB && attacker == g_DuelA))
return HAM_IGNORED
return HAM_SUPERCEDE
}
}
if(newdamage > armor) {
cs_set_user_armor(victim, 0, CS_ARMOR_NONE)
SetHamParamFloat(4, newdamage - armor)
return HAM_OVERRIDE
} else {
cs_set_user_armor(victim, armor - floatround(newdamage, floatround_floor), CS_ARMOR_VESTHELM)
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
public player_attack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits) {
static CsTeams:vteam, CsTeams:ateam
if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
return HAM_IGNORED
if(g_RoundEnd)
return HAM_SUPERCEDE
vteam = cs_get_user_team(victim)
ateam = cs_get_user_team(attacker)
if(ateam == CS_TEAM_CT && vteam == CS_TEAM_CT && g_GameMode != 4)
return HAM_SUPERCEDE
switch(g_Duel) {
case(0): {
if(ateam == CS_TEAM_CT && vteam == CS_TEAM_T) {
if(get_bit(g_PlayerRevolt, victim)) {
clear_bit(g_PlayerRevolt, victim)
hud_status(0)
}
return HAM_IGNORED
}
}
case(2): {
if(attacker != g_PlayerLast)
return HAM_SUPERCEDE
}
default: {
if((victim == g_DuelA && attacker == g_DuelB) || (victim == g_DuelB && attacker == g_DuelA))
return HAM_IGNORED
return HAM_SUPERCEDE
}
}
if(ateam == CS_TEAM_T && vteam == CS_TEAM_CT &&g_GameMode <=1) {
if(!g_PlayerRevolt)
revolt_start()
set_bit(g_PlayerRevolt, attacker)
clear_bit(g_PlayerFreeday, attacker)
}
if(ateam == CS_TEAM_T && vteam == CS_TEAM_T && !g_BoxStarted)
return HAM_SUPERCEDE
if(ateam == CS_TEAM_T && vteam == CS_TEAM_CT && (g_GameMode == 2 || g_GameMode == 9))
return HAM_SUPERCEDE
return HAM_IGNORED
}
public button_attack(button, id, Float:damage, Float:direction[3], tracehandle, damagebits) {
if(is_valid_ent(button) && gc_ButtonShoot) {
ExecuteHamB(Ham_Use, button, id, 0, 2, 1.0)
entity_set_float(button, EV_FL_frame, 0.0)
}
return HAM_IGNORED
}
public task_last() {
new Players[32]
new playerCount, i, TAlive
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (is_user_connected(Players[i])) {
remove_hook(Players[i])
if (cs_get_user_team(Players[i]) == CS_TEAM_T)
TAlive++
}
}
if (TAlive <= get_pcvar_num(cvar_minpl)) lastdeny = 1
if (TAlive == 1 && (g_GameMode <= 1 || g_GameMode == 99) && !g_RoundEnd) {
set_lights("#OFF")
client_cmd(0, "mp3 stop")
g_GameMode = 99
g_BoxStarted = 0
for (i=0; i<playerCount; i++) {
g_speed[Players[i]] = false
fm_set_user_maxspeed(Players[i], 250.0)
fm_set_user_gravity(Players[i], 1.0)
if (cs_get_user_team(Players[i]) == CS_TEAM_T) {
g_PlayerLast = Players[i]
if (get_pcvar_num(gp_AutoLastresquest)) cmd_lastrequest(Players[i])
break
}
}
} else if (TAlive == 1 && (g_GameMode == 2 || g_GameMode == 4 || g_GameMode == 9)) {
set_lights("#OFF")
for (i=0; i<playerCount; i++) {
if (cs_get_user_team(Players[i]) == CS_TEAM_T) {
jb_set_money(Players[i], jb_get_money(Players[i]) + 70)
#if defined roundcontrol_on
RC_RoundEndForce(WINSTATUS_TERRORIST)
#else
user_kill(Players[i], 1)
#endif
new nick[64]
get_user_name(Players[i], nick, 63)
ColorChat(0, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "UJBM_WON_GAME", nick)
break
}
}
}
return PLUGIN_CONTINUE
}
public client_death(killer, victim, wpnindex, hitplace, TK) {
if((wpnindex == CSW_KNIFE) && is_user_alive(killer))
engfunc(EngFunc_EmitSound, killer, CHAN_VOICE, SOUND_KNIFEKILL, 1.0, ATTN_NORM, 0, PITCH_NORM)
}
public player_killed(victim, attacker, shouldgib) {
if(!is_user_connected(victim))
return HAM_IGNORED
static CsTeams:vteam, CsTeams:kteam
if(!(0 < attacker <= g_MaxClients) || !is_user_connected(attacker)) kteam = CS_TEAM_UNASSIGNED
else kteam = cs_get_user_team(attacker)
vteam = cs_get_user_team(victim)
remove_task(victim + TASK_BEACON)
remove_task(attacker + TASK_BEACON)
remove_task(TASK_FREEENDPL + attacker)
remove_task(TASK_FREEENDPL + victim)
remove_task(TASK_LASTPLAYER)
switch (g_GameMode) {
case 5: if (victim == g_Simon) jb_set_money(attacker, jb_get_money(attacker) + 70)
default: {
if(g_Simon == victim) {
g_Simon = 0
g_systime = get_systime()
remove_task(TASK_NOSIMON)
set_task(30.0, "task_fd", TASK_NOSIMON)
ClearSyncHud(0, g_HudSync[2][_hudsync])
hud_status(0)
if (vteam == CS_TEAM_CT && kteam == CS_TEAM_T && is_user_connected(attacker))
jb_set_money(attacker, jb_get_money(attacker) + 20)
}
else if (vteam == CS_TEAM_CT && kteam == CS_TEAM_T && is_user_connected(attacker))
jb_set_money(attacker, jb_get_money(attacker) + 10)
else if (vteam == CS_TEAM_T && kteam == CS_TEAM_T && is_user_connected(attacker)) {
new money = jb_get_money(attacker)
if(money >= 5) jb_set_money(attacker, money - 5)
else jb_set_money(attacker, 0)
}
else if (vteam == CS_TEAM_T && kteam == CS_TEAM_CT && is_user_connected(attacker))
jb_set_money(attacker, jb_get_money(attacker) + 5)
if (get_bit(g_PlayerSuperKnife,victim)) clear_bit(g_PlayerSuperKnife, victim)
switch(g_Duel) {
case(0): {
switch(vteam) {
case(CS_TEAM_CT): {
if(kteam == CS_TEAM_T && !get_bit(g_PlayerWanted, attacker)) {
set_bit(g_PlayerWanted, attacker)
entity_set_int(attacker, EV_INT_skin, 4)
}
}
case(CS_TEAM_T): {
clear_bit(g_PlayerRevolt, victim)
clear_bit(g_PlayerWanted, victim)
}
}
}
default: {
if(g_Duel != 2 && (victim == g_DuelA || victim == g_DuelB)) {
fm_set_user_rendering(g_DuelA, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
fm_set_user_rendering(g_DuelB, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
g_Duel = 0
g_DuelA = 0
g_DuelB = 0
g_PlayerLast = 0
}
}
}
hud_status(0)
}
}
set_task(1.0, "task_last", TASK_LASTPLAYER)
return HAM_IGNORED
}
public set_client_kv(id, const info[], const key[]) {
if(equal(key, "model"))
return FMRES_SUPERCEDE
return FMRES_IGNORED
}
public sound_emit(id, channel, sample[]) {
if(is_user_alive(id)) {
if (equal(sample, "weapons/knife_", 14))
switch(sample[17]) {
case('b'): emit_sound(id, CHAN_WEAPON, _FistSounds[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
case('w'): {
if (get_bit(g_PlayerSuperKnife,id))
emit_sound(id, CHAN_WEAPON, SOUND_CBAR_WALL, 1.0, ATTN_NORM, 0, PITCH_LOW)
else
emit_sound(id, CHAN_WEAPON, _FistSounds[1], 1.0, ATTN_NORM, 0, PITCH_LOW)
}
case('1', '2'): emit_sound(id, CHAN_WEAPON, _FistSounds[2], random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
case('s'): {
if (get_bit(g_PlayerSuperKnife,id))
emit_sound(id, CHAN_WEAPON, SOUND_CBAR_MISS, 1.0, ATTN_NORM, 0, PITCH_NORM)
}
}
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public voice_listening(receiver, sender, bool:listen) {
if((receiver == sender))
return FMRES_IGNORED
if(get_user_flags(sender) & (ADMIN_LEVEL | VIP_LEVEL)) {
engfunc(EngFunc_SetClientListening, receiver, sender, true)
return FMRES_SUPERCEDE
}
switch(gc_VoiceBlock) {
case(2): {
if(sender != g_Simon && !get_bit(g_SimonVoice, sender)) {
engfunc(EngFunc_SetClientListening, receiver, sender, false)
return FMRES_SUPERCEDE
}
}
case(1): {
if(!get_bit(g_SimonVoice, sender) && gc_VoiceBlock) {
engfunc(EngFunc_SetClientListening, receiver, sender, false)
return FMRES_SUPERCEDE
}
}
}
if(!is_user_alive(sender)) {
engfunc(EngFunc_SetClientListening, receiver, sender, false)
return FMRES_SUPERCEDE
}
if(sender == g_Simon) {
engfunc(EngFunc_SetClientListening, receiver, sender, true)
return FMRES_SUPERCEDE
}
if(g_PlayerVoice[sender] > 0) {
engfunc(EngFunc_SetClientListening, receiver, sender, true)
return FMRES_SUPERCEDE
}
listen = true
if(g_SimonTalking && (sender != g_Simon)) listen = false
else {
static CsTeams:steam
steam = cs_get_user_team(sender)
switch(gc_TalkMode) {
case(2): listen = (steam == CS_TEAM_CT)
case(1): listen = (steam == CS_TEAM_CT || steam == CS_TEAM_T)
}
}
engfunc(EngFunc_SetClientListening, receiver, sender, listen)
return FMRES_SUPERCEDE
}
public player_cmdstart(id, uc, random) {
if(!is_user_alive(id))
return FMRES_IGNORED
if(g_Duel > 3) if (_Duel[g_Duel - 4][_csw] != CSW_M249) cs_set_user_bpammo(id, _Duel[g_Duel - 4][_csw], 1)
#if defined vipdoublejump_on
static can_jump
if(get_user_flags(id) & VIP_LEVEL && g_GameMode != 3) {
new button = get_uc(uc, UC_Buttons)
new oldbutton = pev(id, pev_oldbuttons)
new flags = pev(id, pev_flags)
if((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && can_jump & (1<<id)) {
can_jump &= ~(1<<id)
new Float:velocity[3]
pev(id, pev_velocity, velocity)
velocity[2] = random_float(265.0,285.0)
set_pev(id, pev_velocity, velocity)
}
else if(flags & FL_ONGROUND) can_jump |= (1<<id)
}
#endif
return FMRES_IGNORED
}
public round_first() {
g_JailDay = 0
for(new i = 1; i <= g_MaxClients; i++) {
g_PlayerSimon[i] = 0
}
set_cvar_num("sv_alltalk", 1)
#if defined roundcontrol_on
set_cvar_num("mp_roundtime", 500)
#else
set_cvar_num("mp_roundtime", 9)
#endif
set_cvar_num("mp_limitteams", 0)
set_cvar_num("mp_autoteambalance", 0)
set_cvar_num("mp_tkpunish", 0)
set_cvar_num("mp_friendlyfire", 1)
round_end()
g_GameMode = 1
}
public round_end() {
jb_unblockweapons()
g_PlayerRevolt = 0
g_PlayerFreeday = 0
g_PlayerLast = 0
g_BoxStarted = 0
g_Simon = 0
g_SimonAllowed = 0
g_RoundStarted = 0
g_RoundEnd = 1
g_Duel = 0
g_DuelA = 0
g_DuelB = 0
g_Fonarik = 0
g_systime = 0
g_answered = true
remove_task(TASK_FREEDAY)
remove_task(TASK_ROUNDEND)
remove_task(TASK_GIVEITEMS)
remove_task(TASK_NOSIMON)
remove_task(TASK_ALLOWSIMON)
new i
for(i=0; i < sizeof(g_HudSync); i++)
ClearSyncHud(0, g_HudSync[i][_hudsync])
new Players[32], playerCount
get_players(Players, playerCount, "c")
#if defined rs_on
new rsrand = random_num(0, charsmax(roundsound))
#endif
client_cmd(0, "mp3 stop")
for (i=0; i<playerCount; i++) {
if (is_user_connected(Players[i])) {
remove_task(TASK_FREEENDPL + Players[i])
if (g_GameMode > 1) {
if (get_bit(g_BackToCT, Players[i])) cs_set_user_team2(Players[i], CS_TEAM_CT)
clear_bit(g_BackToCT, Players[i])
jb_set_user_model(Players[i], PLAYER_MODEL)
fm_set_user_maxspeed(Players[i], 250.0)
menu_cancel(Players[i])
player_strip_weapons(Players[i])
fm_give_item(Players[i], "weapon_knife")
}
#if defined rs_on
if(g_ermp3[Players[i]])
client_cmd(Players[i], "mp3 play %s", roundsound[rsrand])
#endif
}
}
if (g_GameMode > 1) {
set_lights("#OFF")
remove_task(TASK_INVIS)
g_BackToCT = 0
}
g_GameMode = 100
#if defined er_fade
remove_task(TASK_FADE)
set_task(0.4, "fadescreen", TASK_FADE)
set_task(1.0, "fadescreen", TASK_FADE)
set_task(1.6, "fadescreen", TASK_FADE)
set_task(2.2, "fadescreen", TASK_FADE)
set_task(2.8, "fadescreen", TASK_FADE)
set_task(3.4, "fadescreen", TASK_FADE)
#endif
#if defined football_on
new iEntity
while((iEntity = find_ent_by_class(iEntity, g_szBallName)) > 0) {
remove_entity(iEntity)
}
fm_remove_entity_name(g_szBallName)
g_FootballStarted = false
blue_team = 0
red_team = 0
#endif
}
public SimonAllowed(taskid) {
remove_task(taskid)
g_SimonAllowed = 1
remove_task(TASK_NOSIMON)
if(g_GameMode != 1)
return
g_systime = get_systime()
set_task(30.0, "task_fd", TASK_NOSIMON)
}
public task_fd(taskid) {
remove_task(taskid)
if(g_Simon == 0 && g_GameMode == 1) freeday_all()
}
public round_start() {
gc_TalkMode = get_pcvar_num(gp_TalkMode)
gc_VoiceBlock = get_pcvar_num(gp_VoiceBlock)
gc_SimonSteps = get_pcvar_num(gp_SimonSteps)
gc_ButtonShoot = get_pcvar_num(gp_ButtonShoot)
gc_SuperKnifeMul = get_pcvar_float(gp_SuperKnifeMul)
g_GameMode = 1
g_SimonAllowed = 0
arrayset(has_used, false, 33)
if(g_nogamerounds > 0) g_nogamerounds--
lastdeny = 0
g_systime = 0
g_GameMode = 1
if(g_RoundEnd)
return
if((g_FreedayAutoAll && get_pcvar_num(cvar_autogamefd)) || g_JailDay <= 1)
freeday_all()
#if defined hero_on
set_task(0.5,"makehero",0)
#endif
#if defined qasystem_on
random_question()
#endif
remove_task(TASK_STATUS)
set_task(HUD_DELAY - 0.1, "hud_status", TASK_STATUS, _, _, "b")
set_task(4.0, "SimonAllowed", TASK_ALLOWSIMON)
for(new id = 0; id < 33; id++) {
g_human[id] = false
g_zombie[id] = false
if (fdcooldown[id] > 0) fdcooldown[id]--
if (inviscd[id] > 0) inviscd[id]--
#if defined supermenu_on
g_usedmoney[id] = false
g_usedgrenades[id] = false
if (g_usedturbo[id] > 0) g_usedturbo[id] -= 1
if (g_usedgravity[id] > 0) g_usedgravity[id] -= 1
if (g_usedhp[id] > 0) g_usedhp[id] -= 1
#endif
#if defined football_on
if(is_user_alive(id))
Remove_IconBall(id)
#endif
}
#if defined teammanager_on
gametime = get_gametime()
#endif
set_lights("#OFF")
jb_unblockweapons()
g_used = 0
remove_task(TASK_FADE)
}
public cmd_voiceon(id) {
client_cmd(id, "+voicerecord")
set_bit(g_SimonVoice, id)
if(g_Simon == id || get_user_flags(id) & SUPERADMIN_LEVEL)
set_bit(g_SimonTalking, id)
return PLUGIN_HANDLED
}
public cmd_voiceoff(id) {
client_cmd(id, "-voicerecord")
clear_bit(g_SimonVoice, id)
if(g_Simon == id || get_user_flags(id) & SUPERADMIN_LEVEL)
clear_bit(g_SimonTalking, id)
return PLUGIN_HANDLED
}
public cmd_simon(id) {
static CsTeams:team, name[32]
if(!is_user_connected(id))
return PLUGIN_HANDLED
team = cs_get_user_team(id)
if(g_SimonAllowed != 0 && is_user_alive(id) && team == CS_TEAM_CT && !g_Simon && g_GameMode == 1) {
remove_task(TASK_NOSIMON)
g_Simon = id
get_user_name(id, name, charsmax(name))
entity_set_int(id, EV_INT_body, 1)
g_PlayerSimon[id]--
fm_set_user_health(id, get_user_health(id) + 100)
cs_set_user_armor(id, get_user_armor(id) + 50, CS_ARMOR_VESTHELM)
if(get_pcvar_num(gp_GlowModels))
player_glow(id, g_Colors[0])
cmd_simonmenu(id)
hud_status(0)
}
new Players[32], playerCount, i
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (is_user_connected(Players[i]))
remove_hook(Players[i])
}
return PLUGIN_HANDLED
}
public cmd_box(id) {
if((id == g_Simon || get_user_flags(id) & SUPERADMIN_LEVEL) && g_GameMode == 1) {
new Players[32]
new playerCount, i, TAlive
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (is_user_connected(Players[i])) if (cs_get_user_team(Players[i]) == CS_TEAM_T)
TAlive++
}
if(TAlive<= get_pcvar_num(gp_BoxMax) && TAlive > 1 && !g_BoxStarted) {
set_cvar_num("mp_tkpunish", 0)
set_cvar_num("mp_friendlyfire", 1)
g_BoxStarted = 1
for(i = 1; i <= g_MaxClients; i++) {
if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T) {
fm_set_user_health(i, 100)
current_weapon(i)
}
}
player_dhudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "UJBM_GAME_BOX")
client_cmd(0, "mp3 play %s", PREMUSIC_BOX)
} else if(TAlive<= get_pcvar_num(gp_BoxMax) && TAlive > 1 && g_BoxStarted) {
set_cvar_num("mp_tkpunish", 0)
set_cvar_num("mp_friendlyfire", 0)
g_BoxStarted = 0
for(i = 1; i <= g_MaxClients; i++) {
if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T) {
fm_set_user_health(i, 100)
current_weapon(i)
}
}
player_dhudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "UJBM_GAME_BOX_OFF")
client_cmd(0, "mp3 stop")
}
else player_dhudmessage(id, 1, 3.0, _, "%L", LANG_SERVER, "UJBM_GUARD_CANTBOX")
}
return PLUGIN_HANDLED
}
#if defined football_on
public UpdateBall(id) {
if(is_valid_ent(g_iBall)) {
entity_set_vector(g_iBall, EV_VEC_velocity, Float:{0.0, 0.0, 0.0})
entity_set_origin(g_iBall, g_vOrigin)
entity_set_int(g_iBall, EV_INT_movetype, MOVETYPE_BOUNCE)
engfunc(EngFunc_SetSize, g_iBall, Float:{-15.0, -15.0, -6.0}, Float:{15.0, 15.0, 12.0})
entity_set_int(g_iBall, EV_INT_iuser1, 0)
}
}
public football_menu(id) {
new option[64]
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_FOOTBALL_CAPTION")
new menu_ball = menu_create(option, "menu_foot")
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_FOOTBALL_MENU1")
menu_additem(menu_ball, option, "1")
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_FOOTBALL_MENU2")
menu_additem(menu_ball, option, "2")
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_FOOTBALL_MENU3")
menu_additem(menu_ball, option, "3")
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_FOOTBALL_MENU4")
menu_additem(menu_ball, option, "4")
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_FOOTBALL_MENU5")
menu_additem(menu_ball, option, "5")
if(g_FootballStarted) {
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_FOOTBALL_PLUS_RED")
menu_additem(menu_ball, option,"6")
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_FOOTBALL_PLUS_BLUE")
menu_additem(menu_ball, option,"7")
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_FOOTBALL_ZERO")
menu_additem(menu_ball, option, "8")
}
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu_ball, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu_ball, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu_ball, MPROP_EXITNAME, option)
menu_setprop(menu_ball, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu_ball, 0)
return PLUGIN_HANDLED
}
public menu_foot(id, menu_ball, item) {
if(item == MENU_EXIT) {
menu_destroy(menu_ball)
return PLUGIN_HANDLED
}
new data[6], iName[64], access, callback
menu_item_getinfo(menu_ball, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)
switch(key) {
case 1: {
if(GetPlayersNum(1, 1) < 2) {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_FOOTBALL_NOPLAYERS")
return PLUGIN_HANDLED
}
g_FootballStarted = true
blue_team = 0
red_team = 0
football_menu(id)
}
case 2: {
g_FootballStarted = false
new iEntity
while((iEntity = find_ent_by_class(iEntity, g_szBallName)) > 0)
remove_entity(iEntity)
fm_remove_entity_name(g_szBallName)
set_dhudmessage(0, 255, 0, -1.0, 0.78, 0, 1.0, 7.0)
if(blue_team > red_team)
show_dhudmessage(0, "%L", LANG_SERVER, "JBB_FOOTBALL_WIN1")
else if(blue_team < red_team)
show_dhudmessage(0, "%L", LANG_SERVER, "JBB_FOOTBALL_WIN2")
else if(blue_team == red_team)
show_dhudmessage(0, "%L", LANG_SERVER, "JBB_FOOTBALL_WIN3")
blue_team = 0
red_team = 0
for(new i = 0; i <= get_maxplayers(); i++) {
if(!is_user_alive(i))
continue
Remove_IconBall(i)
}
}
case 3: {
if(is_valid_ent(g_iBall)) {
entity_set_vector(g_iBall, EV_VEC_velocity, Float:{0.0, 0.0, 0.0})
entity_set_origin(g_iBall, g_vOrigin)
entity_set_int(g_iBall, EV_INT_movetype, MOVETYPE_BOUNCE)
engfunc(EngFunc_SetSize, g_iBall, Float:{-15.0, -15.0, -6.0}, Float:{15.0, 15.0, 12.0})
entity_set_int(g_iBall, EV_INT_iuser1, 0)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_FOOTBALL_SPAWNED")
}
football_menu(id)
}
case 4: {
football_menu(id)
if(pev_valid(g_iBall))
return PLUGIN_CONTINUE
CreateBall(id)
return PLUGIN_HANDLED
}
case 5: {
new iEntity
while((iEntity = find_ent_by_class(iEntity, g_szBallName)) > 0)
remove_entity(iEntity)
fm_remove_entity_name(g_szBallName)
for(new i = 0; i <= get_maxplayers(); i++) {
if(!is_user_alive(i))
continue
Remove_IconBall(i)
}
football_menu(id)
}
case 6: {
red_team++
football_menu(id)
}
case 7: {
blue_team++
football_menu(id)
}
case 8: {
red_team = 0
blue_team = 0
football_menu(id)
}
}
return PLUGIN_HANDLED
}
GetPlayersNum(iTeam, iAlive) {
new iPlayersNum
for(new iPlayers = get_maxplayers(); iPlayers > 0; iPlayers--) {
if(!is_user_connected(iPlayers))
continue
if(get_user_team(iPlayers) == iTeam && (is_user_alive(iPlayers) == iAlive || iAlive == 2))
iPlayersNum++
}
return iPlayersNum
}
public FwdHamObjectCaps(id) {
if(pev_valid(g_iBall) && is_user_alive(id)) {
static iOwner
iOwner = pev(g_iBall, pev_iuser1)
if(iOwner == id)
KickBall(id)
}
}
public FwdThinkBall(iEntity) {
if(!is_valid_ent(g_iBall))
return PLUGIN_HANDLED
set_pev(iEntity, pev_nextthink, halflife_time() + 0.05)
new Float:fVelocity[3], Float:fAngles[3]
pev(iEntity, pev_velocity, fVelocity)
static Float:vOrigin[3], Float:vBallVelocity[3]
pev(iEntity, pev_origin, vOrigin)
pev(iEntity, pev_velocity, vBallVelocity)
static iOwner
iOwner = pev(iEntity, pev_iuser1)
static iSolid; iSolid = pev(iEntity, pev_solid)
static Float:flGametime, Float:flLastThink
flGametime = get_gametime()
if(flLastThink < flGametime)
flLastThink = flGametime + 3.0
if(iOwner > 0) {
static Float:vOwnerOrigin[3]
pev(iOwner, pev_origin, vOwnerOrigin)
static const Float:vVelocity[3] = {1.0, 1.0, 0.0}
Anim(iEntity, 0)
stop = false
if(!is_user_alive(iOwner)) {
set_pev(iEntity, pev_iuser1, 0)
vOwnerOrigin[2] += 8.0
set_pev(iEntity, pev_origin, vOwnerOrigin)
set_pev(iEntity, pev_velocity, vVelocity)
return PLUGIN_CONTINUE
}
if(iSolid != SOLID_NOT)
set_pev(iEntity, pev_solid, SOLID_NOT)
static Float:vAngles[3], Float:vReturn[3]
pev(iOwner, pev_v_angle, vAngles)
vReturn[0] = (floatcos(vAngles[1], degrees) * 55.0) + vOwnerOrigin[0]
vReturn[1] = (floatsin(vAngles[1], degrees) * 55.0) + vOwnerOrigin[1]
vReturn[2] = vOwnerOrigin[2]
vReturn[2] -= (entity_get_int(iOwner, EV_INT_flags) & FL_DUCKING) ? 10 : 30
set_pev(iEntity, pev_velocity, vVelocity)
set_pev(iEntity, pev_origin, vReturn)
} else {
if(iSolid != SOLID_BBOX)
set_pev(iEntity, pev_solid, SOLID_BBOX)
vector_to_angle(fVelocity, fAngles)
fAngles[0] = 0.0
set_pev(iEntity, pev_angles, fAngles)
if(!stop) {
Anim(iEntity, 1)
stop = true
}
static Float:flLastVerticalOrigin
if(vBallVelocity[2] == 0.0) {
static iCounts
Anim(iEntity, 0)
if(flLastVerticalOrigin > vOrigin[2]) {
iCounts++
if(iCounts > 10) {
iCounts = 0
UpdateBall(0)
}
} else {
iCounts = 0
if(PointContents(vOrigin) != CONTENTS_EMPTY)
UpdateBall(0)
}
flLastVerticalOrigin = vOrigin[2]
}
}
return PLUGIN_CONTINUE
}
KickBall(id) {
static Float:vOrigin[3]
pev(g_iBall, pev_origin, vOrigin)
if(PointContents(vOrigin) != CONTENTS_EMPTY)
return PLUGIN_HANDLED
new Float:vVelocity[3]
velocity_by_aim(id, 700, vVelocity)
set_pev(g_iBall, pev_solid, SOLID_BBOX)
engfunc(EngFunc_SetSize, g_iBall, Float:{-15.0, -15.0, -6.0}, Float:{15.0, 15.0, 12.0})
set_pev(g_iBall, pev_iuser1, 0)
set_pev(g_iBall, pev_velocity, vVelocity)
Remove_IconBall(id)
return PLUGIN_CONTINUE
}
public FwdTouchPlayer(Ball, id) {
if(is_user_bot(id))
return PLUGIN_CONTINUE
static iOwner
iOwner = pev(Ball, pev_iuser1)
if(iOwner == 0) {
set_pev(Ball, pev_iuser1, id)
Show_IconBall(id)
}
return PLUGIN_CONTINUE
}
public FwdTouchWorld(Ball, World) {
static Float:vVelocity[3]
pev(Ball, pev_velocity, vVelocity)
if(floatround(vector_length(vVelocity)) > 10) {
vVelocity[0] *= 0.85
vVelocity[1] *= 0.85
vVelocity[2] *= 0.85
set_pev(Ball, pev_velocity, vVelocity)
emit_sound(Ball, CHAN_ITEM, SOUND_BALL_BOUNCE, 1.0, ATTN_NORM, 0, PITCH_NORM)
}
return PLUGIN_CONTINUE
}
CreateBall(id, Float:vOrigin[3] = {0.0, 0.0, 0.0}) {
if(!id)
return 0
g_iBall = create_entity("info_target")
if(is_valid_ent(g_iBall)) {
set_pev(g_iBall, pev_classname, g_szBallName)
set_pev(g_iBall, pev_solid, SOLID_BBOX)
set_pev(g_iBall, pev_movetype, MOVETYPE_BOUNCE)
engfunc(EngFunc_SetModel, g_iBall, BALL_MODEL)
set_pev(g_iBall, pev_skin, random_num(0, 2))
engfunc(EngFunc_SetSize, g_iBall, Float:{-15.0, -15.0, -6.0}, Float:{15.0, 15.0, 12.0})
Anim(g_iBall, 0)
set_pev(g_iBall, pev_nextthink, get_gametime() + 0.05)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_FOOTBALL_SPAWNED")
new iOrigin[3]
get_user_origin(id, iOrigin, 3)
IVecFVec(iOrigin, vOrigin)
vOrigin[2] += 10.0
set_pev(g_iBall, pev_origin, vOrigin)
g_vOrigin = vOrigin
return g_iBall
}
return -1
}
Anim(ent, sequence) {
set_pev(ent, pev_sequence, sequence)
set_pev(ent, pev_animtime, halflife_time())
set_pev(ent, pev_framerate, 1.0)
}
Show_IconBall(id) {
message_begin(MSG_ALL, SVC_TEMPENTITY)
write_byte(TE_PLAYERATTACHMENT)
write_byte(id)
write_coord(44)
write_short(g_iIconBall)
write_short(3000)
message_end()
}
Remove_IconBall(id) {
message_begin(MSG_ALL, SVC_TEMPENTITY)
write_byte(TE_KILLPLAYERATTACHMENTS)
write_byte(id)
message_end()
}
#endif
public cmd_minmodels(id) {
if(id > g_MaxClients)
id -= TASK_MINMODELS
remove_task(TASK_MINMODELS + id)
client_cmd(id,"cl_minmodels 0")
}
public cmd_freeday(id) {
if (g_GameMode == 1) {
static menu, menuname[32], option[64]
if((is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) || get_user_flags(id) & SUPERADMIN_LEVEL) {
formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "UJBM_MENU_FREEDAY")
menu = menu_create(menuname, "freeday_choice")
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_FREEDAY_PLAYER")
menu_additem(menu, option, "1", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_FREEDAY_ALL")
menu_additem(menu, option, "2", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu)
}
}
return PLUGIN_HANDLED
}
public cmd_freeday_player(id) {
if((is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) || get_user_flags(id) & SUPERADMIN_LEVEL)
menu_players(id, CS_TEAM_T, id, 1, "freeday_select", "%L", LANG_SERVER, "UJBM_MENU_FREEDAY")
return PLUGIN_CONTINUE
}
#if defined ctpunish_on
public cmd_punish(id) {
if((id == g_Simon) || get_user_flags(id) & ADMIN_LEVEL)
menu_players(id, CS_TEAM_CT, id, 1, "cmd_punish_ct", "%L", LANG_SERVER, "UJBM_MENU_PUNISH")
return PLUGIN_CONTINUE
}
#endif
public client_PreThink(id) {
if (!is_user_alive(id))
return PLUGIN_CONTINUE
message_begin(MSG_ONE, g_iMessagesStatusIcon, _, id)
if(g_GameMode <= 1 || g_GameMode == 3) write_byte(1)
else write_byte(0)
write_string("buyzone")
write_byte(0)
write_byte(160)
write_byte(0)
message_end()
#if defined svip_bhop_on
if (!(get_user_flags(id) & SUPERVIP_LEVEL) || g_GameMode > 1)
return PLUGIN_CONTINUE
entity_set_float(id, EV_FL_fuser2, 0.0)
if (entity_get_int(id, EV_INT_button) & 2) {
new flags = entity_get_int(id, EV_INT_flags)
if (flags & (1<<11))
return PLUGIN_CONTINUE
if (entity_get_int(id, EV_INT_waterlevel) >= 2)
return PLUGIN_CONTINUE
if (!(flags & (1<<9)))
return PLUGIN_CONTINUE
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
velocity[2] += 250.0
entity_set_vector(id, EV_VEC_velocity, velocity)
entity_set_int(id, EV_INT_gaitsequence, 6)
}
#endif
return PLUGIN_CONTINUE
}
public cmd_lastrequest(id) {
static i, num[5], menu, menuname[32], option[64]
if(g_PlayerLast != id || g_GameMode != 99) task_last()
if(g_PlayerLast !=id || !is_user_alive(id) || g_GameMode != 99 || g_RoundEnd || g_Duel > 0)
return PLUGIN_CONTINUE
formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "UJBM_MENU_LASTREQ")
menu = menu_create(menuname, "lastrequest_select")
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_LASTREQ_OPT1")
menu_additem(menu, option, "1", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_LASTREQ_OPT2")
menu_additem(menu, option, "2", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_LASTREQ_OPT3")
menu_additem(menu, option, "3", 0)
for(i = 0; i < sizeof(_Duel); i++) {
num_to_str(i + 4, num, charsmax(num))
formatex(option, charsmax(option), "%L", LANG_SERVER, _Duel[i][_opt])
menu_additem(menu, option, num, 0)
}
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu)
return PLUGIN_CONTINUE
}
public lastrequest_select(id, menu, item) {
if(item == MENU_EXIT || g_PlayerLast != id) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
static i, dst[32], data[5], access, callback, option[64]
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
get_user_name(id, dst, charsmax(dst))
switch(data[0]) {
case('1'): {
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_LASTREQ_SEL1", dst)
player_dhudmessage(0, 6, 3.0, {0, 255, 0}, option)
jb_set_money(id, jb_get_money(id) + 70)
#if defined roundcontrol_on
RC_RoundEndForce(WINSTATUS_TERRORIST)
#else
user_kill(id, 1)
#endif
}
case('2'): {
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_LASTREQ_SEL2", dst)
player_dhudmessage(0, 6, 3.0, {0, 255, 0}, option)
g_Duel = 2
player_strip_weapons_all()
i = random_num(0, sizeof(_WeaponsFree) - 1)
fm_give_item(id, _WeaponsFree[i])
fm_give_item(id, "weapon_knife")
cs_set_user_bpammo(id, _WeaponsFreeCSW[i], 1024)
// Knife for CT
new Players[32]
new playerCount, asd
get_players(Players, playerCount, "ac")
for (asd=0; asd<playerCount; asd++) {
if (is_user_connected(Players[asd]))
if (cs_get_user_team(Players[asd]) == CS_TEAM_CT) fm_give_item(Players[asd], "weapon_knife")
}
jb_blockweapons()
}
case('3'): menu_players(id, CS_TEAM_CT, 0, 1, "duel_knives", "%L", LANG_SERVER, "UJBM_MENU_DUEL")
default: {
g_Duel = str_to_num(data)
menu_players(id, CS_TEAM_CT, 0, 1, "duel_guns", "%L", LANG_SERVER, "UJBM_MENU_DUEL")
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public revolt_start() {
client_cmd(0,"speak ambience/siren")
set_task(8.0, "stop_sound")
hud_status(0)
}
public stop_sound(task)
client_cmd(0, "stopsound")
stock show_count() {
new Players[32]
new playerCount, i,TAlive,TAll
new szStatus[64]
get_players(Players, playerCount, "c")
for (i=0; i<playerCount; i++) {
if (is_user_connected(Players[i])) {
if (cs_get_user_team(Players[i]) == CS_TEAM_T) {
TAll++
if (is_user_alive(Players[i])) TAlive++
}
}
}
formatex(szStatus, charsmax(szStatus), "%L", LANG_SERVER, "UJBM_STATUS", TAlive,TAll)
message_begin(MSG_BROADCAST, get_user_msgid("StatusText"), {0,0,0}, 0)
write_byte(0)
write_string(szStatus)
message_end()
}
public hud_status(task) {
if(g_RoundStarted < (get_pcvar_num(gp_RetryTime) / 2))
g_RoundStarted++
count_teams()
new TAlive, bool:send
new text_alives[32], role[64], info[128], warden[32], text[1024], text_question[64], text_spect[700], name[36],
text_skin[32], text_minigames[128]
for (new id = 1; id <= g_MaxClients; id++) {
if (is_user_alive(id)) {
if (cs_get_user_team(id) == CS_TEAM_T)
TAlive++
}
}
if(TAlive > 1) formatex(text_alives, charsmax(text_alives), "^n %L", LANG_SERVER, "JBB_ALIVET", TAlive, TCount)
#if defined qasystem_on
if(!g_answered) formatex(text_question, charsmax(text_question), "^n^n[%L]^n %s = ?", LANG_SERVER, "JBB_QUESTION", g_question)
#endif
if(g_BoxStarted && g_GameMode == 1)
formatex(text_minigames, charsmax(text_minigames), "^n^n[%L]^n %L", LANG_SERVER, "JBB_MINIGAMES", LANG_SERVER, "JBB_BOX_ON")
else
text_minigames = ""
switch(g_GameMode) {
case 100: {
formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_ENDR")
formatex(role, charsmax(role), "%L %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_ENDED")
}
case 99: formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_LAST")
case 0: {
new this_timeleft = get_pcvar_num(cvar_fdlen)+g_systime-get_systime()
if(this_timeleft >= 0 && this_timeleft <= 1800) formatex(info, charsmax(info), "%L [%s]", LANG_SERVER, "JBB_STATUS_FD", jb_timer(this_timeleft))
else formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_FD")
}
case 1: {
if(g_Simon) {
get_user_name(g_Simon, warden, charsmax(warden))
formatex(info, charsmax(info), "%L: %s", LANG_SERVER, "JBB_STATUS_WARDEN", warden)
} else {
new this_timeleft = 30+g_systime-get_systime()
if(g_SimonAllowed && this_timeleft >= 0 && this_timeleft <= 1800)
formatex(info, charsmax(info), "%L [%s]", LANG_SERVER, "JBB_STATUS_NOWARDEN", jb_timer(this_timeleft))
else formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_NOWARDEN")
}
}
case 2: {
if(g_HnsStarted) {
new this_timeleft = 181+g_systime-get_systime()
if(this_timeleft >= 0 && this_timeleft <= 1800)
formatex(info, charsmax(info), "%L [%s]", LANG_SERVER, "JBB_STATUS_HNS", jb_timer(this_timeleft))
else formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_HNS")
}
else formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_HNS_HIDE")
formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_PLAYER")
}
case 3: {
new this_timeleft = 241+g_systime-get_systime()
if(this_timeleft >= 0 && this_timeleft <= 1800) formatex(info, charsmax(info), "%L [%s]", LANG_SERVER, "JBB_STATUS_ZOMBIE", jb_timer(this_timeleft))
else formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_ZOMBIE")
formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_PLAYER")
}
case 4: {
if(g_MagicStarted) formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_MAGIC")
else {
new this_timeleft = 20+g_systime-get_systime()
if(this_timeleft >= 0 && this_timeleft <= 1800)
formatex(info, charsmax(info), "%L [%s]", LANG_SERVER, "JBB_STATUS_MAGIC_HIDE", jb_timer(this_timeleft))
else formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_MAGIC_HIDE")
}
formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_PLAYER")
}
case 5: {
get_user_name(g_Simon, warden, charsmax(warden))
formatex(info, charsmax(info), "%L: %s (HP: %d)", LANG_SERVER, "JBB_STATUS_ALIEN", warden, get_user_health(g_Simon))
}
case 6: {
formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_ATTACK")
formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_PLAYER")
}
/*case 7: {
formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_SPARTA")
formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_PLAYER")
}*/
case 8: {
formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_DEFENCE")
formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_PLAYER")
}
case 9: {
if(g_HnsStarted) {
new this_timeleft = 181+g_systime-get_systime()
if(this_timeleft >= 0 && this_timeleft <= 1800) formatex(info, charsmax(info), "%L [%s]", LANG_SERVER, "JBB_STATUS_CHASE", jb_timer(this_timeleft))
else formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_CHASE")
}
else formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_CHASE_HIDE")
formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_PLAYER")
}
}
switch(g_Duel) {
case 2: formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_LR2")
default: {
if(g_Duel > 0 && is_user_alive(g_DuelA) && is_user_alive(g_DuelB)) {
new name1[32], name2[32]
get_user_name(g_DuelA, name1, charsmax(name1))
get_user_name(g_DuelB, name2, charsmax(name2))
formatex(info, charsmax(info), "%L", LANG_SERVER, "JBB_STATUS_DUEL", name1, name2)
}
}
}
for (new id = 1; id <= g_MaxClients; id++) {
if(is_user_alive(id)) {
new skin = entity_get_int(id, EV_INT_skin)
new CsTeams:team = cs_get_user_team(id)
if(cs_get_user_money(id) != jb_get_money(id)) cs_set_user_money(id, jb_get_money(id))
if(team == CS_TEAM_T && g_GameMode == 1) {
switch(skin) {
case 0: formatex(text_skin, charsmax(text_skin), "^n %L", LANG_SERVER, "JBB_COLOR0")
case 1: formatex(text_skin, charsmax(text_skin), "^n %L", LANG_SERVER, "JBB_COLOR1")
case 2: formatex(text_skin, charsmax(text_skin), "^n %L", LANG_SERVER, "JBB_COLOR2")
}
}
else text_skin = ""
switch(g_GameMode) {
case 99: {
if(team == CS_TEAM_T) formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_LAST")
else if(team == CS_TEAM_CT) formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_CT")
else formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ERROR")
}
case 0: {
if(team == CS_TEAM_T) formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_T")
else if(team == CS_TEAM_CT) formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_CT")
else formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ERROR")
}
case 1: {
if(g_Simon == id) formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_WARDEN")
else if(team == CS_TEAM_T) formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_T")
else if(team == CS_TEAM_CT) formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_CT")
else formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ERROR")
}
case 5: {
if(g_Simon == id) formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_ALIEN")
else formatex(role, charsmax(role), "%L: %L", LANG_SERVER, "JBB_STATUS_ROLE", LANG_SERVER, "JBB_ROLE_PLAYER")
}
}
send = false
formatex(text_spect, charsmax(text_spect), "^n^n[%L]^n ", LANG_SERVER, "JBB_SPECTATING")
for(new dead = 1; dead <= mxplr; dead++) {
if(is_user_connected(dead)) {
if(is_user_alive(dead) || is_user_bot(dead))
continue
if(pev(dead, pev_iuser2) == id) {
get_user_name(dead, name, 32)
add(name, 35, "^n ", 0)
add(text_spect, 699, name, 0)
send = true
}
}
}
if(send == true) formatex(text, charsmax(text), "[%L]^n %s^n %s%s%s%s%s%s", LANG_SERVER, "JBB_STATUS_INFO", info, role, text_skin, text_alives, text_question, text_minigames, text_spect)
else formatex(text, charsmax(text), "[%L]^n %s^n %s%s%s%s%s", LANG_SERVER, "JBB_STATUS_INFO", info, role, text_skin, text_alives, text_question, text_minigames)
if(g_GameMode == 99) set_hudmessage(0, 200, 200, 0.75, 0.15, 0, 0.0, 1.1, 0.0, 0.0, -1)
else if(get_bit(g_PlayerWanted, id)) set_hudmessage(200, 0, 0, 0.75, 0.15, 0, 0.0, 1.1, 0.0, 0.0, -1)
else if(g_GameMode == 0 || get_bit(g_PlayerFreeday, id)) set_hudmessage(0, 200, 0, 0.75, 0.15, 0, 0.0, 1.1, 0.0, 0.0, -1)
else set_hudmessage(200, 200, 0, 0.75, 0.15, 0, 0.0, HUD_DELAY, 0.0, 0.0, -1)
ShowSyncHudMsg(id, g_SyncHud, text)
} else if(is_user_connected(id)) {
new spect
send = false
for(new i = 1; i <= mxplr; i++) {
if(pev(id, pev_iuser2) == i && is_user_alive(i) && !spect) {
new text_spect1[300]
get_user_name(i, name, 31)
formatex(text_spect1, charsmax(text_spect1), "^n^n[%L]^n %L: %s^n %L: %dHP %dAP^n %L: %d",
LANG_SERVER, "JBB_SPECTATING", LANG_SERVER, "JBB_SPECT_NAME", name, LANG_SERVER, "JBB_SPECT_HP",
get_user_health(i), get_user_armor(i), LANG_SERVER, "JBB_SPECT_FRAGS", jb_get_money(i))
formatex(text, charsmax(text), "[%L]^n %s%s%s%s%s", LANG_SERVER, "JBB_STATUS_INFO", info, text_alives, text_question, text_minigames, text_spect1)
if(g_GameMode == 99) set_hudmessage(0, 200, 200, 0.75, 0.15, 0, 0.0, 1.1, 0.0, 0.0, -1)
else set_hudmessage(200, 200, 0, 0.75, 0.15, 0, 0.0, HUD_DELAY, 0.0, 0.0, -1)
spect = true
}
}
if(!spect) formatex(text, charsmax(text), "[%L]^n %s%s%s", LANG_SERVER, "JBB_STATUS_INFO", info, text_alives, text_question)
if(g_GameMode == 99) set_hudmessage(0, 200, 200, 0.75, 0.15, 0, 0.0, 1.1, 0.0, 0.0, -1)
else set_hudmessage(200, 200, 0, 0.75, 0.15, 0, 0.0, HUD_DELAY, 0.0, 0.0, -1)
ShowSyncHudMsg(id, g_SyncHud, text)
}
}
}
public freeday_select(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
static dst[32], data[5], player, access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
player = str_to_num(data)
freeday_set(id, player)
return PLUGIN_HANDLED
}
public duel_knives(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
g_Duel = 0
return PLUGIN_HANDLED
}
static dst[32], data[5], access, callback, option[128], player, src[32]
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
get_user_name(id, src, charsmax(src))
player = str_to_num(data)
formatex(option, charsmax(option), "%L^n%L", LANG_SERVER, "UJBM_MENU_LASTREQ_SEL3", src, LANG_SERVER, "UJBM_MENU_DUEL_SEL", src, dst)
player_dhudmessage(0, 6, 3.0, {0, 255, 0}, option)
g_Duel = 3
g_DuelA = id
clear_bit(g_PlayerSuperKnife, id)
player_strip_weapons(id)
fm_give_item(id, "weapon_knife")
player_glow(id, g_Colors[3])
fm_set_user_health(id, 100)
g_DuelB = player
player_strip_weapons(player)
fm_give_item(player, "weapon_knife")
player_glow(player, g_Colors[2])
fm_set_user_health(player, 100)
jb_blockweapons()
set_task(1.0, "Beacon", g_DuelA + TASK_BEACON)
set_task(1.0, "Beacon", g_DuelB + TASK_BEACON)
return PLUGIN_HANDLED
}
public duel_guns(id, menu, item) {
if(item == MENU_EXIT || g_PlayerLast != id) {
menu_destroy(menu)
g_Duel = 0
return PLUGIN_HANDLED
}
static gun, dst[32], data[5], access, callback, option[128], player, src[32]
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
get_user_name(id, src, charsmax(src))
player = str_to_num(data)
formatex(option, charsmax(option), "%L^n%L", LANG_SERVER, _Duel[g_Duel - 4][_sel], src, LANG_SERVER, "UJBM_MENU_DUEL_SEL", src, dst)
emit_sound(0, CHAN_AUTO, SOUND_DUEL, 1.0, ATTN_NORM, 0, PITCH_NORM)
player_dhudmessage(0, 6, 3.0, {0, 255, 0}, option)
switch (_Duel[g_Duel - 4][_csw]) {
case CSW_M249: {
if(id > 0 && is_user_alive(id)) {
g_DuelA = id
player_strip_weapons(id)
gun = fm_give_item(id, _Duel[g_Duel - 4][_entname])
cs_set_weapon_ammo(gun, 2000)
cs_set_user_bpammo(id,CSW_M249,0)
fm_set_user_health(id, 2000)
entity_set_int(id, EV_INT_body, 4)
player_glow(id, g_Colors[3])
set_task(1.0, "Beacon", g_DuelA + TASK_BEACON)
}
if(player > 0 && is_user_alive(player)) {
g_DuelB = player
player_strip_weapons(player)
gun = fm_give_item(player, _Duel[g_Duel - 4][_entname])
cs_set_weapon_ammo(gun, 2000)
fm_set_user_health(player, 2000)
cs_set_user_bpammo(player,CSW_M249,0)
entity_set_int(player, EV_INT_body, 4)
player_glow(player, g_Colors[2])
set_task(1.0, "Beacon", g_DuelB + TASK_BEACON)
}
}
default: {
if(id > 0 && is_user_alive(id)) {
player_strip_weapons(id)
g_DuelA = id
gun = fm_give_item(id, _Duel[g_Duel - 4][_entname])
if(pev_valid(gun))
cs_set_weapon_ammo(gun, 1)
fm_set_user_health(id, 100)
player_glow(id, g_Colors[3])
set_task(1.0, "Beacon", g_DuelA + TASK_BEACON)
}
if(player > 0 && is_user_alive(player)) {
g_DuelB = player
player_strip_weapons(player)
gun = fm_give_item(player, _Duel[g_Duel - 4][_entname])
if(pev_valid(gun))
cs_set_weapon_ammo(gun, 1)
fm_set_user_health(player, 100)
player_glow(player, g_Colors[2])
set_task(1.0, "Beacon", g_DuelB + TASK_BEACON)
}
}
}
jb_blockweapons()
return PLUGIN_HANDLED
}
public freeday_choice(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
static dst[32], data[5], access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
menu_destroy(menu)
get_user_name(id, dst, charsmax(dst))
switch(data[0]) {
case('1'): cmd_freeday_player(id)
case('2'): {
if((id == g_Simon || get_user_flags(id) & SUPERADMIN_LEVEL) && g_GameMode == 1) {
entity_set_int(g_Simon, EV_INT_body, 3)
g_Simon = 0
g_FreedayAutoAll = 0
get_user_name(id, dst, charsmax(dst))
client_print(0, print_console, "[Fantick] Freeday by %s", dst)
server_print("[Fantick] Client %i gives freeday for everyone", id)
set_dhudmessage(100, 0, 0, 0.03, 0.55, 0, 2.0, 3.0, 0.2, 0.2)
show_dhudmessage(0, "%s %L", dst, LANG_SERVER, "UJBM_FREEDAY_ALL")
g_GameMode = 0
g_nogamerounds++
remove_task(TASK_NOSIMON)
emit_sound(0, CHAN_AUTO, SOUND_BELL, 1.0, ATTN_NORM, 0, PITCH_NORM)
hud_status(0)
g_PlayerFreeday = 0
g_systime = get_systime()
jail_open()
new Players[32]
new playerCount, i
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
entity_set_int(Players[i], EV_INT_skin, 3)
if (g_mp3[Players[i]]) client_cmd(Players[i], "mp3 play %s", MUSIC_FD)
}
remove_task(TASK_ROUNDEND)
set_task(get_pcvar_float(cvar_fdlen), "task_freeday_end",TASK_ROUNDEND)
}
}
}
return PLUGIN_HANDLED
}
public setup_buttons() {
new ent[3]
new Float:origin[3]
new info[32]
new pos
while((pos <= sizeof(g_Buttons)) && (ent[0] = engfunc(EngFunc_FindEntityByString, ent[0], "classname", "info_player_deathmatch"))) {
pev(ent[0], pev_origin, origin)
while((ent[1] = engfunc(EngFunc_FindEntityInSphere, ent[1], origin, CELL_RADIUS))) {
if(!is_valid_ent(ent[1]))
continue
entity_get_string(ent[1], EV_SZ_classname, info, charsmax(info))
if(!equal(info, "func_door"))
continue
entity_get_string(ent[1], EV_SZ_targetname, info, charsmax(info))
if(!info[0])
continue
if(TrieKeyExists(g_CellManagers, info)) TrieGetCell(g_CellManagers, info, ent[2])
else ent[2] = engfunc(EngFunc_FindEntityByString, 0, "target", info)
if(is_valid_ent(ent[2]) && (in_array(ent[2], g_Buttons, sizeof(g_Buttons)) < 0)) {
g_Buttons[pos] = ent[2]
pos++
break
}
}
}
TrieDestroy(g_CellManagers)
}
stock in_array(needle, data[], size) {
for(new i = 0; i < size; i++) {
if(data[i] == needle)
return i
}
return -1
}
stock freeday_set(id, player) {
static src[32], dst[32]
get_user_name(player, dst, charsmax(dst))
if(is_user_alive(player) && !get_bit(g_PlayerWanted, player)) {
set_bit(g_PlayerFreeday, player)
remove_task(TASK_FREEENDPL + player)
set_task(get_pcvar_float(cvar_fdlen), "player_freeday_end", TASK_FREEENDPL + player)
entity_set_int(player, EV_INT_skin, 3)
if (g_mp3[player]) client_cmd(player,"mp3 play %s", MUSIC_FD)
if(get_pcvar_num(gp_GlowModels))
player_glow(player, g_Colors[1])
if(0 < id <= g_MaxClients) {
get_user_name(id, src, charsmax(src))
player_dhudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "UJBM_GUARD_FREEDAYGIVE", src, dst)
}
else if(g_GameMode == 1) player_dhudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "UJBM_PRISONER_HASFREEDAY", dst)
}
}
stock first_join(id) {
if (get_bit(g_PlayerJoin, id)) return PLUGIN_CONTINUE
set_task(20.0, "cmd_minmodels", TASK_MINMODELS + id)
set_bit(g_PlayerJoin, id)
return PLUGIN_CONTINUE
}
stock player_dhudmessage(id, hudid, Float:time = 0.0, color[3] = {0, 255, 0}, msg[], any:...) {
static text[512], Float:x, Float:y
x = g_HudSync[hudid][_x]
y = g_HudSync[hudid][_y]
if(time > 0) set_dhudmessage(color[0], color[1], color[2], x, y, 0, 0.00, time, 0.00, 0.00)
else set_dhudmessage(color[0], color[1], color[2], x, y, 0, 0.00, g_HudSync[hudid][_time], 0.00, 0.00)
vformat(text, charsmax(text), msg, 6)
show_dhudmessage(id, text)
}
stock player_hudmessage(id, hudid, Float:time = 0.0, color[3] = {0, 255, 0}, msg[], any:...) {
static text[512], Float:x, Float:y
x = g_HudSync[hudid][_x]
y = g_HudSync[hudid][_y]
if(time > 0) set_hudmessage(color[0], color[1], color[2], x, y, 0, 0.00, time, 0.00, 0.00)
else set_hudmessage(color[0], color[1], color[2], x, y, 0, 0.00, g_HudSync[hudid][_time], 0.00, 0.00)
vformat(text, charsmax(text), msg, 6)
ShowSyncHudMsg(id, g_HudSync[hudid][_hudsync], text)
}
stock menu_players(id, CsTeams:team, skip, alive, callback[], title[], any:...) {
static i, name[32], num[5], menu, menuname[32]
vformat(menuname, charsmax(menuname), title, 7)
menu = menu_create(menuname, callback)
for(i = 1; i <= g_MaxClients; i++) {
if(!is_user_connected(i) || (alive && !is_user_alive(i)) || (skip == i))
continue
if(!(team == CS_TEAM_T || team == CS_TEAM_CT) || ((team == CS_TEAM_T || team == CS_TEAM_CT) && (cs_get_user_team(i) == team))) {
get_user_name(i, name, charsmax(name))
num_to_str(i, num, charsmax(num))
menu_additem(menu, name, num, 0)
}
}
formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, menuname)
formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, menuname)
formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, menuname)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu)
}
stock player_glow(id, color[3], amount=40)
fm_set_user_rendering(id, kRenderFxGlowShell, color[0], color[1], color[2], kRenderNormal, amount)
stock player_strip_weapons(id) {
g_Otvertka[id] = false
g_Katana[id] = false
g_Electro[id] = false
g_speed[id] = false
g_HasWeapon[id] = false
fm_strip_user_weapons(id)
set_pdata_int(id, m_iPrimaryWeapon, 0)
}
stock player_strip_weapons_all() {
for(new i = 1; i <= g_MaxClients; i++) {
if(is_user_alive(i)) {
drop_weapons_all(i, 1)
player_strip_weapons(i)
}
}
}
public jail_open() {
static i
for(i = 0; i < sizeof(g_Buttons); i++) {
if(g_Buttons[i]) {
ExecuteHamB(Ham_Use, g_Buttons[i], 0, 0, 1, 1.0)
entity_set_float(g_Buttons[i], EV_FL_frame, 0.0)
}
}
}
public FM_SetClientKeyValue_pre(id, const szInfoBuffer[], const szKey[]) {
if(equal(szKey, "model")) {
new szModel[32]
jb_get_user_model(id, szModel, charsmax(szModel))
if(!equal(szModel, PLAYER_MODEL))
jb_set_user_model(id, PLAYER_MODEL)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public jb_set_user_model(id, const szModel[]) {
engfunc(EngFunc_SetClientKeyValue, id, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", szModel)
new szBuffer[64]
formatex(szBuffer, charsmax(szBuffer), "models/player/%s/%s.mdl", szModel, szModel)
set_pdata_int(id, 491, engfunc(EngFunc_ModelIndex, szBuffer), 5)
}
public jb_get_user_model(id, model[], len)
engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", model, len)
/*public client_infochanged(id) {
new fmodel[64]
formatex(fmodel, charsmax(fmodel), "models/player/%s/%s.mdl", PLAYER_MODEL, PLAYER_MODEL)
if (is_user_connected(id)) {
engfunc(EngFunc_SetClientKeyValue, id, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", PLAYER_MODEL)
set_pdata_int(id, 491, engfunc(EngFunc_ModelIndex, fmodel), 5)
//set_user_info(id, "model", PLAYER_MODEL)
}
}*/
public cmd_game_zombie() {
if (g_GameMode != 1)
return PLUGIN_CONTINUE
g_FreedayAutoAll = 1
jail_open()
g_GameMode = 3
g_BoxStarted = 0
jb_blockweapons()
entity_set_int(g_Simon, EV_INT_body, 3)
g_Simon = 0
g_nogamerounds = get_pcvar_num(gp_NoGame)
g_systime = get_systime()
new Players[32]
new playerCount, i
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (is_user_connected(Players[i])) {
if (g_mp3[Players[i]]) client_cmd(Players[i], "mp3 play %s", MUSIC_ZOMBIE)
if (cs_get_user_team(Players[i]) == CS_TEAM_T) make_zombie(Players[i])
else if (cs_get_user_team(Players[i]) == CS_TEAM_CT) make_human(Players[i])
}
}
emit_sound(0, CHAN_AUTO, SOUND_ZOMBIE_BEGIN, 1.0, ATTN_NORM, 0, PITCH_NORM)
if (get_pcvar_num (gp_Effects) > 0) set_lights("d")
set_task(241.0, "task_zombie_end",TASK_ROUNDEND)
return PLUGIN_CONTINUE
}
public make_zombie(id) {
player_strip_weapons(id)
g_zombie[id] = true
fm_give_item(id, "weapon_knife")
fm_set_user_maxspeed(id, 225.0)
fm_set_user_health(id, 2000)
cs_set_user_armor(id, 0, CS_ARMOR_NONE)
cs_set_user_nvg (id, true)
engclient_cmd(id, "nightvision")
entity_set_int(id, EV_INT_body, 4)
clear_bit(g_PlayerSuperKnife, id)
if(get_user_flags(id) & VIP_LEVEL) fm_set_user_gravity(id, 0.65)
else fm_set_user_gravity(id, 0.9)
}
public make_human(id) {
fm_strip_user_weapons(id)
g_human[id] = true
fm_give_item(id, "weapon_xm1014")
cs_set_user_bpammo(id, CSW_XM1014, 1024)
fm_give_item(id, "weapon_knife")
fm_set_user_health(id, 100)
cs_set_user_armor(id, 0, CS_ARMOR_NONE)
fm_set_user_maxspeed(id, 250.0)
if(get_user_flags(id) & VIP_LEVEL) fm_set_user_gravity(id, 0.75)
else fm_set_user_gravity(id, 1.0)
set_bit(g_Fonarik, id)
}
public shop_zombie(id) {
if(!is_user_alive(id))
return PLUGIN_HANDLED
message_begin(MSG_ONE, g_iMessagesBuyClose, _, id)
message_end()
new option[64], header[128], menu
switch(cs_get_user_team(id)) {
case CS_TEAM_T: {
formatex(header, charsmax(header), "\y%L", LANG_SERVER, "JBB_SHOPZ_ZOMBIE")
menu = menu_create(header, "shop_zombie_handler")
if(jb_get_money(id) >= 70 && g_ShopPurchases[id] != 2) formatex(option, charsmax(option), "%L \R\y70$", LANG_SERVER, "JBB_SHOPZ_ZARMOR")
else formatex(option, charsmax(option), "\d%L \R70$", LANG_SERVER, "JBB_SHOPZ_ZARMOR")
menu_additem(menu, option, "1", 0)
}
case CS_TEAM_CT: {
formatex(header, charsmax(header), "\y%L", LANG_SERVER, "JBB_SHOPZ_HUMAN")
menu = menu_create(header, "shop_zombie_handler")
if(jb_get_money(id) >= 40) formatex(option, charsmax(option), "%L \R\y40$", LANG_SERVER, "JBB_SHOPZ_NVG")
else formatex(option, charsmax(option), "\d%L \R40$", LANG_SERVER, "JBB_SHOPZ_NVG")
menu_additem(menu, option, "1", 0)
if(jb_get_money(id) >= 80) formatex(option, charsmax(option), "M4A1 \R80$")
else formatex(option, charsmax(option), "\dM4A1 \R80$")
menu_additem(menu, option, "2", 0)
}
}
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SHOP_EXIT")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public shop_zombie_handler(id, menu, item) {
if(item < 0) return PLUGIN_CONTINUE
if(!is_user_alive(id)) return PLUGIN_HANDLED
new cmd[3], access, callback
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)
new key = str_to_num(cmd)
new user_money = jb_get_money(id)
switch (key) {
case 1: {
if(cs_get_user_team(id) == CS_TEAM_T) {
if(user_money < 70) ColorChat(id, GREEN, "[%s]^x01 %s", PREFIX, LANG_SERVER, "NO_MONEY")
else if(g_ShopPurchases[id] == 2) ColorChat(id, GREEN, "[%s]^x01 %s", PREFIX, LANG_SERVER, "JBB_SHOP_ALREADY")
else {
g_ShopPurchases[id] = 2
cs_set_user_armor(id, 700, CS_ARMOR_VESTHELM)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - 70)
}
} else {
if(user_money < 40) ColorChat(id, GREEN, "[%s]^x01 %s", PREFIX, LANG_SERVER, "NO_MONEY")
else {
cs_set_user_nvg(id, 1)
client_cmd(id, "nightvision")
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - 40)
}
}
}
case 2: {
if(cs_get_user_team(id) == CS_TEAM_CT) {
if(jb_get_money(id) < 80) ColorChat(id, GREEN, "[%s]^x01 %s", PREFIX, LANG_SERVER, "NO_MONEY")
else {
drop_weapons_prim(id, 1)
fm_give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 1024)
jb_set_money(id, user_money - 80)
}
}
}
}
return PLUGIN_HANDLED
}
public cmd_hns_start() {
g_systime = get_systime()
g_HnsStarted = 1
jb_unblockweapons()
new Players[32]
new playerCount, i
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (cs_get_user_team(Players[i]) == CS_TEAM_T) {
fm_give_item(Players[i], "weapon_knife")
current_weapon(Players[i])
fm_give_item(Players[i], "weapon_flashbang")
fm_give_item(Players[i], "weapon_smokegrenade")
fm_set_user_maxspeed(Players[i], 300.0)
fm_set_user_health(Players[i], 100)
} else {
fm_give_item(Players[i], "weapon_knife")
current_weapon(Players[i])
fm_give_item(Players[i], "weapon_smokegrenade")
set_bit(g_Fonarik, Players[i])
client_cmd(Players[i], "impulse 100")
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, Players[i])
write_short(1<<10)
write_short(1<<10)
write_short(0x0000) // fade out
write_byte(0)
write_byte(0)
write_byte(0)
write_byte(255)
message_end()
new j = random_num(0, sizeof(_WeaponsFree) - 1)
fm_give_item(Players[i], _WeaponsFree[j])
cs_set_user_bpammo(Players[i], _WeaponsFreeCSW[j], 1024)
new n = random_num(0, sizeof(_WeaponsFree) - 1)
while (n == j) {
n = random_num(0, sizeof(_WeaponsFree) - 1)
}
fm_give_item(Players[i], _WeaponsFree[n])
cs_set_user_bpammo(Players[i], _WeaponsFreeCSW[n], 1024)
}
if (g_mp3[Players[i]]) client_cmd(Players[i], "mp3 play %s", MUSIC_HNS)
}
emit_sound(0, CHAN_AUTO, SOUND_BELL, 1.0, ATTN_NORM, 0, PITCH_NORM)
jb_blockweapons()
remove_task(TASK_ROUNDEND)
set_task(181.0, "task_hns_end",TASK_ROUNDEND)
return PLUGIN_CONTINUE
}
public cmd_chase_start() {
g_systime = get_systime()
g_HnsStarted = 1
jb_unblockweapons()
new Players[32]
new playerCount, i
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (cs_get_user_team(Players[i]) == CS_TEAM_T) {
fm_give_item(Players[i], "weapon_knife")
current_weapon(Players[i])
fm_set_user_maxspeed(Players[i], 250.0)
fm_set_user_gravity(Players[i], 1.0)
fm_set_user_health(Players[i], 100)
} else {
fm_give_item(Players[i], "weapon_knife")
fm_set_user_maxspeed(Players[i], 500.0)
fm_set_user_gravity(Players[i], 0.75)
g_speed[Players[i]] = true
current_weapon(Players[i])
set_bit(g_Fonarik, Players[i])
client_cmd(Players[i], "impulse 100")
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, Players[i])
write_short(1<<10)
write_short(1<<10)
write_short(0x0000) // fade out
write_byte(0)
write_byte(0)
write_byte(0)
write_byte(255)
message_end()
}
if (g_mp3[Players[i]]) client_cmd(Players[i], "mp3 play %s", MUSIC_HNS)
}
emit_sound(0, CHAN_AUTO, SOUND_BELL, 1.0, ATTN_NORM, 0, PITCH_NORM)
jb_blockweapons()
remove_task(TASK_ROUNDEND)
set_task(181.0, "task_hns_end",TASK_ROUNDEND)
return PLUGIN_CONTINUE
}
public task_zombie_end() {
client_cmd(0, "mp3 stop")
emit_sound(0, CHAN_AUTO, SOUND_BELL, 1.0, ATTN_NORM, 0, PITCH_NORM)
g_PlayerFreeday = 0
set_dhudmessage(0, 255, 0, -1.0, 0.35, 0, 6.0, 15.0)
show_dhudmessage(0, "%L", LANG_SERVER, "JBB_ENDGAME")
new playerCount, i
new Players[32]
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
#if defined roundcontrol_on
RC_RoundEndForce(WINSTATUS_CT)
#else
if (cs_get_user_team(Players[i]) == CS_TEAM_T && is_user_alive(Players[i]))
user_kill(Players[i], 1)
#endif
if (cs_get_user_team(Players[i]) == CS_TEAM_CT && is_user_alive(Players[i]))
jb_set_money(Players[i], jb_get_money(Players[i]) + 30)
}
return PLUGIN_CONTINUE
}
public task_hns_end() {
client_cmd(0, "mp3 stop")
emit_sound(0, CHAN_AUTO, SOUND_BELL, 1.0, ATTN_NORM, 0, PITCH_NORM)
g_PlayerFreeday = 0
set_dhudmessage(0, 255, 0, -1.0, 0.35, 0, 6.0, 15.0)
show_dhudmessage(0, "%L", LANG_SERVER, "JBB_ENDGAME")
new playerCount, i
new Players[32]
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (cs_get_user_team(Players[i]) == CS_TEAM_T && is_user_alive(Players[i]))
jb_set_money(Players[i], jb_get_money(Players[i]) + 30)
#if defined roundcontrol_on
RC_RoundEndForce(WINSTATUS_TERRORIST)
#else
if (cs_get_user_team(Players[i]) == CS_TEAM_CT && is_user_alive(Players[i]))
user_kill(Players[i], 1)
#endif
}
return PLUGIN_CONTINUE
}
public cmd_game_hns(chase) {
if (g_GameMode != 1)
return PLUGIN_HANDLED
g_FreedayAutoAll = 1
g_nogamerounds = get_pcvar_num(gp_NoGame)
g_BoxStarted = 0
g_HnsStarted = 0
jail_open()
if (!chase) g_GameMode = 2
else g_GameMode = 9
entity_set_int(g_Simon, EV_INT_body, 3)
g_Simon = 0
emit_sound(0, CHAN_AUTO, SOUND_BELL, 1.0, ATTN_NORM, 0, PITCH_NORM)
set_lights("c")
jb_blockweapons()
new Players[32]
new playerCount, i
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (cs_get_user_team(Players[i]) == CS_TEAM_T) {
g_speed[Players[i]] = false
fm_set_user_gravity(Players[i], 0.5)
fm_strip_user_weapons(Players[i])
}
if (cs_get_user_team(Players[i]) == CS_TEAM_CT) {
fm_strip_user_weapons(Players[i])
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, Players[i])
write_short(~0)
write_short(~0)
write_short(0x0004) // stay faded
write_byte(0)
write_byte(0)
write_byte(0)
write_byte(255)
message_end()
}
jb_blockweapons()
}
if (!chase) set_task(20.0,"cmd_hns_start",TASK_GIVEITEMS)
else set_task(20.0,"cmd_chase_start",TASK_GIVEITEMS)
return PLUGIN_HANDLED
}
#if defined voice_on
public enable_player_voice(id, player, amount) {
static src[32], dst[32]
get_user_name(player, dst, charsmax(dst))
switch(amount) {
case 0: {
g_PlayerVoice[player] = 0
if(0 < id <= g_MaxClients) {
get_user_name(id, src, charsmax(src))
player_dhudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBB_VOICE_DISABLED", src, dst)
}
}
case 1: {
if(g_PlayerVoice[player] < 1) g_PlayerVoice[player] = 1
if(0 < id <= g_MaxClients) {
get_user_name(id, src, charsmax(src))
player_dhudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBB_VOICE_ENABLED1", src, dst)
}
}
case 3: {
g_PlayerVoice[player] = 3
if(0 < id <= g_MaxClients) {
get_user_name(id, src, charsmax(src))
player_dhudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBB_VOICE_ENABLED3", src, dst)
}
}
}
}
public voice_disable_select(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
static dst[32], data[5], player, access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
player = str_to_num(data)
enable_player_voice(id, player, 0)
cmd_simonmenu(id)
return PLUGIN_HANDLED
}
public voice_enable1_select(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
static dst[32], data[5], player, access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
player = str_to_num(data)
enable_player_voice(id, player, 1)
cmd_simonmenu(id)
return PLUGIN_HANDLED
}
public voice_enable3_select(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
static dst[32], data[5], player, access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
player = str_to_num(data)
enable_player_voice(id, player, 3)
cmd_simonmenu(id)
return PLUGIN_HANDLED
}
public cmd_simon_micr(id) {
if (g_Simon == id || get_user_flags(id) & SUPERADMIN_LEVEL) {
static menu, option[64]
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_MENU_VOICE")
menu = menu_create(option, "cmd_simon_micr_handler")
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_VOICE_TAKE")
menu_additem(menu, option, "1", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_VOICE_GIVE1")
menu_additem(menu, option, "2", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_VOICE_GIVE3")
menu_additem(menu, option, "3", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu)
}
return PLUGIN_HANDLED
}
public cmd_simon_micr_handler(id, menu, item) {
if(item == MENU_EXIT || g_GameMode != 1) {
menu_destroy(menu)
cmd_simonmenu(id)
return PLUGIN_HANDLED
}
static dst[32], data[5], access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
menu_destroy(menu)
get_user_name(id, dst, charsmax(dst))
switch(data[0]) {
case ('1'): menu_players(id, CS_TEAM_T, 0, 1, "voice_disable_select", "%L", LANG_SERVER, "JBB_VOICE_TAKE")
case ('2'): menu_players(id, CS_TEAM_T, 0, 1, "voice_enable1_select", "%L", LANG_SERVER, "JBB_VOICE_GIVE1")
case ('3'): menu_players(id, CS_TEAM_T, 0, 1, "voice_enable3_select", "%L", LANG_SERVER, "JBB_VOICE_GIVE3")
}
return PLUGIN_HANDLED
}
#endif
public divide_teams(id) {
if (g_Simon == id || get_user_flags(id) & SUPERADMIN_LEVEL) {
new playerCount, i
new Players[32]
new bool:orange = true
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (cs_get_user_team(Players[i]) == CS_TEAM_T && is_user_alive(Players[i]) && !get_bit(g_PlayerFreeday, Players[i]) && !get_bit(g_PlayerWanted, Players[i])) {
if (orange) {
entity_set_int(Players[i], EV_INT_skin, 0)
orange=false
} else {
entity_set_int(Players[i], EV_INT_skin, 1)
orange=true
}
}
}
}
return PLUGIN_HANDLED
}
bool:GameAllowed() {
if (g_GameMode > 1 || g_nogamerounds > 0)
return false
return true
}
public cmd_simonmenu(id) {
if(g_GameMode != 1) {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_NOOPEN_GM")
client_cmd(id, "spk %s", SOUND_ERROR)
return PLUGIN_HANDLED
}
if (g_Simon == id || get_user_flags(id) & SUPERADMIN_LEVEL) {
static menu, menuname[32], option[64]
formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "UJBM_MENU_SIMONMENU")
menu = menu_create(menuname, "simon_choice")
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_OPEN")
menu_additem(menu, option, "1", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_FD")
menu_additem(menu, option, "2", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_CLR")
menu_additem(menu, option, "3", 0)
#if defined voice_on
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_VOICE")
menu_additem(menu, option, "4", 0)
#endif
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_GONG")
menu_additem(menu, option, "5", 0)
if(g_GameMode <= 1) formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_SIMON_GAMES")
else formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_SIMON_GAMES")
menu_additem(menu, option, "6", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_SIMON_MINIGAMES")
menu_additem(menu, option, "7", 0)
#if defined ctpunish_on
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_PUNISH")
menu_additem(menu, option, "8", 0)
#endif
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_MENU_MUSIC")
menu_additem(menu, option, "9", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu)
}
return PLUGIN_HANDLED
}
public simon_choice(id, menu, item) {
if(item == MENU_EXIT || !(id == g_Simon || get_user_flags(id) & SUPERADMIN_LEVEL)) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
static dst[32], data[5], access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
menu_destroy(menu)
get_user_name(id, dst, charsmax(dst))
switch(data[0]) {
case('1'): {
jail_open()
cmd_simonmenu(id)
}
case('2'): cmd_freeday(id)
case('3'): divide_teams(id)
#if defined voice_on
case('4'): cmd_simon_micr(id)
#endif
case('5'): {
if(~get_user_flags(id) & SUPERADMIN_LEVEL && id != g_Simon)
{
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "RIGHTS_OR_SIMON")
return PLUGIN_HANDLED
}
emit_sound(0, CHAN_AUTO, SOUND_BELL, 1.0, ATTN_NORM, 0, PITCH_NORM)
cmd_simonmenu(id)
get_user_name(id, nick, 63)
set_dhudmessage(100, 0, 0, 0.03, 0.55, 0, 1.0, 3.0, 0.2, 0.2)
show_dhudmessage(0, "%s %L", nick, LANG_SERVER, "UJBM_RINGED")
}
case('6'): cmd_simongamesmenu(id)
case('7'): minigames(id)
#if defined ctpunish_on
case('8'): cmd_punish(id)
#endif
case('9'): cmd_music(id)
}
return PLUGIN_HANDLED
}
public cmd_music(id) {
if(g_Simon != id && ~get_user_flags(id) & SUPERADMIN_LEVEL) {
client_cmd(id, "spk %s", SOUND_ERROR)
return PLUGIN_HANDLED
}
static menu, menuname[32], option[64]
formatex(menuname, charsmax(menuname), "%L^n\d%L", LANG_SERVER, "JBB_MENU_MUSIC", LANG_SERVER, "JBB_MENU_MUSIC1")
menu = menu_create(menuname, "cmd_music_handler")
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_MUSIC_STOP")
menu_additem(menu, option, "1", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_MUSIC_FD")
menu_additem(menu, option, "2", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_MUSIC_ZM")
menu_additem(menu, option, "3", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_MUSIC_HNS")
menu_additem(menu, option, "4", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu)
return PLUGIN_HANDLED
}
public cmd_music_handler(id, menu, item) {
if(item == MENU_EXIT || !(id == g_Simon || get_user_flags(id) & SUPERADMIN_LEVEL)) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
static dst[32], data[5], access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
menu_destroy(menu)
get_user_name(id, dst, charsmax(dst))
new playerCount, i
new Players[32]
get_players(Players, playerCount, "ac")
switch(data[0]) {
case ('1'): {
for (i=0; i<playerCount; i++) if(is_user_connected(Players[i])) {
if(g_mp3menu[Players[i]]) client_cmd(Players[i], "mp3 stop")
}
cmd_music(id)
}
case ('2'): {
for (i=0; i<playerCount; i++) if(is_user_connected(Players[i])) {
if(g_mp3menu[Players[i]]) client_cmd(Players[i], "mp3 play %s", MUSIC_FD)
}
cmd_music(id)
}
case ('3'): {
for (i=0; i<playerCount; i++) if(is_user_connected(Players[i])) {
if(g_mp3menu[Players[i]]) client_cmd(Players[i], "mp3 play %s", MUSIC_ZOMBIE)
}
cmd_music(id)
}
case ('4'): {
for (i=0; i<playerCount; i++) if(is_user_connected(Players[i])) {
if(g_mp3menu[Players[i]]) client_cmd(Players[i], "mp3 play %s", MUSIC_HNS)
}
cmd_music(id)
}
}
return PLUGIN_HANDLED
}
public minigames(id) {
if(g_GameMode != 1) {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_NOOPEN_GM")
client_cmd(id, "spk %s", SOUND_ERROR)
return PLUGIN_HANDLED
}
if (g_Simon == id || get_user_flags(id) & SUPERADMIN_LEVEL) {
static menu, menuname[32], option[64]
formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "UJBM_SIMON_MINIGAMES")
menu = menu_create(menuname, "minigames_choice")
if(!g_BoxStarted) formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_GUARD_BOX")
else formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_GUARD_BOX_OFF")
menu_additem(menu, option, "1", 0)
#if defined football_on
formatex(option, charsmax(option), "%L", LANG_SERVER, "JBB_FOOTBALL_CAPTION")
menu_additem(menu, option, "2", 0)
#endif
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu)
}
return PLUGIN_HANDLED
}
public minigames_choice(id, menu, item) {
if(item == MENU_EXIT || g_GameMode != 1) {
menu_destroy(menu)
cmd_simonmenu(id)
return PLUGIN_HANDLED
}
static dst[32], data[5], access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
menu_destroy(menu)
get_user_name(id, dst, charsmax(dst))
switch(data[0]) {
case ('1'): cmd_box(id)
#if defined football_on
case ('2'): football_menu(id)
#endif
}
return PLUGIN_HANDLED
}
public simon_gameschoice(id, menu, item) {
if(item == MENU_EXIT || g_GameMode != 1) {
menu_destroy(menu)
cmd_simonmenu(id)
return PLUGIN_HANDLED
}
static dst[32], data[5], access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
menu_destroy(menu)
get_user_name(id, dst, charsmax(dst))
switch(data[0]) {
case('1'): if (GameAllowed() || (get_user_flags(id) & ADMIN_LEVEL && cs_get_user_team(id) == CS_TEAM_CT) || get_user_flags(id) & SUPERADMIN_LEVEL) cmd_game_alien()
case('2'): if (GameAllowed() || (get_user_flags(id) & ADMIN_LEVEL && cs_get_user_team(id) == CS_TEAM_CT) || get_user_flags(id) & SUPERADMIN_LEVEL)cmd_game_zombie()
case('3'): if (GameAllowed() || (get_user_flags(id) & ADMIN_LEVEL && cs_get_user_team(id) == CS_TEAM_CT) || get_user_flags(id) & SUPERADMIN_LEVEL) cmd_game_hns(0)
case('4'): if (GameAllowed() || (get_user_flags(id) & ADMIN_LEVEL && cs_get_user_team(id) == CS_TEAM_CT) || get_user_flags(id) & SUPERADMIN_LEVEL) cmd_game_hns(1)
case('5'): if (GameAllowed() || (get_user_flags(id) & ADMIN_LEVEL && cs_get_user_team(id) == CS_TEAM_CT) || get_user_flags(id) & SUPERADMIN_LEVEL) cmd_game_magic()
case('6'): if (GameAllowed() || (get_user_flags(id) & ADMIN_LEVEL && cs_get_user_team(id) == CS_TEAM_CT) || get_user_flags(id) & SUPERADMIN_LEVEL) cmd_attack()
//case('7'): if (GameAllowed() || (get_user_flags(id) & ADMIN_LEVEL && cs_get_user_team(id) == CS_TEAM_CT) || get_user_flags(id) & SUPERADMIN_LEVEL) cmd_sparta()
case('8'): if (GameAllowed() || (get_user_flags(id) & ADMIN_LEVEL && cs_get_user_team(id) == CS_TEAM_CT) || get_user_flags(id) & SUPERADMIN_LEVEL) cmd_defence()
}
return PLUGIN_HANDLED
}
public cmd_simongamesmenu(id) {
if(g_GameMode != 1) {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_NOOPEN_GM")
client_cmd(id, "spk %s", SOUND_ERROR)
return PLUGIN_HANDLED
}
if (g_Simon != id && !(get_user_flags(id) & ADMIN_LEVEL && cs_get_user_team(id) == CS_TEAM_CT) && ~get_user_flags(id) & SUPERADMIN_LEVEL)
return PLUGIN_HANDLED
static menu, menuname[32], option[64]
formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "UJBM_MENU_SIMONMENU")
menu = menu_create(menuname, "simon_gameschoice")
if (GameAllowed() || get_user_flags(id) & ADMIN_LEVEL) {
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_ALIEN2")
menu_additem(menu, option, "1", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_ZM")
menu_additem(menu, option, "2", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_HNS")
menu_additem(menu, option, "3", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_CHASE")
menu_additem(menu, option, "4", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MAGIC")
menu_additem(menu, option, "5", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_ATTACK")
menu_additem(menu, option, "6", 0)
//formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_SPARTA")
//menu_additem(menu, option, "7", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_DEFENCE")
menu_additem(menu, option, "8", 0)
} else {
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_ALIEN2")
menu_additem(menu, option, "1", 0)
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_ZM")
menu_additem(menu, option, "2", 0)
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_MENU_SIMONMENU_HNS")
menu_additem(menu, option, "3", 0)
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_CHASE")
menu_additem(menu, option, "4", 0)
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_MAGIC")
menu_additem(menu, option, "5", 0)
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_ATTACK")
menu_additem(menu, option, "6", 0)
//formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_SPARTA")
//menu_additem(menu, option, "7", 0)
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_DEFENCE")
menu_additem(menu, option, "8", 0)
}
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu)
return PLUGIN_HANDLED
}
stock cs_set_user_team2(index, {CsTeams,_}:team, update = 1) {
if (index == g_Simon) {
g_Simon = 0
g_systime = get_systime()
remove_task(TASK_NOSIMON)
set_task(30.0, "task_fd", TASK_NOSIMON)
hud_status(0)
}
set_pdata_int(index, OFFSET_TEAM, _:team)
set_pev(index, pev_team, _:team)
if(update) {
static _msg_teaminfo
if(!_msg_teaminfo) _msg_teaminfo = get_user_msgid("TeamInfo")
static teaminfo[][] = { "UNASSIGNED", "TERRORIST", "CT", "SPECTATOR" }
message_begin(MSG_ALL, _msg_teaminfo)
write_byte(index)
write_string(teaminfo[_:team])
message_end()
}
return 1
}
public give_items_alien() {
fm_give_item(g_Simon, "item_assaultsuit")
fm_give_item(g_Simon, "weapon_knife")
set_bit(g_PlayerSuperKnife, g_Simon)
current_weapon(g_Simon)
}
public cmd_game_alien() {
if (g_Simon == 0) return PLUGIN_HANDLED
g_FreedayAutoAll = 1
g_nogamerounds = get_pcvar_num(gp_NoGame)
g_BoxStarted = 0
jail_open()
g_GameMode = 5
jb_blockweapons()
server_cmd("jb_block_teams")
hud_status(0)
new Players[32], playerCount, i
new ctnum, ctid[33]
get_players(Players, playerCount, "ac")
count_teams()
if(CTCount > 1) g_Simon = 0
for (i=0; i<playerCount; i++) {
if(cs_get_user_team(Players[i]) == CS_TEAM_CT) {
ctnum++
ctid[ctnum] = Players[i]
}
}
if(CTCount > 1) g_Simon = ctid[random_num(1, ctnum)]
for (i=0; i<playerCount; i++) {
fm_strip_user_weapons(Players[i])
if (g_Simon != Players[i]) {
if (cs_get_user_team(Players[i]) == CS_TEAM_CT) {
entity_set_int(Players[i], EV_INT_body, 2)
entity_set_int(Players[i], EV_INT_skin, random_num(0, 2))
set_bit(g_BackToCT, Players[i])
cs_set_user_team2(Players[i], CS_TEAM_T)
}
fm_give_item(Players[i], "weapon_knife")
new j = random_num(0, sizeof(_WeaponsFree) - 1)
fm_give_item(Players[i], _WeaponsFree[j])
cs_set_user_bpammo(Players[i], _WeaponsFreeCSW[j], 1024)
new n = random_num(0, sizeof(_WeaponsFree) - 1)
while (n == j) {
n = random_num(0, sizeof(_WeaponsFree) - 1)
}
fm_give_item(Players[i], _WeaponsFree[n])
cs_set_user_bpammo(Players[i], _WeaponsFreeCSW[n], 1024)
g_speed[Players[i]] = false
fm_set_user_maxspeed(Players[i], 250.0)
fm_set_user_gravity(Players[i], 1.0)
}
}
fm_set_user_rendering(g_Simon, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, g_Simon)
write_short(~0)
write_short(~0)
write_short(0x0004) // stay faded
write_byte(ALIEN_RED)
write_byte(ALIEN_GREEN)
write_byte(ALIEN_BLUE)
write_byte(100)
message_end()
fm_set_user_maxspeed(g_Simon, 320.0)
fm_set_user_gravity(g_Simon, 1.0)
entity_set_int(g_Simon, EV_INT_body, 5)
new hp = get_pcvar_num(gp_GameHP)
if (hp < 20) hp = 200
fm_set_user_health(g_Simon, hp*playerCount)
set_task(20.0, "give_items_alien", TASK_GIVEITEMS)
set_lights("z")
emit_sound(0, CHAN_VOICE, SOUND_ALIEN, 1.0, ATTN_NORM, 0, PITCH_LOW)
set_task(5.0, "stop_sound")
return PLUGIN_HANDLED
}
#if defined ctpunish_on
public cmd_punish_ct(id, menu, item) {
if(item == MENU_EXIT || (g_Simon != id && ~get_user_flags(id) & ADMIN_LEVEL)) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
static dst[32],src[32], data[5], player, access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
player = str_to_num(data)
if (g_Simon == player) return PLUGIN_CONTINUE
entity_set_int(player, EV_INT_body, 2)
entity_set_int(player, EV_INT_skin, random_num(0, 2))
set_bit(g_BackToCT,player)
cs_set_user_team2(player, CS_TEAM_T)
fm_strip_user_weapons(player)
fm_give_item(player, "weapon_knife")
current_weapon(player)
get_user_name(player, dst, charsmax(dst))
get_user_name(id, src, charsmax(src))
player_dhudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "UJBM_SIMON_PUNISH", src, dst,dst)
return PLUGIN_HANDLED
}
#endif
public drop(id) {
#if defined grab_on
new target = client_data[id][0]
if(target > 0) {
set_pev(target, pev_velocity, vel_by_aim(id, get_pcvar_num(p_throw_force)))
unset_grabbed(id)
return PLUGIN_HANDLED
}
#endif
if (WeaponsLocked) return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public task_freeday_end() {
client_cmd(0, "mp3 stop")
emit_sound(0, CHAN_AUTO, SOUND_BELL, 1.0, ATTN_NORM, 0, PITCH_NORM)
g_GameMode = 1
if(g_nogamerounds > 0) g_nogamerounds--
g_PlayerFreeday = 0
remove_task(TASK_NOSIMON)
g_systime = get_systime()
set_task(30.0, "task_fd", TASK_NOSIMON)
set_dhudmessage(0, 255, 0, -1.0, 0.35, 0, 6.0, 15.0)
show_dhudmessage(0, "%L", LANG_SERVER, "UJBM_STATUS_ENDFREEDAY")
new playerCount, i
new Players[32]
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (cs_get_user_team(Players[i]) == CS_TEAM_T && is_user_alive(Players[i]) && !get_bit(g_PlayerWanted, Players[i]))
entity_set_int(Players[i], EV_INT_skin, random_num(0,2))
}
return PLUGIN_CONTINUE
}
public player_freeday_end(id) {
remove_task(id)
id -= TASK_FREEENDPL
new name[32]
if (is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T && get_bit(g_PlayerFreeday, id)) {
get_user_name(id, name, 31)
clear_bit(g_PlayerFreeday, id)
entity_set_int(id, EV_INT_skin, random_num(0,2))
client_cmd(id, "mp3 stop")
emit_sound(id, CHAN_AUTO, SOUND_BELL, 1.0, ATTN_NORM, 0, PITCH_NORM)
ColorChat(0, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_FREEDAY_PLEND", name)
}
}
/* === VIP MENU === */
#if defined vipmenu_on
public VIPMenu(id) {
new menuname[32], option[128]
if(~get_user_flags(id) & VIP_LEVEL) {
ColorChat(id, GREEN, "[%s]^x01 %L.", PREFIX, LANG_SERVER, "ACCESS_DENIED")
client_cmd(id, "spk %s", SOUND_ERROR)
} else {
formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "UJBM_VIP_MENU")
new vip_menu = menu_create(menuname, "vipmenu_handler")
if(has_used[id]) formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_VIP_MONEY")
else formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_VIP_MONEY")
menu_additem(vip_menu, option, "1", 0)
if(has_used[id] || g_GameMode > 1 || !is_user_alive(id)) formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_VIP_GRENADES")
else formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_VIP_GRENADES")
menu_additem(vip_menu, option, "2", 0)
if(has_used[id] || g_GameMode > 1 || !is_user_alive(id)) formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_VIP_GRAVITY")
else formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_VIP_GRAVITY")
menu_additem(vip_menu, option, "3", 0)
if(has_used[id] || g_GameMode > 1 || !is_user_alive(id)) formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_VIP_SPEED")
else formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_VIP_SPEED")
menu_additem(vip_menu, option, "4", 0)
if(has_used[id] || g_GameMode > 1 || !is_user_alive(id)) formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_VIP_HEAL")
else formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_VIP_HEAL")
menu_additem(vip_menu, option, "5", 0)
if(!lastdeny && g_GameMode <= 1 && (cs_get_user_team(id) == CS_TEAM_T || cs_get_user_team(id) == CS_TEAM_CT)) {
if(has_used[id] || is_user_alive(id)) formatex(option, charsmax(option), "\d%L", LANG_SERVER, "UJBM_VIP_RESPAWN")
else formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_VIP_RESPAWN")
menu_additem(vip_menu, option, "6", 0)
}
menu_setprop(vip_menu, MPROP_EXIT, MEXIT_ALL)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(vip_menu, MPROP_EXITNAME, option)
menu_setprop(vip_menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, vip_menu, 0)
}
}
public vipmenu_handler(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
if(has_used[id]) {
ColorChat(id, GREEN, "[%s]^x01 %L.", PREFIX, LANG_SERVER, "UJBM_VIP_USED")
client_cmd(id, "spk %s", SOUND_ERROR)
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
new key = str_to_num(data)
if(key != 1 && g_GameMode > 1) {
client_cmd(id, "spk %s", SOUND_ERROR)
return PLUGIN_HANDLED
}
switch(key) {
case 1: {
jb_set_money(id, jb_get_money(id) + 30)
has_used[id] = true
}
case 2: {
if(is_user_alive(id)) {
if (cs_get_user_team(id) == CS_TEAM_T) fm_give_item(id, "weapon_hegrenade")
fm_give_item(id, "weapon_flashbang")
fm_give_item(id, "weapon_flashbang")
fm_give_item(id, "weapon_smokegrenade")
has_used[id] = true
}
}
case 3: {
if(is_user_alive(id)) {
fm_set_user_gravity(id, 0.4)
has_used[id] = true
}
}
case 4: {
if(is_user_alive(id)) {
fm_set_user_maxspeed(id, 500.0)
g_speed[id] = true
has_used[id] = true
}
}
case 5: {
if(is_user_alive(id)) {
fm_set_user_health(id, 200)
cs_set_user_armor(id, get_user_armor(id) + 50, CS_ARMOR_VESTHELM)
has_used[id] = true
}
}
case 6: {
if(!is_user_alive(id) && !lastdeny && g_GameMode <= 1) {
ExecuteHamB(Ham_CS_RoundRespawn, id)
fm_give_item(id, "weapon_knife")
has_used[id] = true
}
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
#endif
/* === QA SYSTEM === */
#if defined qasystem_on
public on_say(id) {
if(g_answered)
return PLUGIN_CONTINUE
static say[192]
new name[32]
read_args(say, sizeof(say) - 1)
remove_quotes(say)
for (new a = 0; a < 34; a++) {
if(equal(g_answer, say)) {
g_answered = true
jb_set_money(id, jb_get_money(id) + 20)
get_user_name(id, name, 31)
ColorChat(0, GREEN, "[%s]^x01 %s %L", PREFIX, name, LANG_SERVER, "JBB_ANSWERED")
hud_status(0)
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
random_question() {
new answer = 1001, question[32], q1, q2, q3, q4, q5, type
while(answer > 1000 || answer < -1000) {
q1 = random_num(0, 300)
q2 = random_num(0, 300)
q3 = random_num(0, 300)
q4 = random_num(2, 5)
q5 = random_num(2, 5)
type = random_num(1, 5)
switch(type) {
case 1: {
formatex(question, charsmax(question), "%d+%d+%d", q1, q2, q3)
answer = q1+q2+q3
}
case 2: {
formatex(question, charsmax(question), "%d+%d-%d", q1, q2, q3)
answer = q1+q2-q3
}
case 3: {
formatex(question, charsmax(question), "%d-%d+%d", q1, q2, q3)
answer = q1-q2+q3
}
case 4: {
formatex(question, charsmax(question), "%d-%d-%d", q1, q2, q3)
answer = q1-q2-q3
}
case 5: {
formatex(question, charsmax(question), "%d*%d-%d*%d", q1, q4, q2, q5)
answer = q1*q4-q2*q5
}
}
}
g_answered = false
g_question = question
formatex(g_answer, charsmax(g_answer), "%d", answer)
}
#endif
/* === MAIN PRISONER === */
#if defined hero_on
public makehero() {
static players[32], num,i, id
get_players(players, num, "a")
if(num > 0) {
for(i = 0; i < num; i++)
g_hero[players[i]] = false
i = 0
id = players[random(num)]
i++
if (cs_get_user_team(id) == CS_TEAM_T) {
jb_set_money(id, jb_get_money(id) + 20)
get_user_name(id, nick, 31)
cs_set_user_armor(id, 75, CS_ARMOR_VESTHELM)
fm_set_user_health(id, 150)
#if defined heroweapon_on
set_bit(g_PlayerSuperKnife, id)
current_weapon(id)
#endif
g_hero[id] = true
}
else set_task(0.5,"makehero",0)
}
return PLUGIN_CONTINUE
}
#endif
public WeaponChange(id) {
if(g_speed[id]) fm_set_user_maxspeed(id, 500.0)
if (read_data(1) != 1)
return
new weapon = read_data(2)
if (weapon == CSW_KNIFE && g_Katana[id]) {
set_pev(id, pev_viewmodel2, KATANA_V_MODEL)
set_pev(id, pev_weaponmodel2, KATANA_P_MODEL)
} else if (weapon == CSW_KNIFE && g_Otvertka[id]) {
set_pev(id, pev_viewmodel2, OTVERTKA_V_MODEL)
set_pev(id, pev_weaponmodel2, OTVERTKA_P_MODEL)
} else if (weapon == CSW_KNIFE && g_Electro[id]) {
set_pev(id, pev_viewmodel2, ELECTRO_V_MODEL)
set_pev(id, pev_weaponmodel2, ELECTRO_P_MODEL)
}
}
public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch) {
if (!is_user_connected(id))
return FMRES_IGNORED
if (g_Katana[id] && equal(sample[8], "kni", 3)) {
volume = 0.6
if (equal(sample[14], "sla", 3)) {
engfunc(EngFunc_EmitSound, id, channel, "weapons/katana_slash.wav", volume, attn, flags, pitch)
return FMRES_SUPERCEDE
}
if(equal(sample,"weapons/knife_deploy1.wav")) {
engfunc(EngFunc_EmitSound, id, channel, "weapons/katana_deploy.wav", volume, attn, flags, pitch)
return FMRES_SUPERCEDE
}
if (equal(sample[14], "hit", 3)) {
if (sample[17] == 'w') {
engfunc(EngFunc_EmitSound, id, channel,"weapons/katana_hitwall.wav", volume, attn, flags, pitch)
return FMRES_SUPERCEDE
} else {
engfunc(EngFunc_EmitSound, id, channel, "weapons/katana_hit.wav", volume, attn, flags, pitch)
return FMRES_SUPERCEDE
}
}
if (equal(sample[14], "sta", 3)) {
engfunc(EngFunc_EmitSound, id, channel, "weapons/katana_stab.wav", volume, attn, flags, pitch)
return FMRES_SUPERCEDE
}
}
if (g_Electro[id] && equal(sample[8], "kni", 3)) {
volume = 0.6
if (equal(sample[14], "sla", 3)) {
engfunc(EngFunc_EmitSound, id, channel, "extreme-shop/ESlash.wav", volume, attn, flags, pitch)
return FMRES_SUPERCEDE
}
if(equal(sample,"weapons/knife_deploy1.wav")) {
engfunc(EngFunc_EmitSound, id, channel, "extreme-shop/EConvoca.wav", volume, attn, flags, pitch)
return FMRES_SUPERCEDE
}
if (equal(sample[14], "hit", 3)) {
if (sample[17] == 'w') {
engfunc(EngFunc_EmitSound, id, channel,"extreme-shop/EHitWall.wav", volume, attn, flags, pitch)
return FMRES_SUPERCEDE
} else {
engfunc(EngFunc_EmitSound, id, channel, "extreme-shop/EHit2.wav", volume, attn, flags, pitch)
return FMRES_SUPERCEDE
}
}
if (equal(sample[14], "sta", 3)) {
engfunc(EngFunc_EmitSound, id, channel, "extreme-shop/EStab.wav", volume, attn, flags, pitch)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
#if defined blockcmds_on
public clcmd_block(id)
return PLUGIN_HANDLED
#endif
public clcmd_shop(id) {
if(!is_user_alive(id))
return PLUGIN_HANDLED
if(g_GameMode == 3) {
shop_zombie(id)
return PLUGIN_HANDLED
}
if(g_GameMode > 1)
return PLUGIN_HANDLED
message_begin(MSG_ONE, g_iMessagesBuyClose, _, id)
message_end()
static menu[500], len
new cost, money
len = 0
money = jb_get_money(id)
if(get_user_team(id) == 1) {
len += formatex(menu[len], charsmax(menu) - len, "%L^n\y%L: \w%d^n^n", LANG_SERVER, "SHOP_T", LANG_SERVER, "SHOP_MONEY", money)
cost = get_pcvar_num(T_item_1)
if(money >= cost) len += formatex(menu[len], charsmax(menu) - len, "1. \w%L\R\y%d$^n", LANG_SERVER, "SHOP_T_WPN1", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d1. %L\R%d$^n", LANG_SERVER, "SHOP_T_WPN1", cost)
cost = get_pcvar_num(T_item_2)
if(money >= cost) len += formatex(menu[len], charsmax(menu) - len, "2. \w%L\R\y%d$^n", LANG_SERVER, "SHOP_T_WPN2", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d2. %L\R%d$^n", LANG_SERVER, "SHOP_T_WPN2", cost)
cost = get_pcvar_num(T_item_3)
if(money >= cost) len += formatex(menu[len], charsmax(menu) - len, "3. \w%L\R\y%d$^n", LANG_SERVER, "SHOP_T_WPN3", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d3. %L\R%d$^n", LANG_SERVER, "SHOP_T_WPN3", cost)
cost = get_pcvar_num(T_item_4)
if(money >= cost) len += formatex(menu[len], charsmax(menu) - len, "4. \w%L\R\y%d$^n", LANG_SERVER, "SHOP_T_WPN4", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d4. %L\R%d$^n", LANG_SERVER, "SHOP_T_WPN4", cost)
cost = get_pcvar_num(T_item_5)
if(money >= cost) len += formatex(menu[len], charsmax(menu) - len, "5. \w%L\R\y%d$^n", LANG_SERVER, "SHOP_T_WPN5", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d5. %L\R%d$^n", LANG_SERVER, "SHOP_T_WPN5", cost)
cost = get_pcvar_num(T_item_7)
if(money >= cost) len += formatex(menu[len], charsmax(menu) - len, "6. \w%L\R\y%d$^n", LANG_SERVER, "SHOP_T_WPN6", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d6. %L\R%d$^n", LANG_SERVER, "SHOP_T_WPN6", cost)
cost = get_pcvar_num(T_item_8)
if(money >= cost) len += formatex(menu[len], charsmax(menu) - len, "7. \wUSP\R\y%d$^n", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d7. USP\R%d$^n", cost)
cost = get_pcvar_num(T_item_9)
if (!fdcooldown[id] && !get_bit(g_FreedayAuto, id) && money >= cost) len += formatex(menu[len], charsmax(menu) - len, "8. \w%L\R\y%d$^n", LANG_SERVER, "SHOP_T_WPN7", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d8. %L\R%d $^n", LANG_SERVER, "SHOP_T_WPN7", cost)
cost = get_pcvar_num(T_item_6)
if (!inviscd[id] && money >= cost) len += formatex(menu[len], charsmax(menu) - len, "9. \w%L\R\y%d$^n^n", LANG_SERVER, "SHOP_T_WPN8", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d9. %L\R\d%d$^n^n", LANG_SERVER, "SHOP_T_WPN8", cost)
len += formatex(menu[len], charsmax(menu) - len, "0. \w%L^n", LANG_SERVER, "SHOP_EXIT")
show_menu(id, keysmenu, menu, -1, "MenuT")
}
if(get_user_team(id) == 2) {
len += formatex(menu[len], charsmax(menu) - len, "%L^n\y%L: \w%d^n^n", LANG_SERVER, "SHOP_CT", LANG_SERVER, "SHOP_MONEY", money)
cost = get_pcvar_num(CT_item_1)
if(money >= cost) len += formatex(menu[len], charsmax(menu) - len, "1. \w%L\R\y%d$^n", LANG_SERVER, "SHOP_T_WPN3", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d1. %L\R%d$^n", LANG_SERVER, "SHOP_T_WPN3", cost)
cost = get_pcvar_num(CT_item_3)
if(money >= cost) len += formatex(menu[len], charsmax(menu) - len, "2. \w%L\R\y%d$^n", LANG_SERVER, "SHOP_CT_WPN1", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d2. %L\R%d$^n", LANG_SERVER, "SHOP_CT_WPN1", cost)
cost = get_pcvar_num(T_item_4)
if(money >= cost) len += formatex(menu[len], charsmax(menu) - len, "3. \w%L\R\y%d$^n^n", LANG_SERVER, "SHOP_T_WPN4", cost)
else len += formatex(menu[len], charsmax(menu) - len, "\d3. %L\R%d$^n^n", LANG_SERVER, "SHOP_T_WPN4", cost)
len += formatex(menu[len], charsmax(menu) - len, "0. \w%L^n", LANG_SERVER, "SHOP_EXIT")
show_menu(id, keysmenu, menu, -1, "MenuCT")
}
return PLUGIN_HANDLED
}
public ShopT(id, key) {
new alive = is_user_alive(id)
new team = get_user_team(id)
new user_money = jb_get_money(id)
new CostT1 = get_pcvar_num(T_item_1)
new CostT2 = get_pcvar_num(T_item_2)
new CostT3 = get_pcvar_num(T_item_3)
new CostT4 = get_pcvar_num(T_item_4)
new CostT5 = get_pcvar_num(T_item_5)
new CostT6 = get_pcvar_num(T_item_6)
new CostT7 = get_pcvar_num(T_item_7)
new CostT8 = get_pcvar_num(T_item_8)
new CostT9 = get_pcvar_num(T_item_9)
switch(key) {
case 0: {
if(user_money >= CostT1 && alive && team == 1 && !g_HasWeapon[id]) {
clear_bit(g_PlayerSuperKnife, id)
engclient_cmd(id, "weapon_knife")
set_pev(id, pev_viewmodel2, OTVERTKA_V_MODEL)
set_pev(id, pev_weaponmodel2, OTVERTKA_P_MODEL)
g_Otvertka[id] = true
g_HasWeapon[id] = true
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostT1)
}
else if(g_HasWeapon[id]) ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "ALREADY_HAVE")
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
case 1: {
if(user_money >= CostT2 && alive && team == 1 && !g_HasWeapon[id]) {
clear_bit(g_PlayerSuperKnife, id)
engclient_cmd(id, "weapon_knife")
set_pev(id, pev_viewmodel2, KATANA_V_MODEL)
set_pev(id, pev_weaponmodel2, KATANA_P_MODEL)
g_Katana[id] = true
g_HasWeapon[id] = true
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostT2)
}
else if(g_HasWeapon[id]) ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "ALREADY_HAVE")
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
case 2: {
if(user_money >= CostT3 && alive && team == 1 && !g_HasWeapon[id]) {
clear_bit(g_PlayerSuperKnife, id)
engclient_cmd(id, "weapon_knife")
set_pev(id, pev_viewmodel2, ELECTRO_V_MODEL)
set_pev(id, pev_weaponmodel2, ELECTRO_P_MODEL)
g_Electro[id] = true
g_HasWeapon[id] = true
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostT3)
}
else if(g_HasWeapon[id]) ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "ALREADY_HAVE")
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
case 3: {
if(user_money >= CostT4 && alive && team == 1) {
fm_set_user_maxspeed(id, 500.0)
g_speed[id] = true
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostT4)
}
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
case 4: {
if(user_money >= CostT5 && alive && team == 1) {
fm_give_item(id, "weapon_hegrenade")
fm_give_item(id, "weapon_flashbang")
fm_give_item(id, "weapon_flashbang")
fm_give_item(id, "weapon_smokegrenade")
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostT5)
}
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
case 5: {
if(user_money >= CostT7 && alive & team == 1) {
fm_set_user_gravity(id, 0.2)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostT7)
}
else ColorChat(id, GREEN, "[%s]^x01 %L!", PREFIX, LANG_SERVER, "NO_MONEY")
}
case 6: {
if(user_money >= CostT8 && alive & team == 1) {
drop_weapons_sec(id, 1)
cs_set_weapon_ammo(fm_give_item(id, "weapon_usp"), 6)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostT8)
}
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
case 7: {
if(user_money >= CostT9 && alive & team == 1 && fdcooldown[id] == 0) {
set_bit(g_FreedayAuto, id)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostT9)
fdcooldown[id] = 6
}
else if(fdcooldown[id] > 0) ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "SIX_ROUNDS")
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
case 8: {
if(user_money >= CostT6 && alive & team == 1 && inviscd[id] == 0) {
fm_set_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
set_task(8.0, "removeinvis", id+TASK_INVISPL)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostT6)
inviscd[id] = 6
}
else if(inviscd[id] > 0) ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "SIX_ROUNDS")
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
}
}
public removeinvis(id) {
id -= TASK_INVISPL
if(is_user_alive(id)) {
fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "INVIS_END")
}
}
public ShopCT(id, key) {
new alive = is_user_alive(id)
new team = get_user_team(id)
new user_money = jb_get_money(id)
new CostCT1 = get_pcvar_num(CT_item_1)
new CostCT2 = get_pcvar_num(CT_item_3)
new CostCT3 = get_pcvar_num(T_item_4)
switch(key) {
case 0: {
if(user_money >= CostCT1 && alive && team == 2) {
engclient_cmd(id, "weapon_knife")
set_pev(id, pev_viewmodel2, ELECTRO_V_MODEL)
set_pev(id, pev_weaponmodel2, ELECTRO_P_MODEL)
g_Electro[id] = true
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostCT1)
}
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
case 1: {
if(user_money >= CostCT2 && alive && team == 2) {
cs_set_user_armor(id, 75, CS_ARMOR_VESTHELM)
fm_set_user_health(id, get_user_health(id) + 300)
fm_give_item(id, "weapon_m249")
cs_set_user_bpammo(id, CSW_M249, 200)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostCT2)
}
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
case 2: {
if(user_money >= CostCT3 && alive && team == 2) {
fm_set_user_maxspeed(id, 500.0)
g_speed[id] = true
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "BUY_SUCCESS")
jb_set_money(id, user_money - CostCT3)
}
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
}
}
}
bool:IsGrenade(i_Inflictor) {
static s_Classname[8]
pev(i_Inflictor, pev_classname, s_Classname, charsmax(s_Classname))
return equal(s_Classname, "grenade") ? true : false
}
/* === GAME:ATTACK === */
public cmd_attack() {
if (g_Simon == 0) return PLUGIN_HANDLED
if (g_used == 0) {
g_FreedayAutoAll = 1
g_used = 1
g_nogamerounds = get_pcvar_num(gp_NoGame)
jail_open()
g_GameMode = 6
g_BoxStarted = 0
entity_set_int(g_Simon, EV_INT_body, 3)
g_Simon = 0
set_lights("d")
new i
for(i = 1; i <= mxplr; i++) {
if((is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)) {
fm_set_user_health(i, 200)
fm_set_user_maxspeed(i, 250.0)
g_speed[i] = false
fm_set_user_gravity(i, 1.0)
}
else if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T) {
fm_set_user_health(i, 100)
cs_set_user_armor(i, 50, CS_ARMOR_VESTHELM)
g_speed[i] = false
fm_set_user_gravity(i, 1.0)
new item=random_num(0,11)
if (!item) fm_give_item(i, "weapon_awp")
else if(item < 6) fm_give_item(i, "weapon_m4a1")
else fm_give_item(i, "weapon_ak47")
cs_set_user_bpammo(i, CSW_AWP, 30)
cs_set_user_bpammo(i, CSW_M4A1, 90)
cs_set_user_bpammo(i, CSW_AK47, 90)
}
}
jb_blockweapons()
}
return PLUGIN_HANDLED
}
/* === GAME:DEFENCE === */
public cmd_defence() {
if (g_Simon == 0) return PLUGIN_HANDLED
if (g_used == 0) {
g_FreedayAutoAll = 1
g_used = 1
g_nogamerounds = get_pcvar_num(gp_NoGame)
jail_open()
g_GameMode = 8
g_BoxStarted = 0
entity_set_int(g_Simon, EV_INT_body, 3)
g_Simon = 0
set_lights("j")
new i
for(i = 1; i <= mxplr; i++) {
if((is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)) {
fm_strip_user_weapons(i)
fm_set_user_rendering(i, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
fm_give_item(i, "weapon_knife")
fm_set_user_health(i, 250)
cs_set_user_armor(i, 0, CS_ARMOR_NONE)
fm_set_user_maxspeed(i, 250.0)
g_speed[i] = false
fm_set_user_gravity(i, 0.9)
}
else if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T) {
fm_strip_user_weapons(i)
fm_set_user_health(i, 100)
cs_set_user_armor(i, 0, CS_ARMOR_NONE)
fm_give_item(i, "weapon_m249")
cs_set_user_bpammo(i,CSW_M249,1000)
fm_give_item(i, "weapon_knife")
fm_set_user_maxspeed(i, 250.0)
g_speed[i] = false
fm_set_user_gravity(i, 1.0)
}
}
jb_blockweapons()
}
return PLUGIN_HANDLED
}
/* === GAME:SPARTA === */
/*public cmd_sparta(){
if (g_Simon == 0)return PLUGIN_HANDLED
if (g_used == 0) {
g_FreedayAutoAll = 1
g_used = 1
g_nogamerounds = get_pcvar_num(gp_NoGame)
jail_open()
g_GameMode = 7
g_BoxStarted = 0
entity_set_int(g_Simon, EV_INT_body, 3)
g_Simon = 0
set_lights("f")
new i
for(i = 1; i <= g_MaxClients; i++) {
if((is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)) {
fm_strip_user_weapons(i)
fm_give_item(i, "weapon_m4a1")
fm_give_item(i, "weapon_ak47")
cs_set_user_bpammo(i, CSW_AK47, 300)
cs_set_user_bpammo(i, CSW_M4A1, 300)
fm_set_user_health(i, 222)
}
else if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T) {
fm_strip_user_weapons(i)
fm_set_user_health(i, 200)
cs_set_user_armor(i, 25, CS_ARMOR_VESTHELM)
fm_give_item(i, "weapon_knife")
fm_give_item(i, "weapon_shield")
}
}
jb_blockweapons()
}
return PLUGIN_HANDLED
}*/
/* === DROP WEAPONS STOCK === */
stock drop_weapons_prim(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)) {
static wname[32]
get_weaponname(weaponid, wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}
stock drop_weapons_sec(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) & SECONDARY_WEAPONS_BIT_SUM)) {
static wname[32]
get_weaponname(weaponid, wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}
stock drop_weapons_all(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) & ALL_WEAPONS_BIT_SUM)) {
static wname[32]
get_weaponname(weaponid, wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}
/* === HOOK === */
#if defined hook_on
public admin_hook(id) {
if(g_GameMode > 1 || (g_Simon > 0 && cs_get_user_team(id) == CS_TEAM_T && !get_bit(g_PlayerFreeday, id)) || ~get_user_flags(id) & HOOK_LEVEL || !is_user_alive(id) || !g_SimonAllowed)
return PLUGIN_HANDLED
get_user_origin(id,hookorigin[id-1],3)
ishooked[id-1] = true
emit_sound(id,CHAN_STATIC,SOUND_HOOK,1.0,ATTN_NORM,0,PITCH_NORM)
set_task(0.1,"hook_task",id,"",0,"ab")
hook_task(id)
return PLUGIN_HANDLED
}
public is_hooked(id)
return ishooked[id-1]
public admin_hook_off(id) {
remove_hook(id)
return PLUGIN_HANDLED
}
public hook_task(id) {
if(!is_user_connected(id) || !is_user_alive(id))
remove_hook(id)
remove_beam(id)
if (get_pcvar_num(cvar_hookupd)) get_user_origin(id,hookorigin[id-1],3)
emit_sound(id,CHAN_STATIC,SOUND_HOOK,0.2,ATTN_NORM,0,PITCH_NORM)
draw_hook(id)
new origin[3], Float:velocity[3]
get_user_origin(id,origin)
new distance = get_distance(hookorigin[id-1],origin)
if(distance > 25) {
velocity[0] = (hookorigin[id-1][0] - origin[0]) * (2.0 * 300 / distance)
velocity[1] = (hookorigin[id-1][1] - origin[1]) * (2.0 * 300 / distance)
velocity[2] = (hookorigin[id-1][2] - origin[2]) * (2.0 * 300 / distance)
entity_set_vector(id,EV_VEC_velocity,velocity)
} else {
entity_set_vector(id,EV_VEC_velocity,Float:{0.0,0.0,0.0})
remove_hook(id)
}
}
public draw_hook(id) {
static num[4]
num[0] = random_num(0,255)
num[1] = random_num(0,255)
num[2] = random_num(0,255)
num[3] = random_num(50,255)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(1) // TE_BEAMENTPOINT
write_short(id) // entid
write_coord(hookorigin[id-1][0]) // origin
write_coord(hookorigin[id-1][1]) // origin
write_coord(hookorigin[id-1][2]) // origin
write_short(Sbeam) // sprite index
write_byte(0) // start frame
write_byte(0) // framerate
write_byte(100) // life
write_byte(10) // width
write_byte(0) // noise
write_byte(num[0]) // r
write_byte(num[1]) // g
write_byte(num[2]) // b
write_byte(num[3]) // brightness
write_byte(0) // speed
message_end()
}
public remove_hook(id) {
if(task_exists(id)) remove_task(id)
remove_beam(id)
ishooked[id-1] = false
}
public remove_beam(id) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(99) // TE_KILLBEAM
write_short(id)
message_end()
}
#endif
public jb_blockweapons()
WeaponsLocked = true
public jb_unblockweapons()
WeaponsLocked = false
public player_touchweapon(id, ent) {
static model[32], class[32]
if(WeaponsLocked)
return HAM_SUPERCEDE
if(is_valid_ent(id) && g_Duel != 6 && is_user_alive(ent) && cs_get_user_team(ent) == CS_TEAM_CT) {
entity_get_string(id, EV_SZ_model, model, charsmax(model))
if(model[7] == 'w' && model[9] == 'h' && model[10] == 'e' && model[11] == 'g') {
entity_get_string(id, EV_SZ_classname, class, charsmax(class))
if(equal(class, "weapon_hegrenade"))
remove_entity(id)
return HAM_SUPERCEDE
}
}
return HAM_IGNORED
}
#if defined supermenu_on
public supermenu(id) {
if(~get_user_flags(id) & SUPERVIP_LEVEL || (cs_get_user_team(id) != CS_TEAM_T && cs_get_user_team(id) != CS_TEAM_CT))
return PLUGIN_HANDLED
new menuname[32], option[64]
formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "SM_MENU_NAME")
new menu = menu_create(menuname, "supermenu_handler")
// Respawn
if (g_usedrespawns[id] < 5 && !lastdeny && g_GameMode <= 1 && !is_user_alive(id))
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_RESPAWN", 5 - g_usedrespawns[id])
else
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SM_RESPAWN", 5 - g_usedrespawns[id])
menu_additem(menu, option, "1", 0)
// Health
if (cs_get_user_team(id) == CS_TEAM_CT && g_usedhp[id] == 0 && is_user_alive(id) && g_GameMode <= 1)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_HP")
else
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SM_HP")
menu_additem(menu, option, "2", 0)
// Grenades
if (g_usedgrenades[id] || !is_user_alive(id) || g_GameMode > 1)
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SM_GRENADES")
else
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_GRENADES")
menu_additem(menu, option, "3", 0)
// Gravity
if (g_usedgravity[id] > 0 || g_GameMode > 1 || !is_user_alive(id))
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SM_GRAVITY")
else
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_GRAVITY")
menu_additem(menu, option, "4", 0)
// Speed
if (g_usedturbo[id] > 0 || g_GameMode > 1 || !is_user_alive(id))
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SM_SPEED")
else
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_SPEED")
menu_additem(menu, option, "5", 0)
// Money
if (!g_usedmoney[id])
formatex(option, charsmax(option), "%L^n", LANG_SERVER, "SM_MONEY")
else
formatex(option, charsmax(option), "\d%L^n", LANG_SERVER, "SM_MONEY")
menu_additem(menu, option, "6", 0)
if(g_GameMode <= 1 || g_GameMode == 99)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_DISABLE")
else
formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SM_DISABLE")
menu_additem(menu, option, "7", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public supermenu_handler(id, menu, item) {
if(item < 0) return PLUGIN_CONTINUE
new cmd[3], access, callback
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)
new key = str_to_num(cmd)
switch (key) {
case 1: {
if(g_usedrespawns[id] < 5 && !is_user_alive(id) && !lastdeny && g_GameMode <= 1) {
ExecuteHamB(Ham_CS_RoundRespawn, id)
fm_give_item(id, "weapon_knife")
new nick[64]
get_user_name(id, nick, 63)
if (cs_get_user_team(id) == CS_TEAM_T) ColorChat(0, RED, "%L", LANG_SERVER, "SM_T_RESPAWN", nick)
if (cs_get_user_team(id) == CS_TEAM_CT) ColorChat(0, BLUE, "%L", LANG_SERVER, "SM_CT_RESPAWN", nick)
g_usedrespawns[id]++
} else if (g_usedrespawns[id] == 5) {
client_cmd(id, "spk %s", SOUND_ERROR)
client_print(id, print_center, "%L", LANG_SERVER, "SM_RESPAWN_COOLDOWN")
} else if (is_user_alive(id)) {
client_cmd(id, "spk %s", SOUND_ERROR)
client_print(id, print_center, "%L", LANG_SERVER, "SM_CANT_RESPAWN")
}
}
case 2: {
if (cs_get_user_team(id) == CS_TEAM_T) {
client_cmd(id, "spk %s", SOUND_ERROR)
client_print(id, print_center, "%L", LANG_SERVER, "SM_T_CANT_HEAL")
} else if (cs_get_user_team(id) == CS_TEAM_CT && g_usedhp[id] == 0 && is_user_alive(id) && g_GameMode <= 1) {
new nick[64]
get_user_name(id, nick, 63)
if (cs_get_user_team(id) == CS_TEAM_CT) ColorChat(0, BLUE, "%L", LANG_SERVER, "SM_CT_HEAL", nick)
fm_set_user_health(id, get_user_health(id) + 300)
cs_set_user_armor(id, get_user_armor(id) + 50, CS_ARMOR_VESTHELM)
g_usedhp[id] = 5
} else if (cs_get_user_team(id) == CS_TEAM_CT) {
client_cmd(id, "spk %s", SOUND_ERROR)
client_print(id, print_center, "%L", LANG_SERVER, "SM_CT_CANT_HEAL")
}
}
case 3: {
if(!g_usedgrenades[id] && is_user_alive(id) && g_GameMode <= 1){
new nick[64]
get_user_name(id, nick, 63)
if (cs_get_user_team(id) == CS_TEAM_T) ColorChat(0, RED, "%L", LANG_SERVER, "SM_T_GRENADES")
if (cs_get_user_team(id) == CS_TEAM_CT) ColorChat(0, BLUE, "%L", LANG_SERVER, "SM_CT_GRENADES", nick)
if (cs_get_user_team(id) == CS_TEAM_T) fm_give_item(id, "weapon_hegrenade")
fm_give_item(id, "weapon_flashbang")
fm_give_item(id, "weapon_flashbang")
fm_give_item(id, "weapon_smokegrenade")
g_usedgrenades[id] = true
} else {
client_cmd(id, "spk %s", SOUND_ERROR)
client_print(id, print_center, "%L", LANG_SERVER, "SM_CANT_GRENADES")
}
}
case 4: {
if (g_usedgravity[id] == 0 && is_user_alive(id) && g_GameMode <= 1) {
new nick[64]
get_user_name(id, nick, 63)
if (cs_get_user_team(id) == CS_TEAM_T) ColorChat(0, RED, "%L", LANG_SERVER, "SM_T_JUMP", nick)
if (cs_get_user_team(id) == CS_TEAM_CT) ColorChat(0, BLUE, "%L", LANG_SERVER, "SM_CT_JUMP", nick)
fm_set_user_gravity(id, 0.35)
g_usedgravity[id] = 2
} else {
client_cmd(id, "spk %s", SOUND_ERROR)
client_print(id, print_center, "%L", LANG_SERVER, "SM_CANT_JUMP")
}
}
case 5: {
if (g_usedturbo[id] == 0 && is_user_alive(id) && g_GameMode <= 1) {
new nick[64]
get_user_name(id, nick, 63)
if (cs_get_user_team(id) == CS_TEAM_T) ColorChat(0, RED, "%L", LANG_SERVER, "SM_T_SPEED", nick)
if (cs_get_user_team(id) == CS_TEAM_CT) ColorChat(0, BLUE, "%L", LANG_SERVER, "SM_CT_SPEED", nick)
fm_set_user_maxspeed(id, 500.0)
g_speed[id] = true
g_usedturbo[id] = 2
} else {
client_cmd(id, "spk %s", SOUND_ERROR)
client_print(id, print_center, "%L", LANG_SERVER, "SM_CANT_SPEED")
}
}
case 6: {
if (g_usedmoney[id]) {
client_cmd(id, "spk %s", SOUND_ERROR)
client_print(id, print_center, "%L", LANG_SERVER, "SM_CANT_MONEY")
} else {
new nick[64]
get_user_name(id, nick, 63)
if (cs_get_user_team(id) == CS_TEAM_T) ColorChat(0, RED, "%L", LANG_SERVER, "SM_T_MONEY", nick)
if (cs_get_user_team(id) == CS_TEAM_CT) ColorChat(0, BLUE, "%L", LANG_SERVER, "SM_CT_MONEY", nick)
jb_set_money(id, jb_get_money(id) + 20)
g_usedmoney[id] = true
}
}
case 7: {
if(g_GameMode > 1 && g_GameMode != 99)
return PLUGIN_HANDLED
g_speed[id] = false
fm_set_user_maxspeed(id, 250.0)
fm_set_user_gravity(id, 1.0)
}
}
return PLUGIN_HANDLED
}
#endif
/* === SERVER MENU === */
#if defined jailmenu_on
public jailmenu(id) {
new option[64], header[128]
if(g_PlayerLast != id || g_GameMode != 99) {
remove_task(TASK_LASTPLAYER)
set_task(1.0, "task_last", TASK_LASTPLAYER)
}
formatex(header, charsmax(header), "\y%L", LANG_SERVER, "SRVMENU")
new menu = menu_create(header, "jailmenu_handler")
if (g_PlayerLast !=id || !is_user_alive(id) || g_GameMode != 99 || g_RoundEnd || g_Duel > 0) formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SRVMENU_LAST")
else formatex(option, charsmax(option), "%L", LANG_SERVER, "SRVMENU_LAST")
menu_additem(menu, option, "1", 0)
if (is_user_alive(id) && g_GameMode < 2) formatex(option, charsmax(option), "%L", LANG_SERVER, "SRVMENU_SHOP")
else if(is_user_alive(id) && g_GameMode == 3) {
if(cs_get_user_team(id) == CS_TEAM_T) formatex(option, charsmax(option), "\y%L", LANG_SERVER, "SRVMENU_SHOP_Z")
else if(cs_get_user_team(id) == CS_TEAM_CT) formatex(option, charsmax(option), "\y%L", LANG_SERVER, "SRVMENU_SHOP_H")
else formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SRVMENU_SHOP")
}
else formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SRVMENU_SHOP")
menu_additem(menu, option, "2", 0)
if (g_Simon == 0 && g_GameMode == 1 && cs_get_user_team(id) == CS_TEAM_CT) formatex(option, charsmax(option), "%L", LANG_SERVER, "SRVMENU_SIMON")
else formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SRVMENU_SIMON")
menu_additem(menu, option, "3", 0)
if ((g_Simon == id || get_user_flags(id) & SUPERADMIN_LEVEL) && g_GameMode == 1) formatex(option, charsmax(option), "%L", LANG_SERVER, "SRVMENU_SMENU")
else formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SRVMENU_SMENU")
menu_additem(menu, option, "4", 0)
if (g_GameMode != 1 || g_Simon == id) formatex(option, charsmax(option), "%L", LANG_SERVER, "SRVMENU_OPEN")
else formatex(option, charsmax(option), "\d%L", LANG_SERVER, "SRVMENU_OPEN")
menu_additem(menu, option, "5", 0)
#if defined roulette_on
formatex(option, charsmax(option), "%L", LANG_SERVER, "SRVMENU_ROULETTE")
menu_additem(menu, option, "6", 0)
#endif
formatex(option, charsmax(option), "%L", LANG_SERVER, "SRVMENU_MUSIC")
menu_additem(menu, option, "7", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public jailmenu_handler(id, menu, item) {
if(item < 0) return PLUGIN_CONTINUE
new cmd[3], access, callback
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)
new key = str_to_num(cmd)
switch (key) {
case 1: {
if(cs_get_user_team(id) == CS_TEAM_T && is_user_alive(id)) cmd_lastrequest(id)
else {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "CANT_OPEN_LR")
client_cmd(id, "spk %s", SOUND_ERROR)
jailmenu(id)
}
}
case 2: {
if (is_user_alive(id) && g_GameMode < 2) clcmd_shop(id)
else if(is_user_alive(id) && g_GameMode == 3) shop_zombie(id)
else {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "CANT_OPEN_SHOP")
client_cmd(id, "spk %s", SOUND_ERROR)
jailmenu(id)
}
}
case 3: {
if (g_Simon == 0 && g_GameMode == 1 && cs_get_user_team(id) == CS_TEAM_CT) cmd_simon(id)
else {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "CANT_SIMON")
client_cmd(id, "spk %s", SOUND_ERROR)
jailmenu(id)
}
}
case 4: {
if(g_GameMode != 1) {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_NOOPEN_GM")
client_cmd(id, "spk %s", SOUND_ERROR)
jailmenu(id)
return PLUGIN_HANDLED
}
if (g_Simon == id || get_user_flags(id) & SUPERADMIN_LEVEL) cmd_simonmenu(id)
else {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "RIGHTS_OR_SIMON")
client_cmd(id, "spk %s", SOUND_ERROR)
jailmenu(id)
}
}
case 5: {
if (g_GameMode != 1 || g_Simon == id) {
jail_open()
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JAILS_OPENED")
}
else {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "CANT_OPEN_JAILS")
client_cmd(id, "spk %s", SOUND_ERROR)
jailmenu(id)
}
}
#if defined roulette_on
case 6: roulettemenu(id)
#endif
case 7: musicmenu(id)
}
return PLUGIN_HANDLED
}
#endif
/* === AUTO FREEDAY === */
public freeday_all() {
new Players[32], playerCount, i
g_Simon = 0
g_FreedayAutoAll = 0
client_print(0, print_console, "[Fantick] Event: Auto Freeday")
g_GameMode = 0
g_nogamerounds++
remove_task(TASK_NOSIMON)
emit_sound(0, CHAN_AUTO, SOUND_BELL, 1.0, ATTN_NORM, 0, PITCH_NORM)
hud_status(0)
g_PlayerFreeday = 0
g_systime = get_systime()
jail_open()
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
remove_task(TASK_FREEENDPL + Players[i])
entity_set_int(Players[i], EV_INT_skin, 3)
if (g_mp3[Players[i]]) client_cmd(Players[i], "mp3 play %s", MUSIC_FD)
}
remove_task(TASK_ROUNDEND)
set_task(get_pcvar_float(cvar_fdlen), "task_freeday_end",TASK_ROUNDEND)
}
/* === DUEL EFFECT === */
public Beacon(id) {
id -= TASK_BEACON
if(!is_user_connected(id))
return PLUGIN_HANDLED
if(cs_get_user_team(id) == CS_TEAM_CT) {
static origin[3]
get_user_origin(id, origin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMCYLINDER)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]-20)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+200)
write_short(BeaconSprite)
write_byte(0)
write_byte(1)
write_byte(6)
write_byte(2)
write_byte(1)
write_byte(0)
write_byte(0)
write_byte(255)
write_byte(255)
write_byte(0)
message_end()
} else {
static origin[3]
get_user_origin(id, origin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMCYLINDER)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]-20)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+200)
write_short(BeaconSprite)
write_byte(0)
write_byte(1)
write_byte(6)
write_byte(2)
write_byte(1)
write_byte(255)
write_byte(0)
write_byte(0)
write_byte(255)
write_byte(0)
message_end()
}
set_task(1.0, "Beacon", id + TASK_BEACON)
return PLUGIN_CONTINUE
}
/* === END ROUND DANCE=== */
#if defined er_fade
public fadescreen() {
message_begin(MSG_BROADCAST, get_user_msgid("ScreenFade"))
write_short(1<<12) // Duration
write_short(1<<12) // Hold time
write_short(0x0001) // Fade type
write_byte (random_num(20, 255)) // Red
write_byte (random_num(20, 255)) // Green
write_byte (random_num(20, 255)) // Blue
write_byte (255) // Alpha
message_end()
}
#endif
/* === ABOUT === */
public about(id) {
// DO NOT TOUCH THIS CODE
// I won't give updates to you if you change this
ColorChat(id, GREEN, "[%s] ^x01Версия:^x04 %s^x01. Собрал сборку^x04 BaRSiK^x01. Skype^x04 baarsik2", PREFIX, VERSION)
ColorChat(id, NORMAL, "Копия сделана специально для^x04 %s^x01", COPYFOR)
ColorChat(id, NORMAL, "Связь с администратором: Skype^x04 %s", ADMIN_SKYPE)
}
/* === ROULETTE === */
#if defined roulette_on
public roulettemenu(id) {
new option[64], header[128]
formatex(header, charsmax(header), "%L", LANG_SERVER, "RM_HEADER")
new menu = menu_create(header, "roulettemenu_handler")
if(!g_has_revolver[id] && is_user_alive(id) && jb_get_money(id) >= 30 && g_GameMode <= 1) formatex(option, charsmax(option), "%L", LANG_SERVER, "RM_BUY")
else formatex(option, charsmax(option), "\d%L", LANG_SERVER, "RM_BUY")
menu_additem(menu, option, "1", 0)
if(g_has_revolver[id] && is_user_alive(id) && g_GameMode <= 1) formatex(option, charsmax(option), "%L", LANG_SERVER, "RM_LUCK")
else formatex(option, charsmax(option), "\d%L", LANG_SERVER, "RM_LUCK")
menu_additem(menu, option, "2", 0)
formatex(option, charsmax(option), "%L^n", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L^n", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L^n", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu, 0)
}
public roulettemenu_handler(id, menu, item) {
if(item < 0) return PLUGIN_CONTINUE
new cmd[3], access, callback
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)
new key = str_to_num(cmd)
switch (key) {
case 1: {
if(jb_get_money(id) >= 30 && is_user_alive(id) && !g_has_revolver[id] && g_GameMode <= 1) {
jb_set_money(id, jb_get_money(id) - 30)
g_has_revolver[id] = true
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "RM_OKBUY")
roulettemenu(id)
} else if(g_has_revolver[id]) {
client_cmd(id, "spk %s", SOUND_ERROR)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "RM_ALREADY")
roulettemenu(id)
} else if(!is_user_alive(id)) {
client_cmd(id, "spk %s", SOUND_ERROR)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "RM_DEAD")
roulettemenu(id)
} else if(g_GameMode > 1) {
client_cmd(id, "spk %s", SOUND_ERROR)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "RM_GAME")
roulettemenu(id)
} else {
client_cmd(id, "spk %s", SOUND_ERROR)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
roulettemenu(id)
}
}
case 2: {
if(g_has_revolver[id] && is_user_alive(id) && g_GameMode <= 1) {
tryluck(id)
} else if (!is_user_alive(id)) {
client_cmd(id, "spk %s", SOUND_ERROR)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "RM_DEAD")
} else if(g_GameMode > 1) {
client_cmd(id, "spk %s", SOUND_ERROR)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "RM_GAME")
roulettemenu(id)
} else {
client_cmd(id, "spk %s", SOUND_ERROR)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "RM_NO_REVOLVER")
roulettemenu(id)
}
}
}
return PLUGIN_HANDLED
}
public tryluck(id) {
new lucky = random_num(0, 22)
if (0 <= lucky <= 11) {
if(get_user_health(id) <= 100) {
user_kill(id, 1)
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "RM_SHOT")
} else {
fm_set_user_health(id, get_user_health(id) - 100)
ColorChat(id, GREEN, "[%s]^x01 %L^x04 %L", PREFIX, LANG_SERVER, "RM_SHOT_HP", LANG_SERVER, "RM_SHOT_HP_REWARD")
}
} else if (12 <= lucky <= 15) {
jb_set_money(id, jb_get_money(id) + 20)
ColorChat(id, GREEN, "[%s]^x01 %L^x04 20$", PREFIX, LANG_SERVER, "RM_MONEY")
}
else if (16 <= lucky <= 18) {
if(cs_get_user_team(id) == CS_TEAM_T) {
drop_weapons_sec(id, 1)
cs_set_weapon_ammo(fm_give_item(id, "weapon_deagle"), 5)
client_cmd(id, "weapon_knife")
ColorChat(id, GREEN, "[%s]^x01 %L^x04 Deagle", PREFIX, LANG_SERVER, "RM_DEAGLE")
} else {
fm_set_user_health(id, get_user_health(id) + 100)
cs_set_user_armor(id, get_user_armor(id) + 20, CS_ARMOR_VESTHELM)
ColorChat(id, GREEN, "[%s]^x01 %L^x04 %L", PREFIX, LANG_SERVER, "RM_HP", LANG_SERVER, "RM_HP_REWARD")
}
} else if (lucky == 19) {
fm_set_user_maxspeed(id, 500.0)
g_speed[id] = true
ColorChat(id, GREEN, "[%s]^x01 %L ^x04 %L", PREFIX, LANG_SERVER, "RM_SPEED", LANG_SERVER, "RM_SPEED_REWARD")
} else if (lucky == 20) {
fm_set_user_gravity(id, 0.35)
ColorChat(id, GREEN, "[%s]^x01 %L^x04 %L", PREFIX, LANG_SERVER, "RM_GRAVITY", LANG_SERVER, "RM_GRAVITY_REWARD")
}
else if (lucky == 21) {
jb_set_money(id, jb_get_money(id) + 50)
ColorChat(id, GREEN, "[%s]^x01 %L^x04 50$", PREFIX, LANG_SERVER, "RM_MONEY_GREAT")
} else if (lucky == 22) {
engclient_cmd(id, "weapon_knife")
set_pev(id, pev_viewmodel2, KATANA_V_MODEL)
set_pev(id, pev_weaponmodel2, KATANA_P_MODEL)
g_Katana[id] = true
g_HasWeapon[id] = true
ColorChat(id, GREEN, "[%s]^x01 %L^x04 %L", PREFIX, LANG_SERVER, "RM_KATANA", LANG_SERVER, "RM_KATANA_REWARD")
}
}
#endif
/* === MUSIC MENU === */
public musicmenu(id) {
new option[64], header[128]
formatex(header, charsmax(header), "%L", LANG_SERVER, "MM_HEADER")
new menu = menu_create(header, "musicmenu_handler")
if (!g_mp3[id]) formatex(option, charsmax(option), "%L: \y[%L]", LANG_SERVER, "MM_MUSIC", LANG_SERVER, "JBB_OFF")
else formatex(option, charsmax(option), "%L: \y[%L]", LANG_SERVER, "MM_MUSIC", LANG_SERVER, "JBB_ON")
menu_additem(menu, option, "1", 0)
#if defined rs_on
if (!g_ermp3[id]) formatex(option, charsmax(option), "%L: \y[%L]", LANG_SERVER, "MM_ERMUSIC", LANG_SERVER, "JBB_OFF")
else formatex(option, charsmax(option), "%L: \y[%L]", LANG_SERVER, "MM_ERMUSIC", LANG_SERVER, "JBB_ON")
menu_additem(menu, option, "2", 0)
#endif
if (!g_mp3menu[id]) formatex(option, charsmax(option), "%L: \y[%L]", LANG_SERVER, "MM_MUSIC_MENU", LANG_SERVER, "JBB_OFF")
else formatex(option, charsmax(option), "%L: \y[%L]", LANG_SERVER, "MM_MUSIC_MENU", LANG_SERVER, "JBB_ON")
menu_additem(menu, option, "3", 0)
formatex(option, charsmax(option), "%L", LANG_SERVER, "MM_STOPMUSIC")
menu_additem(menu, option, "4", 0)
formatex(option, charsmax(option), "%L^n", LANG_SERVER, "SM_MORE")
menu_setprop(menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L^n", LANG_SERVER, "SM_BACK")
menu_setprop(menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L^n", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, option)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu, 0)
}
public musicmenu_handler(id, menu, item) {
if(item < 0) return PLUGIN_CONTINUE
new cmd[3], access, callback
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)
new key = str_to_num(cmd)
switch (key) {
case 1: {
if(g_mp3[id]) {
g_mp3[id] = 0
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "MM_MUSICOFF")
musicmenu(id)
} else {
g_mp3[id] = 1
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "MM_MUSICON")
musicmenu(id)
}
}
#if defined rs_on
case 2: {
if(g_ermp3[id]) {
g_ermp3[id] = 0
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "MM_MUSICOFF")
musicmenu(id)
} else {
g_ermp3[id] = 1
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "MM_MUSICON")
musicmenu(id)
}
}
#endif
case 3: {
if(g_mp3menu[id]) {
g_mp3menu[id] = 0
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "MM_MUSICOFF")
musicmenu(id)
} else {
g_mp3menu[id] = 1
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "MM_MUSICON")
musicmenu(id)
}
}
case 4: {
client_cmd(id, "mp3 stop")
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "MM_STOPPED")
musicmenu(id)
}
}
return PLUGIN_HANDLED
}
/* === GAME: MAGIC === */
public cmd_game_magic() {
if (g_GameMode != 1)
return PLUGIN_CONTINUE
g_FreedayAutoAll = 1
jail_open()
g_GameMode = 4
g_MagicStarted = 0
g_BoxStarted = 0
g_systime = get_systime()
jb_blockweapons()
entity_set_int(g_Simon, EV_INT_body, 3)
g_Simon = 0
g_nogamerounds = get_pcvar_num(gp_NoGame)
new Players[32]
new playerCount, i
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (is_user_connected(Players[i])) {
if (g_mp3[Players[i]]) client_cmd(Players[i], "mp3 play %s", PREMUSIC_MAGIC)
player_strip_weapons(Players[i])
fm_give_item(Players[i], "weapon_knife")
fm_set_user_health(Players[i], 100)
cs_set_user_armor(Players[i], 0, CS_ARMOR_NONE)
g_magic_color[Players[i]] = random_num(0, 7)
}
}
set_lights("h")
set_task(20.0,"cmd_magic_start",TASK_GIVEITEMS)
return PLUGIN_CONTINUE
}
public cmd_magic_start(taskid) {
remove_task(taskid)
g_MagicStarted = 1
new Players[32]
new playerCount, i
get_players(Players, playerCount, "ac")
for (i=0; i<playerCount; i++) {
if (is_user_connected(Players[i])) {
current_weapon(Players[i])
fm_set_user_health(Players[i], 100)
cs_set_user_armor(Players[i], 0, CS_ARMOR_NONE)
}
}
}
public do_skill(id) {
emit_sound(id, CHAN_WEAPON, SOUND_MAGIC_SKILL, 1.0, ATTN_NORM, 0, PITCH_NORM)
message_begin(MSG_ONE, SVC_WEAPONANIM, _, id)
write_byte(4)
write_byte(pev(id, pev_body))
message_end()
entity_set_int(id, EV_INT_sequence, 10)
launch_light(id+TASK_ATTACK)
}
public launch_light(taskid) {
new id = taskid - TASK_ATTACK
if (task_exists(id+TASK_ATTACK)) remove_task(id+TASK_ATTACK)
if (!is_user_alive(id)) return
// check
new Float: fOrigin[3], Float:fAngle[3],Float: fVelocity[3]
pev(id, pev_origin, fOrigin)
pev(id, pev_view_ofs, fAngle)
fm_velocity_by_aim(id, 2.0, fVelocity, fAngle)
fAngle[0] *= -1.0
// create ent
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
set_pev(ent, pev_classname, "magic_skill")
engfunc(EngFunc_SetModel, ent, "models/w_hegrenade.mdl")
set_pev(ent, pev_mins, Float:{-1.0, -1.0, -1.0})
set_pev(ent, pev_maxs, Float:{1.0, 1.0, 1.0})
set_pev(ent, pev_origin, fOrigin)
fOrigin[0] += fVelocity[0]
fOrigin[1] += fVelocity[1]
fOrigin[2] += fVelocity[2]
set_pev(ent, pev_movetype, MOVETYPE_BOUNCE)
set_pev(ent, pev_gravity, 0.01)
fVelocity[0] *= 1000
fVelocity[1] *= 1000
fVelocity[2] *= 1000
set_pev(ent, pev_velocity, fVelocity)
set_pev(ent, pev_owner, id)
set_pev(ent, pev_angles, fAngle)
set_pev(ent, pev_solid, SOLID_BBOX) //store the enitty id
// invisible ent
fm_set_rendering(ent, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
new magic_red = define_color(id, 1)
new magic_green = define_color(id, 2)
new magic_blue = define_color(id, 3)
//show trail
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(ent) //entity
write_short(Sbeam) //model
write_byte(5) //life
write_byte(3) //width
write_byte(magic_red)
write_byte(magic_green)
write_byte(magic_blue)
write_byte(200)
message_end()
return
}
public define_color(id, num) {
if(!is_user_connected(id))
return 0
switch(g_magic_color[id]) {
case 1: {
if(num == 1) return 255
else if(num == 2) return 0
else if(num == 3) return 0
}
case 2: {
if(num == 1) return 0
else if(num == 2) return 255
else if(num == 3) return 0
}
case 3: {
if(num == 1) return 124
else if(num == 2) return 252
else if(num == 3) return 0
}
case 4: {
if(num == 1) return 255
else if(num == 2) return 215
else if(num == 3) return 0
}
case 5: {
if(num == 1) return 255
else if(num == 2) return 20
else if(num == 3) return 147
}
case 6: {
if(num == 1) return 0
else if(num == 2) return 191
else if(num == 3) return 255
}
case 7: {
if(num == 1) return 144
else if(num == 2) return 238
else if(num == 3) return 144
}
default: {
if(num == 1) return 0
else if(num == 2) return 0
else if(num == 3) return 255
}
}
return 0
}
public fw_Touch(ent, victim) {
if (!pev_valid(ent)) return FMRES_IGNORED
new EntClassName[32]
entity_get_string(ent, EV_SZ_classname, EntClassName, charsmax(EntClassName))
if (equal(EntClassName, "magic_skill")) {
light_exp(ent, victim)
remove_entity(ent)
}
return FMRES_IGNORED
}
light_exp(ent, victim) {
if (!pev_valid(ent))
return
new attacker = pev(ent, pev_owner)
new randoms = random_num(30, 50)
if (is_user_alive(victim) && is_user_connected(attacker)) if(cs_get_user_team(victim) == cs_get_user_team(attacker)) {
if(get_user_health(victim) > randoms) {
fm_set_user_health(victim, get_user_health(victim) - randoms)
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), _, victim)
write_short(12 << 12)
write_short(5 << 12)
write_short(8 << 12)
message_end()
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, victim)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(200)
write_byte(0)
write_byte(0)
write_byte(75)
message_end()
} else {
g_victim = victim
g_killer = attacker
user_slap(victim, randoms, 1)
jb_set_money(attacker, jb_get_money(attacker) + 10)
}
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, attacker)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(0)
write_byte(200)
write_byte(75)
message_end()
}
static Float:origin[3]
pev(ent, pev_origin, origin)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_EXPLOSION) // TE_EXPLOSION
write_coord(floatround(origin[0])) // origin x
write_coord(floatround(origin[1])) // origin y
write_coord(floatround(origin[2])) // origin z
write_short(ExplodeSprite) // sprites
write_byte(12) // scale in 0.1's
write_byte(30) // framerate
write_byte(14) // flags
message_end() // message end
}
public player_killed_pre(id, ida, sgibs) {
new gmsgDeathMsg = get_user_msgid("DeathMsg")
if(id == g_victim && is_user_connected(g_killer)) {
set_msg_block(gmsgDeathMsg, BLOCK_ONCE)
message_begin(MSG_ALL, gmsgDeathMsg)
write_byte(g_killer)
write_byte(id)
write_byte(1)
write_string("knife")
message_end()
g_killer = 0
g_victim = 0
}
}
public fw_Knife_PrimaryAttack_Post(knife) {
static id
id = get_pdata_cbase(knife, 41, 4)
if(is_user_connected(id) && g_GameMode == 4 && g_MagicStarted) {
do_skill(id)
set_pdata_float(knife, 46, 2.0, 4)
set_pdata_float(knife, 47, 2.0, 4)
set_pdata_float(knife, 48, 2.0, 4)
}
return HAM_IGNORED
}
public fw_Knife_SecondaryAttack_Post(knife) {
static id
id = get_pdata_cbase(knife, 41, 4)
if(is_user_connected(id) && g_GameMode == 4 && g_MagicStarted) {
do_skill(id)
set_pdata_float(knife, 46, 2.0, 4)
set_pdata_float(knife, 47, 2.0, 4)
set_pdata_float(knife, 48, 2.0, 4)
}
return HAM_IGNORED
}
/* === Money fix === */
public on_money_change(msg_id, msg_dest, msg_entity) {
if(!is_user_connected(msg_entity))
return PLUGIN_CONTINUE
cs_set_user_money(msg_entity, jb_get_money(msg_entity))
return PLUGIN_HANDLED
}
/* === ROLL === */
public cmd_roll(id) {
if(!is_user_alive(id) || !can_roll[id]){
client_print(id, print_center, "%L", LANG_SERVER, "JBB_ROLLCD")
return PLUGIN_HANDLED
}
new name[32]
new roll = random_num(1, 100)
get_user_name(id, name, charsmax(name))
client_print(0, print_chat, "%s %L %d (1-100)", name, LANG_SERVER, "JBB_ROLLED", roll)
can_roll[id] = false
set_task(40.0, "roll_reset", TASK_ROLLCD + id)
return PLUGIN_HANDLED
}
public roll_reset(id) {
if(id >= TASK_ROLLCD) id -= TASK_ROLLCD
if(is_user_connected(id)) can_roll[id] = true
}
#if defined teammanager_on
public message_ShowMenu(iMsgid, iDest, id) {
static sMenuCode[iMaxLen]
get_msg_arg_string(4, sMenuCode, sizeof(sMenuCode) - 1)
if(equal(sMenuCode, FIRST_JOIN_MSG) || equal(sMenuCode, FIRST_JOIN_MSG_SPEC)) {
set_autojoin_task(id, iMsgid)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public message_VGUIMenu(iMsgid, iDest, id) {
if(get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM)
return PLUGIN_CONTINUE
set_autojoin_task(id, iMsgid)
return PLUGIN_HANDLED
}
public gamemenu(id) {
#if defined teammanager_on
if(cs_get_user_team(id) == CS_TEAM_UNASSIGNED) {
chooseteam(id)
return PLUGIN_HANDLED
}
new lang[128]
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_GMMENU")
new menu = menu_create(lang, "gamemenu_handler")
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "SRVMENU")
menu_additem(menu, lang, "1", 0)
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_GM_CHOOSE_TEAM")
menu_additem(menu, lang, "2", 0)
if(get_user_flags(id) & VIP_LEVEL) formatex(lang, charsmax(lang), "%L", LANG_SERVER, "SRVMENU_VIPMENU")
else formatex(lang, charsmax(lang), "\d%L", LANG_SERVER, "SRVMENU_VIPMENU")
menu_additem(menu, lang, "3", 0)
if(get_user_flags(id) & SUPERVIP_LEVEL) formatex(lang, charsmax(lang), "%L", LANG_SERVER, "SRVMENU_SM")
else formatex(lang, charsmax(lang), "\d%L", LANG_SERVER, "SRVMENU_SM")
menu_additem(menu, lang, "4", 0)
#if defined donate_on
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_DONATE_MENUNAME")
menu_additem(menu, lang, "5", 0)
#endif
// DO NOT CHANGE OR DELETE ITEM BELOW
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "SRVMENU_ABOUT")
menu_additem(menu, lang, "99", 0)
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(menu, MPROP_EXITNAME, lang)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
#else
jailmenu(id)
return PLUGIN_HANDLED
#endif
}
#if defined teammanager_on
public gamemenu_handler(id, menu, item) {
if(item < 0) return PLUGIN_CONTINUE
new cmd[3], access, callback
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)
new key = str_to_num(cmd)
switch (key) {
case 1: jailmenu(id)
case 2: chooseteam(id)
case 3: {
if(get_user_flags(id) & VIP_LEVEL) VIPMenu(id)
else {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "ACCESS_DENIED")
client_cmd(id, "spk %s", SOUND_ERROR)
gamemenu(id)
}
}
case 4: {
if(get_user_flags(id) & SUPERVIP_LEVEL) supermenu(id)
else {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "ACCESS_DENIED")
client_cmd(id, "spk %s", SOUND_ERROR)
gamemenu(id)
}
}
#if defined donate_on
case 5: donatemenu(id)
#endif
case 99: about(id) // DO NOT CHANGE OR DELETE
}
return PLUGIN_HANDLED
}
#endif
#if defined donate_on
public donatemenu(id) {
if(!is_user_connected(id))
return PLUGIN_CONTINUE
new Float:cooldown = get_gametime() - g_delay[id]
if(cooldown < 30.0 && g_delay[id] != 0.0) {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_DONATE_CD", 30-floatround(cooldown))
return PLUGIN_HANDLED
}
new buff[512], option[32], total
formatex(buff, charsmax(buff), "%L", LANG_SERVER, "JBB_DONATE_MENUNAME")
new i_Menu = menu_create(buff, "player_select_sub")
new s_Players[32], i_Num, i_Player
new s_Name[32], s_Player[10]
get_players(s_Players, i_Num)
for (new i; i < i_Num; i++) {
i_Player = s_Players[i]
get_user_name(i_Player, s_Name, charsmax(s_Name))
num_to_str(i_Player, s_Player, charsmax(s_Player))
if(i_Player != id) {
menu_additem(i_Menu, s_Name, s_Player, 0)
total++
}
}
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_MORE")
menu_setprop(i_Menu, MPROP_NEXTNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_BACK")
menu_setprop(i_Menu, MPROP_BACKNAME, option)
formatex(option, charsmax(option), "%L", LANG_SERVER, "SM_CLOSE")
menu_setprop(i_Menu, MPROP_EXITNAME, option)
menu_setprop(i_Menu, MPROP_NUMBER_COLOR, "\w")
if(total > 0) menu_display(id, i_Menu, 0)
else ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_DONATE_NOONE")
return PLUGIN_HANDLED
}
public donate_hook(id) {
new param[6]
read_argv(1, param, charsmax(param))
for (new x; x < strlen(param); x++) {
if(!isdigit(param[x])) {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_DONATE_ONLYDIGIT")
return PLUGIN_HANDLED
}
}
new Float:cooldown = get_gametime() - g_delay[id]
if(cooldown > 60.0 && g_delay[id] != 0.0) {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_DONATE_CD", 60-floatround(cooldown))
return PLUGIN_HANDLED
}
give_money(id, str_to_num(param))
return PLUGIN_HANDLED
}
public player_select_sub(id, menu, item) {
if (item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
new Float:cooldown = get_gametime() - g_delay[id]
if(cooldown > 60.0 && g_delay[id] != 0.0) {
ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_DONATE_CD", 60-floatround(cooldown))
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Player = str_to_num(s_Data)
v_id[id]=i_Player
menu_destroy(menu)
client_cmd(id, "messagemode ^"donate^"")
ColorChat(id, GREEN, "[%s]^x01 %L^x04 10$", PREFIX, LANG_SERVER, "JBB_DONATE_NOW")
return PLUGIN_HANDLED
}
public give_money(id, money) {
if(jb_get_money(id) < money) ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "NO_MONEY")
else if(!is_user_connected(v_id[id])) ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_DONATE_DISC")
else if(v_id[id] == id) ColorChat(id, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_DONATE_SELF")
else if(money < 10) ColorChat(id, GREEN, "[%s]^x01 %L^x04 10$ (%d)", PREFIX, LANG_SERVER, "JBB_DONATE_MIN", money)
else {
g_delay[id] = get_gametime()
new d_name[33], r_name[33], newmoney
get_user_name(id, d_name, charsmax(d_name))
get_user_name(v_id[id], r_name, charsmax(r_name))
newmoney = floatround(money*0.9)
ColorChat(0, GREEN, "[%s]^x01 %L", PREFIX, LANG_SERVER, "JBB_DONATE_DONE", d_name, newmoney, r_name)
jb_set_money(v_id[id], jb_get_money(v_id[id]) + newmoney)
jb_set_money(id, jb_get_money(id) - money)
}
}
#endif
public chooseteam(id) {
count_teams()
new formula = TCount - CTCount * 4
new Float:gt = get_gametime() - gametime
new Float:rt = get_cvar_float("mp_roundtime") * 60.0
new lang[128]
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "JBB_CHOOSE_TEAM")
new menu = menu_create(lang, "chooseteam_handler")
if(cs_get_user_team(id) != CS_TEAM_T && (gt < rt - 1.0 || TCount == 0)) formatex(lang, charsmax(lang), "%L [\r%d\w]", LANG_SERVER, "JBB_CHOOSE_T", TCount)
else formatex(lang, charsmax(lang), "\d%L [\r%d\d]", LANG_SERVER, "JBB_CHOOSE_T", TCount)
menu_additem(menu, lang, "1", 0)
if((formula > 1 || CTCount == 0) && (gt < rt - 1.0 || CTCount == 0) && cs_get_user_team(id) != CS_TEAM_CT && g_GameMode != 5) formatex(lang, charsmax(lang), "%L [\r%d\w]", LANG_SERVER, "JBB_CHOOSE_CT", CTCount)
else formatex(lang, charsmax(lang), "\d%L [\r%d\d]", LANG_SERVER, "JBB_CHOOSE_CT", CTCount)
menu_additem(menu, lang, "2", 0)
formatex(lang, charsmax(lang), "%L", LANG_SERVER, "SM_CLOSE")
if(cs_get_user_team(id) != CS_TEAM_UNASSIGNED) menu_setprop(menu, MPROP_EXITNAME, lang)
else menu_setprop(menu, MPROP_EXIT, -1)
menu_setprop(menu, MPROP_NUMBER_COLOR, "\w")
if(cs_get_user_team(id) == CS_TEAM_UNASSIGNED && gt < rt - 1.0) {
new iMsgBlock = get_msg_block(OFFSET_TEAM)
set_msg_block(OFFSET_TEAM, BLOCK_SET)
new MsgBlock = get_msg_block(96)
set_msg_block(96, BLOCK_SET)
engclient_cmd(id, "jointeam", " 1")
engclient_cmd(id, "joinclass", " 1")
set_msg_block(OFFSET_TEAM, iMsgBlock)
set_msg_block(96, MsgBlock)
}
else menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public chooseteam_handler(id, menu, item) {
new cmd[3], access, callback
static restore, vgui, msgblock
if(item == MENU_EXIT) {
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
set_pdata_int(id, m_fGameHUDInitialized, 1)
menu_destroy(menu)
return PLUGIN_HANDLED
}
restore = get_pdata_int(id, m_iVGUI)
vgui = restore & (1<<0)
if(vgui)
set_pdata_int(id, m_iVGUI, restore & ~(1<<0))
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)
new key = str_to_num(cmd)
new Float:gt = get_gametime() - gametime
new Float:rt = get_cvar_float("mp_roundtime") * 60.0
switch (key) {
case 1: {
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
if(gt >= rt - 1.0 && TCount != 0) client_print(id, print_center, "%L", LANG_SERVER, "JBB_CHOOSE_NEXT")
else if(cs_get_user_team(id) == CS_TEAM_T) client_print(id, print_center, "%L", LANG_SERVER, "JBB_CHOOSE_AT")
else {
engclient_cmd(id, "jointeam", " 1")
engclient_cmd(id, "joinclass", " 1")
}
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
}
case 2: {
count_teams()
new formula = TCount - CTCount * 4
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
if((gt >= rt - 1.0 && CTCount != 0) || g_GameMode == 5) client_print(id, print_center, "%L", LANG_SERVER, "JBB_CHOOSE_NEXT")
else if(cs_get_user_team(id) == CS_TEAM_CT) client_print(id, print_center, "%L", LANG_SERVER, "JBB_CHOOSE_ACT")
else if(formula > 1 || CTCount == 0) {
engclient_cmd(id, "jointeam", " 2")
engclient_cmd(id, "joinclass", " 2")
}
else client_print(id, print_center, "%L", LANG_SERVER, "JBB_CHOOSE_CTFULL")
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
}
}
if(vgui)
set_pdata_int(id, m_iVGUI, restore)
return PLUGIN_HANDLED
}
public count_teams() {
CTCount = 0
TCount = 0
new Players[32]
new playerCount, i
get_players(Players, playerCount, "")
for (i=0; i<playerCount; i++) {
if (is_user_connected(Players[i])) {
if (cs_get_user_team(Players[i]) == CS_TEAM_CT) CTCount++
if (cs_get_user_team(Players[i]) == CS_TEAM_T) TCount++
}
}
}
public task_Autojoin(iParam[], id) {
new iMsgBlock = get_msg_block(iParam[0])
set_msg_block(iParam[0], BLOCK_SET)
chooseteam(id)
set_msg_block(iParam[0], iMsgBlock)
}
stock set_autojoin_task(id, iMsgid) {
new iParam[2]
iParam[0] = iMsgid
set_task(0.1, "task_Autojoin", id, iParam, sizeof(iParam))
}
#endif
stock fm_velocity_by_aim(iIndex, Float:fDistance, Float:fVelocity[3], Float:fViewAngle[3]) {
pev(iIndex, pev_v_angle, fViewAngle)
fVelocity[0] = floatcos(fViewAngle[1], degrees) * fDistance
fVelocity[1] = floatsin(fViewAngle[1], degrees) * fDistance
fVelocity[2] = floatcos(fViewAngle[0]+90.0, degrees) * fDistance
return 1
}
stock jb_timer(this_timeleft) {
new string_timeleft[6], minutes, seconds
if(this_timeleft >= 0 && this_timeleft <= 1800) {
seconds = this_timeleft
while(seconds >= 60) {
minutes++
seconds -= 60
}
if(minutes > 0) {
if(seconds > 9) formatex(string_timeleft, charsmax(string_timeleft), "%d:%d", minutes, seconds)
else formatex(string_timeleft, charsmax(string_timeleft), "%d:0%d", minutes, seconds)
} else formatex(string_timeleft, charsmax(string_timeleft), "%d", seconds)
}
return string_timeleft
}
stock jb_set_money(id, amount) {
if(!is_user_connected(id))
return
g_money[id] = amount
cs_set_user_money(id, amount)
}
stock jb_get_money(id) {
if(!is_user_connected(id))
return 0
return g_money[id]
}
/* === COLOR CHAT === */
ColorChat(id, Color:type, const msg[], any:...) {
new message[256]
switch(type) {
case NORMAL: message[0] = 0x01
case GREEN: message[0] = 0x04
default: message[0] = 0x03
}
vformat(message[1], 251, msg, 4)
message[192] = '^0'
new team, ColorChange, index, MSG_Type
if(id) {
MSG_Type = MSG_ONE_UNRELIABLE
index = id
} else {
index = FindPlayer()
MSG_Type = MSG_BROADCAST
}
team = get_user_team(index)
ColorChange = ColorSelection(index, MSG_Type, type)
ShowColorMessage(index, MSG_Type, message)
if(ColorChange) Team_Info(index, MSG_Type, TeamName[team])
}
ShowColorMessage(id, type, message[]) {
static msgSayText
if(!msgSayText) msgSayText = get_user_msgid("SayText")
message_begin(type, msgSayText, _, id)
write_byte(id)
write_string(message)
message_end()
}
Team_Info(id, type, team[]) {
static msgTeamInfo
if(!msgTeamInfo) msgTeamInfo = get_user_msgid("TeamInfo")
message_begin(type, msgTeamInfo, _, id)
write_byte(id)
write_string(team)
message_end()
return 1
}
ColorSelection(index, type, Color:Type) {
switch(Type) {
case RED: return Team_Info(index, type, TeamName[1])
case BLUE: return Team_Info(index, type, TeamName[2])
case GREY: return Team_Info(index, type, TeamName[0])
}
return 0
}
FindPlayer() {
new i = -1
while(i <= mxplr) {
if(is_user_connected(++i))
return i
}
return -1
}
Please help me with that sma, i need for server
|
|