hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.27. 22:19



Jelenlévő felhasználók

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

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

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

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



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

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
HozzászólásElküldve: 2016.04.07. 22:07 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.11.12. 16:39
Hozzászólások: 258
Megköszönt másnak: 87 alkalommal
Megköszönték neki: 2 alkalommal
Üdv ! Be bugol a /lr , menü , valaki megtudná nézni , hogy ez miért van ? Előre is köszi

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

_________________
Nem szégyen megköszönni :)

'The dictator is coming' :D


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


Ki van itt

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