hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.28. 16:54



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Bing [Bot] 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  [ 5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: JailBreak hova kell beírni..
HozzászólásElküldve: 2013.11.13. 20:59 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.10.27. 23:13
Hozzászólások: 412
Megköszönt másnak: 21 alkalommal
Megköszönték neki: 68 alkalommal
Az kéne hogy ne tudjanak zoomolni csak a Scout fegyverrel vagyis párbajnál, ha nincs párbaj akkor tudjanak! ne tudjanak zoomolni amikor scoutot választ de
aztán következő körbe adja vissza neki.Jah és írjátok le a forráskódból hanyadik sor és hogy mi közé vagy hogy hova írjam be , mert ez alap!!

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.  

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JailBreak hova kell beírni..
HozzászólásElküldve: 2013.11.14. 15:26 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7962
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 535 alkalommal
Készíts 1 bool változót.

Hookold a fegyvereket amelyeknek akarod tiltani a zoomolását. Mégpedig a secondary attackot, ami jelen esetben a zoomolás, s ha a bool true akkor return supercede, párbaly végén meg megy megint falsera, nem nagy cucc.

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JailBreak hova kell beírni..
HozzászólásElküldve: 2013.11.14. 18:08 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.10.27. 23:13
Hozzászólások: 412
Megköszönt másnak: 21 alkalommal
Megköszönték neki: 68 alkalommal
Azt meg hogy így....?


SMA Forráskód: [ Mindet kijelol ]
  1. }
  2. new bool:zoom[33]
  3. cs_set_user_zoom(id, CS_SET_SCOUT, 0)
  4. }


de amúgy meg azt sem tudom hol a párbaj vége az sma-ban ....
Nem vagyok Pro, max 1hónapja kezdtem el..

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JailBreak hova kell beírni..
HozzászólásElküldve: 2013.11.17. 12:17 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7962
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 535 alkalommal
Igen.

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

_________________
http://www.easyrankup.eu

Ők köszönték meg kiki nek ezt a hozzászólást: NiGGeR-BorZ (2013.11.17. 13:50)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JailBreak hova kell beírni..
HozzászólásElküldve: 2013.11.17. 13:50 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.10.27. 23:13
Hozzászólások: 412
Megköszönt másnak: 21 alkalommal
Megköszönték neki: 68 alkalommal
Köszönöm, működik és 2 is segítettél
- értem már
- és ezt kerestem
Csak az a baj ha beírom ezt akkor nem tudnak beállni..

_________________
Kép


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  [ 5 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 18 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