hlmod.hu

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



Jelenlévő felhasználók

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

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Google [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  [9 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: [JB] Simon menü
HozzászólásElküldve:2012.05.27. 18:15 
Offline
Nagyúr
Avatar

Csatlakozott:2011.12.18. 10:40
Hozzászólások:671
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 20 alkalommal
Kód:
  1. #include <amxmodx>

  2. #include <amxmisc>

  3. #include <cstrike>

  4.  

  5. new g_Simon

  6.  

  7. public plugin_precache(){

  8.  

  9. precache_sound("sm_jail/ding.wav")

  10. }

  11.  

  12. public plugin_init()

  13. {

  14. register_clcmd( "say /simonmenu","AwesomeMenu");

  15. }

  16. public AwesomeMenu(id)

  17. {

  18. if(id == g_Simon)      

  19. {

  20.         new menu = menu_create("\r[S][M] JailBreak \ySimon \rmenü", "menu_handler");

  21.  

  22.         menu_additem(menu, "\wCellák nyitása", "1", 0 );

  23.         menu_additem(menu, "\wSzabad nap adása", "2", 0);

  24.         menu_additem(menu, "\wBox mód engedélyezése", "3", 0);

  25.         menu_additem(menu, "\yDing!", "4", 0);

  26.  

  27.         menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);

  28.  

  29.         menu_display(id, menu, 0);

  30.  

  31. }

  32. }

  33.  

  34. public menu_handler(id, menu, item)

  35. {

  36.  

  37. if( item == MENU_EXIT )

  38.        

  39. {

  40.         menu_destroy(menu);

  41.         return PLUGIN_HANDLED;

  42. }

  43.  

  44.  

  45.  

  46. new data[6], szName[64];

  47. new access, callback;

  48. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

  49. new key = str_to_num(data);

  50. switch(key)            

  51. {

  52.  

  53.         case 1:

  54.         {

  55.                 client_cmd(id, "^"say /open^"");

  56.                 menu_destroy(menu);

  57.                 return PLUGIN_HANDLED

  58.         }

  59.         case 2:

  60.         {

  61.                 client_cmd(id, "^"say /fd^"")

  62.         }

  63.         case 3:        

  64.         {

  65.                 client_cmd(id, "^" say /box^"");       

  66.         }

  67.         case 4:        

  68.         {      

  69.                 client_cmd(0, "spk sm_jail/ding");     

  70.         }

  71.        

  72. }

  73. menu_destroy(menu);

  74. return PLUGIN_HANDLED;

  75. }

  76.  

  77. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE

  78.  

  79.  

  80.  

  81. *{\\ rtf1\\ ansi\\ ansicpg1250\\ deff0\\ deflang1038{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }

  82.  

  83.  

  84.  

  85. */

  86.  

  87.  

  88.  

  89.  

Miért Nem hozza elö a menüt?

_________________
Kép


A hozzászólást 2 alkalommal szerkesztették, utoljára CeDee 2012.05.27. 18:25-kor.

Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [JB] Simon menü
HozzászólásElküldve:2012.05.27. 18:18 
Offline
Developer
Avatar

Csatlakozott:2011.06.01. 21:11
Hozzászólások:7966
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
jól gondolod, de nem látok benne kérdést!

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [JB] Simon menü
HozzászólásElküldve:2012.05.27. 18:26 
Offline
Nagyúr
Avatar

Csatlakozott:2011.12.18. 10:40
Hozzászólások:671
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 20 alkalommal
Javítva

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [JB] Simon menü
HozzászólásElküldve:2012.05.27. 18:26 
Offline
Developer
Avatar

Csatlakozott:2011.06.01. 21:11
Hozzászólások:7966
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
mert az id értéke nem egyenlő a g_simon változó értékével!

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [JB] Simon menü
HozzászólásElküldve:2012.05.27. 18:31 
Offline
Nagyúr
Avatar

Csatlakozott:2011.12.18. 10:40
Hozzászólások:671
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 20 alkalommal
Nemtudom h kéne

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [JB] Simon menü
HozzászólásElküldve:2012.05.27. 18:34 
Offline
Developer
Avatar

Csatlakozott:2011.06.01. 21:11
Hozzászólások:7966
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
Hát ezt így sehogy sem, rakd be abba a pluginba amelyikbe van a simon, és az ottani változóval ami tárolja hogy simon e, azzal kérd le!

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [JB] Simon menü
HozzászólásElküldve:2012.05.27. 18:36 
Offline
Nagyúr
Avatar

Csatlakozott:2011.12.18. 10:40
Hozzászólások:671
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 20 alkalommal
Oké köszi

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [JB] Simon menü
HozzászólásElküldve:2012.05.27. 18:36 
Offline
Developer
Avatar

Csatlakozott:2011.06.01. 21:11
Hozzászólások:7966
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
ha nem sikerül postold a jb smáját

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [JB] Simon menü
HozzászólásElküldve:2012.05.27. 18:42 
Offline
Nagyúr
Avatar

Csatlakozott:2011.12.18. 10:40
Hozzászólások:671
Megköszönt másnak: 5 alkalommal
Megköszönték neki: 20 alkalommal
Rendben
Hát összetettem lefordult, de nemtudom jó-e:
Kód:
  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.         register_clcmd( "say /simonmenu","AwesomeMenu");

  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.         precache_sound("sm_jail/ding.wav")

  295.  

  296.         g_CellManagers = TrieCreate()

  297.         gp_PrecacheSpawn = register_forward(FM_Spawn, "precache_spawn", 1)

  298.         gp_PrecacheKeyValue = register_forward(FM_KeyValue, "precache_keyvalue", 1)

  299. }

  300.  

  301. public precache_spawn(ent)

  302. {

  303.         if(is_valid_ent(ent))

  304.         {

  305.                 static szClass[33]

  306.                 entity_get_string(ent, EV_SZ_classname, szClass, sizeof(szClass))

  307.                 for(new i = 0; i < sizeof(_RemoveEntities); i++)

  308.                         if(equal(szClass, _RemoveEntities[i]))

  309.                                 remove_entity(ent)

  310.         }

  311. }

  312.  

  313. public precache_keyvalue(ent, kvd_handle)

  314. {

  315.         static info[32]

  316.         if(!is_valid_ent(ent))

  317.                 return FMRES_IGNORED

  318.  

  319.         get_kvd(kvd_handle, KV_ClassName, info, charsmax(info))

  320.         if(!equal(info, "multi_manager"))

  321.                 return FMRES_IGNORED

  322.  

  323.         get_kvd(kvd_handle, KV_KeyName, info, charsmax(info))

  324.         TrieSetCell(g_CellManagers, info, ent)

  325.         return FMRES_IGNORED

  326. }

  327.  

  328. public client_putinserver(id)

  329. {

  330.         clear_bit(g_PlayerJoin, id)

  331.         clear_bit(g_PlayerHelp, id)

  332.         clear_bit(g_PlayerCrowbar, id)

  333.         clear_bit(g_PlayerNomic, id)

  334.         clear_bit(g_PlayerWanted, id)

  335.         clear_bit(g_SimonTalking, id)

  336.         clear_bit(g_SimonVoice, id)

  337.         g_PlayerSpect[id] = 0

  338.         g_PlayerSimon[id] = 0

  339. }

  340.  

  341. public client_disconnect(id)

  342. {

  343.         if(g_Simon == id)

  344.         {

  345.                 g_Simon = 0

  346.                 ClearSyncHud(0, g_HudSync[2][_hudsync])

  347.                 player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_HASGONE")

  348.         }

  349.         else if(g_PlayerLast == id || (g_Duel && (id == g_DuelA || id == g_DuelB)))

  350.         {

  351.                 g_Duel = 0

  352.                 g_DuelA = 0

  353.                 g_DuelB = 0

  354.                 g_LastDenied = 0

  355.                 g_BlockWeapons = 0

  356.                 g_PlayerLast = 0

  357.         }

  358.         team_count()

  359. }

  360.  

  361. public client_PostThink(id)

  362. {

  363.         if(id != g_Simon || !gc_SimonSteps || !is_user_alive(id) ||

  364.                 !(entity_get_int(id, EV_INT_flags) & FL_ONGROUND) || entity_get_int(id, EV_ENT_groundentity))

  365.                 return PLUGIN_CONTINUE

  366.        

  367.         static Float:origin[3]

  368.         static Float:last[3]

  369.  

  370.         entity_get_vector(id, EV_VEC_origin, origin)

  371.         if(get_distance_f(origin, last) < 32.0)

  372.         {

  373.                 return PLUGIN_CONTINUE

  374.         }

  375.  

  376.         vec_copy(origin, last)

  377.         if(entity_get_int(id, EV_INT_bInDuck))

  378.                 origin[2] -= 18.0

  379.         else

  380.                 origin[2] -= 36.0

  381.  

  382.  

  383.         message_begin(MSG_BROADCAST, SVC_TEMPENTITY, {0,0,0}, 0)

  384.         write_byte(TE_WORLDDECAL)

  385.         write_coord(floatround(origin[0]))

  386.         write_coord(floatround(origin[1]))

  387.         write_coord(floatround(origin[2]))

  388.         write_byte(105)

  389.         message_end()

  390.  

  391.         return PLUGIN_CONTINUE

  392. }

  393.  

  394.  

  395. public msg_statustext(msgid, dest, id)

  396. {

  397.         return PLUGIN_HANDLED

  398. }

  399.  

  400. public msg_statusicon(msgid, dest, id)

  401. {

  402.         static icon[5]

  403.         get_msg_arg_string(2, icon, charsmax(icon))

  404.         if(icon[0] == 'b' && icon[2] == 'y' && icon[3] == 'z')

  405.         {

  406.                 set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0))

  407.                 return PLUGIN_HANDLED

  408.         }

  409.  

  410.         return PLUGIN_CONTINUE

  411. }

  412.  

  413. public msg_vguimenu(msgid, dest, id)

  414. {

  415.         static msgarg1

  416.         static CsTeams:team

  417.  

  418.         msgarg1 = get_msg_arg_int(1)

  419.         if(msgarg1 == 2)

  420.         {

  421.                 team = cs_get_user_team(id)

  422.                 if((team == CS_TEAM_T) && !is_user_admin(id) && (is_user_alive(id) || !get_pcvar_num(gp_TeamChange)))

  423.                 {

  424.                         client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTCHANGE")

  425.                         return PLUGIN_HANDLED

  426.                 }

  427.                 show_menu(id, 51, TEAM_MENU, -1)

  428.                 return PLUGIN_HANDLED

  429.         }

  430.  

  431.         return PLUGIN_CONTINUE

  432. }

  433.  

  434. public msg_showmenu(msgid, dest, id)

  435. {

  436.         static msgarg1, roundloop

  437.         static CsTeams:team

  438.         msgarg1 = get_msg_arg_int(1)

  439.  

  440.         if(msgarg1 != 531 && msgarg1 != 563)

  441.                 return PLUGIN_CONTINUE

  442.  

  443.         roundloop = floatround(get_pcvar_float(gp_RetryTime) / 2)

  444.         team = cs_get_user_team(id)

  445.  

  446.         if(team == CS_TEAM_T)

  447.         {

  448.                 if(!is_user_admin(id) && (is_user_alive(id) || (g_RoundStarted >= roundloop) || !get_pcvar_num(gp_TeamChange)))

  449.                 {

  450.                         client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTCHANGE")

  451.                         return PLUGIN_HANDLED

  452.                 }

  453.                 else

  454.                 {

  455.                         show_menu(id, 51, TEAM_MENU, -1)

  456.                         return PLUGIN_HANDLED

  457.                 }

  458.         }

  459.         else

  460.         {

  461.                 show_menu(id, 51, TEAM_MENU, -1)

  462.                 return PLUGIN_HANDLED

  463.         }

  464.  

  465.         return PLUGIN_CONTINUE

  466. }

  467.  

  468. public msg_motd(msgid, dest, id)

  469. {

  470.         if(get_pcvar_num(gp_Motd))

  471.                 return PLUGIN_HANDLED

  472.  

  473.         return PLUGIN_CONTINUE

  474. }

  475.  

  476. public msg_clcorpse(msgid, dest, id)

  477. {

  478.         return PLUGIN_HANDLED

  479. }

  480.  

  481. public current_weapon(id)

  482. {

  483.         if(!is_user_alive(id))

  484.                 return PLUGIN_CONTINUE

  485.  

  486.         if(get_bit(g_PlayerCrowbar, id))

  487.         {

  488.                 set_pev(id, pev_viewmodel2, _CrowbarModels[1])

  489.                 set_pev(id, pev_weaponmodel2, _CrowbarModels[0])

  490.         }

  491.         else

  492.         {

  493.                 set_pev(id, pev_viewmodel2, _FistModels[1])

  494.                 set_pev(id, pev_weaponmodel2, _FistModels[0])

  495.         }

  496.         return PLUGIN_CONTINUE

  497. }

  498.  

  499. public player_status(id)

  500. {

  501.         static type, player, CsTeams:team, name[32], health

  502.         type = read_data(1)

  503.         player = read_data(2)

  504.         switch(type)

  505.         {

  506.                 case(1):

  507.                 {

  508.                         ClearSyncHud(id, g_HudSync[1][_hudsync])

  509.                 }

  510.                 case(2):

  511.                 {

  512.                         team = cs_get_user_team(player)

  513.                         if((team != CS_TEAM_T) && (team != CS_TEAM_CT))

  514.                                 return PLUGIN_HANDLED

  515.  

  516.                         health = get_user_health(player)

  517.                         get_user_name(player, name, charsmax(name))

  518.                         player_hudmessage(id, 4, 2.0, {0, 255, 0}, "%L", LANG_SERVER,

  519.                                 (team == CS_TEAM_T) ? "JBE_PRISONER_STATUS" : "JBE_GUARD_STATUS", name, health)

  520.                 }

  521.         }

  522.        

  523.         return PLUGIN_HANDLED

  524. }

  525.  

  526. public impulse_100(id)

  527. {

  528.         if(cs_get_user_team(id) == CS_TEAM_T)

  529.                 return PLUGIN_HANDLED

  530.  

  531.         return PLUGIN_CONTINUE

  532. }

  533.  

  534. public player_spawn(id)

  535. {

  536.         static CsTeams:team

  537.  

  538.         if(!is_user_connected(id))

  539.                 return HAM_IGNORED

  540.  

  541.         set_pdata_float(id, m_fNextHudTextArgsGameTime, get_gametime() + 999999.0)

  542.         player_strip_weapons(id)

  543.         if(g_RoundEnd)

  544.         {

  545.                 g_RoundEnd = 0

  546.                 g_JailDay++

  547.         }

  548.  

  549.         set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)

  550.  

  551.         clear_bit(g_PlayerCrowbar, id)

  552.         clear_bit(g_PlayerWanted, id)

  553.         team = cs_get_user_team(id)

  554.  

  555.         switch(team)

  556.         {

  557.                 case(CS_TEAM_T):

  558.                 {

  559.                         g_PlayerLast = 0

  560.                         if(!g_PlayerReason[id])

  561.                                 g_PlayerReason[id] = random_num(1, 6)

  562.  

  563.                         player_hudmessage(id, 0, 5.0, {255, 0, 255}, "%L %L", LANG_SERVER, "JBE_PRISONER_REASON",

  564.                                 LANG_SERVER, g_Reasons[g_PlayerReason[id]])

  565.  

  566.                         set_user_info(id, "model", "jbemodel")

  567.                         entity_set_int(id, EV_INT_body, 2)

  568.                         if(is_freeday() || get_bit(g_FreedayAuto, id))

  569.                         {

  570.                                 freeday_set(0, id)

  571.                                 clear_bit(g_FreedayAuto, id)

  572.                         }

  573.                         else

  574.                         {

  575.                                 entity_set_int(id, EV_INT_skin, random_num(0, 2))

  576.                         }

  577.  

  578.                         if(g_CrowbarCount < get_pcvar_num(gp_CrowbarMax))

  579.                         {

  580.                                 if(random_num(0, g_MaxClients) > (g_MaxClients / 2))

  581.                                 {

  582.                                         g_CrowbarCount++

  583.                                         set_bit(g_PlayerCrowbar, id)

  584.                                 }

  585.                         }

  586.                         cs_set_user_armor(id, 0, CS_ARMOR_NONE)

  587.                 }

  588.                 case(CS_TEAM_CT):

  589.                 {

  590.                         g_PlayerSimon[id]++

  591.                         set_user_info(id, "model", "jbemodel")

  592.                         entity_set_int(id, EV_INT_body, 3)

  593.                         cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)

  594.                 }

  595.         }

  596.         first_join(id)

  597.         return HAM_IGNORED

  598. }

  599.  

  600. public player_damage(victim, ent, attacker, Float:damage, bits)

  601. {

  602.         if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)

  603.                 return HAM_IGNORED

  604.  

  605.         switch(g_Duel)

  606.         {

  607.                 case(0):

  608.                 {

  609.                         if(attacker == ent && get_user_weapon(attacker) == CSW_KNIFE && get_bit(g_PlayerCrowbar, attacker) && cs_get_user_team(victim) != CS_TEAM_T)

  610.                         {

  611.                                 SetHamParamFloat(4, damage * gc_CrowbarMul)

  612.                                 return HAM_OVERRIDE

  613.                         }

  614.                 }

  615.                 case(2):

  616.                 {

  617.                         if(attacker != g_PlayerLast)

  618.                                 return HAM_SUPERCEDE

  619.                 }

  620.                 default:

  621.                 {

  622.                         if((victim == g_DuelA && attacker == g_DuelB) || (victim == g_DuelB && attacker == g_DuelA))

  623.                                 return HAM_IGNORED

  624.        

  625.                         return HAM_SUPERCEDE

  626.                 }

  627.         }

  628.  

  629.         return HAM_IGNORED

  630. }

  631.  

  632. public player_attack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)

  633. {

  634.         static CsTeams:vteam, CsTeams:ateam

  635.         if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)

  636.                 return HAM_IGNORED

  637.  

  638.         vteam = cs_get_user_team(victim)

  639.         ateam = cs_get_user_team(attacker)

  640.  

  641.         if(ateam == CS_TEAM_CT && vteam == CS_TEAM_CT)

  642.                 return HAM_SUPERCEDE

  643.  

  644.         switch(g_Duel)

  645.         {

  646.                 case(0):

  647.                 {

  648.                         if(ateam == CS_TEAM_CT && vteam == CS_TEAM_T)

  649.                         {

  650.                                 if(get_bit(g_PlayerRevolt, victim))

  651.                                 {

  652.                                         clear_bit(g_PlayerRevolt, victim)

  653.                                         hud_status(0)

  654.                                 }

  655.                                 return HAM_IGNORED

  656.                         }

  657.                 }

  658.                 case(2):

  659.                 {

  660.                         if(attacker != g_PlayerLast)

  661.                                 return HAM_SUPERCEDE

  662.                 }

  663.                 default:

  664.                 {

  665.                         if((victim == g_DuelA && attacker == g_DuelB) || (victim == g_DuelB && attacker == g_DuelA))

  666.                                 return HAM_IGNORED

  667.  

  668.                         return HAM_SUPERCEDE

  669.                 }

  670.         }

  671.  

  672.         if(ateam == CS_TEAM_T && vteam == CS_TEAM_T && !g_BoxStarted)

  673.                 return HAM_SUPERCEDE

  674.  

  675.         if(ateam == CS_TEAM_T && vteam == CS_TEAM_CT)

  676.         {

  677.                 if(!g_PlayerRevolt)

  678.                         revolt_start()

  679.  

  680.                 set_bit(g_PlayerRevolt, attacker)

  681.         }

  682.  

  683.         return HAM_IGNORED

  684. }

  685.  

  686. public button_attack(button, id, Float:damage, Float:direction[3], tracehandle, damagebits)

  687. {

  688.         if(is_valid_ent(button) && gc_ButtonShoot)

  689.         {

  690.                 ExecuteHamB(Ham_Use, button, id, 0, 2, 1.0)

  691.                 entity_set_float(button, EV_FL_frame, 0.0)

  692.         }

  693.  

  694.         return HAM_IGNORED

  695. }

  696.  

  697. public player_killed(victim, attacker, shouldgib)

  698. {

  699.         static CsTeams:vteam, CsTeams:kteam

  700.         if(!(0 < attacker <= g_MaxClients) || !is_user_connected(attacker))

  701.                 kteam = CS_TEAM_UNASSIGNED

  702.         else

  703.                 kteam = cs_get_user_team(attacker)

  704.  

  705.         vteam = cs_get_user_team(victim)

  706.         if(g_Simon == victim)

  707.         {

  708.                 g_Simon = 0

  709.                 ClearSyncHud(0, g_HudSync[2][_hudsync])

  710.                 player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_KILLED")

  711.         }

  712.  

  713.         switch(g_Duel)

  714.         {

  715.                 case(0):

  716.                 {

  717.                         switch(vteam)

  718.                         {

  719.                                 case(CS_TEAM_CT):

  720.                                 {

  721.                                         if(kteam == CS_TEAM_T && !get_bit(g_PlayerWanted, attacker))

  722.                                         {

  723.                                                 set_bit(g_PlayerWanted, attacker)

  724.                                                 entity_set_int(attacker, EV_INT_skin, 4)

  725.                                         }

  726.                                 }

  727.                                 case(CS_TEAM_T):

  728.                                 {

  729.                                         clear_bit(g_PlayerRevolt, victim)

  730.                                         clear_bit(g_PlayerWanted, victim)

  731.                                 }

  732.                         }

  733.                 }

  734.                 default:

  735.                 {

  736.                         if(g_Duel != 2 && (attacker == g_DuelA || attacker == g_DuelB))

  737.                         {

  738.                                 set_user_rendering(victim, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)

  739.                                 set_user_rendering(attacker, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)

  740.                                 g_Duel = 0

  741.                                 g_LastDenied = 0

  742.                                 g_BlockWeapons = 0

  743.                                 g_PlayerLast = 0

  744.                                 team_count()

  745.                         }

  746.                 }

  747.         }

  748.         hud_status(0)

  749.         return HAM_IGNORED

  750. }

  751.  

  752. public player_touchweapon(id, ent)

  753. {

  754.         static model[32], class[32]

  755.         if(g_BlockWeapons)

  756.                 return HAM_SUPERCEDE

  757.  

  758.         if(is_valid_ent(id) && g_Duel != 6 && is_user_alive(ent) && cs_get_user_team(ent) == CS_TEAM_CT)

  759.         {

  760.                 entity_get_string(id, EV_SZ_model, model, charsmax(model))

  761.                 if(model[7] == 'w' && model[9] == 'h' && model[10] == 'e' && model[11] == 'g')

  762.                 {

  763.                         entity_get_string(id, EV_SZ_classname, class, charsmax(class))

  764.                         if(equal(class, "weapon_hegrenade"))

  765.                                 remove_entity(id)

  766.  

  767.                         return HAM_SUPERCEDE

  768.                 }

  769.  

  770.         }

  771.  

  772.         return HAM_IGNORED

  773. }

  774.  

  775. public set_client_kv(id, const info[], const key[])

  776. {

  777.         if(equal(key, "model"))

  778.                 return FMRES_SUPERCEDE

  779.  

  780.         return FMRES_IGNORED

  781. }

  782.  

  783. public sound_emit(id, channel, sample[])

  784. {

  785.         if(is_user_alive(id) && equal(sample, "weapons/knife_", 14))

  786.         {

  787.                 switch(sample[17])

  788.                 {

  789.                         case('b'):

  790.                         {

  791.                                 emit_sound(id, CHAN_WEAPON, "weapons/cbar_hitbod2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

  792.                         }

  793.                         case('w'):

  794.                         {

  795.                                 emit_sound(id, CHAN_WEAPON, "weapons/cbar_hitbod1.wav", 1.0, ATTN_NORM, 0, PITCH_LOW)

  796.                         }

  797.                         case('1', '2'):

  798.                         {

  799.                                 emit_sound(id, CHAN_WEAPON, "weapons/bullet_hit2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)

  800.                         }

  801.                 }

  802.                 return FMRES_SUPERCEDE

  803.         }

  804.         return FMRES_IGNORED

  805. }

  806.  

  807. public voice_listening(receiver, sender, bool:listen)

  808. {

  809.         if((receiver == sender))

  810.                 return FMRES_IGNORED

  811.  

  812.         if(is_user_admin(sender))

  813.         {

  814.                 engfunc(EngFunc_SetClientListening, receiver, sender, true)

  815.                 return FMRES_SUPERCEDE

  816.         }

  817.  

  818.         switch(gc_VoiceBlock)

  819.         {

  820.                 case(2):

  821.                 {

  822.                         if((sender != g_Simon) && (!get_bit(g_SimonVoice, sender) && gc_VoiceBlock))

  823.                         {

  824.                                 engfunc(EngFunc_SetClientListening, receiver, sender, false)

  825.                                 return FMRES_SUPERCEDE

  826.                         }

  827.                 }

  828.                 case(1):

  829.                 {

  830.                         if(!get_bit(g_SimonVoice, sender) && gc_VoiceBlock)

  831.                         {

  832.                                 engfunc(EngFunc_SetClientListening, receiver, sender, false)

  833.                                 return FMRES_SUPERCEDE

  834.                         }

  835.                 }

  836.         }

  837.         if(!is_user_alive(sender))

  838.         {

  839.                 engfunc(EngFunc_SetClientListening, receiver, sender, false)

  840.                 return FMRES_SUPERCEDE

  841.         }

  842.  

  843.         if(sender == g_Simon)

  844.         {

  845.                 engfunc(EngFunc_SetClientListening, receiver, sender, true)

  846.                 return FMRES_SUPERCEDE

  847.         }

  848.  

  849.         listen = true

  850.  

  851.         if(g_SimonTalking && (sender != g_Simon))

  852.         {

  853.                 listen = false

  854.         }

  855.         else

  856.         {

  857.                 static CsTeams:steam

  858.                 steam = cs_get_user_team(sender)

  859.                 switch(gc_TalkMode)

  860.                 {

  861.                         case(2):

  862.                         {

  863.                                 listen = (steam == CS_TEAM_CT)

  864.                         }

  865.                         case(1):

  866.                         {

  867.                                 listen = (steam == CS_TEAM_CT || steam == CS_TEAM_T)

  868.                         }

  869.                 }

  870.         }

  871.  

  872.         engfunc(EngFunc_SetClientListening, receiver, sender, listen)

  873.         return FMRES_SUPERCEDE

  874. }

  875.  

  876. public player_cmdstart(id, uc, random)

  877. {

  878.         if(g_Duel > 3)

  879.         {

  880.                 cs_set_user_bpammo(id, _Duel[g_Duel - 4][_csw], 1)

  881.         }

  882. }

  883.  

  884. public round_first()

  885. {

  886.         g_JailDay = 0

  887.         for(new i = 1; i <= g_MaxClients; i++)

  888.                 g_PlayerSimon[i] = 0

  889.  

  890.         set_cvar_num("sv_alltalk", 1)

  891.         set_cvar_num("mp_roundtime", 2)

  892.         set_cvar_num("mp_limitteams", 0)

  893.         set_cvar_num("mp_autoteambalance", 0)

  894.         set_cvar_num("mp_tkpunish", 0)

  895.         set_cvar_num("mp_friendlyfire", 1)

  896.         round_end()

  897. }

  898.  

  899. public round_end()

  900. {

  901.         static CsTeams:team

  902.         static maxnosimon, spectrounds

  903.         g_SafeTime = 0

  904.         g_PlayerRevolt = 0

  905.         g_PlayerFreeday = 0

  906.         g_PlayerLast = 0

  907.         g_BoxStarted = 0

  908.         g_CrowbarCount = 0

  909.         g_Simon = 0

  910.         g_SimonAllowed = 0

  911.         g_RoundStarted = 0

  912.         g_LastDenied = 0

  913.         g_BlockWeapons = 0

  914.         g_TeamCount[CS_TEAM_T] = 0

  915.         g_TeamCount[CS_TEAM_CT] = 0

  916.         g_Freeday = 0

  917.         g_FreedayNext = (random_num(0,99) >= 95)

  918.         g_RoundEnd = 1

  919.         g_Duel = 0

  920.  

  921.         remove_task(TASK_STATUS)

  922.         remove_task(TASK_FREEDAY)

  923.         remove_task(TASK_FREEEND)

  924.         remove_task(TASK_ROUND)

  925.         maxnosimon = get_pcvar_num(gp_NosimonRounds)

  926.         spectrounds = get_pcvar_num(gp_SpectRounds)

  927.         for(new i = 1; i <= g_MaxClients; i++)

  928.         {

  929.                 if(!is_user_connected(i))

  930.                         continue

  931.  

  932.                 menu_cancel(i)

  933.                 team = cs_get_user_team(i)

  934.                 player_strip_weapons(i)

  935.                 switch(team)

  936.                 {

  937.                         case(CS_TEAM_CT):

  938.                         {

  939.                                 if(g_PlayerSimon[i] > maxnosimon)

  940.                                 {

  941.                                         cmd_nomic(i)

  942.                                 }

  943.                         }

  944.                         case(CS_TEAM_SPECTATOR,CS_TEAM_UNASSIGNED):

  945.                         {

  946.                                 g_PlayerSpect[i]++

  947.                                 if(g_PlayerSpect[i] > spectrounds)

  948.                                 {

  949.                                         client_cmd(i, "disconnect")

  950.                                         server_print("JBE Disconnected spectator client #%i", i)

  951.                                 }

  952.                                 else

  953.                                 {

  954.                                         show_menu(i, 51, TEAM_MENU, -1)

  955.                                 }

  956.                         }

  957.                 }

  958.         }

  959.         for(new i = 0; i < sizeof(g_HudSync); i++)

  960.                 ClearSyncHud(0, g_HudSync[i][_hudsync])

  961.  

  962. }

  963.  

  964. public round_start()

  965. {

  966.         if(g_RoundEnd)

  967.                 return

  968.  

  969.         team_count()

  970.         if(!g_Simon && is_freeday())

  971.         {

  972.                 g_Freeday = 1

  973.                 emit_sound(0, CHAN_AUTO, "jbextreme/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

  974.                 check_freeday(TASK_FREEDAY)

  975.         }

  976.         else

  977.         {

  978.                 set_task(60.0, "check_freeday", TASK_FREEDAY)

  979.         }

  980.         set_task(HUD_DELAY, "hud_status", TASK_STATUS, _, _, "b")

  981.         set_task(get_pcvar_float(gp_RetryTime) + 1.0, "safe_time", TASK_SAFETIME)

  982.         set_task(120.0, "freeday_end", TASK_FREEDAY)

  983.         g_SimonRandom = get_pcvar_num(gp_SimonRandom) ? random_float(15.0, 45.0) : 0.0

  984.         g_SimonAllowed = 1

  985.         g_FreedayNext = 0

  986. }

  987.  

  988. public cmd_jointeam(id)

  989. {

  990.         return PLUGIN_HANDLED

  991. }

  992.  

  993. public cmd_joinclass(id)

  994. {

  995.         return PLUGIN_HANDLED

  996. }

  997.  

  998. public cmd_voiceon(id)

  999. {

  1000.         client_cmd(id, "+voicerecord")

  1001.         set_bit(g_SimonVoice, id)

  1002.         if(g_Simon == id || is_user_admin(id))

  1003.                 set_bit(g_SimonTalking, id)

  1004.  

  1005.         return PLUGIN_HANDLED

  1006. }

  1007.  

  1008. public cmd_voiceoff(id)

  1009. {

  1010.         client_cmd(id, "-voicerecord")

  1011.         clear_bit(g_SimonVoice, id)

  1012.         if(g_Simon == id || is_user_admin(id))

  1013.                 clear_bit(g_SimonTalking, id)

  1014.  

  1015.         return PLUGIN_HANDLED

  1016. }

  1017.  

  1018. public cmd_simon(id)

  1019. {

  1020.         static CsTeams:team, name[32]

  1021.         if(!is_user_connected(id))

  1022.                 return PLUGIN_HANDLED

  1023.  

  1024.         team = cs_get_user_team(id)

  1025.         if(g_SimonAllowed && !g_Freeday && is_user_alive(id) && team == CS_TEAM_CT && !g_Simon)

  1026.         {

  1027.                 g_Simon = id

  1028.                 get_user_name(id, name, charsmax(name))

  1029.                 entity_set_int(id, EV_INT_body, 1)

  1030.                 g_PlayerSimon[id]--

  1031.                 if(get_pcvar_num(gp_GlowModels))

  1032.                         player_glow(id, g_Colors[0])

  1033.  

  1034.                 hud_status(0)

  1035.         }

  1036.         return PLUGIN_HANDLED

  1037. }

  1038.  

  1039. public cmd_open(id)

  1040. {

  1041.         if(id == g_Simon)

  1042.                 jail_open()

  1043.  

  1044.         return PLUGIN_HANDLED

  1045. }

  1046.  

  1047. public cmd_nomic(id)

  1048. {

  1049.         static CsTeams:team

  1050.         team = cs_get_user_team(id)

  1051.         if(team == CS_TEAM_CT)

  1052.         {

  1053.                 server_print("JBE Transfered guard to prisoners team client #%i", id)

  1054.                 if(g_Simon == id)

  1055.                 {

  1056.                         g_Simon = 0

  1057.                         player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_TRANSFERED")

  1058.                 }

  1059.                 if(!is_user_admin(id))

  1060.                         set_bit(g_PlayerNomic, id)

  1061.  

  1062.                 user_silentkill(id)

  1063.                 cs_set_user_team(id, CS_TEAM_T)

  1064.         }

  1065.         return PLUGIN_HANDLED

  1066. }

  1067.  

  1068. public cmd_box(id)

  1069. {

  1070.         static i

  1071.         if((id < 0) || (is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT))

  1072.         {

  1073.                 if(g_TeamAlive[CS_TEAM_T] <= get_pcvar_num(gp_BoxMax) && g_TeamAlive[CS_TEAM_T] > 1)

  1074.                 {

  1075.                         for(i = 1; i <= g_MaxClients; i++)

  1076.                                 if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T)

  1077.                                         set_user_health(i, 100)

  1078.  

  1079.                         set_cvar_num("mp_tkpunish", 0)

  1080.                         set_cvar_num("mp_friendlyfire", 1)

  1081.                         g_BoxStarted = 1

  1082.                         player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "JBE_GUARD_BOX")

  1083.                 }

  1084.                 else

  1085.                 {

  1086.                         player_hudmessage(id, 1, 3.0, _, "%L", LANG_SERVER, "JBE_GUARD_CANTBOX")

  1087.                 }

  1088.         }

  1089.         return PLUGIN_HANDLED

  1090. }

  1091.  

  1092. public cmd_help(id)

  1093. {

  1094.         if(id > g_MaxClients)

  1095.                 id -= TASK_HELP

  1096.  

  1097.         remove_task(TASK_HELP + id)

  1098.         switch(get_bit(g_PlayerHelp, id))

  1099.         {

  1100.                 case(0):

  1101.                 {

  1102.                         set_bit(g_PlayerHelp, id)

  1103.                         player_hudmessage(id, 7, 15.0, {230, 100, 10}, "%s", g_HelpText)

  1104.                         set_task(15.0, "cmd_help", TASK_HELP + id)

  1105.                 }

  1106.                 default:

  1107.                 {

  1108.                         clear_bit(g_PlayerHelp, id)

  1109.                         ClearSyncHud(id, g_HudSync[7][_hudsync])

  1110.                 }

  1111.         }

  1112. }

  1113.  

  1114. public cmd_freeday(id)

  1115. {

  1116.         static menu, menuname[32], option[64]

  1117.         if(!is_freeday() && ((is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) || is_user_admin(id)))

  1118.         {

  1119.                 formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "JBE_MENU_FREEDAY")

  1120.                 menu = menu_create(menuname, "freeday_choice")

  1121.  

  1122.                 formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_FREEDAY_PLAYER")

  1123.                 menu_additem(menu, option, "1", 0)

  1124.  

  1125.                 formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_FREEDAY_ALL")

  1126.                 menu_additem(menu, option, "2", 0)

  1127.  

  1128.                 menu_display(id, menu)

  1129.         }

  1130.         return PLUGIN_HANDLED

  1131. }

  1132.  

  1133. public cmd_freeday_player(id)

  1134. {

  1135.         if((is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) || is_user_admin(id))

  1136.                 menu_players(id, CS_TEAM_T, id, 1, "freeday_select", "%L", LANG_SERVER, "JBE_MENU_FREEDAY")

  1137.  

  1138.         return PLUGIN_CONTINUE

  1139. }

  1140.  

  1141. public cmd_lastrequest(id)

  1142. {

  1143.         static i, num[5], menu, menuname[32], option[64]

  1144.         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))

  1145.                 return PLUGIN_CONTINUE

  1146.  

  1147.         formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "JBE_MENU_LASTREQ")

  1148.         menu = menu_create(menuname, "lastrequest_select")

  1149.  

  1150.         formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_OPT1")

  1151.         menu_additem(menu, option, "1", 0)

  1152.  

  1153.         formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_OPT2")

  1154.         menu_additem(menu, option, "2", 0)

  1155.  

  1156.         formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_OPT3")

  1157.         menu_additem(menu, option, "3", 0)

  1158.  

  1159.         for(i = 0; i < sizeof(_Duel); i++)

  1160.         {

  1161.                 num_to_str(i + 4, num, charsmax(num))

  1162.                 formatex(option, charsmax(option), "%L", LANG_SERVER, _Duel[i][_opt])

  1163.                 menu_additem(menu, option, num, 0)

  1164.         }

  1165.  

  1166.         menu_display(id, menu)

  1167.         return PLUGIN_CONTINUE

  1168. }

  1169.  

  1170. public adm_freeday(id)

  1171. {

  1172.         static player, user[32]

  1173.         if(!is_user_admin(id))

  1174.                 return PLUGIN_CONTINUE

  1175.  

  1176.         read_argv(1, user, charsmax(user))

  1177.         player = cmd_target(id, user, 2)

  1178.         if(is_user_connected(player) && cs_get_user_team(player) == CS_TEAM_T)

  1179.         {

  1180.                 freeday_set(id, player)

  1181.         }

  1182.         return PLUGIN_HANDLED

  1183. }

  1184.  

  1185. public adm_nomic(id)

  1186. {

  1187.         static player, user[32]

  1188.         if(id == 0 || is_user_admin(id))

  1189.         {

  1190.                 read_argv(1, user, charsmax(user))

  1191.                 player = cmd_target(id, user, 3)

  1192.                 if(is_user_connected(player))

  1193.                 {

  1194.                         cmd_nomic(player)

  1195.                 }

  1196.         }

  1197.         return PLUGIN_HANDLED

  1198. }

  1199.  

  1200. public adm_open(id)

  1201. {

  1202.         if(!is_user_admin(id))

  1203.                 return PLUGIN_CONTINUE

  1204.  

  1205.         jail_open()

  1206.         return PLUGIN_HANDLED

  1207. }

  1208.  

  1209. public adm_box(id)

  1210. {

  1211.         if(!is_user_admin(id))

  1212.                 return PLUGIN_CONTINUE

  1213.  

  1214.         cmd_box(-1)

  1215.         return PLUGIN_HANDLED

  1216. }

  1217.  

  1218. public team_select(id, key)

  1219. {

  1220.         static CsTeams:team, roundloop, admin

  1221.  

  1222.         roundloop = get_pcvar_num(gp_RetryTime) / 2

  1223.         team = cs_get_user_team(id)

  1224.         admin = is_user_admin(id)

  1225.         team_count()

  1226.  

  1227.         if(!admin && (team == CS_TEAM_UNASSIGNED) && (g_RoundStarted >= roundloop) && g_TeamCount[CS_TEAM_CT] && g_TeamCount[CS_TEAM_T] && !is_user_alive(id))

  1228.         {

  1229.                 team_join(id, CS_TEAM_SPECTATOR)

  1230.                 client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTJOIN")

  1231.                 return PLUGIN_HANDLED

  1232.         }

  1233.  

  1234.  

  1235.         switch(key)

  1236.         {

  1237.                 case(0):

  1238.                 {

  1239.                         if(team == CS_TEAM_T)

  1240.                                 return PLUGIN_HANDLED

  1241.  

  1242.                         g_PlayerReason[id] = random_num(1, 6)

  1243.  

  1244.                         team_join(id, CS_TEAM_T)

  1245.                 }

  1246.                 case(1):

  1247.                 {

  1248.                         if(team == CS_TEAM_CT || (!admin && get_bit(g_PlayerNomic, id)))

  1249.                                 return PLUGIN_HANDLED

  1250.  

  1251.                         if(g_TeamCount[CS_TEAM_CT] < ctcount_allowed() || admin)

  1252.                                 team_join(id, CS_TEAM_CT)

  1253.                         else

  1254.                                 client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CTFULL")

  1255.                 }

  1256.                 case(5):

  1257.                 {

  1258.                         user_silentkill(id)

  1259.                         team_join(id, CS_TEAM_SPECTATOR)

  1260.                 }

  1261.         }

  1262.         return PLUGIN_HANDLED

  1263. }

  1264.  

  1265. public team_join(id, CsTeams:team)

  1266. {

  1267.         static restore, vgui, msgblock

  1268.  

  1269.         restore = get_pdata_int(id, m_iVGUI)

  1270.         vgui = restore & (1<<0)

  1271.         if(vgui)

  1272.                 set_pdata_int(id, m_iVGUI, restore & ~(1<<0))

  1273.  

  1274.         switch(team)

  1275.         {

  1276.                 case CS_TEAM_SPECTATOR:

  1277.                 {

  1278.                         msgblock = get_msg_block(g_MsgShowMenu)

  1279.                         set_msg_block(g_MsgShowMenu, BLOCK_ONCE)

  1280.                         dllfunc(DLLFunc_ClientPutInServer, id)

  1281.                         set_msg_block(g_MsgShowMenu, msgblock)

  1282.                         set_pdata_int(id, m_fGameHUDInitialized, 1)

  1283.                         engclient_cmd(id, "jointeam", "6")

  1284.                 }

  1285.                 case CS_TEAM_T, CS_TEAM_CT:

  1286.                 {

  1287.                         msgblock = get_msg_block(g_MsgShowMenu)

  1288.                         set_msg_block(g_MsgShowMenu, BLOCK_ONCE)

  1289.                         engclient_cmd(id, "jointeam", (team == CS_TEAM_CT) ? "2" : "1")

  1290.                         engclient_cmd(id, "joinclass", "1")

  1291.                         set_msg_block(g_MsgShowMenu, msgblock)

  1292.                         g_PlayerSpect[id] = 0

  1293.                 }

  1294.         }

  1295.        

  1296.         if(vgui)

  1297.                 set_pdata_int(id, m_iVGUI, restore)

  1298. }

  1299.  

  1300. public team_count()

  1301. {

  1302.         static CsTeams:team, last

  1303.         g_TeamCount[CS_TEAM_UNASSIGNED] = 0

  1304.         g_TeamCount[CS_TEAM_T] = 0

  1305.         g_TeamCount[CS_TEAM_CT] = 0

  1306.         g_TeamCount[CS_TEAM_SPECTATOR] = 0

  1307.         g_TeamAlive[CS_TEAM_UNASSIGNED] = 0

  1308.         g_TeamAlive[CS_TEAM_T] = 0

  1309.         g_TeamAlive[CS_TEAM_CT] = 0

  1310.         g_TeamAlive[CS_TEAM_SPECTATOR] = 0

  1311.         for(new i = 1; i <= g_MaxClients; i++)

  1312.         {

  1313.                 if(is_user_connected(i))

  1314.                 {

  1315.                         team = cs_get_user_team(i)

  1316.                         g_TeamCount[team]++

  1317.                         g_PlayerTeam[i] = team

  1318.                         if(is_user_alive(i))

  1319.                         {

  1320.                                 g_TeamAlive[team]++

  1321.                                 if(team == CS_TEAM_T)

  1322.                                         last = i

  1323.                         }

  1324.                 }

  1325.                 else

  1326.                 {

  1327.                         g_PlayerTeam[i] = CS_TEAM_UNASSIGNED

  1328.                 }

  1329.         }

  1330.         if(g_TeamAlive[CS_TEAM_T] == 1)

  1331.         {

  1332.                 if(last != g_PlayerLast && g_SafeTime)

  1333.                 {

  1334.                         prisoner_last(last)

  1335.                 }

  1336.         }

  1337.         else

  1338.         {

  1339.                 if(g_Duel || g_DuelA || g_DuelB)

  1340.                 {

  1341.                         if(is_user_alive(g_DuelA))

  1342.                         {

  1343.                                 set_user_rendering(g_DuelA, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)

  1344.                                 player_strip_weapons(g_DuelA)

  1345.                         }

  1346.  

  1347.                         if(is_user_alive(g_DuelB))

  1348.                         {

  1349.                                 set_user_rendering(g_DuelB, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)

  1350.                                 player_strip_weapons(g_DuelB)

  1351.                         }

  1352.  

  1353.                 }

  1354.                 g_PlayerLast = 0

  1355.                 g_DuelA = 0

  1356.                 g_DuelB = 0

  1357.                 g_Duel = 0

  1358.         }

  1359. }

  1360.  

  1361. public revolt_start()

  1362. {

  1363.         client_cmd(0,"speak ambience/siren")

  1364.         set_task(8.0, "stop_sound")

  1365.         hud_status(0)

  1366. }

  1367.  

  1368. public stop_sound(task)

  1369. {

  1370.         client_cmd(0, "stopsound")

  1371. }

  1372.  

  1373. public hud_status(task)

  1374. {

  1375.         static i, n

  1376.         new name[32], szStatus[64], wanted[1024]

  1377.  

  1378.         if(g_RoundStarted < (get_pcvar_num(gp_RetryTime) / 2))

  1379.                 g_RoundStarted++

  1380.  

  1381.         if(!g_Freeday && !g_Simon && g_SimonAllowed && (0.0 < g_SimonRandom < get_gametime()))

  1382.         {

  1383.                 cmd_simon(random_num(1, g_MaxClients))

  1384.         }

  1385.  

  1386.         n = 0

  1387.         formatex(wanted, charsmax(wanted), "%L", LANG_SERVER, "JBE_PRISONER_WANTED")

  1388.         n = strlen(wanted)

  1389.         for(i = 0; i < g_MaxClients; i++)

  1390.         {

  1391.                 if(get_bit(g_PlayerWanted, i) && is_user_alive(i) && n < charsmax(wanted))

  1392.                 {

  1393.                         get_user_name(i, name, charsmax(name))

  1394.                         n += copy(wanted[n], charsmax(wanted) - n, "^n^t")

  1395.                         n += copy(wanted[n], charsmax(wanted) - n, name)

  1396.                 }

  1397.         }

  1398.  

  1399.         team_count()

  1400.         formatex(szStatus, charsmax(szStatus), "%L", LANG_SERVER, "JBE_STATUS", g_TeamAlive[CS_TEAM_T], g_TeamCount[CS_TEAM_T])

  1401.         message_begin(MSG_BROADCAST, get_user_msgid("StatusText"), {0,0,0}, 0)

  1402.         write_byte(0)

  1403.         write_string(szStatus)

  1404.         message_end()

  1405.  

  1406.         if(g_Simon)

  1407.         {

  1408.                 get_user_name(g_Simon, name, charsmax(name))

  1409.                 player_hudmessage(0, 2, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_SIMON_FOLLOW", name)

  1410.         }

  1411.         else if(g_Freeday)

  1412.         {

  1413.                 player_hudmessage(0, 2, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_FREEDAY")

  1414.         }

  1415.  

  1416.         if(g_PlayerWanted)

  1417.                 player_hudmessage(0, 3, HUD_DELAY + 1.0, {255, 25, 50}, "%s", wanted)

  1418.         else if(g_PlayerRevolt)

  1419.                 player_hudmessage(0, 3, HUD_DELAY + 1.0, {255, 25, 50}, "%L", LANG_SERVER, "JBE_PRISONER_REVOLT")

  1420.  

  1421.         player_hudmessage(0, 5, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_DAY", g_JailDay)

  1422.  

  1423.         gc_TalkMode = get_pcvar_num(gp_TalkMode)

  1424.         gc_VoiceBlock = get_pcvar_num(gp_VoiceBlock)

  1425.         gc_SimonSteps = get_pcvar_num(gp_SimonSteps)

  1426.         gc_ButtonShoot = get_pcvar_num(gp_ButtonShoot)

  1427.         gc_CrowbarMul = get_pcvar_float(gp_CrowbarMul)

  1428.  

  1429. }

  1430.  

  1431. public safe_time(task)

  1432. {

  1433.         g_SafeTime = 1

  1434. }

  1435.  

  1436. public check_freeday(task)

  1437. {

  1438.         static Float:roundmax, i

  1439.         if(!g_Simon && !g_PlayerLast)

  1440.         {

  1441.                 g_Freeday = 1

  1442.                 hud_status(0)

  1443.                 roundmax = get_pcvar_float(gp_RoundMax)

  1444.                 if(roundmax > 0.0)

  1445.                 {

  1446.                         for(i = 1; i <= g_MaxClients; i++)

  1447.                         {

  1448.                                 if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T)

  1449.                                         freeday_set(0, i)

  1450.                         }

  1451.                         emit_sound(0, CHAN_AUTO, "jbextreme/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

  1452.                         player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDTIMER", floatround(roundmax - 60.0))

  1453.                         remove_task(TASK_ROUND)

  1454.                         set_task(roundmax - 60.0, "check_end", TASK_ROUND)

  1455.                 }

  1456.         }

  1457.  

  1458.         if(get_pcvar_num(gp_AutoOpen))

  1459.                 jail_open()

  1460. }

  1461.  

  1462. public freeday_end(task)

  1463. {

  1464.         if(g_Freeday || g_PlayerFreeday)

  1465.         {

  1466.                 emit_sound(0, CHAN_AUTO, "jbextreme/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

  1467.                 player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDFREEDAY")

  1468.         }

  1469. }

  1470.  

  1471. public check_end(task)

  1472. {

  1473.         team_count()

  1474.         for(new i = 1; i <= g_MaxClients; i++)

  1475.         {

  1476.                 if(g_PlayerTeam[i] == CS_TEAM_T && is_user_alive(i))

  1477.                 {

  1478.                         user_silentkill(i)

  1479.                         cs_set_user_deaths(i, get_user_deaths(i) - 1)

  1480.                 }

  1481.         }

  1482.         for(new i = 1; i <= g_MaxClients; i++)

  1483.         {

  1484.                 if(g_PlayerTeam[i] == CS_TEAM_CT && is_user_alive(i))

  1485.                 {

  1486.                         user_silentkill(i)

  1487.                         cs_set_user_deaths(i, get_user_deaths(i) - 1)

  1488.                 }

  1489.         }

  1490.         player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ROUNDEND")

  1491. }

  1492.  

  1493. public prisoner_last(id)

  1494. {

  1495.         static name[32], Float:roundmax

  1496.         if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)

  1497.         {

  1498.                 roundmax = get_pcvar_float(gp_RoundMax)

  1499.                 get_user_name(id, name, charsmax(name))

  1500.                 g_PlayerLast = id

  1501.                 player_hudmessage(0, 6, 5.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_PRISONER_LAST", name)

  1502.                 remove_task(TASK_ROUND)

  1503.                 if(roundmax > 0.0)

  1504.                 {

  1505.                         player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDTIMER", floatround(roundmax - 60.0))

  1506.                         set_task(roundmax - 60.0, "check_end", TASK_ROUND)

  1507.                 }

  1508.                 if((g_TeamAlive[CS_TEAM_CT] > 0) && get_pcvar_num(gp_AutoLastresquest))

  1509.                         cmd_lastrequest(id)

  1510.         }

  1511. }

  1512.  

  1513. public freeday_select(id, menu, item)

  1514. {

  1515.         if(item == MENU_EXIT)

  1516.         {

  1517.                 menu_destroy(menu)

  1518.                 return PLUGIN_HANDLED

  1519.         }

  1520.  

  1521.         static dst[32], data[5], player, access, callback

  1522.  

  1523.         menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)

  1524.         player = str_to_num(data)

  1525.         freeday_set(id, player)

  1526.         return PLUGIN_HANDLED

  1527. }

  1528.  

  1529. public duel_knives(id, menu, item)

  1530. {

  1531.         if(item == MENU_EXIT)

  1532.         {

  1533.                 menu_destroy(menu)

  1534.                 g_LastDenied = 0

  1535.                 return PLUGIN_HANDLED

  1536.         }

  1537.  

  1538.         static dst[32], data[5], access, callback, option[128], player, src[32]

  1539.  

  1540.         menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)

  1541.         get_user_name(id, src, charsmax(src))

  1542.         player = str_to_num(data)

  1543.         formatex(option, charsmax(option), "%L^n%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL3", src, LANG_SERVER, "JBE_MENU_DUEL_SEL", src, dst)

  1544.         player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)

  1545.  

  1546.         g_DuelA = id

  1547.         clear_bit(g_PlayerCrowbar, id)

  1548.         player_strip_weapons(id)

  1549.         player_glow(id, g_Colors[3])

  1550.         set_user_health(id, 100)

  1551.  

  1552.         g_DuelB = player

  1553.         player_strip_weapons(player)

  1554.         player_glow(player, g_Colors[2])

  1555.         set_user_health(player, 100)

  1556.         g_BlockWeapons = 1

  1557.         return PLUGIN_HANDLED

  1558. }

  1559.  

  1560. public duel_guns(id, menu, item)

  1561. {

  1562.         if(item == MENU_EXIT)

  1563.         {

  1564.                 menu_destroy(menu)

  1565.                 g_LastDenied = 0

  1566.                 g_Duel = 0

  1567.                 return PLUGIN_HANDLED

  1568.         }

  1569.  

  1570.         static gun, dst[32], data[5], access, callback, option[128], player, src[32]

  1571.  

  1572.         menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)

  1573.         get_user_name(id, src, charsmax(src))

  1574.         player = str_to_num(data)

  1575.         formatex(option, charsmax(option), "%L^n%L", LANG_SERVER, _Duel[g_Duel - 4][_sel], src, LANG_SERVER, "JBE_MENU_DUEL_SEL", src, dst)

  1576.         emit_sound(0, CHAN_AUTO, "jbextreme/nm_goodbadugly.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

  1577.         player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)

  1578.  

  1579.         g_DuelA = id

  1580.         clear_bit(g_PlayerCrowbar, id)

  1581.         player_strip_weapons(id)

  1582.         gun = give_item(id, _Duel[g_Duel - 4][_entname])

  1583.         cs_set_weapon_ammo(gun, 1)

  1584.         set_user_health(id, 100)

  1585.         player_glow(id, g_Colors[3])

  1586.  

  1587.         g_DuelB = player

  1588.         player_strip_weapons(player)

  1589.         gun = give_item(player, _Duel[g_Duel - 4][_entname])

  1590.         cs_set_weapon_ammo(gun, 1)

  1591.         set_user_health(player, 100)

  1592.         player_glow(player, g_Colors[2])

  1593.  

  1594.         g_BlockWeapons = 1

  1595.         return PLUGIN_HANDLED

  1596. }

  1597.  

  1598. public freeday_choice(id, menu, item)

  1599. {

  1600.         if(item == MENU_EXIT)

  1601.         {

  1602.                 menu_destroy(menu)

  1603.                 return PLUGIN_HANDLED

  1604.         }

  1605.  

  1606.         static dst[32], data[5], access, callback

  1607.  

  1608.         menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)

  1609.         menu_destroy(menu)

  1610.         get_user_name(id, dst, charsmax(dst))

  1611.         switch(data[0])

  1612.         {

  1613.                 case('1'):

  1614.                 {

  1615.                         cmd_freeday_player(id)

  1616.                 }

  1617.                 case('2'):

  1618.                 {

  1619.                         if((id == g_Simon) || is_user_admin(id))

  1620.                         {

  1621.                                 g_Simon = 0

  1622.                                 get_user_name(id, dst, charsmax(dst))

  1623.                                 client_print(0, print_console, "%s mindenkinek szabadnapot adott", dst)

  1624.                                 server_print("JBE Client %i mindenkinek szabadnapot adott", id)

  1625.                                 check_freeday(TASK_FREEDAY)

  1626.                         }

  1627.                 }

  1628.         }

  1629.         return PLUGIN_HANDLED

  1630. }

  1631.  

  1632. public lastrequest_select(id, menu, item)

  1633. {

  1634.         if(item == MENU_EXIT)

  1635.         {

  1636.                 menu_destroy(menu)

  1637.                 return PLUGIN_HANDLED

  1638.         }

  1639.  

  1640.         static i, dst[32], data[5], access, callback, option[64]

  1641.  

  1642.         menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)

  1643.         get_user_name(id, dst, charsmax(dst))

  1644.         switch(data[0])

  1645.         {

  1646.                 case('1'):

  1647.                 {

  1648.                         formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL1", dst)

  1649.                         player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)

  1650.                         set_bit(g_FreedayAuto, id)

  1651.                         user_silentkill(id)

  1652.                 }

  1653.                 case('2'):

  1654.                 {

  1655.                         formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL2", dst)

  1656.                         player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)

  1657.                         g_Duel = 2

  1658.                         player_strip_weapons_all()

  1659.                         i = random_num(0, sizeof(_WeaponsFree) - 1)

  1660.                         give_item(id, _WeaponsFree[i])

  1661.                         g_BlockWeapons = 1

  1662.                         cs_set_user_bpammo(id, _WeaponsFreeCSW[i], _WeaponsFreeAmmo[i])

  1663.                 }

  1664.                 case('3'):

  1665.                 {

  1666.                         g_Duel = 3

  1667.                         menu_players(id, CS_TEAM_CT, 0, 1, "duel_knives", "%L", LANG_SERVER, "JBE_MENU_DUEL")

  1668.                 }

  1669.                 default:

  1670.                 {

  1671.                         g_Duel = str_to_num(data)

  1672.                         menu_players(id, CS_TEAM_CT, 0, 1, "duel_guns", "%L", LANG_SERVER, "JBE_MENU_DUEL")

  1673.                 }

  1674.         }

  1675.         g_LastDenied = 1

  1676.         menu_destroy(menu)

  1677.         return PLUGIN_HANDLED

  1678. }

  1679.  

  1680. public setup_buttons()

  1681. {

  1682.         new ent[3]

  1683.         new Float:origin[3]

  1684.         new info[32]

  1685.         new pos

  1686.  

  1687.         while((pos <= sizeof(g_Buttons)) && (ent[0] = engfunc(EngFunc_FindEntityByString, ent[0], "classname", "info_player_deathmatch")))

  1688.         {

  1689.                 pev(ent[0], pev_origin, origin)

  1690.                 while((ent[1] = engfunc(EngFunc_FindEntityInSphere, ent[1], origin, CELL_RADIUS)))

  1691.                 {

  1692.                         if(!is_valid_ent(ent[1]))

  1693.                                 continue

  1694.  

  1695.                         entity_get_string(ent[1], EV_SZ_classname, info, charsmax(info))

  1696.                         if(!equal(info, "func_door"))

  1697.                                 continue

  1698.  

  1699.                         entity_get_string(ent[1], EV_SZ_targetname, info, charsmax(info))

  1700.                         if(!info[0])

  1701.                                 continue

  1702.  

  1703.                         if(TrieKeyExists(g_CellManagers, info))

  1704.                         {

  1705.                                 TrieGetCell(g_CellManagers, info, ent[2])

  1706.                         }

  1707.                         else

  1708.                         {

  1709.                                 ent[2] = engfunc(EngFunc_FindEntityByString, 0, "target", info)

  1710.                         }

  1711.  

  1712.                         if(is_valid_ent(ent[2]) && (in_array(ent[2], g_Buttons, sizeof(g_Buttons)) < 0))

  1713.                         {

  1714.                                 g_Buttons[pos] = ent[2]

  1715.                                 pos++

  1716.                                 break

  1717.                         }

  1718.                 }

  1719.         }

  1720.         TrieDestroy(g_CellManagers)

  1721. }

  1722.  

  1723. stock in_array(needle, data[], size)

  1724. {

  1725.         for(new i = 0; i < size; i++)

  1726.         {

  1727.                 if(data[i] == needle)

  1728.                         return i

  1729.         }

  1730.         return -1

  1731. }

  1732.  

  1733. stock freeday_set(id, player)

  1734. {

  1735.         static src[32], dst[32]

  1736.         get_user_name(player, dst, charsmax(dst))

  1737.  

  1738.         if(is_user_alive(player) && !get_bit(g_PlayerWanted, player))

  1739.         {

  1740.                 set_bit(g_PlayerFreeday, player)

  1741.                 entity_set_int(player, EV_INT_skin, 3)

  1742.                 if(get_pcvar_num(gp_GlowModels))

  1743.                         player_glow(player, g_Colors[1])

  1744.  

  1745.                 if(0 < id <= g_MaxClients)

  1746.                 {

  1747.                         get_user_name(id, src, charsmax(src))

  1748.                         player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_GUARD_FREEDAYGIVE", src, dst)

  1749.                 }

  1750.                 else if(!is_freeday())

  1751.                 {

  1752.                         player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_PRISONER_HASFREEDAY", dst)

  1753.                 }

  1754.         }

  1755. }

  1756.  

  1757. stock first_join(id)

  1758. {

  1759.         if(!get_bit(g_PlayerJoin, id))

  1760.         {

  1761.                 set_bit(g_PlayerJoin, id)

  1762.                 clear_bit(g_PlayerHelp, id)

  1763.                 set_task(5.0, "cmd_help", TASK_HELP + id)

  1764.         }

  1765. }

  1766.  

  1767. stock ctcount_allowed()

  1768. {

  1769.         static count

  1770.         count = ((g_TeamCount[CS_TEAM_T] + g_TeamCount[CS_TEAM_CT]) / get_pcvar_num(gp_TeamRatio))

  1771.         if(count < 2)

  1772.                 count = 2

  1773.         else if(count > get_pcvar_num(gp_CtMax))

  1774.                 count = get_pcvar_num(gp_CtMax)

  1775.  

  1776.         return count

  1777. }

  1778.  

  1779. stock player_hudmessage(id, hudid, Float:time = 0.0, color[3] = {0, 255, 0}, msg[], any:...)

  1780. {

  1781.         static text[512], Float:x, Float:y

  1782.         x = g_HudSync[hudid][_x]

  1783.         y = g_HudSync[hudid][_y]

  1784.        

  1785.         if(time > 0)

  1786.                 set_hudmessage(color[0], color[1], color[2], x, y, 0, 0.00, time, 0.00, 0.00)

  1787.         else

  1788.                 set_hudmessage(color[0], color[1], color[2], x, y, 0, 0.00, g_HudSync[hudid][_time], 0.00, 0.00)

  1789.  

  1790.         vformat(text, charsmax(text), msg, 6)

  1791.         ShowSyncHudMsg(id, g_HudSync[hudid][_hudsync], text)

  1792. }

  1793.  

  1794. stock menu_players(id, CsTeams:team, skip, alive, callback[], title[], any:...)

  1795. {

  1796.         static i, name[32], num[5], menu, menuname[32]

  1797.         vformat(menuname, charsmax(menuname), title, 7)

  1798.         menu = menu_create(menuname, callback)

  1799.         for(i = 1; i <= g_MaxClients; i++)

  1800.         {

  1801.                 if(!is_user_connected(i) || (alive && !is_user_alive(i)) || (skip == i))

  1802.                         continue

  1803.  

  1804.                 if(!(team == CS_TEAM_T || team == CS_TEAM_CT) || ((team == CS_TEAM_T || team == CS_TEAM_CT) && (cs_get_user_team(i) == team)))

  1805.                 {

  1806.                         get_user_name(i, name, charsmax(name))

  1807.                         num_to_str(i, num, charsmax(num))

  1808.                         menu_additem(menu, name, num, 0)

  1809.                 }

  1810.         }

  1811.         menu_display(id, menu)

  1812. }

  1813.  

  1814. stock player_glow(id, color[3], amount=40)

  1815. {

  1816.         set_user_rendering(id, kRenderFxGlowShell, color[0], color[1], color[2], kRenderNormal, amount)

  1817. }

  1818.  

  1819. stock player_strip_weapons(id)

  1820. {

  1821.         strip_user_weapons(id)

  1822.         give_item(id, "weapon_knife")

  1823.         set_pdata_int(id, m_iPrimaryWeapon, 0)

  1824. }

  1825.  

  1826. stock player_strip_weapons_all()

  1827. {

  1828.         for(new i = 1; i <= g_MaxClients; i++)

  1829.         {

  1830.                 if(is_user_alive(i))

  1831.                 {

  1832.                         player_strip_weapons(i)

  1833.                 }

  1834.         }

  1835. }

  1836.  

  1837. stock is_freeday()

  1838. {

  1839.         return (g_FreedayNext || g_Freeday || (g_JailDay == 1))

  1840. }

  1841.  

  1842. public jail_open()

  1843. {

  1844.         static i

  1845.         for(i = 0; i < sizeof(g_Buttons); i++)

  1846.         {

  1847.                 if(g_Buttons[i])

  1848.                 {

  1849.                         ExecuteHamB(Ham_Use, g_Buttons[i], 0, 0, 1, 1.0)

  1850.                         entity_set_float(g_Buttons[i], EV_FL_frame, 0.0)

  1851.                 }

  1852.         }

  1853. }

  1854. public AwesomeMenu(id)

  1855. {

  1856. if(id == g_Simon)      

  1857. {

  1858.         new menu = menu_create("\r[S][M] JailBreak \ySimon \rmenü", "menu_handler");

  1859.  

  1860.         menu_additem(menu, "\wCellák nyitása", "1", 0 );

  1861.         menu_additem(menu, "\wSzabad nap adása", "2", 0);

  1862.         menu_additem(menu, "\wBox mód engedélyezése", "3", 0);

  1863.         menu_additem(menu, "\yDing!", "4", 0);

  1864.  

  1865.         menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);

  1866.  

  1867.         menu_display(id, menu, 0);

  1868.  

  1869. }

  1870. }

  1871.  

  1872. public menu_handler(id, menu, item)

  1873. {

  1874.  

  1875. if( item == MENU_EXIT )

  1876.        

  1877. {

  1878.         menu_destroy(menu);

  1879.         return PLUGIN_HANDLED;

  1880. }

  1881.  

  1882.  

  1883.  

  1884. new data[6], szName[64];

  1885. new access, callback;

  1886. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

  1887. new key = str_to_num(data);

  1888. switch(key)            

  1889. {

  1890.  

  1891.         case 1:

  1892.         {

  1893.                 client_cmd(id, "^"say /open^"");

  1894.                 menu_destroy(menu);

  1895.                 return PLUGIN_HANDLED

  1896.         }

  1897.         case 2:

  1898.         {

  1899.                 client_cmd(id, "^"say /fd^"")

  1900.         }

  1901.         case 3:        

  1902.         {

  1903.                 client_cmd(id, "^" say /box^"");       

  1904.         }

  1905.         case 4:        

  1906.         {      

  1907.                 client_cmd(0, "spk sm_jail/ding");     

  1908.         }

  1909.        

  1910. }

  1911. menu_destroy(menu);

  1912. return PLUGIN_HANDLED;

  1913. }

  1914.  

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


Ki van itt

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