Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 62.05 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <hamsandwich>
  4. #include <cstrike>
  5. #include <fun>
  6. #include <fakemeta>
  7.  
  8. #define PLUGIN_NAME "Jailbreak Extra by XaqtR"
  9. #define PLUGIN_AUTHOR "XaqtR"
  10. #define PLUGIN_VERSION "1.0"
  11. #define PLUGIN_CVAR "jailbreak_extra"
  12.  
  13. #define TASK_STATUS 2487000
  14. #define TASK_FREEDAY 2487100
  15. #define TASK_ROUND 2487200
  16. #define TASK_HELP 2487300
  17. #define TASK_SAFETIME 2487400
  18. #define TASK_FREEEND 2487500
  19. #define TASK_GLOW 2487600
  20. #define TEAM_MENU "#Team_Select_Spect"
  21. #define TEAM_MENU2 "#Team_Select_Spect"
  22. #define HUD_DELAY Float:4.0
  23. #define CELL_RADIUS Float:200.0
  24.  
  25. #define get_bit(%1,%2) ( %1 & 1 << ( %2 & 31 ) )
  26. #define set_bit(%1,%2) %1 |= ( 1 << ( %2 & 31 ) )
  27. #define clear_bit(%1,%2) %1 &= ~( 1 << ( %2 & 31 ) )
  28.  
  29. #define vec_len(%1) floatsqroot(%1[0] * %1[0] + %1[1] * %1[1] + %1[2] * %1[2])
  30. #define vec_mul(%1,%2) ( %1[0] *= %2, %1[1] *= %2, %1[2] *= %2)
  31. #define vec_copy(%1,%2) ( %2[0] = %1[0], %2[1] = %1[1],%2[2] = %1[2])
  32.  
  33. // Offsets
  34. #define m_iPrimaryWeapon 116
  35. #define m_iVGUI 510
  36. #define m_fGameHUDInitialized 349
  37. #define m_fNextHudTextArgsGameTime 198
  38. #define Keyssmenu (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8) // Keys: 123456789
  39. #define Keyszbrane (1<<0)|(1<<1)|(1<<2) // Keys: 123
  40. #define Keysbox (1<<0)|(1<<1)|(1<<9) // Keys: 120
  41. #define Keysstopy (1<<0)|(1<<1)|(1<<9) // Keys: 120
  42. #define Keysmic (1<<0)|(1<<1)|(1<<9) // Keys: 120
  43. #define Keysmody (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<9) // Keys: 123450
  44. #define Keysfutbal (1<<0)|(1<<1)|(1<<9) // Keys: 120
  45. #define Keysmenuprestrelka (1<<0)|(1<<1)|(1<<2)|(1<<9) // Keys: 1230
  46. #define Keysklasickaprestrelka (1<<0)|(1<<1) // Keys: 12
  47. #define Keyspistolsprestrelka (1<<0)|(1<<1)|(1<<2)|(1<<3) // Keys: 1234
  48.  
  49. enum _hud { _hudsync, Float:_x, Float:_y, Float:_time }
  50. enum _lastrequest { _knife, _deagle, _freeday, _weapon }
  51. enum _duel { _name[16], _csw, _entname[32], _opt[32], _sel[32] }
  52.  
  53. new gp_PrecacheSpawn
  54. new gp_PrecacheKeyValue
  55.  
  56. new gp_CrowbarMax
  57. new gp_CrowbarMul
  58. new gp_TeamRatio
  59. new gp_CtMax
  60. new gp_BoxMax
  61. new gp_TalkMode
  62. new gp_VoiceBlock
  63. new gp_RetryTime
  64. new gp_RoundMax
  65. new gp_ButtonShoot
  66. new gp_SimonSteps
  67. new gp_SimonRandom
  68. new gp_GlowModels
  69. new gp_AutoLastresquest
  70. new gp_LastRequest
  71. new gp_Motd
  72. new gp_SpectRounds
  73. new gp_NosimonRounds
  74. new gp_AutoOpen
  75. new gp_TeamChange
  76. new gMicOn = 0
  77. new g_MaxClients
  78. new g_MsgStatusText
  79. new g_MsgStatusIcon
  80. new g_MsgVGUIMenu
  81. new g_MsgShowMenu
  82. new g_MsgClCorpse
  83. new g_MsgMOTD
  84.  
  85. new gc_TalkMode
  86. new gc_VoiceBlock
  87. new gc_SimonSteps
  88. new gc_ButtonShoot
  89. new Float:gc_CrowbarMul
  90. new eMod
  91. new eModLimit
  92. new eModSound
  93.  
  94. // Precach
  95. new const _FistModels[][] = { "models/p_bknuckles.mdl", "models/v_bknuckles.mdl" }
  96. new const _CrowbarModels[][] = { "models/p_crowbar.mdl", "models/v_crowbar.mdl" }
  97. new const _FistSounds[][] = { "weapons/cbar_hitbod2.wav", "weapons/cbar_hitbod1.wav", "weapons/bullet_hit1.wav", "weapons/bullet_hit2.wav" }
  98. new const _RemoveEntities[][] = {
  99. "func_hostage_rescue", "info_hostage_rescue", "func_bomb_target", "info_bomb_target",
  100. "hostage_entity", "info_vip_start", "func_vip_safetyzone", "func_escapezone"
  101. }
  102.  
  103. new const _WeaponsFree[][] = { "weapon_scout", "weapon_deagle", "weapon_mac10", "weapon_elite", "weapon_ak47", "weapon_m4a1", "weapon_mp5navy" }
  104. new const _WeaponsFreeCSW[] = { CSW_SCOUT, CSW_DEAGLE, CSW_MAC10, CSW_ELITE, CSW_AK47, CSW_M4A1, CSW_MP5NAVY }
  105. new const _WeaponsFreeAmmo[] = { 90, 35, 100, 120, 90, 90, 120 }
  106.  
  107. new const _Duel[][_duel] =
  108. {
  109. { "Deagle", CSW_DEAGLE, "weapon_deagle", "JBE_MENU_LASTREQ_OPT4", "JBE_MENU_LASTREQ_SEL4" },
  110. { "Grenades", CSW_HEGRENADE, "weapon_hegrenade", "JBE_MENU_LASTREQ_OPT5", "JBE_MENU_LASTREQ_SEL5" },
  111. { "Scout", CSW_SCOUT, "weapon_scout", "JBE_MENU_LASTREQ_OPT6", "JBE_MENU_LASTREQ_SEL6" },
  112. { "Awp", CSW_AWP, "weapon_awp", "JBE_MENU_LASTREQ_OPT7", "JBE_MENU_LASTREQ_SEL7" }
  113. }
  114.  
  115.  
  116. // HudSync: 0=ttinfo / 1=info / 2=simon / 3=ctinfo / 4=player / 5=day / 6=center / 7=help / 8=timer
  117. new const g_HudSync[][_hud] =
  118. {
  119. {0, 0.6, 0.2, 2.0},
  120. {0, -1.0, 0.7, 5.0},
  121. {0, 0.1, 0.2, 2.0},
  122. {0, 0.1, 0.3, 2.0},
  123. {0, -1.0, 0.9, 3.0},
  124. {0, 0.6, 0.1, 3.0},
  125. {0, -1.0, 0.6, 3.0},
  126. {0, 0.8, 0.3, 20.0},
  127. {0, -1.0, 0.4, 3.0}
  128. }
  129.  
  130. // Colors: 0:Simon / 1:Freeday / 2:CT Duel / 3:TT Duel
  131. new const g_Colors[][3] = { {0, 255, 0}, {255, 140, 0}, {0, 0, 255}, {255, 0, 0} }
  132.  
  133.  
  134. new CsTeams:g_PlayerTeam[33]
  135. new Float:g_SimonRandom
  136. new Trie:g_CellManagers
  137. new g_HelpText[512]
  138. new g_JailDay
  139. new g_PlayerJoin
  140. new g_PlayerReason[33]
  141. new g_PlayerSpect[33]
  142. new g_PlayerSimon[33]
  143. new g_PlayerNomic
  144. new g_PlayerWanted
  145. new g_PlayerCrowbar
  146. new g_PlayerRevolt
  147. new g_PlayerHelp
  148. new g_PlayerFreeday
  149. new g_PlayerLast
  150. new g_FreedayAuto
  151. new g_FreedayNext
  152. new g_TeamCount[CsTeams]
  153. new g_TeamAlive[CsTeams]
  154. new g_BoxStarted
  155. new g_CrowbarCount
  156. new g_Simon
  157. new g_SimonAllowed
  158. new g_SimonTalking
  159. new g_SimonVoice
  160. new g_RoundStarted
  161. new g_LastDenied
  162. new g_Freeday
  163. new g_BlockWeapons
  164. new g_RoundEnd
  165. new g_Duel
  166. new g_DuelA
  167. new g_DuelB
  168. new g_SafeTime
  169. new g_Buttons[10]
  170.  
  171. public plugin_init()
  172. {
  173. unregister_forward(FM_Spawn, gp_PrecacheSpawn)
  174. unregister_forward(FM_KeyValue, gp_PrecacheKeyValue)
  175.  
  176. register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
  177. register_cvar(PLUGIN_CVAR, PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
  178. register_menucmd(register_menuid("menuprestrelka"), Keysmenuprestrelka, "Pressedmenuprestrelka")
  179. register_menucmd(register_menuid("klasickaprestrelka"), Keysklasickaprestrelka, "Pressedklasickaprestrelka")
  180. register_menucmd(register_menuid("pistolsprestrelka"), Keyspistolsprestrelka, "Pressedpistolsprestrelka")
  181. register_menucmd(register_menuid("mody"), Keysmody, "Pressedmody")
  182. register_menucmd(register_menuid("futbal"), Keysfutbal, "Pressedfutbal")
  183. register_menucmd(register_menuid("mic"), Keysmic, "Pressedmic")
  184. register_menucmd(register_menuid("stopy"), Keysstopy, "Pressedstopy")
  185. register_menucmd(register_menuid("box"), Keysbox, "Pressedbox")
  186. register_menucmd(register_menuid("zbrane"), Keyszbrane, "Pressedzbrane")
  187. register_menucmd(register_menuid("smenu"), Keyssmenu, "Pressedsmenu")
  188.  
  189. register_dictionary("jailbreak_extra.txt")
  190.  
  191. g_MsgStatusText = get_user_msgid("StatusText")
  192. g_MsgStatusIcon = get_user_msgid("StatusIcon")
  193. g_MsgVGUIMenu = get_user_msgid("VGUIMenu")
  194. g_MsgShowMenu = get_user_msgid("ShowMenu")
  195. g_MsgMOTD = get_user_msgid("MOTD")
  196. g_MsgClCorpse = get_user_msgid("ClCorpse")
  197.  
  198. register_message(g_MsgStatusText, "msg_statustext")
  199. register_message(g_MsgStatusIcon, "msg_statusicon")
  200. register_message(g_MsgVGUIMenu, "msg_vguimenu")
  201. register_message(g_MsgShowMenu, "msg_showmenu")
  202. register_message(g_MsgMOTD, "msg_motd")
  203. register_message(g_MsgClCorpse, "msg_clcorpse")
  204.  
  205. register_event("CurWeapon", "current_weapon", "be", "1=1", "2=29")
  206. register_event("StatusValue", "player_status", "be", "1=2", "2!0")
  207. register_event("StatusValue", "player_status", "be", "1=1", "2=0")
  208.  
  209. register_impulse(100, "impulse_100")
  210.  
  211. RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
  212. RegisterHam(Ham_TakeDamage, "player", "player_damage")
  213. RegisterHam(Ham_TraceAttack, "player", "player_attack")
  214. RegisterHam(Ham_TraceAttack, "func_button", "button_attack")
  215. RegisterHam(Ham_Killed, "player", "player_killed", 1)
  216. RegisterHam(Ham_Touch, "weapon_hegrenade", "player_touchweapon")
  217. RegisterHam(Ham_Touch, "weaponbox", "player_touchweapon")
  218. RegisterHam(Ham_Touch, "armoury_entity", "player_touchweapon")
  219.  
  220. register_forward(FM_SetClientKeyValue, "set_client_kv")
  221. register_forward(FM_EmitSound, "sound_emit")
  222. register_forward(FM_Voice_SetClientListening, "voice_listening")
  223. register_forward(FM_CmdStart, "player_cmdstart", 1)
  224.  
  225. register_logevent("round_end", 2, "1=Round_End")
  226. register_logevent("round_first", 2, "0=World triggered", "1&Restart_Round_")
  227. register_logevent("round_first", 2, "0=World triggered", "1=Game_Commencing")
  228. register_logevent("round_start", 2, "0=World triggered", "1=Round_Start")
  229.  
  230. register_menucmd(register_menuid(TEAM_MENU), 51, "team_select")
  231. register_menucmd(register_menuid(TEAM_MENU2), 51, "team_select")
  232.  
  233. register_clcmd("jointeam", "cmd_jointeam")
  234. register_clcmd("joinclass", "cmd_joinclass")
  235. register_clcmd("+simonvoice", "cmd_voiceon")
  236. register_clcmd("-simonvoice", "cmd_voiceoff")
  237.  
  238. register_clcmd("say /simon", "cmd_simon")
  239. register_clcmd("say /smenu", "Showsmenu")
  240. register_clcmd("say /nomic", "cmd_nomic")
  241. register_clcmd("say /pp", "cmd_lastrequest")
  242.  
  243. register_clcmd("jbe_freeday", "adm_freeday", ADMIN_IMMUNITY)
  244. register_concmd("jbe_nomic", "adm_nomic", ADMIN_KICK)
  245. register_concmd("jbe_open", "adm_open", ADMIN_SLAY)
  246. register_concmd("jbe_box", "adm_box", ADMIN_IMMUNITY)
  247.  
  248. gp_GlowModels = register_cvar("jbe_glowmodels", "1")
  249. gp_SimonSteps = register_cvar("jbe_simonsteps", "0")
  250. gp_CrowbarMul = register_cvar("jbe_crowbarmultiplier", "0")
  251. gp_CrowbarMax = register_cvar("jbe_maxcrowbar", "0")
  252. gp_TeamRatio = register_cvar("jbe_teamratio", "3")
  253. gp_TeamChange = register_cvar("jbe_teamchange", "1") // 0-disable team change for tt / 1-enable team change
  254. gp_CtMax = register_cvar("jbe_maxct", "8")
  255. gp_BoxMax = register_cvar("jbe_boxmax", "15")
  256. gp_RetryTime = register_cvar("jbe_retrytime", "15.0")
  257. gp_RoundMax = register_cvar("jbe_freedayround", "200")
  258. gp_AutoLastresquest = register_cvar("jbe_autolastrequest", "1")
  259. gp_LastRequest = register_cvar("jbe_lastrequest", "1")
  260. gp_Motd = register_cvar("jbe_motd", "1")
  261. gp_SpectRounds = register_cvar("jbe_spectrounds", "3")
  262. gp_NosimonRounds = register_cvar("jbe_nosimonrounds", "7")
  263. gp_SimonRandom = register_cvar("jbe_randomsimon", "0")
  264. gp_AutoOpen = register_cvar("jbe_autoopen", "1")
  265. gp_TalkMode = register_cvar("jbe_talkmode", "2") // 0-alltak / 1-tt talk / 2-tt no talk
  266. gp_VoiceBlock = register_cvar("jbe_blockvoice", "2") // 0-dont block / 1-block voicerecord / 2-block voicerecord except simon
  267. gp_ButtonShoot = register_cvar("jbe_buttonshoot", "1") // 0-standard / 1-func_button shoots!
  268.  
  269. g_MaxClients = get_global_int(GL_maxClients)
  270.  
  271. for(new i = 0; i < sizeof(g_HudSync); i++)
  272. g_HudSync[i][_hudsync] = CreateHudSyncObj()
  273.  
  274. setup_buttons()
  275. }
  276.  
  277. public plugin_precache()
  278. {
  279. static i
  280. precache_model("models/player/gc_straznik/gc_straznik.mdl")
  281. precache_model("models/player/gc_simonct/gc_simonct.mdl")
  282. precache_model("models/player/gc_tvezen/gc_tvezen.mdl")
  283. precache_model("models/player/gc_vipc/gc_vipc.mdl")
  284. precache_model("models/player/gc_viptvezen/gc_viptvezen.mdl")
  285.  
  286. for(i = 0; i < sizeof(_FistModels); i++)
  287. precache_model(_FistModels[i])
  288.  
  289. for(i = 0; i < sizeof(_CrowbarModels); i++)
  290. precache_model(_CrowbarModels[i])
  291.  
  292. for(i = 0; i < sizeof(_FistSounds); i++)
  293. precache_sound(_FistSounds[i])
  294.  
  295. precache_sound("jailbreak_extra/nm_goodbadugly.wav")
  296. precache_sound("jailbreak_extra/brass_bell_C.wav")
  297. precache_sound("jailbreak_extra/freeday.wav")
  298. precache_sound("jailbreak_extra/prestrelka.wav")
  299. precache_sound("jailbreak_extra/onlyscout.wav")
  300. precache_sound("jailbreak_extra/schovka.wav")
  301. precache_sound("jailbreak_extra/pistolsprestrelka.wav")
  302.  
  303. g_CellManagers = TrieCreate()
  304. gp_PrecacheSpawn = register_forward(FM_Spawn, "precache_spawn", 1)
  305. gp_PrecacheKeyValue = register_forward(FM_KeyValue, "precache_keyvalue", 1)
  306. }
  307.  
  308. public precache_spawn(ent)
  309. {
  310. if(is_valid_ent(ent))
  311. {
  312. static szClass[33]
  313. entity_get_string(ent, EV_SZ_classname, szClass, sizeof(szClass))
  314. for(new i = 0; i < sizeof(_RemoveEntities); i++)
  315. if(equal(szClass, _RemoveEntities[i]))
  316. remove_entity(ent)
  317. }
  318. }
  319.  
  320. public precache_keyvalue(ent, kvd_handle)
  321. {
  322. static info[32]
  323. if(!is_valid_ent(ent))
  324. return FMRES_IGNORED
  325.  
  326. get_kvd(kvd_handle, KV_ClassName, info, charsmax(info))
  327. if(!equal(info, "multi_manager"))
  328. return FMRES_IGNORED
  329.  
  330. get_kvd(kvd_handle, KV_KeyName, info, charsmax(info))
  331. TrieSetCell(g_CellManagers, info, ent)
  332. return FMRES_IGNORED
  333. }
  334.  
  335. public client_putinserver(id)
  336. {
  337. clear_bit(g_PlayerJoin, id)
  338. clear_bit(g_PlayerHelp, id)
  339. clear_bit(g_PlayerCrowbar, id)
  340. clear_bit(g_PlayerNomic, id)
  341. clear_bit(g_PlayerWanted, id)
  342. clear_bit(g_SimonTalking, id)
  343. clear_bit(g_SimonVoice, id)
  344. g_PlayerSpect[id] = 0
  345. g_PlayerSimon[id] = 0
  346. }
  347.  
  348. public client_disconnect(id)
  349. {
  350. if(g_Simon == id)
  351. {
  352. g_Simon = 0
  353. ClearSyncHud(0, g_HudSync[2][_hudsync])
  354. player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_HASGONE")
  355. }
  356. else if(g_PlayerLast == id || (g_Duel && (id == g_DuelA || id == g_DuelB)))
  357. {
  358. g_Duel = 0
  359. g_DuelA = 0
  360. g_DuelB = 0
  361. g_LastDenied = 0
  362. g_BlockWeapons = 0
  363. g_PlayerLast = 0
  364. }
  365. team_count()
  366. }
  367.  
  368. public client_PostThink(id)
  369. {
  370. if(id != g_Simon || !gc_SimonSteps || !is_user_alive(id) ||
  371. !(entity_get_int(id, EV_INT_flags) & FL_ONGROUND) || entity_get_int(id, EV_ENT_groundentity))
  372. return PLUGIN_CONTINUE
  373.  
  374. static Float:origin[3]
  375. static Float:last[3]
  376.  
  377. entity_get_vector(id, EV_VEC_origin, origin)
  378. if(get_distance_f(origin, last) < 32.0)
  379. {
  380. return PLUGIN_CONTINUE
  381. }
  382.  
  383. vec_copy(origin, last)
  384. if(entity_get_int(id, EV_INT_bInDuck))
  385. origin[2] -= 18.0
  386. else
  387. origin[2] -= 36.0
  388.  
  389.  
  390. message_begin(MSG_BROADCAST, SVC_TEMPENTITY, {0,0,0}, 0)
  391. write_byte(TE_WORLDDECAL)
  392. write_coord(floatround(origin[0]))
  393. write_coord(floatround(origin[1]))
  394. write_coord(floatround(origin[2]))
  395. write_byte(105)
  396. message_end()
  397.  
  398. return PLUGIN_CONTINUE
  399. }
  400.  
  401.  
  402. public msg_statustext(msgid, dest, id)
  403. {
  404. return PLUGIN_HANDLED
  405. }
  406.  
  407. public msg_statusicon(msgid, dest, id)
  408. {
  409. static icon[5]
  410. get_msg_arg_string(2, icon, charsmax(icon))
  411. if(icon[0] == 'b' && icon[2] == 'y' && icon[3] == 'z')
  412. {
  413. set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0))
  414. return PLUGIN_HANDLED
  415. }
  416.  
  417. return PLUGIN_CONTINUE
  418. }
  419.  
  420. public msg_vguimenu(msgid, dest, id)
  421. {
  422. static msgarg1
  423. static CsTeams:team
  424.  
  425. msgarg1 = get_msg_arg_int(1)
  426. if(msgarg1 == 2)
  427. {
  428. team = cs_get_user_team(id)
  429. if((team == CS_TEAM_T) && !is_user_admin(id) && (is_user_alive(id) || !get_pcvar_num(gp_TeamChange)))
  430. {
  431. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTCHANGE")
  432. return PLUGIN_HANDLED
  433. }
  434. show_menu(id, 51, TEAM_MENU, -1)
  435. return PLUGIN_HANDLED
  436. }
  437.  
  438. return PLUGIN_CONTINUE
  439. }
  440.  
  441. public msg_showmenu(msgid, dest, id)
  442. {
  443. static msgarg1, roundloop
  444. static CsTeams:team
  445. msgarg1 = get_msg_arg_int(1)
  446.  
  447. if(msgarg1 != 531 && msgarg1 != 563)
  448. return PLUGIN_CONTINUE
  449.  
  450. roundloop = floatround(get_pcvar_float(gp_RetryTime) / 2)
  451. team = cs_get_user_team(id)
  452.  
  453. if(team == CS_TEAM_T)
  454. {
  455. if(!is_user_admin(id) && (is_user_alive(id) || (g_RoundStarted >= roundloop) || !get_pcvar_num(gp_TeamChange)))
  456. {
  457. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTCHANGE")
  458. return PLUGIN_HANDLED
  459. }
  460. else
  461. {
  462. show_menu(id, 51, TEAM_MENU, -1)
  463. return PLUGIN_HANDLED
  464. }
  465. }
  466. else
  467. {
  468. show_menu(id, 51, TEAM_MENU, -1)
  469. return PLUGIN_HANDLED
  470. }
  471.  
  472. return PLUGIN_CONTINUE
  473. }
  474.  
  475. public msg_motd(msgid, dest, id)
  476. {
  477. if(get_pcvar_num(gp_Motd))
  478. return PLUGIN_HANDLED
  479.  
  480. return PLUGIN_CONTINUE
  481. }
  482.  
  483. public msg_clcorpse(msgid, dest, id)
  484. {
  485. return PLUGIN_HANDLED
  486. }
  487.  
  488. public current_weapon(id)
  489. {
  490. if(!is_user_alive(id))
  491. return PLUGIN_CONTINUE
  492.  
  493. if(get_bit(g_PlayerCrowbar, id))
  494. {
  495. set_pev(id, pev_viewmodel2, _CrowbarModels[1])
  496. set_pev(id, pev_weaponmodel2, _CrowbarModels[0])
  497. }
  498. else
  499. {
  500. set_pev(id, pev_viewmodel2, _FistModels[1])
  501. set_pev(id, pev_weaponmodel2, _FistModels[0])
  502. }
  503. return PLUGIN_CONTINUE
  504. }
  505.  
  506. public player_status(id)
  507. {
  508. static type, player, CsTeams:team, name[32], health
  509. type = read_data(1)
  510. player = read_data(2)
  511. switch(type)
  512. {
  513. case(1):
  514. {
  515. ClearSyncHud(id, g_HudSync[1][_hudsync])
  516. }
  517. case(2):
  518. {
  519. team = cs_get_user_team(player)
  520. if((team != CS_TEAM_T) && (team != CS_TEAM_CT))
  521. return PLUGIN_HANDLED
  522.  
  523. health = get_user_health(player)
  524. get_user_name(player, name, charsmax(name))
  525. player_hudmessage(id, 4, 2.0, {0, 255, 0}, "%L", LANG_SERVER,
  526. (team == CS_TEAM_T) ? "JBE_PRISONER_STATUS" : "JBE_GUARD_STATUS", name, health)
  527. }
  528. }
  529.  
  530. return PLUGIN_HANDLED
  531. }
  532.  
  533. public impulse_100(id)
  534. {
  535. if(cs_get_user_team(id) == CS_TEAM_T)
  536. return PLUGIN_HANDLED
  537.  
  538. return PLUGIN_CONTINUE
  539. }
  540.  
  541. public player_spawn(id)
  542. {
  543. gMicOn = 0
  544.  
  545. static CsTeams:team
  546.  
  547. if(!is_user_connected(id))
  548. return HAM_IGNORED
  549.  
  550. set_pdata_float(id, m_fNextHudTextArgsGameTime, get_gametime() + 999999.0)
  551. player_strip_weapons(id)
  552. if(g_RoundEnd)
  553. {
  554. g_RoundEnd = 0
  555. g_JailDay++
  556. }
  557.  
  558. set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  559.  
  560. clear_bit(g_PlayerCrowbar, id)
  561. clear_bit(g_PlayerWanted, id)
  562. team = cs_get_user_team(id)
  563.  
  564. switch(team)
  565. {
  566. case(CS_TEAM_T):
  567. {
  568. g_PlayerLast = 0
  569. if(!g_PlayerReason[id])
  570. g_PlayerReason[id] = random_num(1, 6)
  571.  
  572.  
  573. set_user_info(id, "model", "gc_tvezen")
  574.  
  575. if (get_user_flags(id) & ADMIN_RESERVATION)
  576. {
  577. set_user_info(id, "model", "gc_viptvezen")
  578. }
  579. else
  580. {
  581. cs_reset_user_model(id)
  582. }
  583.  
  584. if(is_freeday() || get_bit(g_FreedayAuto, id))
  585. {
  586. freeday_set(0, id)
  587. clear_bit(g_FreedayAuto, id)
  588. }
  589. else
  590. {
  591. entity_set_int(id, EV_INT_skin, random_num(0, 2))
  592. }
  593.  
  594. if(g_CrowbarCount < get_pcvar_num(gp_CrowbarMax))
  595. {
  596. if(random_num(0, g_MaxClients) > (g_MaxClients / 2))
  597. {
  598. g_CrowbarCount++
  599. set_bit(g_PlayerCrowbar, id)
  600. }
  601. }
  602. cs_set_user_armor(id, 0, CS_ARMOR_NONE)
  603. }
  604. case(CS_TEAM_CT):
  605. {
  606. g_PlayerSimon[id]++
  607. set_user_info(id, "model", "gc_straznik")
  608. ChatColor(id, "%L", LANG_PLAYER, "GUNMENU")
  609. ChatColor(id, "%L", LANG_PLAYER, "CHCES_SIMONA")
  610.  
  611. Showzbrane(id)
  612.  
  613. if (get_user_flags(id) & ADMIN_RESERVATION)
  614. {
  615. set_user_info(id, "model", "gc_vipc")
  616. }
  617. else
  618. {
  619. cs_reset_user_model(id)
  620. }
  621.  
  622.  
  623. cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
  624. }
  625. }
  626. first_join(id)
  627. return HAM_IGNORED
  628. }
  629.  
  630. public player_damage(victim, ent, attacker, Float:damage, bits)
  631. {
  632. if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
  633. return HAM_IGNORED
  634.  
  635. switch(g_Duel)
  636. {
  637. case(0):
  638. {
  639. if(attacker == ent && get_user_weapon(attacker) == CSW_KNIFE && get_bit(g_PlayerCrowbar, attacker) && cs_get_user_team(victim) != CS_TEAM_T)
  640. {
  641. SetHamParamFloat(4, damage * gc_CrowbarMul)
  642. return HAM_OVERRIDE
  643. }
  644. }
  645. case(2):
  646. {
  647. if(attacker != g_PlayerLast)
  648. return HAM_SUPERCEDE
  649. }
  650. default:
  651. {
  652. if((victim == g_DuelA && attacker == g_DuelB) || (victim == g_DuelB && attacker == g_DuelA))
  653. return HAM_IGNORED
  654.  
  655. return HAM_SUPERCEDE
  656. }
  657. }
  658.  
  659. return HAM_IGNORED
  660. }
  661.  
  662. public player_attack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
  663. {
  664. static CsTeams:vteam, CsTeams:ateam
  665. if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
  666. return HAM_IGNORED
  667.  
  668. vteam = cs_get_user_team(victim)
  669. ateam = cs_get_user_team(attacker)
  670.  
  671. if(ateam == CS_TEAM_CT && vteam == CS_TEAM_CT)
  672. return HAM_SUPERCEDE
  673.  
  674. switch(g_Duel)
  675. {
  676. case(0):
  677. {
  678. if(ateam == CS_TEAM_CT && vteam == CS_TEAM_T)
  679. {
  680. if(get_bit(g_PlayerRevolt, victim))
  681. {
  682. clear_bit(g_PlayerRevolt, victim)
  683. hud_status(0)
  684. }
  685. return HAM_IGNORED
  686. }
  687. }
  688. case(2):
  689. {
  690. if(attacker != g_PlayerLast)
  691. return HAM_SUPERCEDE
  692. }
  693. default:
  694. {
  695. if((victim == g_DuelA && attacker == g_DuelB) || (victim == g_DuelB && attacker == g_DuelA))
  696. return HAM_IGNORED
  697.  
  698. return HAM_SUPERCEDE
  699. }
  700. }
  701.  
  702. if(ateam == CS_TEAM_T && vteam == CS_TEAM_T && !g_BoxStarted)
  703. return HAM_SUPERCEDE
  704.  
  705. if(ateam == CS_TEAM_T && vteam == CS_TEAM_CT)
  706. {
  707. if(!g_PlayerRevolt)
  708. revolt_start()
  709.  
  710. set_bit(g_PlayerRevolt, attacker)
  711. }
  712.  
  713. return HAM_IGNORED
  714. }
  715.  
  716. public button_attack(button, id, Float:damage, Float:direction[3], tracehandle, damagebits)
  717. {
  718. if(is_valid_ent(button) && gc_ButtonShoot)
  719. {
  720. ExecuteHamB(Ham_Use, button, id, 0, 2, 1.0)
  721. entity_set_float(button, EV_FL_frame, 0.0)
  722. }
  723.  
  724. return HAM_IGNORED
  725. }
  726.  
  727. public player_killed(victim, attacker, shouldgib)
  728. {
  729. static CsTeams:vteam, CsTeams:kteam
  730. if(!(0 < attacker <= g_MaxClients) || !is_user_connected(attacker))
  731. kteam = CS_TEAM_UNASSIGNED
  732. else
  733. kteam = cs_get_user_team(attacker)
  734.  
  735. vteam = cs_get_user_team(victim)
  736. if(g_Simon == victim)
  737. {
  738. g_Simon = 0
  739. ClearSyncHud(0, g_HudSync[2][_hudsync])
  740. player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_KILLED")
  741. }
  742.  
  743. switch(g_Duel)
  744. {
  745. case(0):
  746. {
  747. switch(vteam)
  748. {
  749. case(CS_TEAM_CT):
  750. {
  751. if(kteam == CS_TEAM_T && !get_bit(g_PlayerWanted, attacker))
  752. {
  753. set_bit(g_PlayerWanted, attacker)
  754. entity_set_int(attacker, EV_INT_skin, 4)
  755. }
  756. }
  757. case(CS_TEAM_T):
  758. {
  759. clear_bit(g_PlayerRevolt, victim)
  760. clear_bit(g_PlayerWanted, victim)
  761. }
  762. }
  763. }
  764. default:
  765. {
  766. if(g_Duel != 2 && (attacker == g_DuelA || attacker == g_DuelB))
  767. {
  768. set_user_rendering(victim, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  769. set_user_rendering(attacker, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  770. g_Duel = 0
  771. g_LastDenied = 0
  772. g_BlockWeapons = 0
  773. g_PlayerLast = 0
  774. team_count()
  775. }
  776. }
  777. }
  778. hud_status(0)
  779. return HAM_IGNORED
  780. }
  781.  
  782. public player_touchweapon(id, ent)
  783. {
  784. static model[32], class[32]
  785. if(g_BlockWeapons)
  786. return HAM_SUPERCEDE
  787.  
  788. if(is_valid_ent(id) && g_Duel != 6 && is_user_alive(ent) && cs_get_user_team(ent) == CS_TEAM_CT)
  789. {
  790. entity_get_string(id, EV_SZ_model, model, charsmax(model))
  791. if(model[7] == 'w' && model[9] == 'h' && model[10] == 'e' && model[11] == 'g')
  792. {
  793. entity_get_string(id, EV_SZ_classname, class, charsmax(class))
  794. if(equal(class, "weapon_hegrenade"))
  795. remove_entity(id)
  796.  
  797. return HAM_SUPERCEDE
  798. }
  799.  
  800. }
  801.  
  802. return HAM_IGNORED
  803. }
  804.  
  805. public set_client_kv(id, const info[], const key[])
  806. {
  807. if(equal(key, "model"))
  808. return FMRES_SUPERCEDE
  809.  
  810. return FMRES_IGNORED
  811. }
  812.  
  813. public sound_emit(id, channel, sample[])
  814. {
  815. if(is_user_alive(id) && equal(sample, "weapons/knife_", 14))
  816. {
  817. switch(sample[17])
  818. {
  819. case('b'):
  820. {
  821. emit_sound(id, CHAN_WEAPON, "weapons/cbar_hitbod2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  822. }
  823. case('w'):
  824. {
  825. emit_sound(id, CHAN_WEAPON, "weapons/cbar_hitbod1.wav", 1.0, ATTN_NORM, 0, PITCH_LOW)
  826. }
  827. case('1', '2'):
  828. {
  829. emit_sound(id, CHAN_WEAPON, "weapons/bullet_hit2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
  830. }
  831. }
  832. return FMRES_SUPERCEDE
  833. }
  834. return FMRES_IGNORED
  835. }
  836.  
  837. public voice_listening(receiver, sender, bool:listen)
  838. {
  839. if((receiver == sender))
  840. return FMRES_IGNORED
  841.  
  842. if(is_user_admin(sender))
  843. {
  844. engfunc(EngFunc_SetClientListening, receiver, sender, true)
  845. return FMRES_SUPERCEDE
  846. }
  847. if(gMicOn && is_user_alive(sender))
  848. {
  849. engfunc(EngFunc_SetClientListening, receiver, sender, true)
  850. return FMRES_SUPERCEDE
  851. }
  852.  
  853. switch(gc_VoiceBlock)
  854. {
  855. case(2):
  856. {
  857. if((sender != g_Simon) && (!get_bit(g_SimonVoice, sender) && gc_VoiceBlock))
  858. {
  859. engfunc(EngFunc_SetClientListening, receiver, sender, false)
  860. return FMRES_SUPERCEDE
  861. }
  862. }
  863. case(1):
  864. {
  865. if(!get_bit(g_SimonVoice, sender) && gc_VoiceBlock)
  866. {
  867. engfunc(EngFunc_SetClientListening, receiver, sender, false)
  868. return FMRES_SUPERCEDE
  869. }
  870. }
  871. }
  872. if(!is_user_alive(sender))
  873. {
  874. engfunc(EngFunc_SetClientListening, receiver, sender, false)
  875. return FMRES_SUPERCEDE
  876. }
  877.  
  878. if(sender == g_Simon)
  879. {
  880. engfunc(EngFunc_SetClientListening, receiver, sender, true)
  881. return FMRES_SUPERCEDE
  882. }
  883.  
  884. listen = true
  885.  
  886. if(g_SimonTalking && (sender != g_Simon))
  887. {
  888. listen = false
  889. }
  890. else
  891. {
  892. static CsTeams:steam
  893. steam = cs_get_user_team(sender)
  894. switch(gc_TalkMode)
  895. {
  896. case(2):
  897. {
  898. listen = (steam == CS_TEAM_CT)
  899. }
  900. case(1):
  901. {
  902. listen = (steam == CS_TEAM_CT || steam == CS_TEAM_T)
  903. }
  904. }
  905. }
  906.  
  907. engfunc(EngFunc_SetClientListening, receiver, sender, listen)
  908. return FMRES_SUPERCEDE
  909. }
  910.  
  911. public player_cmdstart(id, uc, random)
  912. {
  913. if(g_Duel > 3)
  914. {
  915. cs_set_user_bpammo(id, _Duel[g_Duel - 4][_csw], 1)
  916. }
  917. }
  918.  
  919. public round_first()
  920. {
  921. g_JailDay = 0
  922. for(new i = 1; i <= g_MaxClients; i++)
  923. g_PlayerSimon[i] = 0
  924.  
  925. set_cvar_num("sv_alltalk", 1)
  926. set_cvar_num("mp_roundtime", 2)
  927. set_cvar_num("mp_limitteams", 0)
  928. set_cvar_num("mp_autoteambalance", 0)
  929. set_cvar_num("mp_tkpunish", 0)
  930. set_cvar_num("mp_friendlyfire", 1)
  931. round_end()
  932. }
  933.  
  934. public round_end()
  935. {
  936. static CsTeams:team
  937. static maxnosimon, spectrounds
  938. g_SafeTime = 0
  939. g_PlayerRevolt = 0
  940. g_PlayerFreeday = 0
  941. g_PlayerLast = 0
  942. g_BoxStarted = 0
  943. g_CrowbarCount = 0
  944. g_Simon = 0
  945. g_SimonAllowed = 0
  946. g_RoundStarted = 0
  947. g_LastDenied = 0
  948. g_BlockWeapons = 0
  949. g_TeamCount[CS_TEAM_T] = 0
  950. g_TeamCount[CS_TEAM_CT] = 0
  951. g_Freeday = 0
  952. g_FreedayNext = (random_num(0,99) >= 95)
  953. g_RoundEnd = 1
  954. g_Duel = 0
  955. gMicOn = 0
  956. eMod = 0
  957. eModSound = 0
  958.  
  959. set_task(3.0, "stop_sound", 0)
  960.  
  961. set_lights("#OFF");
  962.  
  963. remove_task(TASK_STATUS)
  964. remove_task(TASK_FREEDAY)
  965. remove_task(TASK_FREEEND)
  966. remove_task(TASK_ROUND)
  967. maxnosimon = get_pcvar_num(gp_NosimonRounds)
  968. spectrounds = get_pcvar_num(gp_SpectRounds)
  969. for(new i = 1; i <= g_MaxClients; i++)
  970. {
  971. if(!is_user_connected(i))
  972. continue
  973.  
  974. menu_cancel(i)
  975. team = cs_get_user_team(i)
  976. player_strip_weapons(i)
  977. switch(team)
  978. {
  979. case(CS_TEAM_CT):
  980. {
  981. if(g_PlayerSimon[i] > maxnosimon)
  982. {
  983. cmd_nomic(i)
  984. }
  985. }
  986.  
  987. case(CS_TEAM_T):
  988. {
  989. cs_reset_user_model(i)
  990. }
  991.  
  992. case(CS_TEAM_SPECTATOR,CS_TEAM_UNASSIGNED):
  993. {
  994. g_PlayerSpect[i]++
  995. if(g_PlayerSpect[i] > spectrounds)
  996. {
  997. client_cmd(i, "disconnect")
  998. server_print("JBE Disconnected spectator client #%i", i)
  999. }
  1000. else
  1001. {
  1002. show_menu(i, 51, TEAM_MENU, -1)
  1003. }
  1004. }
  1005. }
  1006. }
  1007. for(new i = 0; i < sizeof(g_HudSync); i++)
  1008. ClearSyncHud(0, g_HudSync[i][_hudsync])
  1009.  
  1010. }
  1011.  
  1012. public round_start()
  1013. {
  1014. if(g_RoundEnd)
  1015. return
  1016.  
  1017. team_count()
  1018. if(!g_Simon && is_freeday())
  1019. {
  1020. g_Freeday = 1
  1021. check_freeday(TASK_FREEDAY)
  1022. }
  1023. else
  1024. {
  1025. set_task(60.0, "check_freeday", TASK_FREEDAY)
  1026. }
  1027. set_task(HUD_DELAY, "hud_status", TASK_STATUS, _, _, "b")
  1028. set_task(100.0, "freeday_end", TASK_FREEDAY)
  1029. g_SimonRandom = get_pcvar_num(gp_SimonRandom) ? random_float(15.0, 45.0) : 0.0
  1030. g_SimonAllowed = 1
  1031. g_FreedayNext = 0
  1032. }
  1033.  
  1034. public cmd_jointeam(id)
  1035. {
  1036. return PLUGIN_HANDLED
  1037. }
  1038.  
  1039. public cmd_joinclass(id)
  1040. {
  1041. return PLUGIN_HANDLED
  1042. }
  1043.  
  1044. public cmd_voiceon(id)
  1045. {
  1046. client_cmd(id, "+voicerecord")
  1047. set_bit(g_SimonVoice, id)
  1048. if(g_Simon == id || is_user_admin(id) || gMicOn)
  1049. set_bit(g_SimonTalking, id)
  1050.  
  1051. return PLUGIN_HANDLED
  1052. }
  1053.  
  1054. public cmd_voiceoff(id)
  1055. {
  1056. client_cmd(id, "-voicerecord")
  1057. clear_bit(g_SimonVoice, id)
  1058. if(g_Simon == id || is_user_admin(id) || gMicOn)
  1059. clear_bit(g_SimonTalking, id)
  1060.  
  1061. return PLUGIN_HANDLED
  1062. }
  1063.  
  1064. public cmd_simon(id)
  1065. {
  1066. static CsTeams:team, name[32]
  1067. if(!is_user_connected(id))
  1068. return PLUGIN_HANDLED
  1069.  
  1070. team = cs_get_user_team(id)
  1071. if(g_SimonAllowed && !g_Freeday && is_user_alive(id) && team == CS_TEAM_CT && !g_Simon)
  1072. {
  1073. g_Simon = id
  1074. ChatColor(id, "%L", LANG_PLAYER, "PRIKAZ")
  1075. get_user_name(id, name, charsmax(name))
  1076. set_user_info(id, "model", "gc_simonct")
  1077. g_PlayerSimon[id]--
  1078. if(get_pcvar_num(gp_GlowModels))
  1079. player_glow(id, g_Colors[0])
  1080. Showsmenu(id)
  1081. hud_status(0)
  1082. }
  1083. return PLUGIN_HANDLED
  1084. }
  1085.  
  1086.  
  1087. public cmd_nomic(id)
  1088. {
  1089. static CsTeams:team
  1090. team = cs_get_user_team(id)
  1091. if(team == CS_TEAM_CT)
  1092. {
  1093. server_print("Server: Straznik premiestneny k veznom #%i", id)
  1094. if(g_Simon == id)
  1095. {
  1096. g_Simon = 0
  1097. player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_TRANSFERED")
  1098. }
  1099. if(!is_user_admin(id))
  1100. set_bit(g_PlayerNomic, id)
  1101.  
  1102. cs_set_user_team(id, CS_TEAM_T)
  1103. set_user_info(id, "model", "jbe_model")
  1104. spawn(id)
  1105. }
  1106. return PLUGIN_HANDLED
  1107. }
  1108.  
  1109. public cmd_box(id)
  1110. {
  1111. static i
  1112. if((id < 0) || (is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT))
  1113. {
  1114. if(g_TeamAlive[CS_TEAM_T] <= get_pcvar_num(gp_BoxMax) && g_TeamAlive[CS_TEAM_T] > 1)
  1115. {
  1116. for(i = 1; i <= g_MaxClients; i++)
  1117. if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T)
  1118. set_user_health(i, 100)
  1119.  
  1120. set_cvar_num("mp_tkpunish", 0)
  1121. set_cvar_num("mp_friendlyfire", 1)
  1122. g_BoxStarted = 1
  1123. player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "JBE_GUARD_BOX")
  1124. }
  1125. else
  1126. {
  1127. player_hudmessage(id, 1, 3.0, _, "%L", LANG_SERVER, "JBE_GUARD_CANTBOX")
  1128. }
  1129. }
  1130. return PLUGIN_HANDLED
  1131. }
  1132.  
  1133. public cmd_stopbox(id)
  1134. {
  1135. static i
  1136. if((id < 0) || (is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT))
  1137. {
  1138. if(g_TeamAlive[CS_TEAM_T] <= get_pcvar_num(gp_BoxMax) && g_TeamAlive[CS_TEAM_T] > 1)
  1139. {
  1140. for(i = 1; i <= g_MaxClients; i++)
  1141. if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T)
  1142.  
  1143.  
  1144. set_cvar_num("mp_tkpunish", 0)
  1145. set_cvar_num("mp_friendlyfire", 0)
  1146. g_BoxStarted = 1
  1147. player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "JBE_GUARD_STOPBOX")
  1148. }
  1149.  
  1150. }
  1151. return PLUGIN_HANDLED
  1152. }
  1153.  
  1154.  
  1155.  
  1156. public cmd_help(id)
  1157. {
  1158. if(id > g_MaxClients)
  1159. id -= TASK_HELP
  1160.  
  1161. remove_task(TASK_HELP + id)
  1162. switch(get_bit(g_PlayerHelp, id))
  1163. {
  1164. case(0):
  1165. {
  1166. set_bit(g_PlayerHelp, id)
  1167. player_hudmessage(id, 7, 15.0, {230, 100, 10}, "%s", g_HelpText)
  1168. set_task(15.0, "cmd_help", TASK_HELP + id)
  1169. }
  1170. default:
  1171. {
  1172. clear_bit(g_PlayerHelp, id)
  1173. ClearSyncHud(id, g_HudSync[7][_hudsync])
  1174. }
  1175. }
  1176. }
  1177.  
  1178. public cmd_freeday(id)
  1179. {
  1180. static menu, menuname[32], option[64]
  1181. if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT)
  1182. {
  1183. formatex(menuname, charsmax(menuname), "\rVyber si volny den pre:")
  1184. menu = menu_create(menuname, "freeday_choice")
  1185.  
  1186. formatex(option, charsmax(option), "\wUrciteho vezna")
  1187. menu_additem(menu, option, "1", 0)
  1188.  
  1189. formatex(option, charsmax(option), "\yVsetkych veznov")
  1190. menu_additem(menu, option, "2", 0)
  1191.  
  1192. menu_display(id, menu)
  1193. }
  1194. return PLUGIN_HANDLED
  1195. }
  1196.  
  1197. public cmd_freeday_player(id)
  1198. {
  1199. if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT)
  1200. menu_players(id, CS_TEAM_T, id, 1, "freeday_select", "\rVyber si hraca:\w")
  1201.  
  1202. return PLUGIN_CONTINUE
  1203. }
  1204.  
  1205. public cmd_lastrequest(id)
  1206. {
  1207.  
  1208. static i, num[5], menu, menuname[32], option[64]
  1209. if(!get_pcvar_num(gp_LastRequest) || g_Freeday || g_LastDenied || g_PlayerLast !=id || !is_user_alive(id))
  1210. return PLUGIN_CONTINUE
  1211.  
  1212.  
  1213. formatex(menuname, charsmax(menuname), "\rTvoje posledne prianie?")
  1214. menu = menu_create(menuname, "lastrequest_select")
  1215.  
  1216. formatex(option, charsmax(option), "\yVolny den")
  1217. menu_additem(menu, option, "1", 0)
  1218.  
  1219. formatex(option, charsmax(option), "\rFreeGun")
  1220. menu_additem(menu, option, "2", 0)
  1221.  
  1222. formatex(option, charsmax(option), "JBE_MENU_LASTREQ_OPT3")
  1223. menu_additem(menu, option, "3", 0)
  1224.  
  1225. for(i = 0; i < sizeof(_Duel); i++)
  1226. {
  1227. num_to_str(i + 4, num, charsmax(num))
  1228. formatex(option, charsmax(option), "%L", LANG_SERVER, _Duel[i][_opt])
  1229. menu_additem(menu, option, num, 0)
  1230. }
  1231.  
  1232.  
  1233. menu_display(id, menu)
  1234. return PLUGIN_CONTINUE
  1235. }
  1236.  
  1237. public adm_freeday(id)
  1238. {
  1239. static player, user[32]
  1240. if(!is_user_admin(id))
  1241. return PLUGIN_CONTINUE
  1242.  
  1243. read_argv(1, user, charsmax(user))
  1244. player = cmd_target(id, user, 2)
  1245. if(is_user_connected(player) && cs_get_user_team(player) == CS_TEAM_T)
  1246. {
  1247. freeday_set(id, player)
  1248. }
  1249. return PLUGIN_HANDLED
  1250. }
  1251.  
  1252. public adm_nomic(id)
  1253. {
  1254. static player, user[32]
  1255. if(id == 0 || is_user_admin(id))
  1256. {
  1257. read_argv(1, user, charsmax(user))
  1258. player = cmd_target(id, user, 3)
  1259. if(is_user_connected(player))
  1260. {
  1261. cmd_nomic(player)
  1262. }
  1263. }
  1264. return PLUGIN_HANDLED
  1265. }
  1266.  
  1267. public adm_open(id)
  1268. {
  1269. if(!is_user_admin(id))
  1270. return PLUGIN_CONTINUE
  1271.  
  1272. jail_open()
  1273. return PLUGIN_HANDLED
  1274. }
  1275.  
  1276. public adm_box(id)
  1277. {
  1278. if(!is_user_admin(id))
  1279. return PLUGIN_CONTINUE
  1280.  
  1281. cmd_box(-1)
  1282. return PLUGIN_HANDLED
  1283. }
  1284.  
  1285. public team_select(id, key)
  1286. {
  1287. static CsTeams:team, roundloop, admin
  1288.  
  1289. roundloop = get_pcvar_num(gp_RetryTime) / 2
  1290. team = cs_get_user_team(id)
  1291. admin = is_user_admin(id)
  1292. team_count()
  1293.  
  1294. if(!admin && (team == CS_TEAM_UNASSIGNED) && (g_RoundStarted >= roundloop) && g_TeamCount[CS_TEAM_CT] && g_TeamCount[CS_TEAM_T] && !is_user_alive(id))
  1295. {
  1296. team_join(id, CS_TEAM_SPECTATOR)
  1297. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTJOIN")
  1298. return PLUGIN_HANDLED
  1299. }
  1300.  
  1301.  
  1302. switch(key)
  1303. {
  1304. case(0):
  1305. {
  1306. if(team == CS_TEAM_T)
  1307. return PLUGIN_HANDLED
  1308.  
  1309. g_PlayerReason[id] = random_num(1, 6)
  1310.  
  1311. team_join(id, CS_TEAM_T)
  1312. }
  1313. case(1):
  1314. {
  1315. if(team == CS_TEAM_CT || (!admin && get_bit(g_PlayerNomic, id)))
  1316. return PLUGIN_HANDLED
  1317.  
  1318. if(g_TeamCount[CS_TEAM_CT] < ctcount_allowed() || admin)
  1319. team_join(id, CS_TEAM_CT)
  1320. else
  1321. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CTFULL")
  1322. }
  1323. case(5):
  1324. {
  1325. user_silentkill(id)
  1326. team_join(id, CS_TEAM_SPECTATOR)
  1327. }
  1328. }
  1329. return PLUGIN_HANDLED
  1330. }
  1331.  
  1332. public team_join(id, CsTeams:team)
  1333. {
  1334. static restore, vgui, msgblock
  1335.  
  1336. restore = get_pdata_int(id, m_iVGUI)
  1337. vgui = restore & (1<<0)
  1338. if(vgui)
  1339. set_pdata_int(id, m_iVGUI, restore & ~(1<<0))
  1340.  
  1341. switch(team)
  1342. {
  1343. case CS_TEAM_SPECTATOR:
  1344. {
  1345. msgblock = get_msg_block(g_MsgShowMenu)
  1346. set_msg_block(g_MsgShowMenu, BLOCK_ONCE)
  1347. dllfunc(DLLFunc_ClientPutInServer, id)
  1348. set_msg_block(g_MsgShowMenu, msgblock)
  1349. set_pdata_int(id, m_fGameHUDInitialized, 1)
  1350. engclient_cmd(id, "jointeam", "6")
  1351. }
  1352. case CS_TEAM_T, CS_TEAM_CT:
  1353. {
  1354. msgblock = get_msg_block(g_MsgShowMenu)
  1355. set_msg_block(g_MsgShowMenu, BLOCK_ONCE)
  1356. engclient_cmd(id, "jointeam", (team == CS_TEAM_CT) ? "2" : "1")
  1357. engclient_cmd(id, "joinclass", "1")
  1358. set_msg_block(g_MsgShowMenu, msgblock)
  1359. g_PlayerSpect[id] = 0
  1360. }
  1361. }
  1362.  
  1363. if(vgui)
  1364. set_pdata_int(id, m_iVGUI, restore)
  1365. }
  1366.  
  1367. public team_count()
  1368. {
  1369. static CsTeams:team, last
  1370. g_TeamCount[CS_TEAM_UNASSIGNED] = 0
  1371. g_TeamCount[CS_TEAM_T] = 0
  1372. g_TeamCount[CS_TEAM_CT] = 0
  1373. g_TeamCount[CS_TEAM_SPECTATOR] = 0
  1374. g_TeamAlive[CS_TEAM_UNASSIGNED] = 0
  1375. g_TeamAlive[CS_TEAM_T] = 0
  1376. g_TeamAlive[CS_TEAM_CT] = 0
  1377. g_TeamAlive[CS_TEAM_SPECTATOR] = 0
  1378. for(new i = 1; i <= g_MaxClients; i++)
  1379. {
  1380. if(is_user_connected(i))
  1381. {
  1382. team = cs_get_user_team(i)
  1383. g_TeamCount[team]++
  1384. g_PlayerTeam[i] = team
  1385. if(is_user_alive(i))
  1386. {
  1387. g_TeamAlive[team]++
  1388. if(team == CS_TEAM_T)
  1389. last = i
  1390. }
  1391. }
  1392. else
  1393. {
  1394. g_PlayerTeam[i] = CS_TEAM_UNASSIGNED
  1395. }
  1396. }
  1397. if(g_TeamAlive[CS_TEAM_T] == 1)
  1398. {
  1399. if(last != g_PlayerLast && g_SafeTime)
  1400. {
  1401. prisoner_last(last)
  1402. }
  1403. }
  1404. else
  1405. {
  1406. if(g_Duel || g_DuelA || g_DuelB)
  1407. {
  1408. if(is_user_alive(g_DuelA))
  1409. {
  1410. player_strip_weapons(g_DuelA)
  1411. }
  1412.  
  1413. if(is_user_alive(g_DuelB))
  1414. {
  1415. player_strip_weapons(g_DuelB)
  1416. }
  1417.  
  1418. }
  1419. g_PlayerLast = 0
  1420. g_DuelA = 0
  1421. g_DuelB = 0
  1422. g_Duel = 0
  1423. }
  1424. }
  1425.  
  1426. public revolt_start()
  1427. {
  1428. client_cmd(0,"speak ambience/siren")
  1429. set_task(8.0, "stop_sound")
  1430. hud_status(0)
  1431. }
  1432.  
  1433. public stop_sound(task)
  1434. {
  1435. client_cmd(0, "stopsound")
  1436. }
  1437.  
  1438. public hud_status(task)
  1439. {
  1440. static i, n
  1441. new name[32], szStatus[64], wanted[1024]
  1442.  
  1443. if(g_RoundStarted < (get_pcvar_num(gp_RetryTime) / 2))
  1444. g_RoundStarted++
  1445.  
  1446. if(!g_Freeday && !g_Simon && g_SimonAllowed && (0.0 < g_SimonRandom < get_gametime()))
  1447. {
  1448. cmd_simon(random_num(1, g_MaxClients))
  1449. }
  1450.  
  1451. n = 0
  1452. formatex(wanted, charsmax(wanted), "%L", LANG_SERVER, "JBE_PRISONER_WANTED")
  1453. n = strlen(wanted)
  1454. for(i = 0; i < g_MaxClients; i++)
  1455. {
  1456. if(get_bit(g_PlayerWanted, i) && is_user_alive(i) && n < charsmax(wanted))
  1457. {
  1458. get_user_name(i, name, charsmax(name))
  1459. n += copy(wanted[n], charsmax(wanted) - n, "^n^t")
  1460. n += copy(wanted[n], charsmax(wanted) - n, name)
  1461. }
  1462. }
  1463.  
  1464. team_count()
  1465. formatex(szStatus, charsmax(szStatus), "%L", LANG_SERVER, "JBE_STATUS", g_TeamAlive[CS_TEAM_T], g_TeamCount[CS_TEAM_T])
  1466. message_begin(MSG_BROADCAST, get_user_msgid("StatusText"), {0,0,0}, 0)
  1467. write_byte(0)
  1468. write_string(szStatus)
  1469. message_end()
  1470.  
  1471. if(g_Simon)
  1472. {
  1473. get_user_name(g_Simon, name, charsmax(name))
  1474. player_hudmessage(0, 2, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_SIMON_FOLLOW", name)
  1475. }
  1476. else if(g_Freeday)
  1477. {
  1478. player_hudmessage(0, 2, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_FREEDAY")
  1479. }
  1480.  
  1481. if(g_PlayerWanted)
  1482. player_hudmessage(0, 3, HUD_DELAY + 1.0, {255, 25, 50}, "%s", wanted)
  1483. else if(g_PlayerRevolt)
  1484. player_hudmessage(0, 3, HUD_DELAY + 1.0, {255, 25, 50}, "Vezni sa vzburili!!!")
  1485.  
  1486. player_hudmessage(0, 5, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_DAY", g_JailDay)
  1487.  
  1488. gc_TalkMode = get_pcvar_num(gp_TalkMode)
  1489. gc_VoiceBlock = get_pcvar_num(gp_VoiceBlock)
  1490. gc_SimonSteps = get_pcvar_num(gp_SimonSteps)
  1491. gc_ButtonShoot = get_pcvar_num(gp_ButtonShoot)
  1492. gc_CrowbarMul = get_pcvar_float(gp_CrowbarMul)
  1493.  
  1494. }
  1495.  
  1496. public safe_time(task)
  1497. {
  1498. g_SafeTime = 1
  1499. }
  1500.  
  1501. public check_freeday(task)
  1502. {
  1503. static Float:roundmax, i
  1504. if(!g_Simon && !g_PlayerLast)
  1505. {
  1506. g_BlockWeapons = 1
  1507. g_Freeday = 1
  1508.  
  1509. hud_status(0)
  1510. roundmax = get_pcvar_float(gp_RoundMax)
  1511. if(roundmax > 0.0)
  1512. {
  1513. for(i = 1; i <= g_MaxClients; i++)
  1514. {
  1515. if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T)
  1516. freeday_set(0, i)
  1517. }
  1518. emit_sound(0, CHAN_AUTO, "jailbreak_extra/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1519. player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDTIMER", floatround(roundmax - 60.0))
  1520. remove_task(TASK_ROUND)
  1521. set_task(roundmax - 60.0, "check_end", TASK_ROUND)
  1522. }
  1523. }
  1524.  
  1525. if(get_pcvar_num(gp_AutoOpen))
  1526. jail_open()
  1527. }
  1528.  
  1529. public freeday_end(task)
  1530. {
  1531. if(g_Freeday || g_PlayerFreeday)
  1532. {
  1533. g_BlockWeapons = 0
  1534. emit_sound(0, CHAN_AUTO, "jailbreak_extra/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1535. player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDFREEDAY")
  1536. for(new i = 0; i < g_MaxClients; i++)
  1537. {
  1538. if(g_Simon)
  1539. set_user_rendering(i,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
  1540. }
  1541. }
  1542. }
  1543.  
  1544. public check_end(task)
  1545. {
  1546. team_count()
  1547. for(new i = 1; i <= g_MaxClients; i++)
  1548. {
  1549. if(g_PlayerTeam[i] == CS_TEAM_T && is_user_alive(i))
  1550. {
  1551. user_silentkill(i)
  1552. cs_set_user_deaths(i, get_user_deaths(i) - 1)
  1553. }
  1554. }
  1555. for(new i = 1; i <= g_MaxClients; i++)
  1556. {
  1557. if(g_PlayerTeam[i] == CS_TEAM_CT && is_user_alive(i))
  1558. {
  1559. user_silentkill(i)
  1560. cs_set_user_deaths(i, get_user_deaths(i) - 1)
  1561. }
  1562. }
  1563. player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ROUNDEND")
  1564. }
  1565.  
  1566. public prisoner_last(id)
  1567. {
  1568. static name[32], Float:roundmax
  1569. if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
  1570. {
  1571. roundmax = get_pcvar_float(gp_RoundMax)
  1572. get_user_name(id, name, charsmax(name))
  1573. g_PlayerLast = id
  1574. player_hudmessage(0, 6, 5.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_PRISONER_LAST", name)
  1575. remove_task(TASK_ROUND)
  1576. if(roundmax > 0.0)
  1577. {
  1578. player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDTIMER", floatround(roundmax - 60.0))
  1579. set_task(roundmax - 60.0, "check_end", TASK_ROUND)
  1580. }
  1581. if((g_TeamAlive[CS_TEAM_CT] > 0) && get_pcvar_num(gp_AutoLastresquest))
  1582. cmd_lastrequest(id)
  1583. }
  1584. }
  1585.  
  1586. public freeday_select(id, menu, item)
  1587. {
  1588. if(item == MENU_EXIT)
  1589. {
  1590. menu_destroy(menu)
  1591. return PLUGIN_HANDLED
  1592. }
  1593.  
  1594. static dst[32], data[5], player, access, callback
  1595.  
  1596. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1597. player = str_to_num(data)
  1598. freeday_set(id, player)
  1599. return PLUGIN_HANDLED
  1600. }
  1601.  
  1602. public duel_knives(id, menu, item)
  1603. {
  1604. if(item == MENU_EXIT)
  1605. {
  1606. menu_destroy(menu)
  1607. g_LastDenied = 0
  1608. return PLUGIN_HANDLED
  1609. }
  1610.  
  1611. static dst[32], data[5], access, callback, option[128], player, src[32]
  1612.  
  1613. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1614. get_user_name(id, src, charsmax(src))
  1615. player = str_to_num(data)
  1616. formatex(option, charsmax(option), "%L^n%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL2", src, LANG_SERVER, "JBE_MENU_DUEL_SEL", src, dst)
  1617. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1618.  
  1619. g_DuelA = id
  1620. clear_bit(g_PlayerCrowbar, id)
  1621. player_strip_weapons(id)
  1622. player_glow(id, g_Colors[3])
  1623. set_user_health(id, 100)
  1624.  
  1625. g_DuelB = player
  1626. player_strip_weapons(player)
  1627. player_glow(player, g_Colors[2])
  1628. set_user_health(player, 100)
  1629. g_BlockWeapons = 1
  1630. return PLUGIN_HANDLED
  1631. }
  1632.  
  1633. public duel_guns(id, menu, item)
  1634. {
  1635. if(item == MENU_EXIT)
  1636. {
  1637. menu_destroy(menu)
  1638. g_LastDenied = 0
  1639. g_Duel = 0
  1640. return PLUGIN_HANDLED
  1641. }
  1642.  
  1643. static gun, dst[32], data[5], access, callback, option[128], player, src[32]
  1644.  
  1645. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1646. get_user_name(id, src, charsmax(src))
  1647. player = str_to_num(data)
  1648. formatex(option, charsmax(option), "%L^n%L", LANG_SERVER, _Duel[g_Duel - 3][_sel], src, LANG_SERVER, "JBE_MENU_DUEL_SEL", src, dst)
  1649. emit_sound(0, CHAN_AUTO, "jbextreme/nm_goodbadugly.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1650. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1651.  
  1652. g_DuelA = id
  1653. clear_bit(g_PlayerCrowbar, id)
  1654. player_strip_weapons(id)
  1655. gun = give_item(id, _Duel[g_Duel - 3][_entname])
  1656. cs_set_weapon_ammo(gun, 1)
  1657. set_user_health(id, 100)
  1658. player_glow(id, g_Colors[3])
  1659.  
  1660. g_DuelB = player
  1661. player_strip_weapons(player)
  1662. gun = give_item(player, _Duel[g_Duel - 3][_entname])
  1663. cs_set_weapon_ammo(gun, 1)
  1664. set_user_health(player, 100)
  1665. player_glow(player, g_Colors[2])
  1666.  
  1667. g_BlockWeapons = 1
  1668. return PLUGIN_HANDLED
  1669. }
  1670.  
  1671. public freeday_choice(id, menu, item)
  1672. {
  1673. if(item == MENU_EXIT)
  1674. {
  1675. menu_destroy(menu)
  1676. return PLUGIN_HANDLED
  1677. }
  1678.  
  1679. static dst[32], data[5], access, callback
  1680.  
  1681. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1682. menu_destroy(menu)
  1683. get_user_name(id, dst, charsmax(dst))
  1684. switch(data[0])
  1685. {
  1686. case('1'):
  1687. {
  1688. cmd_freeday_player(id)
  1689. }
  1690.  
  1691. case('2'):
  1692. {
  1693. if(id == g_Simon)
  1694. {
  1695. g_Simon = 0
  1696. get_user_name(id, dst, charsmax(dst))
  1697. client_print(0, print_console, "%s gives freeday for everyone", dst)
  1698. server_print("JBE Client %i gives freeday for everyone", id)
  1699. check_freeday(TASK_FREEDAY)
  1700. }
  1701. }
  1702. }
  1703. return PLUGIN_HANDLED
  1704. }
  1705.  
  1706. public lastrequest_select(id, menu, item)
  1707. {
  1708. if(item == MENU_EXIT || g_PlayerLast != id)
  1709. {
  1710. menu_destroy(menu)
  1711. return PLUGIN_HANDLED
  1712. }
  1713.  
  1714. static i, dst[32], data[5], access, callback, option[64]
  1715.  
  1716. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1717. get_user_name(id, dst, charsmax(dst))
  1718. switch(data[0])
  1719. {
  1720. case('1'):
  1721. {
  1722. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL1", dst)
  1723. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1724. set_bit(g_FreedayAuto, id)
  1725. user_silentkill(id)
  1726. }
  1727. case('2'):
  1728. {
  1729. formatex(option, charsmax(option), "%L", LANG_SERVER, "UJBM_MENU_LASTREQ_SEL2", dst)
  1730. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1731. g_Duel = 2
  1732. player_strip_weapons_all()
  1733. i = random_num(0, sizeof(_WeaponsFree) - 1)
  1734. give_item(id, _WeaponsFree[i])
  1735. server_cmd("jb_block_weapons")
  1736. cs_set_user_bpammo(id, _WeaponsFreeCSW[i], _WeaponsFreeAmmo[i])
  1737. }
  1738. case('3'):
  1739. {
  1740. g_Duel = 3
  1741. menu_players(id, CS_TEAM_CT, 0, 1, "duel_knives", "%L", LANG_SERVER, "UJBM_MENU_DUEL")
  1742. }
  1743. default:
  1744. {
  1745. g_Duel = str_to_num(data)
  1746. menu_players(id, CS_TEAM_CT, 0, 1, "duel_guns", "%L", LANG_SERVER, "UJBM_MENU_DUEL")
  1747. }
  1748. }
  1749. g_LastDenied = 1
  1750. menu_destroy(menu)
  1751. return PLUGIN_HANDLED
  1752. }
  1753.  
  1754. public setup_buttons()
  1755. {
  1756. new ent[3]
  1757. new Float:origin[3]
  1758. new info[32]
  1759. new pos
  1760.  
  1761. while((pos <= sizeof(g_Buttons)) && (ent[0] = engfunc(EngFunc_FindEntityByString, ent[0], "classname", "info_player_deathmatch")))
  1762. {
  1763. pev(ent[0], pev_origin, origin)
  1764. while((ent[1] = engfunc(EngFunc_FindEntityInSphere, ent[1], origin, CELL_RADIUS)))
  1765. {
  1766. if(!is_valid_ent(ent[1]))
  1767. continue
  1768.  
  1769. entity_get_string(ent[1], EV_SZ_classname, info, charsmax(info))
  1770. if(!equal(info, "func_door"))
  1771. continue
  1772.  
  1773. entity_get_string(ent[1], EV_SZ_targetname, info, charsmax(info))
  1774. if(!info[0])
  1775. continue
  1776.  
  1777. if(TrieKeyExists(g_CellManagers, info))
  1778. {
  1779. TrieGetCell(g_CellManagers, info, ent[2])
  1780. }
  1781. else
  1782. {
  1783. ent[2] = engfunc(EngFunc_FindEntityByString, 0, "target", info)
  1784. }
  1785.  
  1786. if(is_valid_ent(ent[2]) && (in_array(ent[2], g_Buttons, sizeof(g_Buttons)) < 0))
  1787. {
  1788. g_Buttons[pos] = ent[2]
  1789. pos++
  1790. break
  1791. }
  1792. }
  1793. }
  1794. TrieDestroy(g_CellManagers)
  1795. }
  1796.  
  1797. stock in_array(needle, data[], size)
  1798. {
  1799. for(new i = 0; i < size; i++)
  1800. {
  1801. if(data[i] == needle)
  1802. return i
  1803. }
  1804. return -1
  1805. }
  1806.  
  1807. stock freeday_set(id, player)
  1808. {
  1809. static src[32], dst[32]
  1810. get_user_name(player, dst, charsmax(dst))
  1811.  
  1812. if(is_user_alive(player) && !get_bit(g_PlayerWanted, player))
  1813. {
  1814. if(0 < id <= g_MaxClients)
  1815. {
  1816. get_user_name(id, src, charsmax(src))
  1817. player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_GUARD_FREEDAYGIVE", src, dst)
  1818. }
  1819. else if(!is_freeday())
  1820. {
  1821. player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_PRISONER_HASFREEDAY", dst)
  1822. }
  1823. }
  1824. }
  1825.  
  1826. stock first_join(id)
  1827. {
  1828. if(!get_bit(g_PlayerJoin, id))
  1829. {
  1830. set_bit(g_PlayerJoin, id)
  1831. clear_bit(g_PlayerHelp, id)
  1832. set_task(5.0, "cmd_help", TASK_HELP + id)
  1833. }
  1834. }
  1835.  
  1836. stock ctcount_allowed()
  1837. {
  1838. static count
  1839. count = ((g_TeamCount[CS_TEAM_T] + g_TeamCount[CS_TEAM_CT]) / get_pcvar_num(gp_TeamRatio))
  1840. if(count < 2)
  1841. count = 2
  1842. else if(count > get_pcvar_num(gp_CtMax))
  1843. count = get_pcvar_num(gp_CtMax)
  1844.  
  1845. return count
  1846. }
  1847.  
  1848. stock player_hudmessage(id, hudid, Float:time = 0.0, color[3] = {0, 255, 0}, msg[], any:...)
  1849. {
  1850. static text[512], Float:x, Float:y
  1851. x = g_HudSync[hudid][_x]
  1852. y = g_HudSync[hudid][_y]
  1853.  
  1854. if(time > 0)
  1855. set_hudmessage(color[0], color[1], color[2], x, y, 0, 0.00, time, 0.00, 0.00)
  1856. else
  1857. set_hudmessage(color[0], color[1], color[2], x, y, 0, 0.00, g_HudSync[hudid][_time], 0.00, 0.00)
  1858.  
  1859. vformat(text, charsmax(text), msg, 6)
  1860. ShowSyncHudMsg(id, g_HudSync[hudid][_hudsync], text)
  1861. }
  1862.  
  1863. stock menu_players(id, CsTeams:team, skip, alive, callback[], title[], any:...)
  1864. {
  1865. static i, name[32], num[5], menu, menuname[32]
  1866. vformat(menuname, charsmax(menuname), title, 7)
  1867. menu = menu_create(menuname, callback)
  1868. for(i = 1; i <= g_MaxClients; i++)
  1869. {
  1870. if(!is_user_connected(i) || (alive && !is_user_alive(i)) || (skip == i))
  1871. continue
  1872.  
  1873. if(!(team == CS_TEAM_T || team == CS_TEAM_CT) || ((team == CS_TEAM_T || team == CS_TEAM_CT) && (cs_get_user_team(i) == team)))
  1874. {
  1875. get_user_name(i, name, charsmax(name))
  1876. num_to_str(i, num, charsmax(num))
  1877. menu_additem(menu, name, num, 0)
  1878. }
  1879. }
  1880. menu_display(id, menu)
  1881. }
  1882.  
  1883. stock player_glow(id, color[3], amount=40)
  1884. {
  1885. set_user_rendering(id, kRenderFxGlowShell, color[0], color[1], color[2], kRenderNormal, amount)
  1886. }
  1887.  
  1888. stock player_strip_weapons(id)
  1889. {
  1890. strip_user_weapons(id)
  1891. give_item(id, "weapon_knife")
  1892. set_pdata_int(id, m_iPrimaryWeapon, 0)
  1893. }
  1894.  
  1895. stock player_strip_weapons_all()
  1896. {
  1897. for(new i = 1; i <= g_MaxClients; i++)
  1898. {
  1899. if(is_user_alive(i))
  1900. {
  1901. player_strip_weapons(i)
  1902. }
  1903. }
  1904. }
  1905.  
  1906. stock is_freeday()
  1907. {
  1908. return (g_FreedayNext || g_Freeday || (g_JailDay == 1))
  1909. }
  1910.  
  1911. public jail_open()
  1912. {
  1913. static i
  1914. for(i = 0; i < sizeof(g_Buttons); i++)
  1915. {
  1916. if(g_Buttons[i])
  1917. {
  1918. ExecuteHamB(Ham_Use, g_Buttons[i], 0, 0, 1, 1.0)
  1919. entity_set_float(g_Buttons[i], EV_FL_frame, 0.0)
  1920. }
  1921. }
  1922. }
  1923.  
  1924. /*============================================================
  1925. *** SIMONMENU ***
  1926. ============================================================*/
  1927.  
  1928. public Showsmenu(id)
  1929. {
  1930. if (g_Simon == id || get_user_flags(id) & ADMIN_IMMUNITY)
  1931. {
  1932. show_menu(id, Keyssmenu, "\ySimonMenu \w| \r/smenu^n^n\y1. \rOtvorit cely^n\y2. \wVolny den^n\y3. \yZvonec!^n\y4. \wBox menu^n\y5. \wSimonove stopy^n\y6. \yHerne mody^n\y7. \wNastavenie mikrofonov^n\y8. \wDobit HP veznom", -1, "smenu") // Display menu
  1933. }
  1934. else
  1935. {
  1936. ChatColor(id, "%L", LANG_PLAYER, "JBE_ONLY_SIMON")
  1937. }
  1938. }
  1939.  
  1940. public Pressedsmenu(id, key) {
  1941. /* Menu:
  1942. * SimonMenu | /smenu
  1943. *
  1944. * 1. Otvorit cely
  1945. * 2. Volny den
  1946. * 3. Zvonec
  1947. * 4. Box menu
  1948. * 5. Simonove stopy
  1949. * 6. Herne mody
  1950. * 7. Nastavenie mikrofonov
  1951. * 8. Dobit HP veznom
  1952. *
  1953. */
  1954.  
  1955. switch (key)
  1956. {
  1957. case 0: { // 1
  1958. jail_open()
  1959. ChatColor(id, "%L", LANG_SERVER, "CELY_OTVORENE")
  1960. Showsmenu(id)
  1961. }
  1962.  
  1963. case 1: { // 2
  1964. cmd_freeday(id)
  1965. }
  1966.  
  1967. case 2: { // 3
  1968. emit_sound(0, CHAN_AUTO, "jbextreme/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1969. Showsmenu(id)
  1970. }
  1971.  
  1972. case 3: { // 4
  1973. Showbox(id)
  1974. }
  1975.  
  1976. case 4: { // 5
  1977. Showstopy(id)
  1978. }
  1979.  
  1980. case 5: { // 6
  1981. if(!eMod || !eModLimit)
  1982. Showmody(id)
  1983. }
  1984.  
  1985. case 6: { // 7
  1986. Showmic(id)
  1987. }
  1988.  
  1989. case 7:
  1990. { // 8
  1991. if(cs_get_user_team(id) & CS_TEAM_T)
  1992. {
  1993. set_user_health(id, 100)
  1994. ChatColor(id, "%L", LANG_PLAYER, "VEZNI_HP")
  1995. }
  1996.  
  1997. if(g_Simon)
  1998. {
  1999. ChatColor(id, "%L", LANG_PLAYER, "SIMON_HP")
  2000. }
  2001. }
  2002. }
  2003. }
  2004.  
  2005. /*============================================================
  2006. VYBER ZBRANI
  2007. ============================================================*/
  2008.  
  2009. public Showzbrane(id) {
  2010. if(cs_get_user_team(id) & CS_TEAM_CT)
  2011. {
  2012. show_menu(id, Keyszbrane, "\rVyber si zbran:^n^n\y1. \yM4A1 \w+ Deagle + doplnky^n\y2. \yAK47 \w+ Deagle + doplnky^n\y3. \yFAMAS \w+ Deagle + doplnky^n\y4. \yD3/AU1 \w+ Deagle + doplnky^n\y5. \yAWP \w+ Deagle + doplnky^n", -1, "zbrane") // Display menu
  2013. }
  2014. }
  2015.  
  2016. public Pressedzbrane(id, key) {
  2017. /* Menu:
  2018. * Nastavenie mikrofonov
  2019. *
  2020. * 1. Zapnute
  2021. * 2. Vypnute
  2022. *
  2023. * 0. Spat
  2024. */
  2025.  
  2026. switch (key) {
  2027. case 0:
  2028. { // 1
  2029. strip_user_weapons(id)
  2030.  
  2031. give_item(id, "weapon_m4a1")
  2032. give_item(id, "weapon_deagle")
  2033. give_item(id, "weapon_knife")
  2034.  
  2035. give_item(id, "weapon_hegrenade")
  2036. give_item(id, "weapon_flashbang")
  2037. give_item(id, "weapon_flashbang")
  2038. give_item(id, "weapon_smokegrenade")
  2039.  
  2040. give_item(id, "item_assaultsuit")
  2041.  
  2042. cs_set_user_bpammo(id, CSW_M4A1, 250)
  2043. cs_set_user_bpammo(id, CSW_DEAGLE, 100)
  2044.  
  2045. ChatColor(id, "%L", LANG_PLAYER, "BUY_M4A1")
  2046. }
  2047.  
  2048. case 1:
  2049. { // 2
  2050. strip_user_weapons(id)
  2051.  
  2052. give_item(id, "weapon_ak47")
  2053. give_item(id, "weapon_deagle")
  2054. give_item(id, "weapon_knife")
  2055.  
  2056. give_item(id, "weapon_hegrenade")
  2057. give_item(id, "weapon_flashbang")
  2058. give_item(id, "weapon_flashbang")
  2059. give_item(id, "weapon_smokegrenade")
  2060.  
  2061. give_item(id, "item_assaultsuit")
  2062.  
  2063. cs_set_user_bpammo(id, CSW_AK47, 250)
  2064. cs_set_user_bpammo(id, CSW_DEAGLE, 100)
  2065.  
  2066. ChatColor(id, "%L", LANG_PLAYER, "BUY_AK47")
  2067.  
  2068. case 2:
  2069. { // 2
  2070. strip_user_weapons(id)
  2071.  
  2072. give_item(id, "weapon_awp")
  2073. give_item(id, "weapon_deagle")
  2074. give_item(id, "weapon_knife")
  2075.  
  2076. give_item(id, "weapon_hegrenade")
  2077. give_item(id, "weapon_flashbang")
  2078. give_item(id, "weapon_flashbang")
  2079. give_item(id, "weapon_smokegrenade")
  2080.  
  2081. give_item(id, "item_assaultsuit")
  2082.  
  2083. cs_set_user_bpammo(id, CSW_AWP, 250)
  2084. cs_set_user_bpammo(id, CSW_DEAGLE, 100)
  2085.  
  2086. ChatColor(id, "%L", LANG_PLAYER, "BUY_AWP")
  2087. }
  2088. }
  2089. }
  2090.  
  2091. /*============================================================
  2092. SIMONOVE STOPY
  2093. ============================================================*/
  2094.  
  2095. public Showstopy(id) {
  2096. show_menu(id, Keysstopy, "\rSimonove stopy:^n^n\y1. \wZapnute^n\y2. \wVypnute^n\y^n0. \ySpat^n", -1, "stopy") // Display menu
  2097. }
  2098.  
  2099. public Pressedstopy(id, key) {
  2100. /* Menu:
  2101. * Simonove stopy:
  2102. *
  2103. * 1. Zapnute
  2104. * 2. Vypnute
  2105. *
  2106. * 0. Spat
  2107. */
  2108.  
  2109. switch (key) {
  2110. case 0:
  2111. { // 1
  2112. set_cvar_num("jbe_simonsteps", 1)
  2113. Showsmenu(id)
  2114. ChatColor(id, "%L", LANG_PLAYER, "STOPY_ON")
  2115. }
  2116.  
  2117. case 1:
  2118. { // 2
  2119. set_cvar_num("jbe_simonsteps", 0)
  2120. Showsmenu(id)
  2121. ChatColor(id, "%L", LANG_PLAYER, "STOPY_OFF")
  2122. }
  2123.  
  2124. case 9: { // 0
  2125. Showsmenu(id)
  2126. }
  2127. }
  2128. }
  2129.  
  2130. /*============================================================
  2131. NASTAVENIE BOXU
  2132. ============================================================*/
  2133.  
  2134. public Showbox(id) {
  2135. show_menu(id, Keysbox, "\rNastavenie boxu:^n^n\y1. \wZapnut box^n\y2. \wVypnut box^n\y^n0. \ySpat^n", -1, "box") // Display menu
  2136. }
  2137.  
  2138. public Pressedbox(id, key) {
  2139. /* Menu:
  2140. * Nastavenie Boxu:
  2141. *
  2142. * 1. Zapnut Box
  2143. * 2. Vypnut Box
  2144. *
  2145. * 0. Spat
  2146. */
  2147.  
  2148. switch (key) {
  2149. case 0: { // 1
  2150. cmd_box(id)
  2151. ChatColor(id, "%L", LANG_PLAYER, "BOX_ON")
  2152. Showbox(id)
  2153. }
  2154. case 1: { // 2
  2155. cmd_stopbox(id)
  2156. ChatColor(id, "%L", LANG_PLAYER, "BOX_OFF")
  2157. Showbox(id)
  2158. }
  2159. case 9: { // 0
  2160. Showsmenu(id)
  2161. }
  2162. }
  2163. }
  2164.  
  2165. /*============================================================
  2166. NASTAVENIE MIKROFONOV
  2167. ============================================================*/
  2168.  
  2169. public Showmic(id) {
  2170. show_menu(id, Keysmic, "\rNastavenie mikrofonov:^n^n\y1. \wZapnute^n\y2. \wVypnute^n\y^n0. \ySpat^n", -1, "mic") // Display menu
  2171. }
  2172.  
  2173. public Pressedmic(id, key) {
  2174. /* Menu:
  2175. * Nastavenie mikrofonov
  2176. *
  2177. * 1. Zapnute
  2178. * 2. Vypnute
  2179. *
  2180. * 0. Spat
  2181. */
  2182.  
  2183. switch (key) {
  2184. case 0: { // 1
  2185. gMicOn = 1
  2186. Showsmenu(id)
  2187. ChatColor(id, "%L", LANG_PLAYER, "MIC_ON")
  2188. player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "MIC_HUD_ON")
  2189.  
  2190. }
  2191. case 1: { // 2
  2192. gMicOn = 0
  2193. Showsmenu(id)
  2194. ChatColor(id, "%L", LANG_PLAYER, "MIC_OFF")
  2195. player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "MIC_HUD_OFF")
  2196. }
  2197. case 9: { // 0
  2198. Showsmenu(id)
  2199. }
  2200. }
  2201. }
  2202.  
  2203. /*============================================================
  2204. HERNE MODY
  2205. ============================================================*/
  2206.  
  2207. public Showmody(id) {
  2208. show_menu(id, Keysmody, "\rZvol herny mod:^n^n\y1. \wPrestrelka^n\y2. \wSchovka^n\y3. \wKaraoke menu \r[ZATIAL NEFUNKCNE]^n\y4. \wFutbal \r[ZATIAL NEFUNKCNY]^n^n\y0. \ySpat^n", -1, "mody") // Display menu
  2209. }
  2210.  
  2211. public Pressedmody(id, key) {
  2212. /* Menu:
  2213. * Zvol herny mod:
  2214. *
  2215. * 1. Prestrelka
  2216. * 2. Schovka
  2217. * 3. Karaoke menu [ZATIAL NEFUNKCNE]
  2218. * 4. Futbal [ZATIAL NEFUNKCNY]
  2219. *
  2220. * 0. Spat
  2221. */
  2222.  
  2223. switch (key) {
  2224. case 0:
  2225. {
  2226. Showmenuprestrelka(id)
  2227. }
  2228.  
  2229. case 1:
  2230. {
  2231. g_BlockWeapons = 1
  2232. g_BoxStarted = 0
  2233. jail_open()
  2234. eModSound = 2
  2235. eMod = 1
  2236. eModLimit = 1
  2237. g_SimonAllowed = 0
  2238. g_Simon = 0
  2239.  
  2240.  
  2241. emit_sound(0, CHAN_AUTO, "jailbreak_extra/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  2242.  
  2243. player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "MOD_SCHOVKA")
  2244.  
  2245.  
  2246. set_lights("b");
  2247.  
  2248.  
  2249. new Players[32]
  2250. new playerCount, i
  2251. get_players(Players, playerCount, "ac")
  2252. for (i=0; i<playerCount; i++)
  2253. {
  2254. strip_user_weapons(Players[i])
  2255. }
  2256. set_task(30.0,"cmd_hns_start")
  2257. }
  2258.  
  2259. case 2:
  2260. {
  2261. Showkaraoke(id)
  2262. }
  2263.  
  2264. case 3:
  2265. {
  2266. }
  2267.  
  2268. case 9:
  2269. {
  2270. Showsmenu(id)
  2271. }
  2272. }
  2273. }
  2274.  
  2275. public mod_utek(id)
  2276. {
  2277. switch(eModSound)
  2278. {
  2279. case 1:
  2280. {
  2281. emit_sound(0, CHAN_AUTO, "jailbreak_extra/prestrelka.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  2282. }
  2283.  
  2284. case 2:
  2285. {
  2286. emit_sound(0, CHAN_AUTO, "jailbreak_extra/schovka.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  2287. }
  2288.  
  2289. case 3:
  2290. {
  2291. emit_sound(0, CHAN_AUTO, "jailbreak_extra/onlyscout.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  2292. }
  2293.  
  2294. case 4:
  2295. {
  2296. emit_sound(0, CHAN_AUTO, "jailbreak_extra/pistolsprestrelka.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  2297. }
  2298. }
  2299.  
  2300. jail_open()
  2301. }
  2302.  
  2303. /*============================================================
  2304. HERNE MODY - PRESTRELKA MENU
  2305. ============================================================*/
  2306.  
  2307. public Showmenuprestrelka(id) {
  2308. show_menu(id, Keysmenuprestrelka, "\rVyber si druh prestrelky:^n^n\y1. \wKlasicka - M4A1/AK47^n\y2. \wOnly Scout^n\y3. \wPistols^n^n\y0. \ySpat^n", -1, "menuprestrelka") // Display menu
  2309. }
  2310.  
  2311. public Pressedmenuprestrelka(id, key)
  2312. {
  2313. /* Menu:
  2314. * Vyber si druh prestrelky:
  2315. *
  2316. * 1. Klasicka - M4A1/AK47
  2317. * 2. Only Scout
  2318. * 3. Pistols
  2319. *
  2320. */
  2321.  
  2322. switch (key) {
  2323. case 0:
  2324. { // 1
  2325. g_BlockWeapons = 1
  2326. player_strip_weapons(id)
  2327. set_task(1.0, "Showklasickaprestrelka", 0)
  2328. set_task(5.0, "mod_utek")
  2329. eModSound = 1
  2330. eMod = 1
  2331. eModLimit = 1
  2332.  
  2333. emit_sound(0, CHAN_AUTO, "jailbreak_extra/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  2334.  
  2335. player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "MOD_KLASICKAPRESTRELKA")
  2336. }
  2337.  
  2338. case 1:
  2339. { // 2
  2340. g_BlockWeapons = 1
  2341. player_strip_weapons(id)
  2342. set_task(5.0, "mod_utek")
  2343. eModSound = 3
  2344. eMod = 1
  2345. eModLimit = 1
  2346. new players[32], count;
  2347. get_players(players, count, "a");
  2348.  
  2349. for (new i; i < count; i++)
  2350. {
  2351.  
  2352. give_item(players[i], "weapon_scout");
  2353. give_item(players[i], "weapon_scout");
  2354. give_item(players[i], "weapon_scout");
  2355. give_item(players[i], "weapon_scout");
  2356.  
  2357. if(cs_get_user_team(id) & CS_TEAM_CT)
  2358. {
  2359. set_user_health(id, 150)
  2360. give_item(id, "item_assaultsuit")
  2361. }
  2362.  
  2363. emit_sound(0, CHAN_AUTO, "jailbreak_extra/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  2364.  
  2365. player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "MOD_ONLYSCOUT")
  2366. }
  2367. }
  2368.  
  2369. case 2:
  2370. { // 3
  2371. player_strip_weapons(id)
  2372. g_BlockWeapons = 1
  2373. set_task(1.0, "Showpistolsprestrelka", 0)
  2374. set_task(5.0, "mod_utek")
  2375. eModSound = 4
  2376. eMod = 1
  2377. eModLimit = 1
  2378.  
  2379. emit_sound(0, CHAN_AUTO, "jailbreak_extra/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  2380.  
  2381. player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "MOD_PISTOLSPRESTRELKA")
  2382. }
  2383.  
  2384. case 9:
  2385. {
  2386. Showmody(id)
  2387. }
  2388. }
  2389. }
  2390.  
  2391. /*============================================================
  2392. 1. PRESTRELKA - M4A1/AK47
  2393. ============================================================*/
  2394.  
  2395. public Showklasickaprestrelka(id) {
  2396. show_menu(id, Keysklasickaprestrelka, "\yPrestrelka! \w| \rVyber si zbran:^n^n\y1. \wMaverick M4A1 Carbine (Colt)^n\y2. \wCV-47 (AK-47)^n", -1, "klasickaprestrelka") // Display menu
  2397. }
  2398.  
  2399. public Pressedklasickaprestrelka(id, key)
  2400. {
  2401. /* Menu:
  2402. * Prestrelka M4A1/AK47! | Vyber si zbran:
  2403. *
  2404. * 1. Maverick M4A1 Carbine (Colt)
  2405. * 2. CV-47 (AK-47)
  2406. *
  2407. */
  2408.  
  2409. switch (key) {
  2410. case 0:
  2411. { // 1
  2412. give_item(id, "weapon_m4a1")
  2413. cs_set_user_bpammo(id, CSW_M4A1, 250)
  2414.  
  2415. if(cs_get_user_team(id) & CS_TEAM_CT)
  2416. {
  2417. set_user_health(id, 150)
  2418. give_item(id, "item_assaultsuit")
  2419. }
  2420. }
  2421.  
  2422. case 1:
  2423. { // 2
  2424. give_item(id, "weapon_ak47")
  2425. cs_set_user_bpammo(id, CSW_AK47, 250)
  2426.  
  2427. if(cs_get_user_team(id) & CS_TEAM_CT)
  2428. {
  2429. set_user_health(id, 150)
  2430. give_item(id, "item_assaultsuit")
  2431. }
  2432. }
  2433.  
  2434. }
  2435. }
  2436.  
  2437. /*============================================================
  2438. 3. PRESTRELKA - PISTOLS
  2439. ============================================================*/
  2440.  
  2441. public Showpistolsprestrelka(id) {
  2442. show_menu(id, Keyspistolsprestrelka, "\yPrestrelka! \w| \rVyber si zbran:^n^n\y1. \wKM .45 Tactical (USP)^n\y2. \w9x19 mm Sidearm (Glock)^n\y3. \wES Five-Seven^n\y4. \wKnighthawk .50C (Desert Eagle)^n", -1, "pistolsprestrelka") // Display menu
  2443. }
  2444.  
  2445. public Pressedpistolsprestrelka(id, key)
  2446. {
  2447. /* Menu:
  2448. * Prestrelka Pistols! | Vyber si zbran:
  2449. *
  2450. * 1. KM .45 Tactical (USP)
  2451. * 2. 9x19 mm Sidearm (Glock)
  2452. * 3. ES Five-Seven
  2453. * 4. Knighthawk .50C (Desert Eagle)
  2454. *
  2455. */
  2456.  
  2457. switch (key) {
  2458. case 0:
  2459. { // 1
  2460. give_item(id, "weapon_usp")
  2461. cs_set_user_bpammo(id, CSW_USP, 250)
  2462.  
  2463. if(cs_get_user_team(id) & CS_TEAM_CT)
  2464. {
  2465. set_user_health(id, 150)
  2466. give_item(id, "item_assaultsuit")
  2467. }
  2468. }
  2469.  
  2470. case 1:
  2471. { // 2
  2472. give_item(id, "weapon_glock18")
  2473. cs_set_user_bpammo(id, CSW_GLOCK18, 250)
  2474.  
  2475. if(cs_get_user_team(id) & CS_TEAM_CT)
  2476. {
  2477. set_user_health(id, 150)
  2478. give_item(id, "item_assaultsuit")
  2479. }
  2480. }
  2481.  
  2482. case 2:
  2483. { // 3
  2484. give_item(id, "weapon_fiveseven")
  2485. cs_set_user_bpammo(id, CSW_FIVESEVEN, 250)
  2486.  
  2487. if(cs_get_user_team(id) & CS_TEAM_CT)
  2488. {
  2489. set_user_health(id, 150)
  2490. give_item(id, "item_assaultsuit")
  2491. }
  2492. }
  2493.  
  2494. case 3:
  2495. { // 4
  2496. give_item(id, "weapon_deagle")
  2497. cs_set_user_bpammo(id, CSW_DEAGLE, 250)
  2498.  
  2499. if(cs_get_user_team(id) & CS_TEAM_CT)
  2500. {
  2501. set_user_health(id, 150)
  2502. give_item(id, "item_assaultsuit")
  2503. }
  2504. }
  2505. }
  2506. }
  2507.  
  2508. /*============================================================
  2509. SCHOVKA
  2510. ============================================================*/
  2511.  
  2512. public cmd_hns_start()
  2513. {
  2514. g_BlockWeapons = 0
  2515. new Players[32]
  2516. new playerCount, i
  2517. get_players(Players, playerCount, "ac")
  2518. for (i=0; i<playerCount; i++)
  2519. {
  2520. if (cs_get_user_team(Players[i]) == CS_TEAM_T)
  2521. {
  2522. give_item(Players[i], "weapon_knife")
  2523. current_weapon(Players[i])
  2524. give_item(Players[i], "weapon_flashbang")
  2525. give_item(Players[i], "weapon_smokegrenade")
  2526. set_user_maxspeed(Players[i], 300.0)
  2527. set_user_health(Players[i], 100)
  2528. }
  2529. else
  2530. {
  2531. give_item(Players[i], "weapon_knife")
  2532. current_weapon(Players[i])
  2533. give_item(Players[i], "weapon_smokegrenade")
  2534. client_cmd(Players[i], "impulse 100")
  2535.  
  2536.  
  2537. new j = random_num(0, sizeof(_WeaponsFree) - 1)
  2538.  
  2539. give_item(Players[i], _WeaponsFree[j])
  2540. cs_set_user_bpammo(Players[i], _WeaponsFreeCSW[j], _WeaponsFreeAmmo[j])
  2541. /// give two random guns
  2542.  
  2543. new n = random_num(0, sizeof(_WeaponsFree) - 1)
  2544. while (n == j) {
  2545. n = random_num(0, sizeof(_WeaponsFree) - 1)
  2546. }
  2547.  
  2548. give_item(Players[i], _WeaponsFree[n])
  2549. cs_set_user_bpammo(Players[i], _WeaponsFreeCSW[n], _WeaponsFreeAmmo[n])
  2550. }
  2551. }
  2552. emit_sound(0, CHAN_AUTO, "jailbreak_extra/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  2553.  
  2554. new sz_msg[256];
  2555. formatex(sz_msg, charsmax(sz_msg), "^x03%L", LANG_SERVER, "MOD_SCHOVKA_START")
  2556. client_print(0, print_center , sz_msg)
  2557. }
  2558.  
  2559.  
  2560. /*============================================================
  2561. Stocks!
  2562. ============================================================*/
  2563. stock ChatColor(const id, const input[], any:...)
  2564. {
  2565. new count = 1, players[32]
  2566. static msg[191]
  2567. vformat(msg, 190, input, 3)
  2568.  
  2569. replace_all(msg, 190, "!g", "^4") // Green Color
  2570. replace_all(msg, 190, "!y", "^1") // Default Color
  2571. replace_all(msg, 190, "!team", "^3") // Team Color
  2572.  
  2573.  
  2574. if (id) players[0] = id; else get_players(players, count, "ch")
  2575. {
  2576. for (new i = 0; i < count; i++)
  2577. {
  2578. if (is_user_connected(players[i]))
  2579. {
  2580. message_begin(MSG_ONE_UNRELIABLE, g_iMsgSayText, _, players[i])
  2581. write_byte(players[i]);
  2582. write_string(msg);
  2583. message_end();
  2584. }
  2585. }
  2586. }
  2587. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement