hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.01. 11:56



Jelenlévő felhasználók

Jelenleg 270 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 270 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Párbaj
HozzászólásElküldve: 2014.08.16. 18:49 
Offline
Beavatott
Avatar

Csatlakozott: 2014.07.03. 12:19
Hozzászólások: 81
Megköszönt másnak: 2 alkalommal
Megköszönték neki: 7 alkalommal
Valaki feldobná a párbajmenüt ég pár fegyverrel? (JailBreak)
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <fun>
  7. #include <cstrike>
  8.  
  9. #define PLUGIN_NAME "JailBreak Extreme"
  10. #define PLUGIN_AUTHOR "JoRoPiTo"
  11. #define PLUGIN_VERSION "1.9"
  12. #define PLUGIN_CVAR "jbextreme"
  13.  
  14. #define TASK_STATUS 2487000
  15. #define TASK_FREEDAY 2487100
  16. #define TASK_ROUND 2487200
  17. #define TASK_HELP 2487300
  18. #define TASK_SAFETIME 2487400
  19. #define TASK_FREEEND 2487500
  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.  
  39. enum _hud { _hudsync, Float:_x, Float:_y, Float:_time }
  40. enum _lastrequest { _knife, _deagle, _freeday, _weapon }
  41. enum _duel { _name[16], _csw, _entname[32], _opt[32], _sel[32] }
  42.  
  43. new gp_PrecacheSpawn
  44. new gp_PrecacheKeyValue
  45.  
  46. new gp_CrowbarMax
  47. new gp_CrowbarMul
  48. new gp_TeamRatio
  49. new gp_CtMax
  50. new gp_BoxMax
  51. new gp_TalkMode
  52. new gp_VoiceBlock
  53. new gp_RetryTime
  54. new gp_RoundMax
  55. new gp_ButtonShoot
  56. new gp_SimonSteps
  57. new gp_SimonRandom
  58. new gp_GlowModels
  59. new gp_AutoLastresquest
  60. new gp_LastRequest
  61. new gp_Motd
  62. new gp_SpectRounds
  63. new gp_NosimonRounds
  64. new gp_AutoOpen
  65. new gp_TeamChange
  66.  
  67. new g_MaxClients
  68. new g_MsgStatusText
  69. new g_MsgStatusIcon
  70. new g_MsgVGUIMenu
  71. new g_MsgShowMenu
  72. new g_MsgClCorpse
  73. new g_MsgMOTD
  74.  
  75. new gc_TalkMode
  76. new gc_VoiceBlock
  77. new gc_SimonSteps
  78. new gc_ButtonShoot
  79. new Float:gc_CrowbarMul
  80.  
  81. // Precache
  82. new const _FistModels[][] = { "models/p_bknuckles.mdl", "models/v_bknuckles.mdl" }
  83. new const _CrowbarModels[][] = { "models/p_crowbar.mdl", "models/v_crowbar.mdl" }
  84. new const _FistSounds[][] = { "weapons/cbar_hitbod2.wav", "weapons/cbar_hitbod1.wav", "weapons/bullet_hit1.wav", "weapons/bullet_hit2.wav" }
  85. new const _RemoveEntities[][] = {
  86. "func_hostage_rescue", "info_hostage_rescue", "func_bomb_target", "info_bomb_target",
  87. "hostage_entity", "info_vip_start", "func_vip_safetyzone", "func_escapezone"
  88. }
  89.  
  90. new const _WeaponsFree[][] = { "weapon_scout", "weapon_deagle", "weapon_mac10", "weapon_elite", "weapon_ak47", "weapon_m4a1", "weapon_mp5navy" }
  91. new const _WeaponsFreeCSW[] = { CSW_SCOUT, CSW_DEAGLE, CSW_MAC10, CSW_ELITE, CSW_AK47, CSW_M4A1, CSW_MP5NAVY }
  92. new const _WeaponsFreeAmmo[] = { 90, 35, 100, 120, 90, 90, 120 }
  93.  
  94. new const _Duel[][_duel] =
  95. {
  96. { "Deagle", CSW_DEAGLE, "weapon_deagle", "JBE_MENU_LASTREQ_OPT4", "JBE_MENU_LASTREQ_SEL4" },
  97. { "Scout", CSW_SCOUT, "weapon_scout", "JBE_MENU_LASTREQ_OPT5", "JBE_MENU_LASTREQ_SEL5" },
  98. { "Grenades", CSW_HEGRENADE, "weapon_hegrenade", "JBE_MENU_LASTREQ_OPT6", "JBE_MENU_LASTREQ_SEL6" },
  99. { "Awp", CSW_AWP, "weapon_awp", "JBE_MENU_LASTREQ_OPT7", "JBE_MENU_LASTREQ_SEL7" },
  100. { "Ak47", CSW_AK47, "weapon_ak47", "JBE_MENU_LASTREQ_OPT8", "JBE_MENU_LASTREQ_SEL8" }
  101. }
  102.  
  103. // Reasons
  104. new const g_Reasons[][] = {
  105. "",
  106. "JBE_PRISONER_REASON_1",
  107. "JBE_PRISONER_REASON_2",
  108. "JBE_PRISONER_REASON_3",
  109. "JBE_PRISONER_REASON_4",
  110. "JBE_PRISONER_REASON_5",
  111. "JBE_PRISONER_REASON_6"
  112. }
  113.  
  114. // HudSync: 0=ttinfo / 1=info / 2=simon / 3=ctinfo / 4=player / 5=day / 6=center / 7=help / 8=timer
  115. new const g_HudSync[][_hud] =
  116. {
  117. {0, 0.6, 0.2, 2.0},
  118. {0, -1.0, 0.7, 5.0},
  119. {0, 0.1, 0.2, 2.0},
  120. {0, 0.1, 0.3, 2.0},
  121. {0, -1.0, 0.9, 3.0},
  122. {0, 0.6, 0.1, 3.0},
  123. {0, -1.0, 0.6, 3.0},
  124. {0, 0.8, 0.3, 20.0},
  125. {0, -1.0, 0.4, 3.0}
  126. }
  127.  
  128. // Colors: 0:Simon / 1:Freeday / 2:CT Duel / 3:TT Duel
  129. new const g_Colors[][3] = { {0, 255, 0}, {255, 140, 0}, {0, 0, 255}, {255, 0, 0} }
  130.  
  131.  
  132. new CsTeams:g_PlayerTeam[33]
  133. new Float:g_SimonRandom
  134. new Trie:g_CellManagers
  135. new g_HelpText[512]
  136. new g_JailDay
  137. new g_PlayerJoin
  138. new g_PlayerReason[33]
  139. new g_PlayerSpect[33]
  140. new g_PlayerSimon[33]
  141. new g_PlayerNomic
  142. new g_PlayerWanted
  143. new g_PlayerCrowbar
  144. new g_PlayerRevolt
  145. new g_PlayerHelp
  146. new g_PlayerFreeday
  147. new g_PlayerLast
  148. new g_FreedayAuto
  149. new g_FreedayNext
  150. new g_TeamCount[CsTeams]
  151. new g_TeamAlive[CsTeams]
  152. new g_BoxStarted
  153. new g_CrowbarCount
  154. new g_Simon
  155. new g_SimonAllowed
  156. new g_SimonTalking
  157. new g_SimonVoice
  158. new g_RoundStarted
  159. new g_LastDenied
  160. new g_Freeday
  161. new g_BlockWeapons
  162. new g_RoundEnd
  163. new g_Duel
  164. new g_DuelA
  165. new g_DuelB
  166. new g_SafeTime
  167. new g_Buttons[10]
  168.  
  169. public plugin_init()
  170. {
  171. unregister_forward(FM_Spawn, gp_PrecacheSpawn)
  172. unregister_forward(FM_KeyValue, gp_PrecacheKeyValue)
  173.  
  174. register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
  175. register_cvar(PLUGIN_CVAR, PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
  176.  
  177. register_dictionary("jbextreme.txt")
  178.  
  179. g_MsgStatusText = get_user_msgid("StatusText")
  180. g_MsgStatusIcon = get_user_msgid("StatusIcon")
  181. g_MsgVGUIMenu = get_user_msgid("VGUIMenu")
  182. g_MsgShowMenu = get_user_msgid("ShowMenu")
  183. g_MsgMOTD = get_user_msgid("MOTD")
  184. g_MsgClCorpse = get_user_msgid("ClCorpse")
  185.  
  186. register_message(g_MsgStatusText, "msg_statustext")
  187. register_message(g_MsgStatusIcon, "msg_statusicon")
  188. register_message(g_MsgVGUIMenu, "msg_vguimenu")
  189. register_message(g_MsgShowMenu, "msg_showmenu")
  190. register_message(g_MsgMOTD, "msg_motd")
  191. register_message(g_MsgClCorpse, "msg_clcorpse")
  192.  
  193. register_event("CurWeapon", "current_weapon", "be", "1=1", "2=29")
  194. register_event("StatusValue", "player_status", "be", "1=2", "2!0")
  195. register_event("StatusValue", "player_status", "be", "1=1", "2=0")
  196.  
  197. register_impulse(100, "impulse_100")
  198.  
  199. RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
  200. RegisterHam(Ham_TakeDamage, "player", "player_damage")
  201. RegisterHam(Ham_TraceAttack, "player", "player_attack")
  202. RegisterHam(Ham_TraceAttack, "func_button", "button_attack")
  203. RegisterHam(Ham_Killed, "player", "player_killed", 1)
  204. RegisterHam(Ham_Touch, "weapon_hegrenade", "player_touchweapon")
  205. RegisterHam(Ham_Touch, "weaponbox", "player_touchweapon")
  206. RegisterHam(Ham_Touch, "armoury_entity", "player_touchweapon")
  207.  
  208. register_forward(FM_SetClientKeyValue, "set_client_kv")
  209. register_forward(FM_EmitSound, "sound_emit")
  210. register_forward(FM_Voice_SetClientListening, "voice_listening")
  211. register_forward(FM_CmdStart, "player_cmdstart", 1)
  212.  
  213. register_logevent("round_end", 2, "1=Round_End")
  214. register_logevent("round_first", 2, "0=World triggered", "1&Restart_Round_")
  215. register_logevent("round_first", 2, "0=World triggered", "1=Game_Commencing")
  216. register_logevent("round_start", 2, "0=World triggered", "1=Round_Start")
  217.  
  218. register_menucmd(register_menuid(TEAM_MENU), 51, "team_select")
  219. register_menucmd(register_menuid(TEAM_MENU2), 51, "team_select")
  220.  
  221. register_clcmd("jointeam", "cmd_jointeam")
  222. register_clcmd("joinclass", "cmd_joinclass")
  223. register_clcmd("+simonvoice", "cmd_voiceon")
  224. register_clcmd("-simonvoice", "cmd_voiceoff")
  225.  
  226. register_clcmd("say /fd", "cmd_freeday")
  227. register_clcmd("say /freeday", "cmd_freeday")
  228. register_clcmd("say /day", "cmd_freeday")
  229. register_clcmd("say /lr", "cmd_lastrequest")
  230. register_clcmd("say /lastrequest", "cmd_lastrequest")
  231. register_clcmd("say /duel", "cmd_lastrequest")
  232. register_clcmd("say /simon", "cmd_simon")
  233. register_clcmd("say /open", "cmd_open")
  234. register_clcmd("say /nomic", "cmd_nomic")
  235. register_clcmd("say /box", "cmd_box")
  236. register_clcmd("say /help", "cmd_help")
  237.  
  238. register_clcmd("jbe_freeday", "adm_freeday", ADMIN_KICK)
  239. register_concmd("jbe_nomic", "adm_nomic", ADMIN_KICK)
  240. register_concmd("jbe_open", "adm_open", ADMIN_KICK)
  241. register_concmd("jbe_box", "adm_box", ADMIN_KICK)
  242.  
  243. gp_GlowModels = register_cvar("jbe_glowmodels", "0")
  244. gp_SimonSteps = register_cvar("jbe_simonsteps", "1")
  245. gp_CrowbarMul = register_cvar("jbe_crowbarmultiplier", "25.0")
  246. gp_CrowbarMax = register_cvar("jbe_maxcrowbar", "1")
  247. gp_TeamRatio = register_cvar("jbe_teamratio", "3")
  248. gp_TeamChange = register_cvar("jbe_teamchange", "0") // 0-disable team change for tt / 1-enable team change
  249. gp_CtMax = register_cvar("jbe_maxct", "6")
  250. gp_BoxMax = register_cvar("jbe_boxmax", "6")
  251. gp_RetryTime = register_cvar("jbe_retrytime", "10.0")
  252. gp_RoundMax = register_cvar("jbe_freedayround", "240.0")
  253. gp_AutoLastresquest = register_cvar("jbe_autolastrequest", "1")
  254. gp_LastRequest = register_cvar("jbe_lastrequest", "1")
  255. gp_Motd = register_cvar("jbe_motd", "1")
  256. gp_SpectRounds = register_cvar("jbe_spectrounds", "3")
  257. gp_NosimonRounds = register_cvar("jbe_nosimonrounds", "7")
  258. gp_SimonRandom = register_cvar("jbe_randomsimon", "0")
  259. gp_AutoOpen = register_cvar("jbe_autoopen", "1")
  260. gp_TalkMode = register_cvar("jbe_talkmode", "2") // 0-alltak / 1-tt talk / 2-tt no talk
  261. gp_VoiceBlock = register_cvar("jbe_blockvoice", "2") // 0-dont block / 1-block voicerecord / 2-block voicerecord except simon
  262. gp_ButtonShoot = register_cvar("jbe_buttonshoot", "1") // 0-standard / 1-func_button shoots!
  263.  
  264. g_MaxClients = get_global_int(GL_maxClients)
  265.  
  266. for(new i = 0; i < sizeof(g_HudSync); i++)
  267. g_HudSync[i][_hudsync] = CreateHudSyncObj()
  268.  
  269. formatex(g_HelpText, charsmax(g_HelpText), "%L^n^n%L^n^n%L^n^n%L",
  270. LANG_SERVER, "JBE_HELP_TITLE",
  271. LANG_SERVER, "JBE_HELP_BINDS",
  272. LANG_SERVER, "JBE_HELP_GUARD_CMDS",
  273. LANG_SERVER, "JBE_HELP_PRISONER_CMDS")
  274.  
  275. setup_buttons()
  276. }
  277.  
  278. public plugin_precache()
  279. {
  280. static i
  281. precache_model("models/player/jbemodel/jbemodel.mdl")
  282.  
  283. for(i = 0; i < sizeof(_FistModels); i++)
  284. precache_model(_FistModels[i])
  285.  
  286. for(i = 0; i < sizeof(_CrowbarModels); i++)
  287. precache_model(_CrowbarModels[i])
  288.  
  289. for(i = 0; i < sizeof(_FistSounds); i++)
  290. precache_sound(_FistSounds[i])
  291.  
  292. precache_sound("jbextreme/nm_goodbadugly.wav")
  293. precache_sound("jbextreme/brass_bell_C.wav")
  294.  
  295. g_CellManagers = TrieCreate()
  296. gp_PrecacheSpawn = register_forward(FM_Spawn, "precache_spawn", 1)
  297. gp_PrecacheKeyValue = register_forward(FM_KeyValue, "precache_keyvalue", 1)
  298. }
  299.  
  300. public precache_spawn(ent)
  301. {
  302. if(is_valid_ent(ent))
  303. {
  304. static szClass[33]
  305. entity_get_string(ent, EV_SZ_classname, szClass, sizeof(szClass))
  306. for(new i = 0; i < sizeof(_RemoveEntities); i++)
  307. if(equal(szClass, _RemoveEntities[i]))
  308. remove_entity(ent)
  309. }
  310. }
  311.  
  312. public precache_keyvalue(ent, kvd_handle)
  313. {
  314. static info[32]
  315. if(!is_valid_ent(ent))
  316. return FMRES_IGNORED
  317.  
  318. get_kvd(kvd_handle, KV_ClassName, info, charsmax(info))
  319. if(!equal(info, "multi_manager"))
  320. return FMRES_IGNORED
  321.  
  322. get_kvd(kvd_handle, KV_KeyName, info, charsmax(info))
  323. TrieSetCell(g_CellManagers, info, ent)
  324. return FMRES_IGNORED
  325. }
  326.  
  327. public client_putinserver(id)
  328. {
  329. clear_bit(g_PlayerJoin, id)
  330. clear_bit(g_PlayerHelp, id)
  331. clear_bit(g_PlayerCrowbar, id)
  332. clear_bit(g_PlayerNomic, id)
  333. clear_bit(g_PlayerWanted, id)
  334. clear_bit(g_SimonTalking, id)
  335. clear_bit(g_SimonVoice, id)
  336. g_PlayerSpect[id] = 0
  337. g_PlayerSimon[id] = 0
  338. }
  339.  
  340. public client_disconnect(id)
  341. {
  342. if(g_Simon == id)
  343. {
  344. g_Simon = 0
  345. ClearSyncHud(0, g_HudSync[2][_hudsync])
  346. player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_HASGONE")
  347. }
  348. else if(g_PlayerLast == id || (g_Duel && (id == g_DuelA || id == g_DuelB)))
  349. {
  350. g_Duel = 0
  351. g_DuelA = 0
  352. g_DuelB = 0
  353. g_LastDenied = 0
  354. g_BlockWeapons = 0
  355. g_PlayerLast = 0
  356. }
  357. team_count()
  358. }
  359.  
  360. public client_PostThink(id)
  361. {
  362. if(id != g_Simon || !gc_SimonSteps || !is_user_alive(id) ||
  363. !(entity_get_int(id, EV_INT_flags) & FL_ONGROUND) || entity_get_int(id, EV_ENT_groundentity))
  364. return PLUGIN_CONTINUE
  365.  
  366. static Float:origin[3]
  367. static Float:last[3]
  368.  
  369. entity_get_vector(id, EV_VEC_origin, origin)
  370. if(get_distance_f(origin, last) < 32.0)
  371. {
  372. return PLUGIN_CONTINUE
  373. }
  374.  
  375. vec_copy(origin, last)
  376. if(entity_get_int(id, EV_INT_bInDuck))
  377. origin[2] -= 18.0
  378. else
  379. origin[2] -= 36.0
  380.  
  381.  
  382. message_begin(MSG_BROADCAST, SVC_TEMPENTITY, {0,0,0}, 0)
  383. write_byte(TE_WORLDDECAL)
  384. write_coord(floatround(origin[0]))
  385. write_coord(floatround(origin[1]))
  386. write_coord(floatround(origin[2]))
  387. write_byte(105)
  388. message_end()
  389.  
  390. return PLUGIN_CONTINUE
  391. }
  392.  
  393.  
  394. public msg_statustext(msgid, dest, id)
  395. {
  396. return PLUGIN_HANDLED
  397. }
  398.  
  399. public msg_statusicon(msgid, dest, id)
  400. {
  401. static icon[5]
  402. get_msg_arg_string(2, icon, charsmax(icon))
  403. if(icon[0] == 'b' && icon[2] == 'y' && icon[3] == 'z')
  404. {
  405. set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0))
  406. return PLUGIN_HANDLED
  407. }
  408.  
  409. return PLUGIN_CONTINUE
  410. }
  411.  
  412. public msg_vguimenu(msgid, dest, id)
  413. {
  414. static msgarg1
  415. static CsTeams:team
  416.  
  417. msgarg1 = get_msg_arg_int(1)
  418. if(msgarg1 == 2)
  419. {
  420. team = cs_get_user_team(id)
  421. if((team == CS_TEAM_T) && !is_user_admin(id) && (is_user_alive(id) || !get_pcvar_num(gp_TeamChange)))
  422. {
  423. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTCHANGE")
  424. return PLUGIN_HANDLED
  425. }
  426. show_menu(id, 51, TEAM_MENU, -1)
  427. return PLUGIN_HANDLED
  428. }
  429.  
  430. return PLUGIN_CONTINUE
  431. }
  432.  
  433. public msg_showmenu(msgid, dest, id)
  434. {
  435. static msgarg1, roundloop
  436. static CsTeams:team
  437. msgarg1 = get_msg_arg_int(1)
  438.  
  439. if(msgarg1 != 531 && msgarg1 != 563)
  440. return PLUGIN_CONTINUE
  441.  
  442. roundloop = floatround(get_pcvar_float(gp_RetryTime) / 2)
  443. team = cs_get_user_team(id)
  444.  
  445. if(team == CS_TEAM_T)
  446. {
  447. if(!is_user_admin(id) && (is_user_alive(id) || (g_RoundStarted >= roundloop) || !get_pcvar_num(gp_TeamChange)))
  448. {
  449. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTCHANGE")
  450. return PLUGIN_HANDLED
  451. }
  452. else
  453. {
  454. show_menu(id, 51, TEAM_MENU, -1)
  455. return PLUGIN_HANDLED
  456. }
  457. }
  458. else
  459. {
  460. show_menu(id, 51, TEAM_MENU, -1)
  461. return PLUGIN_HANDLED
  462. }
  463.  
  464. return PLUGIN_CONTINUE
  465. }
  466.  
  467. public msg_motd(msgid, dest, id)
  468. {
  469. if(get_pcvar_num(gp_Motd))
  470. return PLUGIN_HANDLED
  471.  
  472. return PLUGIN_CONTINUE
  473. }
  474.  
  475. public msg_clcorpse(msgid, dest, id)
  476. {
  477. return PLUGIN_HANDLED
  478. }
  479.  
  480. public current_weapon(id)
  481. {
  482. if(!is_user_alive(id))
  483. return PLUGIN_CONTINUE
  484.  
  485. if(get_bit(g_PlayerCrowbar, id))
  486. {
  487. set_pev(id, pev_viewmodel2, _CrowbarModels[1])
  488. set_pev(id, pev_weaponmodel2, _CrowbarModels[0])
  489. }
  490. else
  491. {
  492. set_pev(id, pev_viewmodel2, _FistModels[1])
  493. set_pev(id, pev_weaponmodel2, _FistModels[0])
  494. }
  495. return PLUGIN_CONTINUE
  496. }
  497.  
  498. public player_status(id)
  499. {
  500. static type, player, CsTeams:team, name[32], health
  501. type = read_data(1)
  502. player = read_data(2)
  503. switch(type)
  504. {
  505. case(1):
  506. {
  507. ClearSyncHud(id, g_HudSync[1][_hudsync])
  508. }
  509. case(2):
  510. {
  511. team = cs_get_user_team(player)
  512. if((team != CS_TEAM_T) && (team != CS_TEAM_CT))
  513. return PLUGIN_HANDLED
  514.  
  515. health = get_user_health(player)
  516. get_user_name(player, name, charsmax(name))
  517. player_hudmessage(id, 4, 2.0, {0, 255, 0}, "%L", LANG_SERVER,
  518. (team == CS_TEAM_T) ? "JBE_PRISONER_STATUS" : "JBE_GUARD_STATUS", name, health)
  519. }
  520. }
  521.  
  522. return PLUGIN_HANDLED
  523. }
  524.  
  525. public impulse_100(id)
  526. {
  527. if(cs_get_user_team(id) == CS_TEAM_T)
  528. return PLUGIN_HANDLED
  529.  
  530. return PLUGIN_CONTINUE
  531. }
  532.  
  533. public player_spawn(id)
  534. {
  535. static CsTeams:team
  536.  
  537. if(!is_user_connected(id))
  538. return HAM_IGNORED
  539.  
  540. set_pdata_float(id, m_fNextHudTextArgsGameTime, get_gametime() + 999999.0)
  541. player_strip_weapons(id)
  542. if(g_RoundEnd)
  543. {
  544. g_RoundEnd = 0
  545. g_JailDay++
  546. }
  547.  
  548. set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  549.  
  550. clear_bit(g_PlayerCrowbar, id)
  551. clear_bit(g_PlayerWanted, id)
  552. team = cs_get_user_team(id)
  553.  
  554. switch(team)
  555. {
  556. case(CS_TEAM_T):
  557. {
  558. g_PlayerLast = 0
  559. if(!g_PlayerReason[id])
  560. g_PlayerReason[id] = random_num(1, 6)
  561.  
  562. player_hudmessage(id, 0, 5.0, {255, 0, 255}, "%L %L", LANG_SERVER, "JBE_PRISONER_REASON",
  563. LANG_SERVER, g_Reasons[g_PlayerReason[id]])
  564.  
  565. set_user_info(id, "model", "jbemodel")
  566. entity_set_int(id, EV_INT_body, 2)
  567. if(is_freeday() || get_bit(g_FreedayAuto, id))
  568. {
  569. freeday_set(0, id)
  570. clear_bit(g_FreedayAuto, id)
  571. }
  572. else
  573. {
  574. entity_set_int(id, EV_INT_skin, random_num(0, 2))
  575. }
  576.  
  577. if(g_CrowbarCount < get_pcvar_num(gp_CrowbarMax))
  578. {
  579. if(random_num(0, g_MaxClients) > (g_MaxClients / 2))
  580. {
  581. g_CrowbarCount++
  582. set_bit(g_PlayerCrowbar, id)
  583. }
  584. }
  585. cs_set_user_armor(id, 0, CS_ARMOR_NONE)
  586. }
  587. case(CS_TEAM_CT):
  588. {
  589. g_PlayerSimon[id]++
  590. set_user_info(id, "model", "jbemodel")
  591. entity_set_int(id, EV_INT_body, 3)
  592. cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
  593. }
  594. }
  595. first_join(id)
  596. return HAM_IGNORED
  597. }
  598.  
  599. public player_damage(victim, ent, attacker, Float:damage, bits)
  600. {
  601. if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
  602. return HAM_IGNORED
  603.  
  604. switch(g_Duel)
  605. {
  606. case(0):
  607. {
  608. if(attacker == ent && get_user_weapon(attacker) == CSW_KNIFE && get_bit(g_PlayerCrowbar, attacker) && cs_get_user_team(victim) != CS_TEAM_T)
  609. {
  610. SetHamParamFloat(4, damage * gc_CrowbarMul)
  611. return HAM_OVERRIDE
  612. }
  613. }
  614. case(2):
  615. {
  616. if(attacker != g_PlayerLast)
  617. return HAM_SUPERCEDE
  618. }
  619. default:
  620. {
  621. if((victim == g_DuelA && attacker == g_DuelB) || (victim == g_DuelB && attacker == g_DuelA))
  622. return HAM_IGNORED
  623.  
  624. return HAM_SUPERCEDE
  625. }
  626. }
  627.  
  628. return HAM_IGNORED
  629. }
  630.  
  631. public player_attack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
  632. {
  633. static CsTeams:vteam, CsTeams:ateam
  634. if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
  635. return HAM_IGNORED
  636.  
  637. vteam = cs_get_user_team(victim)
  638. ateam = cs_get_user_team(attacker)
  639.  
  640. if(ateam == CS_TEAM_CT && vteam == CS_TEAM_CT)
  641. return HAM_SUPERCEDE
  642.  
  643. switch(g_Duel)
  644. {
  645. case(0):
  646. {
  647. if(ateam == CS_TEAM_CT && vteam == CS_TEAM_T)
  648. {
  649. if(get_bit(g_PlayerRevolt, victim))
  650. {
  651. clear_bit(g_PlayerRevolt, victim)
  652. hud_status(0)
  653. }
  654. return HAM_IGNORED
  655. }
  656. }
  657. case(2):
  658. {
  659. if(attacker != g_PlayerLast)
  660. return HAM_SUPERCEDE
  661. }
  662. default:
  663. {
  664. if((victim == g_DuelA && attacker == g_DuelB) || (victim == g_DuelB && attacker == g_DuelA))
  665. return HAM_IGNORED
  666.  
  667. return HAM_SUPERCEDE
  668. }
  669. }
  670.  
  671. if(ateam == CS_TEAM_T && vteam == CS_TEAM_T && !g_BoxStarted)
  672. return HAM_SUPERCEDE
  673.  
  674. if(ateam == CS_TEAM_T && vteam == CS_TEAM_CT)
  675. {
  676. if(!g_PlayerRevolt)
  677. revolt_start()
  678.  
  679. set_bit(g_PlayerRevolt, attacker)
  680. }
  681.  
  682. return HAM_IGNORED
  683. }
  684.  
  685. public button_attack(button, id, Float:damage, Float:direction[3], tracehandle, damagebits)
  686. {
  687. if(is_valid_ent(button) && gc_ButtonShoot)
  688. {
  689. ExecuteHamB(Ham_Use, button, id, 0, 2, 1.0)
  690. entity_set_float(button, EV_FL_frame, 0.0)
  691. }
  692.  
  693. return HAM_IGNORED
  694. }
  695.  
  696. public player_killed(victim, attacker, shouldgib)
  697. {
  698. static CsTeams:vteam, CsTeams:kteam
  699. if(!(0 < attacker <= g_MaxClients) || !is_user_connected(attacker))
  700. kteam = CS_TEAM_UNASSIGNED
  701. else
  702. kteam = cs_get_user_team(attacker)
  703.  
  704. vteam = cs_get_user_team(victim)
  705. if(g_Simon == victim)
  706. {
  707. g_Simon = 0
  708. ClearSyncHud(0, g_HudSync[2][_hudsync])
  709. player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_KILLED")
  710. }
  711.  
  712. switch(g_Duel)
  713. {
  714. case(0):
  715. {
  716. switch(vteam)
  717. {
  718. case(CS_TEAM_CT):
  719. {
  720. if(kteam == CS_TEAM_T && !get_bit(g_PlayerWanted, attacker))
  721. {
  722. set_bit(g_PlayerWanted, attacker)
  723. entity_set_int(attacker, EV_INT_skin, 4)
  724. }
  725. }
  726. case(CS_TEAM_T):
  727. {
  728. clear_bit(g_PlayerRevolt, victim)
  729. clear_bit(g_PlayerWanted, victim)
  730. }
  731. }
  732. }
  733. default:
  734. {
  735. if(g_Duel != 2 && (attacker == g_DuelA || attacker == g_DuelB))
  736. {
  737. set_user_rendering(victim, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  738. set_user_rendering(attacker, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  739. g_Duel = 0
  740. g_LastDenied = 0
  741. g_BlockWeapons = 0
  742. g_PlayerLast = 0
  743. team_count()
  744. }
  745. }
  746. }
  747. hud_status(0)
  748. return HAM_IGNORED
  749. }
  750.  
  751. public player_touchweapon(id, ent)
  752. {
  753. static model[32], class[32]
  754. if(g_BlockWeapons)
  755. return HAM_SUPERCEDE
  756.  
  757. if(is_valid_ent(id) && g_Duel != 6 && is_user_alive(ent) && cs_get_user_team(ent) == CS_TEAM_CT)
  758. {
  759. entity_get_string(id, EV_SZ_model, model, charsmax(model))
  760. if(model[7] == 'w' && model[9] == 'h' && model[10] == 'e' && model[11] == 'g')
  761. {
  762. entity_get_string(id, EV_SZ_classname, class, charsmax(class))
  763. if(equal(class, "weapon_hegrenade"))
  764. remove_entity(id)
  765.  
  766. return HAM_SUPERCEDE
  767. }
  768.  
  769. }
  770.  
  771. return HAM_IGNORED
  772. }
  773.  
  774. public set_client_kv(id, const info[], const key[])
  775. {
  776. if(equal(key, "model"))
  777. return FMRES_SUPERCEDE
  778.  
  779. return FMRES_IGNORED
  780. }
  781.  
  782. public sound_emit(id, channel, sample[])
  783. {
  784. if(is_user_alive(id) && equal(sample, "weapons/knife_", 14))
  785. {
  786. switch(sample[17])
  787. {
  788. case('b'):
  789. {
  790. emit_sound(id, CHAN_WEAPON, "weapons/cbar_hitbod2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  791. }
  792. case('w'):
  793. {
  794. emit_sound(id, CHAN_WEAPON, "weapons/cbar_hitbod1.wav", 1.0, ATTN_NORM, 0, PITCH_LOW)
  795. }
  796. case('1', '2'):
  797. {
  798. emit_sound(id, CHAN_WEAPON, "weapons/bullet_hit2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
  799. }
  800. }
  801. return FMRES_SUPERCEDE
  802. }
  803. return FMRES_IGNORED
  804. }
  805.  
  806. public voice_listening(receiver, sender, bool:listen)
  807. {
  808. if((receiver == sender))
  809. return FMRES_IGNORED
  810.  
  811. if(is_user_admin(sender))
  812. {
  813. engfunc(EngFunc_SetClientListening, receiver, sender, true)
  814. return FMRES_SUPERCEDE
  815. }
  816.  
  817. switch(gc_VoiceBlock)
  818. {
  819. case(2):
  820. {
  821. if((sender != g_Simon) && (!get_bit(g_SimonVoice, sender) && gc_VoiceBlock))
  822. {
  823. engfunc(EngFunc_SetClientListening, receiver, sender, false)
  824. return FMRES_SUPERCEDE
  825. }
  826. }
  827. case(1):
  828. {
  829. if(!get_bit(g_SimonVoice, sender) && gc_VoiceBlock)
  830. {
  831. engfunc(EngFunc_SetClientListening, receiver, sender, false)
  832. return FMRES_SUPERCEDE
  833. }
  834. }
  835. }
  836. if(!is_user_alive(sender))
  837. {
  838. engfunc(EngFunc_SetClientListening, receiver, sender, false)
  839. return FMRES_SUPERCEDE
  840. }
  841.  
  842. if(sender == g_Simon)
  843. {
  844. engfunc(EngFunc_SetClientListening, receiver, sender, true)
  845. return FMRES_SUPERCEDE
  846. }
  847.  
  848. listen = true
  849.  
  850. if(g_SimonTalking && (sender != g_Simon))
  851. {
  852. listen = false
  853. }
  854. else
  855. {
  856. static CsTeams:steam
  857. steam = cs_get_user_team(sender)
  858. switch(gc_TalkMode)
  859. {
  860. case(2):
  861. {
  862. listen = (steam == CS_TEAM_CT)
  863. }
  864. case(1):
  865. {
  866. listen = (steam == CS_TEAM_CT || steam == CS_TEAM_T)
  867. }
  868. }
  869. }
  870.  
  871. engfunc(EngFunc_SetClientListening, receiver, sender, listen)
  872. return FMRES_SUPERCEDE
  873. }
  874.  
  875. public player_cmdstart(id, uc, random)
  876. {
  877. if(g_Duel > 3)
  878. {
  879. cs_set_user_bpammo(id, _Duel[g_Duel - 4][_csw], 1)
  880. }
  881. }
  882.  
  883. public round_first()
  884. {
  885. g_JailDay = 0
  886. for(new i = 1; i <= g_MaxClients; i++)
  887. g_PlayerSimon[i] = 0
  888.  
  889. set_cvar_num("sv_alltalk", 1)
  890. set_cvar_num("mp_roundtime", 2)
  891. set_cvar_num("mp_limitteams", 0)
  892. set_cvar_num("mp_autoteambalance", 0)
  893. set_cvar_num("mp_tkpunish", 0)
  894. set_cvar_num("mp_friendlyfire", 1)
  895. round_end()
  896. }
  897.  
  898. public round_end()
  899. {
  900. static CsTeams:team
  901. static maxnosimon, spectrounds
  902. g_SafeTime = 0
  903. g_PlayerRevolt = 0
  904. g_PlayerFreeday = 0
  905. g_PlayerLast = 0
  906. g_BoxStarted = 0
  907. g_CrowbarCount = 0
  908. g_Simon = 0
  909. g_SimonAllowed = 0
  910. g_RoundStarted = 0
  911. g_LastDenied = 0
  912. g_BlockWeapons = 0
  913. g_TeamCount[CS_TEAM_T] = 0
  914. g_TeamCount[CS_TEAM_CT] = 0
  915. g_Freeday = 0
  916. g_FreedayNext = (random_num(0,99) >= 95)
  917. g_RoundEnd = 1
  918. g_Duel = 0
  919.  
  920. remove_task(TASK_STATUS)
  921. remove_task(TASK_FREEDAY)
  922. remove_task(TASK_FREEEND)
  923. remove_task(TASK_ROUND)
  924. maxnosimon = get_pcvar_num(gp_NosimonRounds)
  925. spectrounds = get_pcvar_num(gp_SpectRounds)
  926. for(new i = 1; i <= g_MaxClients; i++)
  927. {
  928. if(!is_user_connected(i))
  929. continue
  930.  
  931. menu_cancel(i)
  932. team = cs_get_user_team(i)
  933. player_strip_weapons(i)
  934. switch(team)
  935. {
  936. case(CS_TEAM_CT):
  937. {
  938. if(g_PlayerSimon[i] > maxnosimon)
  939. {
  940. cmd_nomic(i)
  941. }
  942. }
  943. case(CS_TEAM_SPECTATOR,CS_TEAM_UNASSIGNED):
  944. {
  945. g_PlayerSpect[i]++
  946. if(g_PlayerSpect[i] > spectrounds)
  947. {
  948. client_cmd(i, "disconnect")
  949. server_print("JBE Disconnected spectator client #%i", i)
  950. }
  951. else
  952. {
  953. show_menu(i, 51, TEAM_MENU, -1)
  954. }
  955. }
  956. }
  957. }
  958. for(new i = 0; i < sizeof(g_HudSync); i++)
  959. ClearSyncHud(0, g_HudSync[i][_hudsync])
  960.  
  961. }
  962.  
  963. public round_start()
  964. {
  965. if(g_RoundEnd)
  966. return
  967.  
  968. team_count()
  969. if(!g_Simon && is_freeday())
  970. {
  971. g_Freeday = 1
  972. emit_sound(0, CHAN_AUTO, "jbextreme/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  973. check_freeday(TASK_FREEDAY)
  974. }
  975. else
  976. {
  977. set_task(60.0, "check_freeday", TASK_FREEDAY)
  978. }
  979. set_task(HUD_DELAY, "hud_status", TASK_STATUS, _, _, "b")
  980. set_task(get_pcvar_float(gp_RetryTime) + 1.0, "safe_time", TASK_SAFETIME)
  981. set_task(120.0, "freeday_end", TASK_FREEDAY)
  982. g_SimonRandom = get_pcvar_num(gp_SimonRandom) ? random_float(15.0, 45.0) : 0.0
  983. g_SimonAllowed = 1
  984. g_FreedayNext = 0
  985. }
  986.  
  987. public cmd_jointeam(id)
  988. {
  989. return PLUGIN_HANDLED
  990. }
  991.  
  992. public cmd_joinclass(id)
  993. {
  994. return PLUGIN_HANDLED
  995. }
  996.  
  997. public cmd_voiceon(id)
  998. {
  999. client_cmd(id, "+voicerecord")
  1000. set_bit(g_SimonVoice, id)
  1001. if(g_Simon == id || is_user_admin(id))
  1002. set_bit(g_SimonTalking, id)
  1003.  
  1004. return PLUGIN_HANDLED
  1005. }
  1006.  
  1007. public cmd_voiceoff(id)
  1008. {
  1009. client_cmd(id, "-voicerecord")
  1010. clear_bit(g_SimonVoice, id)
  1011. if(g_Simon == id || is_user_admin(id))
  1012. clear_bit(g_SimonTalking, id)
  1013.  
  1014. return PLUGIN_HANDLED
  1015. }
  1016.  
  1017. public cmd_simon(id)
  1018. {
  1019. static CsTeams:team, name[32]
  1020. if(!is_user_connected(id))
  1021. return PLUGIN_HANDLED
  1022.  
  1023. team = cs_get_user_team(id)
  1024. if(g_SimonAllowed && !g_Freeday && is_user_alive(id) && team == CS_TEAM_CT && !g_Simon)
  1025. {
  1026. g_Simon = id
  1027. get_user_name(id, name, charsmax(name))
  1028. entity_set_int(id, EV_INT_body, 1)
  1029. g_PlayerSimon[id]--
  1030. if(get_pcvar_num(gp_GlowModels))
  1031. player_glow(id, g_Colors[0])
  1032.  
  1033. hud_status(0)
  1034. }
  1035. return PLUGIN_HANDLED
  1036. }
  1037.  
  1038. public cmd_open(id)
  1039. {
  1040. if(id == g_Simon)
  1041. jail_open()
  1042.  
  1043. return PLUGIN_HANDLED
  1044. }
  1045.  
  1046. public cmd_nomic(id)
  1047. {
  1048. static CsTeams:team
  1049. team = cs_get_user_team(id)
  1050. if(team == CS_TEAM_CT)
  1051. {
  1052. server_print("JBE Transfered guard to prisoners team client #%i", id)
  1053. if(g_Simon == id)
  1054. {
  1055. g_Simon = 0
  1056. player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_TRANSFERED")
  1057. }
  1058. if(!is_user_admin(id))
  1059. set_bit(g_PlayerNomic, id)
  1060.  
  1061. user_silentkill(id)
  1062. cs_set_user_team(id, CS_TEAM_T)
  1063. }
  1064. return PLUGIN_HANDLED
  1065. }
  1066.  
  1067. public cmd_box(id)
  1068. {
  1069. static i
  1070. if((id < 0) || (is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT))
  1071. {
  1072. if(g_TeamAlive[CS_TEAM_T] <= get_pcvar_num(gp_BoxMax) && g_TeamAlive[CS_TEAM_T] > 1)
  1073. {
  1074. for(i = 1; i <= g_MaxClients; i++)
  1075. if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T)
  1076. set_user_health(i, 100)
  1077.  
  1078. set_cvar_num("mp_tkpunish", 0)
  1079. set_cvar_num("mp_friendlyfire", 1)
  1080. g_BoxStarted = 1
  1081. player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "JBE_GUARD_BOX")
  1082. }
  1083. else
  1084. {
  1085. player_hudmessage(id, 1, 3.0, _, "%L", LANG_SERVER, "JBE_GUARD_CANTBOX")
  1086. }
  1087. }
  1088. return PLUGIN_HANDLED
  1089. }
  1090.  
  1091. public cmd_help(id)
  1092. {
  1093. if(id > g_MaxClients)
  1094. id -= TASK_HELP
  1095.  
  1096. remove_task(TASK_HELP + id)
  1097. switch(get_bit(g_PlayerHelp, id))
  1098. {
  1099. case(0):
  1100. {
  1101. set_bit(g_PlayerHelp, id)
  1102. player_hudmessage(id, 7, 15.0, {230, 100, 10}, "%s", g_HelpText)
  1103. set_task(15.0, "cmd_help", TASK_HELP + id)
  1104. }
  1105. default:
  1106. {
  1107. clear_bit(g_PlayerHelp, id)
  1108. ClearSyncHud(id, g_HudSync[7][_hudsync])
  1109. }
  1110. }
  1111. }
  1112.  
  1113. public cmd_freeday(id)
  1114. {
  1115. static menu, menuname[32], option[64]
  1116. if(!is_freeday() && ((is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) || is_user_admin(id)))
  1117. {
  1118. formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "JBE_MENU_FREEDAY")
  1119. menu = menu_create(menuname, "freeday_choice")
  1120.  
  1121. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_FREEDAY_PLAYER")
  1122. menu_additem(menu, option, "1", 0)
  1123.  
  1124. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_FREEDAY_ALL")
  1125. menu_additem(menu, option, "2", 0)
  1126.  
  1127. menu_display(id, menu)
  1128. }
  1129. return PLUGIN_HANDLED
  1130. }
  1131.  
  1132. public cmd_freeday_player(id)
  1133. {
  1134. if((is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) || is_user_admin(id))
  1135. menu_players(id, CS_TEAM_T, id, 1, "freeday_select", "%L", LANG_SERVER, "JBE_MENU_FREEDAY")
  1136.  
  1137. return PLUGIN_CONTINUE
  1138. }
  1139.  
  1140. public cmd_lastrequest(id)
  1141. {
  1142. static i, num[5], menu, menuname[32], option[64]
  1143. if(!get_pcvar_num(gp_LastRequest) || g_Freeday || g_LastDenied || id != g_PlayerLast || g_RoundEnd || get_bit(g_PlayerWanted, id) || get_bit(g_PlayerFreeday, id) || !is_user_alive(id))
  1144. return PLUGIN_CONTINUE
  1145.  
  1146. formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "JBE_MENU_LASTREQ")
  1147. menu = menu_create(menuname, "lastrequest_select")
  1148.  
  1149. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_OPT1")
  1150. menu_additem(menu, option, "1", 0)
  1151.  
  1152. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_OPT2")
  1153. menu_additem(menu, option, "2", 0)
  1154.  
  1155. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_OPT3")
  1156. menu_additem(menu, option, "3", 0)
  1157.  
  1158. for(i = 0; i < sizeof(_Duel); i++)
  1159. {
  1160. num_to_str(i + 4, num, charsmax(num))
  1161. formatex(option, charsmax(option), "%L", LANG_SERVER, _Duel[i][_opt])
  1162. menu_additem(menu, option, num, 0)
  1163. }
  1164.  
  1165. menu_display(id, menu)
  1166. return PLUGIN_CONTINUE
  1167. }
  1168.  
  1169. public adm_freeday(id)
  1170. {
  1171. static player, user[32]
  1172. if(!is_user_admin(id))
  1173. return PLUGIN_CONTINUE
  1174.  
  1175. read_argv(1, user, charsmax(user))
  1176. player = cmd_target(id, user, 2)
  1177. if(is_user_connected(player) && cs_get_user_team(player) == CS_TEAM_T)
  1178. {
  1179. freeday_set(id, player)
  1180. }
  1181. return PLUGIN_HANDLED
  1182. }
  1183.  
  1184. public adm_nomic(id)
  1185. {
  1186. static player, user[32]
  1187. if(id == 0 || is_user_admin(id))
  1188. {
  1189. read_argv(1, user, charsmax(user))
  1190. player = cmd_target(id, user, 3)
  1191. if(is_user_connected(player))
  1192. {
  1193. cmd_nomic(player)
  1194. }
  1195. }
  1196. return PLUGIN_HANDLED
  1197. }
  1198.  
  1199. public adm_open(id)
  1200. {
  1201. if(!is_user_admin(id))
  1202. return PLUGIN_CONTINUE
  1203.  
  1204. jail_open()
  1205. return PLUGIN_HANDLED
  1206. }
  1207.  
  1208. public adm_box(id)
  1209. {
  1210. if(!is_user_admin(id))
  1211. return PLUGIN_CONTINUE
  1212.  
  1213. cmd_box(-1)
  1214. return PLUGIN_HANDLED
  1215. }
  1216.  
  1217. public team_select(id, key)
  1218. {
  1219. static CsTeams:team, roundloop, admin
  1220.  
  1221. roundloop = get_pcvar_num(gp_RetryTime) / 2
  1222. team = cs_get_user_team(id)
  1223. admin = is_user_admin(id)
  1224. team_count()
  1225.  
  1226. if(!admin && (team == CS_TEAM_UNASSIGNED) && (g_RoundStarted >= roundloop) && g_TeamCount[CS_TEAM_CT] && g_TeamCount[CS_TEAM_T] && !is_user_alive(id))
  1227. {
  1228. team_join(id, CS_TEAM_SPECTATOR)
  1229. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTJOIN")
  1230. return PLUGIN_HANDLED
  1231. }
  1232.  
  1233.  
  1234. switch(key)
  1235. {
  1236. case(0):
  1237. {
  1238. if(team == CS_TEAM_T)
  1239. return PLUGIN_HANDLED
  1240.  
  1241. g_PlayerReason[id] = random_num(1, 6)
  1242.  
  1243. team_join(id, CS_TEAM_T)
  1244. }
  1245. case(1):
  1246. {
  1247. if(team == CS_TEAM_CT || (!admin && get_bit(g_PlayerNomic, id)))
  1248. return PLUGIN_HANDLED
  1249.  
  1250. if(g_TeamCount[CS_TEAM_CT] < ctcount_allowed() || admin)
  1251. team_join(id, CS_TEAM_CT)
  1252. else
  1253. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CTFULL")
  1254. }
  1255. case(5):
  1256. {
  1257. user_silentkill(id)
  1258. team_join(id, CS_TEAM_SPECTATOR)
  1259. }
  1260. }
  1261. return PLUGIN_HANDLED
  1262. }
  1263.  
  1264. public team_join(id, CsTeams:team)
  1265. {
  1266. static restore, vgui, msgblock
  1267.  
  1268. restore = get_pdata_int(id, m_iVGUI)
  1269. vgui = restore & (1<<0)
  1270. if(vgui)
  1271. set_pdata_int(id, m_iVGUI, restore & ~(1<<0))
  1272.  
  1273. switch(team)
  1274. {
  1275. case CS_TEAM_SPECTATOR:
  1276. {
  1277. msgblock = get_msg_block(g_MsgShowMenu)
  1278. set_msg_block(g_MsgShowMenu, BLOCK_ONCE)
  1279. dllfunc(DLLFunc_ClientPutInServer, id)
  1280. set_msg_block(g_MsgShowMenu, msgblock)
  1281. set_pdata_int(id, m_fGameHUDInitialized, 1)
  1282. engclient_cmd(id, "jointeam", "6")
  1283. }
  1284. case CS_TEAM_T, CS_TEAM_CT:
  1285. {
  1286. msgblock = get_msg_block(g_MsgShowMenu)
  1287. set_msg_block(g_MsgShowMenu, BLOCK_ONCE)
  1288. engclient_cmd(id, "jointeam", (team == CS_TEAM_CT) ? "2" : "1")
  1289. engclient_cmd(id, "joinclass", "1")
  1290. set_msg_block(g_MsgShowMenu, msgblock)
  1291. g_PlayerSpect[id] = 0
  1292. }
  1293. }
  1294.  
  1295. if(vgui)
  1296. set_pdata_int(id, m_iVGUI, restore)
  1297. }
  1298.  
  1299. public team_count()
  1300. {
  1301. static CsTeams:team, last
  1302. g_TeamCount[CS_TEAM_UNASSIGNED] = 0
  1303. g_TeamCount[CS_TEAM_T] = 0
  1304. g_TeamCount[CS_TEAM_CT] = 0
  1305. g_TeamCount[CS_TEAM_SPECTATOR] = 0
  1306. g_TeamAlive[CS_TEAM_UNASSIGNED] = 0
  1307. g_TeamAlive[CS_TEAM_T] = 0
  1308. g_TeamAlive[CS_TEAM_CT] = 0
  1309. g_TeamAlive[CS_TEAM_SPECTATOR] = 0
  1310. for(new i = 1; i <= g_MaxClients; i++)
  1311. {
  1312. if(is_user_connected(i))
  1313. {
  1314. team = cs_get_user_team(i)
  1315. g_TeamCount[team]++
  1316. g_PlayerTeam[i] = team
  1317. if(is_user_alive(i))
  1318. {
  1319. g_TeamAlive[team]++
  1320. if(team == CS_TEAM_T)
  1321. last = i
  1322. }
  1323. }
  1324. else
  1325. {
  1326. g_PlayerTeam[i] = CS_TEAM_UNASSIGNED
  1327. }
  1328. }
  1329. if(g_TeamAlive[CS_TEAM_T] == 1)
  1330. {
  1331. if(last != g_PlayerLast && g_SafeTime)
  1332. {
  1333. prisoner_last(last)
  1334. }
  1335. }
  1336. else
  1337. {
  1338. if(g_Duel || g_DuelA || g_DuelB)
  1339. {
  1340. if(is_user_alive(g_DuelA))
  1341. {
  1342. set_user_rendering(g_DuelA, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  1343. player_strip_weapons(g_DuelA)
  1344. }
  1345.  
  1346. if(is_user_alive(g_DuelB))
  1347. {
  1348. set_user_rendering(g_DuelB, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  1349. player_strip_weapons(g_DuelB)
  1350. }
  1351.  
  1352. }
  1353. g_PlayerLast = 0
  1354. g_DuelA = 0
  1355. g_DuelB = 0
  1356. g_Duel = 0
  1357. }
  1358. }
  1359.  
  1360. public revolt_start()
  1361. {
  1362. client_cmd(0,"speak ambience/siren")
  1363. set_task(8.0, "stop_sound")
  1364. hud_status(0)
  1365. }
  1366.  
  1367. public stop_sound(task)
  1368. {
  1369. client_cmd(0, "stopsound")
  1370. }
  1371.  
  1372. public hud_status(task)
  1373. {
  1374. static i, n
  1375. new name[32], szStatus[64], wanted[1024]
  1376.  
  1377. if(g_RoundStarted < (get_pcvar_num(gp_RetryTime) / 2))
  1378. g_RoundStarted++
  1379.  
  1380. if(!g_Freeday && !g_Simon && g_SimonAllowed && (0.0 < g_SimonRandom < get_gametime()))
  1381. {
  1382. cmd_simon(random_num(1, g_MaxClients))
  1383. }
  1384.  
  1385. n = 0
  1386. formatex(wanted, charsmax(wanted), "%L", LANG_SERVER, "JBE_PRISONER_WANTED")
  1387. n = strlen(wanted)
  1388. for(i = 0; i < g_MaxClients; i++)
  1389. {
  1390. if(get_bit(g_PlayerWanted, i) && is_user_alive(i) && n < charsmax(wanted))
  1391. {
  1392. get_user_name(i, name, charsmax(name))
  1393. n += copy(wanted[n], charsmax(wanted) - n, "^n^t")
  1394. n += copy(wanted[n], charsmax(wanted) - n, name)
  1395. }
  1396. }
  1397.  
  1398. team_count()
  1399. formatex(szStatus, charsmax(szStatus), "%L", LANG_SERVER, "JBE_STATUS", g_TeamAlive[CS_TEAM_T], g_TeamCount[CS_TEAM_T])
  1400. message_begin(MSG_BROADCAST, get_user_msgid("StatusText"), {0,0,0}, 0)
  1401. write_byte(0)
  1402. write_string(szStatus)
  1403. message_end()
  1404.  
  1405. if(g_Simon)
  1406. {
  1407. get_user_name(g_Simon, name, charsmax(name))
  1408. player_hudmessage(0, 2, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_SIMON_FOLLOW", name)
  1409. }
  1410. else if(g_Freeday)
  1411. {
  1412. player_hudmessage(0, 2, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_FREEDAY")
  1413. }
  1414.  
  1415. if(g_PlayerWanted)
  1416. player_hudmessage(0, 3, HUD_DELAY + 1.0, {255, 25, 50}, "%s", wanted)
  1417. else if(g_PlayerRevolt)
  1418. player_hudmessage(0, 3, HUD_DELAY + 1.0, {255, 25, 50}, "%L", LANG_SERVER, "JBE_PRISONER_REVOLT")
  1419.  
  1420. player_hudmessage(0, 5, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_DAY", g_JailDay)
  1421.  
  1422. gc_TalkMode = get_pcvar_num(gp_TalkMode)
  1423. gc_VoiceBlock = get_pcvar_num(gp_VoiceBlock)
  1424. gc_SimonSteps = get_pcvar_num(gp_SimonSteps)
  1425. gc_ButtonShoot = get_pcvar_num(gp_ButtonShoot)
  1426. gc_CrowbarMul = get_pcvar_float(gp_CrowbarMul)
  1427.  
  1428. }
  1429.  
  1430. public safe_time(task)
  1431. {
  1432. g_SafeTime = 1
  1433. }
  1434.  
  1435. public check_freeday(task)
  1436. {
  1437. static Float:roundmax, i
  1438. if(!g_Simon && !g_PlayerLast)
  1439. {
  1440. g_Freeday = 1
  1441. hud_status(0)
  1442. roundmax = get_pcvar_float(gp_RoundMax)
  1443. if(roundmax > 0.0)
  1444. {
  1445. for(i = 1; i <= g_MaxClients; i++)
  1446. {
  1447. if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T)
  1448. freeday_set(0, i)
  1449. }
  1450. emit_sound(0, CHAN_AUTO, "jbextreme/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1451. player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDTIMER", floatround(roundmax - 60.0))
  1452. remove_task(TASK_ROUND)
  1453. set_task(roundmax - 60.0, "check_end", TASK_ROUND)
  1454. }
  1455. }
  1456.  
  1457. if(get_pcvar_num(gp_AutoOpen))
  1458. jail_open()
  1459. }
  1460.  
  1461. public freeday_end(task)
  1462. {
  1463. if(g_Freeday || g_PlayerFreeday)
  1464. {
  1465. emit_sound(0, CHAN_AUTO, "jbextreme/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1466. player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDFREEDAY")
  1467. }
  1468. }
  1469.  
  1470. public check_end(task)
  1471. {
  1472. team_count()
  1473. for(new i = 1; i <= g_MaxClients; i++)
  1474. {
  1475. if(g_PlayerTeam[i] == CS_TEAM_T && is_user_alive(i))
  1476. {
  1477. user_silentkill(i)
  1478. cs_set_user_deaths(i, get_user_deaths(i) - 1)
  1479. }
  1480. }
  1481. for(new i = 1; i <= g_MaxClients; i++)
  1482. {
  1483. if(g_PlayerTeam[i] == CS_TEAM_CT && is_user_alive(i))
  1484. {
  1485. user_silentkill(i)
  1486. cs_set_user_deaths(i, get_user_deaths(i) - 1)
  1487. }
  1488. }
  1489. player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ROUNDEND")
  1490. }
  1491.  
  1492. public prisoner_last(id)
  1493. {
  1494. static name[32], Float:roundmax
  1495. if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
  1496. {
  1497. roundmax = get_pcvar_float(gp_RoundMax)
  1498. get_user_name(id, name, charsmax(name))
  1499. g_PlayerLast = id
  1500. player_hudmessage(0, 6, 5.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_PRISONER_LAST", name)
  1501. remove_task(TASK_ROUND)
  1502. if(roundmax > 0.0)
  1503. {
  1504. player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDTIMER", floatround(roundmax - 60.0))
  1505. set_task(roundmax - 60.0, "check_end", TASK_ROUND)
  1506. }
  1507. if((g_TeamAlive[CS_TEAM_CT] > 0) && get_pcvar_num(gp_AutoLastresquest))
  1508. cmd_lastrequest(id)
  1509. }
  1510. }
  1511.  
  1512. public freeday_select(id, menu, item)
  1513. {
  1514. if(item == MENU_EXIT)
  1515. {
  1516. menu_destroy(menu)
  1517. return PLUGIN_HANDLED
  1518. }
  1519.  
  1520. static dst[32], data[5], player, access, callback
  1521.  
  1522. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1523. player = str_to_num(data)
  1524. freeday_set(id, player)
  1525. return PLUGIN_HANDLED
  1526. }
  1527.  
  1528. public duel_knives(id, menu, item)
  1529. {
  1530. if(item == MENU_EXIT)
  1531. {
  1532. menu_destroy(menu)
  1533. g_LastDenied = 0
  1534. return PLUGIN_HANDLED
  1535. }
  1536.  
  1537. static dst[32], data[5], access, callback, option[128], player, src[32]
  1538.  
  1539. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1540. get_user_name(id, src, charsmax(src))
  1541. player = str_to_num(data)
  1542. formatex(option, charsmax(option), "%L^n%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL3", src, LANG_SERVER, "JBE_MENU_DUEL_SEL", src, dst)
  1543. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1544.  
  1545. g_DuelA = id
  1546. clear_bit(g_PlayerCrowbar, id)
  1547. player_strip_weapons(id)
  1548. player_glow(id, g_Colors[3])
  1549. set_user_health(id, 100)
  1550.  
  1551. g_DuelB = player
  1552. player_strip_weapons(player)
  1553. player_glow(player, g_Colors[2])
  1554. set_user_health(player, 100)
  1555. g_BlockWeapons = 1
  1556. return PLUGIN_HANDLED
  1557. }
  1558.  
  1559. public duel_guns(id, menu, item)
  1560. {
  1561. if(item == MENU_EXIT)
  1562. {
  1563. menu_destroy(menu)
  1564. g_LastDenied = 0
  1565. g_Duel = 0
  1566. return PLUGIN_HANDLED
  1567. }
  1568.  
  1569. static gun, dst[32], data[5], access, callback, option[128], player, src[32]
  1570.  
  1571. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1572. get_user_name(id, src, charsmax(src))
  1573. player = str_to_num(data)
  1574. formatex(option, charsmax(option), "%L^n%L", LANG_SERVER, _Duel[g_Duel - 4][_sel], src, LANG_SERVER, "JBE_MENU_DUEL_SEL", src, dst)
  1575. emit_sound(0, CHAN_AUTO, "jbextreme/nm_goodbadugly.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1576. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1577.  
  1578. g_DuelA = id
  1579. clear_bit(g_PlayerCrowbar, id)
  1580. player_strip_weapons(id)
  1581. gun = give_item(id, _Duel[g_Duel - 4][_entname])
  1582. cs_set_weapon_ammo(gun, 1)
  1583. set_user_health(id, 100)
  1584. player_glow(id, g_Colors[3])
  1585.  
  1586. g_DuelB = player
  1587. player_strip_weapons(player)
  1588. gun = give_item(player, _Duel[g_Duel - 4][_entname])
  1589. cs_set_weapon_ammo(gun, 1)
  1590. set_user_health(player, 100)
  1591. player_glow(player, g_Colors[2])
  1592.  
  1593. g_BlockWeapons = 1
  1594. return PLUGIN_HANDLED
  1595. }
  1596.  
  1597. public freeday_choice(id, menu, item)
  1598. {
  1599. if(item == MENU_EXIT)
  1600. {
  1601. menu_destroy(menu)
  1602. return PLUGIN_HANDLED
  1603. }
  1604.  
  1605. static dst[32], data[5], access, callback
  1606.  
  1607. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1608. menu_destroy(menu)
  1609. get_user_name(id, dst, charsmax(dst))
  1610. switch(data[0])
  1611. {
  1612. case('1'):
  1613. {
  1614. cmd_freeday_player(id)
  1615. }
  1616. case('2'):
  1617. {
  1618. if((id == g_Simon) || is_user_admin(id))
  1619. {
  1620. g_Simon = 0
  1621. get_user_name(id, dst, charsmax(dst))
  1622. client_print(0, print_console, "%s mindenkinek szabadnapot adott", dst)
  1623. server_print("JBE Client %i mindenkinek szabadnapot adott", id)
  1624. check_freeday(TASK_FREEDAY)
  1625. }
  1626. }
  1627. }
  1628. return PLUGIN_HANDLED
  1629. }
  1630.  
  1631. public lastrequest_select(id, menu, item)
  1632. {
  1633. if(item == MENU_EXIT)
  1634. {
  1635. menu_destroy(menu)
  1636. return PLUGIN_HANDLED
  1637. }
  1638.  
  1639. static i, dst[32], data[5], access, callback, option[64]
  1640.  
  1641. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1642. get_user_name(id, dst, charsmax(dst))
  1643. switch(data[0])
  1644. {
  1645. case('1'):
  1646. {
  1647. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL1", dst)
  1648. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1649. set_bit(g_FreedayAuto, id)
  1650. user_silentkill(id)
  1651. }
  1652. case('2'):
  1653. {
  1654. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL2", dst)
  1655. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1656. g_Duel = 2
  1657. player_strip_weapons_all()
  1658. i = random_num(0, sizeof(_WeaponsFree) - 1)
  1659. give_item(id, _WeaponsFree[i])
  1660. g_BlockWeapons = 1
  1661. cs_set_user_bpammo(id, _WeaponsFreeCSW[i], _WeaponsFreeAmmo[i])
  1662. }
  1663. case('3'):
  1664. {
  1665. g_Duel = 3
  1666. menu_players(id, CS_TEAM_CT, 0, 1, "duel_knives", "%L", LANG_SERVER, "JBE_MENU_DUEL")
  1667. }
  1668. default:
  1669. {
  1670. g_Duel = str_to_num(data)
  1671. menu_players(id, CS_TEAM_CT, 0, 1, "duel_guns", "%L", LANG_SERVER, "JBE_MENU_DUEL")
  1672. }
  1673. }
  1674. g_LastDenied = 1
  1675. menu_destroy(menu)
  1676. return PLUGIN_HANDLED
  1677. }
  1678.  
  1679. public setup_buttons()
  1680. {
  1681. new ent[3]
  1682. new Float:origin[3]
  1683. new info[32]
  1684. new pos
  1685.  
  1686. while((pos <= sizeof(g_Buttons)) && (ent[0] = engfunc(EngFunc_FindEntityByString, ent[0], "classname", "info_player_deathmatch")))
  1687. {
  1688. pev(ent[0], pev_origin, origin)
  1689. while((ent[1] = engfunc(EngFunc_FindEntityInSphere, ent[1], origin, CELL_RADIUS)))
  1690. {
  1691. if(!is_valid_ent(ent[1]))
  1692. continue
  1693.  
  1694. entity_get_string(ent[1], EV_SZ_classname, info, charsmax(info))
  1695. if(!equal(info, "func_door"))
  1696. continue
  1697.  
  1698. entity_get_string(ent[1], EV_SZ_targetname, info, charsmax(info))
  1699. if(!info[0])
  1700. continue
  1701.  
  1702. if(TrieKeyExists(g_CellManagers, info))
  1703. {
  1704. TrieGetCell(g_CellManagers, info, ent[2])
  1705. }
  1706. else
  1707. {
  1708. ent[2] = engfunc(EngFunc_FindEntityByString, 0, "target", info)
  1709. }
  1710.  
  1711. if(is_valid_ent(ent[2]) && (in_array(ent[2], g_Buttons, sizeof(g_Buttons)) < 0))
  1712. {
  1713. g_Buttons[pos] = ent[2]
  1714. pos++
  1715. break
  1716. }
  1717. }
  1718. }
  1719. TrieDestroy(g_CellManagers)
  1720. }
  1721.  
  1722. stock in_array(needle, data[], size)
  1723. {
  1724. for(new i = 0; i < size; i++)
  1725. {
  1726. if(data[i] == needle)
  1727. return i
  1728. }
  1729. return -1
  1730. }
  1731.  
  1732. stock freeday_set(id, player)
  1733. {
  1734. static src[32], dst[32]
  1735. get_user_name(player, dst, charsmax(dst))
  1736.  
  1737. if(is_user_alive(player) && !get_bit(g_PlayerWanted, player))
  1738. {
  1739. set_bit(g_PlayerFreeday, player)
  1740. entity_set_int(player, EV_INT_skin, 3)
  1741. if(get_pcvar_num(gp_GlowModels))
  1742. player_glow(player, g_Colors[1])
  1743.  
  1744. if(0 < id <= g_MaxClients)
  1745. {
  1746. get_user_name(id, src, charsmax(src))
  1747. player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_GUARD_FREEDAYGIVE", src, dst)
  1748. }
  1749. else if(!is_freeday())
  1750. {
  1751. player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_PRISONER_HASFREEDAY", dst)
  1752. }
  1753. }
  1754. }
  1755.  
  1756. stock first_join(id)
  1757. {
  1758. if(!get_bit(g_PlayerJoin, id))
  1759. {
  1760. set_bit(g_PlayerJoin, id)
  1761. clear_bit(g_PlayerHelp, id)
  1762. set_task(5.0, "cmd_help", TASK_HELP + id)
  1763. }
  1764. }
  1765.  
  1766. stock ctcount_allowed()
  1767. {
  1768. static count
  1769. count = ((g_TeamCount[CS_TEAM_T] + g_TeamCount[CS_TEAM_CT]) / get_pcvar_num(gp_TeamRatio))
  1770. if(count < 2)
  1771. count = 2
  1772. else if(count > get_pcvar_num(gp_CtMax))
  1773. count = get_pcvar_num(gp_CtMax)
  1774.  
  1775. return count
  1776. }
  1777.  
  1778. stock player_hudmessage(id, hudid, Float:time = 0.0, color[3] = {0, 255, 0}, msg[], any:...)
  1779. {
  1780. static text[512], Float:x, Float:y
  1781. x = g_HudSync[hudid][_x]
  1782. y = g_HudSync[hudid][_y]
  1783.  
  1784. if(time > 0)
  1785. set_hudmessage(color[0], color[1], color[2], x, y, 0, 0.00, time, 0.00, 0.00)
  1786. else
  1787. set_hudmessage(color[0], color[1], color[2], x, y, 0, 0.00, g_HudSync[hudid][_time], 0.00, 0.00)
  1788.  
  1789. vformat(text, charsmax(text), msg, 6)
  1790. ShowSyncHudMsg(id, g_HudSync[hudid][_hudsync], text)
  1791. }
  1792.  
  1793. stock menu_players(id, CsTeams:team, skip, alive, callback[], title[], any:...)
  1794. {
  1795. static i, name[32], num[5], menu, menuname[32]
  1796. vformat(menuname, charsmax(menuname), title, 7)
  1797. menu = menu_create(menuname, callback)
  1798. for(i = 1; i <= g_MaxClients; i++)
  1799. {
  1800. if(!is_user_connected(i) || (alive && !is_user_alive(i)) || (skip == i))
  1801. continue
  1802.  
  1803. if(!(team == CS_TEAM_T || team == CS_TEAM_CT) || ((team == CS_TEAM_T || team == CS_TEAM_CT) && (cs_get_user_team(i) == team)))
  1804. {
  1805. get_user_name(i, name, charsmax(name))
  1806. num_to_str(i, num, charsmax(num))
  1807. menu_additem(menu, name, num, 0)
  1808. }
  1809. }
  1810. menu_display(id, menu)
  1811. }
  1812.  
  1813. stock player_glow(id, color[3], amount=40)
  1814. {
  1815. set_user_rendering(id, kRenderFxGlowShell, color[0], color[1], color[2], kRenderNormal, amount)
  1816. }
  1817.  
  1818. stock player_strip_weapons(id)
  1819. {
  1820. strip_user_weapons(id)
  1821. give_item(id, "weapon_knife")
  1822. set_pdata_int(id, m_iPrimaryWeapon, 0)
  1823. }
  1824.  
  1825. stock player_strip_weapons_all()
  1826. {
  1827. for(new i = 1; i <= g_MaxClients; i++)
  1828. {
  1829. if(is_user_alive(i))
  1830. {
  1831. player_strip_weapons(i)
  1832. }
  1833. }
  1834. }
  1835.  
  1836. stock is_freeday()
  1837. {
  1838. return (g_FreedayNext || g_Freeday || (g_JailDay == 1))
  1839. }
  1840.  
  1841. public jail_open()
  1842. {
  1843. static i
  1844. for(i = 0; i < sizeof(g_Buttons); i++)
  1845. {
  1846. if(g_Buttons[i])
  1847. {
  1848. ExecuteHamB(Ham_Use, g_Buttons[i], 0, 0, 1, 1.0)
  1849. entity_set_float(g_Buttons[i], EV_FL_frame, 0.0)
  1850. }
  1851. }
  1852. }
  1853.  
  1854.  


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 22 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole