Advertisement
DecaK

Untitled

Apr 3rd, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 292.17 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <fun>
  4. #include <engine>
  5. #include <hamsandwich>
  6.  
  7. #pragma semicolon 1
  8.  
  9. /*===== -> ??????? -> =====*///{
  10.  
  11. #define jbe_is_user_valid(%0) (%0 && %0 <= g_iMaxPlayers)
  12. #define MAX_PLAYERS 32
  13. #define IUSER1_DOOR_KEY 376027
  14. #define IUSER1_BUYZONE_KEY 140658
  15. #define IUSER1_FROSTNADE_KEY 235876
  16.  
  17. /* -> ??? ???? -> */
  18. #define SetBit(%0,%1) ((%0) |= (1 << (%1)))
  19. #define ClearBit(%0,%1) ((%0) &= ~(1 << (%1)))
  20. #define IsSetBit(%0,%1) ((%0) & (1 << (%1)))
  21. #define InvertBit(%0,%1) ((%0) ^= (1 << (%1)))
  22. #define IsNotSetBit(%0,%1) (~(%0) & (1 << (%1)))
  23.  
  24. /* -> ??????? -> */
  25. #define linux_diff_weapon 4
  26. #define linux_diff_animating 4
  27. #define linux_diff_player 5
  28. #define ACT_RANGE_ATTACK1 28
  29. #define m_flFrameRate 36
  30. #define m_flGroundSpeed 37
  31. #define m_flLastEventCheck 38
  32. #define m_fSequenceFinished 39
  33. #define m_fSequenceLoops 40
  34. #define m_pPlayer 41
  35. #define m_flNextSecondaryAttack 47
  36. #define m_iClip 51
  37. #define m_Activity 73
  38. #define m_IdealActivity 74
  39. #define m_LastHitGroup 75
  40. #define m_flNextAttack 83
  41. #define m_bloodColor 89
  42. #define m_iPlayerTeam 114
  43. #define m_fHasPrimary 116
  44. #define m_bHasChangeTeamThisRound 125
  45. #define m_flLastAttackTime 220
  46. #define m_afButtonPressed 246
  47. #define m_iHideHUD 361
  48. #define m_iClientHideHUD 362
  49. #define m_iSpawnCount 365
  50. #define m_pActiveItem 373
  51. #define m_flNextDecalTime 486
  52. #define g_szModelIndexPlayer 491
  53.  
  54. /* -> ?????? -> */
  55. #define TASK_ROUND_END 486787
  56. #define TASK_CHANGE_MODEL 367678
  57. #define TASK_SHOW_INFORMER 769784
  58. #define TASK_FREE_DAY_ENDED 675754
  59. #define TASK_CHIEF_CHOICE_TIME 867475
  60. #define TASK_COUNT_DOWN_TIMER 645876
  61. #define TASK_VOTE_DAY_MODE_TIMER 856365
  62. #define TASK_RESTART_GAME_TIMER 126554
  63. #define TASK_DAY_MODE_TIMER 783456
  64. #define TASK_SHOW_SOCCER_SCORE 756356
  65. #define TASK_INVISIBLE_HAT 254367
  66. #define TASK_REMOVE_SYRINGE 567989
  67. #define TASK_FROSTNADE_DEFROST 645864
  68. #define TASK_DUEL_COUNT_DOWN 567658
  69. #define TASK_DUEL_BEAMCYLINDER 857576
  70. #define TASK_DUEL_TIMER_ATTACK 735756
  71. #define TASK_HOOK_THINK 865367
  72.  
  73. /* -> ??????? ????????? -> */
  74. #define MsgId_CurWeapon 66
  75. #define MsgId_SayText 76
  76. #define MsgId_TextMsg 77
  77. #define MsgId_ResetHUD 79
  78. #define MsgId_ShowMenu 96
  79. #define MsgId_ScreenShake 97
  80. #define MsgId_ScreenFade 98
  81. #define MsgId_SendAudio 100
  82. #define MsgId_Money 102
  83. #define MsgId_StatusText 106
  84. #define MsgId_VGUIMenu 114
  85. #define MsgId_ClCorpse 122
  86. #define MsgId_HudTextArgs 145
  87.  
  88. /* -> ??????? ??????? -> */
  89. #define PRISONER 0
  90. #define GUARD 1
  91. #define CHIEF 2
  92. #define FOOTBALLER 3
  93.  
  94. /* -> ??????? ????????? ???????? ??? ?????? -> */
  95. #define SHARPENING 0
  96. #define SCREWDRIVER 1
  97. #define BALISONG 2
  98. #define GLOCK18 3
  99. #define USP 4
  100. #define DEAGLE 5
  101. #define LATCHKEY 6
  102. #define FLASHBANG 7
  103. #define KOKAIN 8
  104. #define STIMULATOR 9
  105. #define FROSTNADE 10
  106. #define INVISIBLE_HAT 11
  107. #define ARMOR 12
  108. #define CLOTHING_GUARD 13
  109. #define HEGRENADE 14
  110. #define HING_JUMP 15
  111. #define FAST_RUN 16
  112. #define DOUBLE_JUMP 17
  113. #define RANDOM_GLOW 18
  114. #define AUTO_BHOP 19
  115. #define DOUBLE_DAMAGE 20
  116. #define LOW_GRAVITY 21
  117. #define CLOSE_CASE 22
  118. #define FREE_DAY_SHOP 23
  119. #define RESOLUTION_VOICE 24
  120. #define TRANSFER_GUARD 25
  121. #define LOTTERY_TICKET 26
  122. #define PRANK_PRISONER 27
  123. #define STIMULATOR_GR 28
  124. #define RANDOM_GLOW_GR 29
  125. #define LOTTERY_TICKET_GR 30
  126. #define KOKAIN_GR 31
  127. #define DOUBLE_JUMP_GR 32
  128. #define FAST_RUN_GR 33
  129. #define LOW_GRAVITY_GR 34
  130.  
  131. /* -> ??????? ????? ???????? ??? ?????? -> */
  132. #define FREE_DAY_ID 0
  133. #define FREE_DAY_ALL 1
  134. #define TEAM_BALANCE 2
  135. #define DAY_MODE_VOTE_TIME 3
  136. #define RESTART_GAME_TIME 4
  137. #define RIOT_START_MODEY 5
  138. #define KILLED_GUARD_MODEY 6
  139. #define KILLED_CHIEF_MODEY 7
  140. #define ROUND_FREE_MODEY 8
  141. #define ROUND_ALIVE_MODEY 9
  142. #define LAST_PRISONER_MODEY 10
  143. #define VIP_RESPAWN_NUM 11
  144. #define VIP_HEALTH_NUM 12
  145. #define VIP_MONEY_NUM 13
  146. #define VIP_MONEY_ROUND 14
  147. #define VIP_INVISIBLE 15
  148. #define VIP_HP_AP_ROUND 16
  149. #define VIP_VOICE_ROUND 17
  150. #define VIP_DISCOUNT_SHOP 18
  151. #define ADMIN_RESPAWN_NUM 19
  152. #define ADMIN_HEALTH_NUM 20
  153. #define ADMIN_MONEY_NUM 21
  154. #define ADMIN_MONEY_ROUND 22
  155. #define ADMIN_GOD_ROUND 23
  156. #define ADMIN_FOOTSTEPS_ROUND 24
  157. #define ADMIN_DISCOUNT_SHOP 25
  158. #define RESPAWN_PLAYER_NUM 26
  159. /*===== <- ??????? <- =====*///}
  160.  
  161. /*===== -> ????????, ?????????? ? ??????? ??? ?????? ? ????? -> =====*///{
  162.  
  163. /* -> ?????????? -> */
  164. new g_bRoundEnd = false, g_iFakeMetaKeyValue, g_iFakeMetaSpawn, g_iFakeMetaUpdateClientData, g_iSyncMainInformer,
  165. g_iSyncSoccerScore, g_iSyncStatusText, g_iSyncDuelInformer, g_iMaxPlayers, g_iFriendlyFire, g_iCountDown,
  166. bool:g_bRestartGame = true, Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;
  167.  
  168. /* -> ????????? ??? ??????? -> */
  169. new g_pModelGlass;
  170.  
  171. /* -> ????????? ??? ???????? -> */
  172. new g_pSpriteWave, g_pSpriteBeam, g_pSpriteBall, g_pSpriteDuelRed, g_pSpriteDuelBlue, g_pSpriteLgtning, g_pSpriteRicho2;
  173.  
  174. /* -> ??????? -> */
  175. new g_iPlayersNum[4], g_iAlivePlayersNum[4], Trie:g_tRemoveEntities;
  176.  
  177. /* -> ??????? ??? ?????? -> */
  178. new g_szPlayerModel[4][16], g_iShopCvars[35], g_iAllCvars[27];
  179.  
  180. /* -> ?????????? ? ??????? ??? ???? ? ???? ?????? -> */
  181. new g_iDay, g_iDayWeek;
  182. new const g_szDaysWeek[][] =
  183. {
  184. "JBE_HUD_DAY_WEEK_0",
  185. "JBE_HUD_DAY_WEEK_1",
  186. "JBE_HUD_DAY_WEEK_2",
  187. "JBE_HUD_DAY_WEEK_3",
  188. "JBE_HUD_DAY_WEEK_4",
  189. "JBE_HUD_DAY_WEEK_5",
  190. "JBE_HUD_DAY_WEEK_6",
  191. "JBE_HUD_DAY_WEEK_7"
  192. };
  193.  
  194. /* -> ????????, ?????????? ? ??????? ??? ??????? ???? -> */
  195. enum _:DATA_DAY_MODE
  196. {
  197. LANG_MODE[32],
  198. MODE_BLOCKED,
  199. VOTES_NUM,
  200. MODE_TIMER,
  201. MODE_BLOCK_DAYS
  202. }
  203. new Array:g_aDataDayMode, g_iDayModeListSize, g_iDayModeVoteTime, g_iHookDayModeStart, g_iHookDayModeEnded, g_iReturnDayMode,
  204. g_iDayMode, g_szDayMode[32] = "JBE_HUD_GAME_MODE_0", g_iDayModeTimer, g_szDayModeTimer[6] = "", g_iVoteDayMode = -1,
  205. g_iBitUserVoteDayMode, g_iBitUserDayModeVoted;
  206.  
  207. /* -> ?????????? ? ??????? ??? ?????? ? ???????? -> */
  208. new bool:g_bDoorStatus, Array:g_aDoorList, g_iDoorListSize, Trie:g_tButtonList;
  209.  
  210. /* -> ??????? ??? ?????? ? ????????? 'hamsandwich' -> */
  211. new const g_szHamHookEntityBlock[][] =
  212. {
  213. "func_vehicle", // ??????????? ??????
  214. "func_tracktrain", // ??????????? ?????
  215. "func_tank", // ??????????? ?????
  216. "game_player_hurt", // ??? ????????? ??????? ?????? ???????????
  217. "func_recharge", // ?????????? ?????? ???????????
  218. "func_healthcharger", // ?????????? ????????? ????????
  219. "game_player_equip", // ?????? ??????
  220. "player_weaponstrip", // ???????? ??? ??????
  221. "func_button", // ??????
  222. "trigger_hurt", // ??????? ?????? ???????????
  223. "trigger_gravity", // ????????????? ?????? ???? ??????????
  224. "armoury_entity", // ?????? ??????? ?? ?????, ??????, ????? ??? ???????
  225. "weaponbox", // ?????? ??????????? ???????
  226. "weapon_shield" // ???
  227. };
  228. new HamHook:g_iHamHookForwards[14];
  229.  
  230. enum _:DATA_ROUND_SOUND
  231. {
  232. FILE_NAME[32],
  233. TRACK_NAME[64]
  234. }
  235. new Array:g_aDataRoundSound, g_iRoundSoundSize;
  236. /*===== <- ?????????? ? ??????? ??? ?????? ? ????? <- =====*///}
  237.  
  238. /*===== -> ????????, ?????????? ? ??????? ??? ?????? ? ???????? -> =====*///{
  239.  
  240. /* -> ???????? -> */
  241. new g_iBitUserConnected, g_iBitUserAlive, g_iBitUserVoice, g_iBitUserVoiceNextRound, g_iBitUserModel, g_iBitBlockMenu,
  242. g_iBitKilledUsers[MAX_PLAYERS + 1], g_iBitUserVip, g_iBitUserAdmin, g_iBitUserSuperAdmin, g_iBitUserHook,
  243. g_iBitUserRoundSound, g_iBitUserBlockedGuard;
  244.  
  245. /* -> ?????????? -> */
  246. new g_iLastPnId;
  247.  
  248. /* -> ??????? -> */
  249. new g_iUserTeam[MAX_PLAYERS + 1], g_iUserSkin[MAX_PLAYERS + 1], g_iUserMoney[MAX_PLAYERS + 1], g_iUserDiscount[MAX_PLAYERS + 1],
  250. g_szUserModel[MAX_PLAYERS + 1][32], Float:g_fMainInformerPosX[MAX_PLAYERS + 1], Float:g_fMainInformerPosY[MAX_PLAYERS + 1],
  251. Float:g_vecHookOrigin[MAX_PLAYERS + 1][3];
  252.  
  253. /* -> ??????? ??? ???? ?? ??????? -> */
  254. new g_iMenuPlayers[MAX_PLAYERS + 1][MAX_PLAYERS], g_iMenuPosition[MAX_PLAYERS + 1], g_iMenuTarget[MAX_PLAYERS + 1];
  255.  
  256. /* -> ?????????? ? ??????? ??? ?????????? -> */
  257. new g_iChiefId, g_iChiefIdOld, g_iChiefChoiceTime, g_szChiefName[32], g_iChiefStatus;
  258. new const g_szChiefStatus[][] =
  259. {
  260. "JBE_HUD_CHIEF_NOT",
  261. "JBE_HUD_CHIEF_ALIVE",
  262. "JBE_HUD_CHIEF_DEAD",
  263. "JBE_HUD_CHIEF_DISCONNECT",
  264. "JBE_HUD_CHIEF_FREE"
  265. };
  266.  
  267. /* -> ????????, ?????????? ? ??????? ??? ????????????? ??????????? -> */
  268. new g_iBitUserFree, g_iBitUserFreeNextRound, g_szFreeNames[192], g_iFreeLang;
  269. new const g_szFreeLang[][] =
  270. {
  271. "JBE_HUD_NOT_FREE",
  272. "JBE_HUD_HAS_FREE"
  273. };
  274.  
  275. /* -> ????????, ?????????? ? ??????? ??? ????????????? ??????????? -> */
  276. new g_iBitUserWanted, g_szWantedNames[192], g_iWantedLang;
  277. new const g_szWantedLang[][] =
  278. {
  279. "JBE_HUD_NOT_WANTED",
  280. "JBE_HUD_HAS_WANTED"
  281. };
  282.  
  283. /* -> ?????????? ? ??????? ??? ???????? -> */
  284. enum _:DATA_COSTUMES
  285. {
  286. COSTUMES,
  287. ENTITY,
  288. bool:HIDE
  289. }
  290. new Array:g_aCostumesList, g_iCostumesListSize, g_eUserCostumes[MAX_PLAYERS + 1][DATA_COSTUMES];
  291.  
  292. /* -> ????????, ?????????? ? ??????? ??? ??????? -> */
  293. new g_iSoccerBall, Float:g_flSoccerBallOrigin[3], bool:g_bSoccerBallTouch, bool:g_bSoccerBallTrail, bool:g_bSoccerStatus,
  294. bool:g_bSoccerGame, g_iSoccerScore[2], g_iBitUserSoccer, g_iSoccerBallOwner, g_iSoccerKickOwner, g_iSoccerUserTeam[MAX_PLAYERS + 1];
  295.  
  296. /* -> ????????, ?????????? ? ??????? ??? ????? -> */
  297. new bool:g_bBoxingStatus, g_iBoxingGame, g_iBitUserBoxing, g_iBoxingTypeKick[MAX_PLAYERS + 1], g_iBoxingUserTeam[MAX_PLAYERS + 1];
  298.  
  299. /* -> ???????? ??? ???????? -> */
  300. new g_iBitSharpening, g_iBitScrewdriver, g_iBitBalisong, g_iBitWeaponStatus, g_iBitLatchkey, g_iBitKokain, g_iBitFrostNade,
  301. g_iBitUserFrozen, g_iBitInvisibleHat, g_iBitClothingGuard, g_iBitClothingType, g_iBitHingJump, g_iBitFastRun, g_iBitDoubleJump,
  302. g_iBitRandomGlow, g_iBitAutoBhop, g_iBitDoubleDamage, g_iBitLotteryTicket;
  303.  
  304. /* -> ?????????? ? ??????? ??? ?????????? -> */
  305. enum _:DATA_RENDERING
  306. {
  307. RENDER_STATUS,
  308. RENDER_FX,
  309. RENDER_RED,
  310. RENDER_GREEN,
  311. RENDER_BLUE,
  312. RENDER_MODE,
  313. RENDER_AMT
  314. }
  315. new g_eUserRendering[MAX_PLAYERS + 1][DATA_RENDERING];
  316.  
  317. /* -> ????????, ?????????? ? ??????? ??? ?????? ? ??????? -> */
  318. new g_iDuelStatus, g_iDuelType, g_iBitUserDuel, g_iDuelUsersId[2], g_iDuelNames[2][32], g_iDuelCountDown, g_iDuelTimerAttack;
  319. new const g_iDuelLang[][] =
  320. {
  321. "",
  322. "JBE_ALL_HUD_DUEL_DEAGLE",
  323. "JBE_ALL_HUD_DUEL_M3",
  324. "JBE_ALL_HUD_DUEL_HEGRENADE",
  325. "JBE_ALL_HUD_DUEL_M249",
  326. "JBE_ALL_HUD_DUEL_AWP",
  327. "JBE_ALL_HUD_DUEL_KNIFE"
  328. };
  329.  
  330. /* -> ????????, ?????????? ? ??????? ??? ?????? ? ????/???????? -> */
  331. new g_iVipRespawn[MAX_PLAYERS + 1], g_iVipHealth[MAX_PLAYERS + 1], g_iVipMoney[MAX_PLAYERS + 1], g_iVipInvisible[MAX_PLAYERS + 1],
  332. g_iVipHpAp[MAX_PLAYERS + 1], g_iVipVoice[MAX_PLAYERS + 1];
  333.  
  334. new g_iAdminRespawn[MAX_PLAYERS + 1], g_iAdminHealth[MAX_PLAYERS + 1], g_iAdminMoney[MAX_PLAYERS + 1], g_iAdminGod[MAX_PLAYERS + 1],
  335. g_iAdminFootSteps[MAX_PLAYERS + 1];
  336. /*===== <- ????????, ?????????? ? ??????? ??? ?????? ? ???????? <- =====*///}
  337.  
  338. public plugin_precache()
  339. {
  340. files_precache();
  341. models_precache();
  342. sounds_precache();
  343. sprites_precache();
  344. jbe_create_buyzone();
  345. g_tButtonList = TrieCreate();
  346. g_iFakeMetaKeyValue = register_forward(FM_KeyValue, "FakeMeta_KeyValue_Post", 1);
  347. g_tRemoveEntities = TrieCreate();
  348. new const szRemoveEntities[][] = {"func_hostage_rescue", "info_hostage_rescue", "func_bomb_target", "info_bomb_target", "func_vip_safetyzone", "info_vip_start", "func_escapezone", "hostage_entity", "monster_scientist", "func_buyzone"};
  349. for(new i; i < sizeof(szRemoveEntities); i++) TrieSetCell(g_tRemoveEntities, szRemoveEntities[i], i);
  350. g_iFakeMetaSpawn = register_forward(FM_Spawn, "FakeMeta_Spawn_Post", 1);
  351. }
  352.  
  353. public plugin_init()
  354. {
  355. main_init();
  356. cvars_init();
  357. event_init();
  358. clcmd_init();
  359. menu_init();
  360. message_init();
  361. door_init();
  362. fakemeta_init();
  363. hamsandwich_init();
  364. game_mode_init();
  365. }
  366.  
  367. /*===== -> ????? -> =====*///{
  368. files_precache()
  369. {
  370. new szCfgDir[64], szCfgFile[128];
  371. get_localinfo("amxx_configsdir", szCfgDir, charsmax(szCfgDir));
  372. formatex(szCfgFile, charsmax(szCfgFile), "%s/alcatraz_jb/player_models.ini", szCfgDir);
  373. switch(file_exists(szCfgFile))
  374. {
  375. case 0: log_to_file("%s/alcatraz_jb/log_error.log", "File ^"%s^" not found!", szCfgDir, szCfgFile);
  376. case 1: jbe_player_models_read_file(szCfgFile);
  377. }
  378. formatex(szCfgFile, charsmax(szCfgFile), "%s/alcatraz_jb/costume_models.ini", szCfgDir);
  379. switch(file_exists(szCfgFile))
  380. {
  381. case 0: log_to_file("%s/alcatraz_jb/log_error.log", "File ^"%s^" not found!", szCfgDir, szCfgFile);
  382. case 1: jbe_costume_models_read_file(szCfgFile);
  383. }
  384. formatex(szCfgFile, charsmax(szCfgFile), "%s/alcatraz_jb/round_sound.ini", szCfgDir);
  385. switch(file_exists(szCfgFile))
  386. {
  387. case 0: log_to_file("%s/alcatraz_jb/log_error.log", "File ^"%s^" not found!", szCfgDir, szCfgFile);
  388. case 1: jbe_round_sound_read_file(szCfgFile);
  389. }
  390. }
  391.  
  392. jbe_player_models_read_file(szCfgFile[])
  393. {
  394. new szBuffer[128], iLine, iLen, i;
  395. while(read_file(szCfgFile, iLine++, szBuffer, charsmax(szBuffer), iLen))
  396. {
  397. if(iLen < 2 || szBuffer[0] == ';') continue;
  398. copy(g_szPlayerModel[i], charsmax(g_szPlayerModel[]), szBuffer);
  399. formatex(szBuffer, charsmax(szBuffer), "models/player/%s/%s.mdl", g_szPlayerModel[i], g_szPlayerModel[i]);
  400. engfunc(EngFunc_PrecacheModel, szBuffer);
  401. if(++i >= sizeof(g_szPlayerModel)) break;
  402. }
  403. }
  404.  
  405. jbe_costume_models_read_file(szCfgFile[])
  406. {
  407. new szBuffer[64], iLine, iLen;
  408. g_aCostumesList = ArrayCreate(64);
  409. while(read_file(szCfgFile, iLine++, szBuffer, charsmax(szBuffer), iLen))
  410. {
  411. if(!iLen || iLen > 32 || szBuffer[0] == ';') continue;
  412. format(szBuffer, charsmax(szBuffer), "models/alcatraz_jb/costumes/%s.mdl", szBuffer);
  413. ArrayPushString(g_aCostumesList, szBuffer);
  414. engfunc(EngFunc_PrecacheModel, szBuffer);
  415. }
  416. g_iCostumesListSize = ArraySize(g_aCostumesList);
  417. }
  418.  
  419. jbe_round_sound_read_file(szCfgFile[])
  420. {
  421. new aDataRoundSound[DATA_ROUND_SOUND], szBuffer[128], iLine, iLen;
  422. g_aDataRoundSound = ArrayCreate(DATA_ROUND_SOUND);
  423. while(read_file(szCfgFile, iLine++, szBuffer, charsmax(szBuffer), iLen))
  424. {
  425. if(!iLen || szBuffer[0] == ';') continue;
  426. parse(szBuffer, aDataRoundSound[FILE_NAME], charsmax(aDataRoundSound[FILE_NAME]), aDataRoundSound[TRACK_NAME], charsmax(aDataRoundSound[TRACK_NAME]));
  427. formatex(szBuffer, charsmax(szBuffer), "sound/alcatraz_jb/round_sound/%s.mp3", aDataRoundSound[FILE_NAME]);
  428. engfunc(EngFunc_PrecacheGeneric, szBuffer);
  429. ArrayPushArray(g_aDataRoundSound, aDataRoundSound);
  430. }
  431. g_iRoundSoundSize = ArraySize(g_aDataRoundSound);
  432. }
  433. /*===== <- ????? <- =====*///}
  434.  
  435. /*===== -> ?????? -> =====*///{
  436. models_precache()
  437. {
  438. new i, szBuffer[64];
  439. new const szWeapons[][] = {"p_hand", "v_hand", "p_baton", "v_baton"};
  440. for(i = 0; i < sizeof(szWeapons); i++)
  441. {
  442. formatex(szBuffer, charsmax(szBuffer), "models/alcatraz_jb/weapons/%s.mdl", szWeapons[i]);
  443. engfunc(EngFunc_PrecacheModel, szBuffer);
  444. }
  445. new const szBoxing[][] = {"v_boxing_gloves_red", "p_boxing_gloves_red", "v_boxing_gloves_blue", "p_boxing_gloves_blue"};
  446. for(i = 0; i < sizeof(szBoxing); i++)
  447. {
  448. formatex(szBuffer, charsmax(szBuffer), "models/alcatraz_jb/boxing/%s.mdl", szBoxing[i]);
  449. engfunc(EngFunc_PrecacheModel, szBuffer);
  450. }
  451. new const szShop[][] = {"p_sharpening", "v_sharpening", "p_screwdriver", "v_screwdriver", "p_balisong", "v_balisong", "v_syringe"};
  452. for(i = 0; i < sizeof(szShop); i++)
  453. {
  454. formatex(szBuffer, charsmax(szBuffer), "models/alcatraz_jb/shop/%s.mdl", szShop[i]);
  455. engfunc(EngFunc_PrecacheModel, szBuffer);
  456. }
  457. engfunc(EngFunc_PrecacheModel, "models/alcatraz_jb/soccer/ball.mdl");
  458. engfunc(EngFunc_PrecacheModel, "models/alcatraz_jb/soccer/v_hand_ball.mdl");
  459. g_pModelGlass = engfunc(EngFunc_PrecacheModel, "models/glassgibs.mdl");
  460. engfunc(EngFunc_PrecacheModel, "models/alcatraz_jb/v_round_sound.mdl");
  461. }
  462. /*===== <- ?????? <- =====*///}
  463.  
  464. /*===== -> ????? -> =====*///{
  465. sounds_precache()
  466. {
  467. new i, szBuffer[64];
  468. new const szHand[][] = {"hand_hit", "hand_slash", "hand_deploy"};
  469. for(i = 0; i < sizeof(szHand); i++)
  470. {
  471. formatex(szBuffer, charsmax(szBuffer), "alcatraz_jb/weapons/%s.wav", szHand[i]);
  472. engfunc(EngFunc_PrecacheSound, szBuffer);
  473. }
  474. new const szBaton[][] = {"baton_deploy", "baton_hitwall", "baton_slash", "baton_stab", "baton_hit"};
  475. for(i = 0; i < sizeof(szBaton); i++)
  476. {
  477. formatex(szBuffer, charsmax(szBuffer), "alcatraz_jb/weapons/%s.wav", szBaton[i]);
  478. engfunc(EngFunc_PrecacheSound, szBuffer);
  479. }
  480. for(i = 0; i <= 10; i++)
  481. {
  482. formatex(szBuffer, charsmax(szBuffer), "alcatraz_jb/countdown/%d.wav", i);
  483. engfunc(EngFunc_PrecacheSound, szBuffer);
  484. }
  485. new const szSoccer[][] = {"bounce_ball", "grab_ball", "kick_ball", "whitle_start", "whitle_end", "crowd"};
  486. for(i = 0; i < sizeof(szSoccer); i++)
  487. {
  488. formatex(szBuffer, charsmax(szBuffer), "alcatraz_jb/soccer/%s.wav", szSoccer[i]);
  489. engfunc(EngFunc_PrecacheSound, szBuffer);
  490. }
  491. new const szBoxing[][] = {"gloves_hit", "super_hit", "gong"};
  492. for(i = 0; i < sizeof(szBoxing); i++)
  493. {
  494. formatex(szBuffer, charsmax(szBuffer), "alcatraz_jb/boxing/%s.wav", szBoxing[i]);
  495. engfunc(EngFunc_PrecacheSound, szBuffer);
  496. }
  497. new const szShop[][] = {"grenade_frost_explosion", "freeze_player", "defrost_player", "sharpening_deploy", "sharpening_hitwall",
  498. "sharpening_slash", "sharpening_hit", "screwdriver_deploy", "screwdriver_hitwall", "screwdriver_slash", "screwdriver_hit",
  499. "balisong_deploy", "balisong_hitwall", "balisong_slash", "balisong_hit", "syringe_hit", "syringe_use"};
  500. for(i = 0; i < sizeof(szShop); i++)
  501. {
  502. formatex(szBuffer, charsmax(szBuffer), "alcatraz_jb/shop/%s.wav", szShop[i]);
  503. engfunc(EngFunc_PrecacheSound, szBuffer);
  504. }
  505. engfunc(EngFunc_PrecacheSound, "alcatraz_jb/prison_riot.wav");
  506. engfunc(EngFunc_PrecacheSound, "alcatraz_jb/hook.wav");
  507. engfunc(EngFunc_PrecacheGeneric, "sound/alcatraz_jb/duel/duel_ready.mp3");
  508. }
  509. /*===== <- ????? <- =====*///}
  510.  
  511. /*===== -> ??????? -> =====*///{
  512. sprites_precache()
  513. {
  514. g_pSpriteWave = engfunc(EngFunc_PrecacheModel, "sprites/shockwave.spr");
  515. g_pSpriteBeam = engfunc(EngFunc_PrecacheModel, "sprites/laserbeam.spr");
  516. g_pSpriteBall = engfunc(EngFunc_PrecacheModel, "sprites/alcatraz_jb/ball.spr");
  517. g_pSpriteDuelRed = engfunc(EngFunc_PrecacheModel, "sprites/alcatraz_jb/duel_red.spr");
  518. g_pSpriteDuelBlue = engfunc(EngFunc_PrecacheModel, "sprites/alcatraz_jb/duel_blue.spr");
  519. g_pSpriteLgtning = engfunc(EngFunc_PrecacheModel, "sprites/lgtning.spr");
  520. g_pSpriteRicho2 = engfunc(EngFunc_PrecacheModel, "sprites/richo2.spr");
  521. }
  522. /*===== <- ??????? <- =====*///}
  523.  
  524. /*===== -> ???????? -> =====*///{
  525. main_init()
  526. {
  527. register_plugin("[AlcatraZ-JailBreak] Core", "1.0", "Sanlerus");
  528. register_dictionary("jbe_core.txt");
  529. register_dictionary("jbe_costumes.txt");
  530. g_iSyncMainInformer = CreateHudSyncObj();
  531. g_iSyncSoccerScore = CreateHudSyncObj();
  532. g_iSyncStatusText = CreateHudSyncObj();
  533. g_iSyncDuelInformer = CreateHudSyncObj();
  534. g_iMaxPlayers = get_maxplayers();
  535. }
  536.  
  537. public client_putinserver(id)
  538. {
  539. SetBit(g_iBitUserConnected, id);
  540. SetBit(g_iBitUserRoundSound, id);
  541. g_iPlayersNum[g_iUserTeam[id]]++;
  542. set_task(1.0, "jbe_main_informer", id+TASK_SHOW_INFORMER, _, _, "b");
  543. new iFlags = get_user_flags(id);
  544. if(iFlags & ADMIN_LEVEL_H) SetBit(g_iBitUserVip, id);
  545. if(iFlags & ADMIN_BAN)
  546. {
  547. SetBit(g_iBitUserAdmin, id);
  548. if(iFlags & ADMIN_LEVEL_C) SetBit(g_iBitUserSuperAdmin, id);
  549. }
  550. if(iFlags & ADMIN_LEVEL_G) SetBit(g_iBitUserHook, id);
  551. }
  552.  
  553. public client_disconnect(id)
  554. {
  555. if(IsNotSetBit(g_iBitUserConnected, id)) return;
  556. ClearBit(g_iBitUserConnected, id);
  557. remove_task(id+TASK_SHOW_INFORMER);
  558. g_iPlayersNum[g_iUserTeam[id]]--;
  559. if(IsSetBit(g_iBitUserAlive, id))
  560. {
  561. g_iAlivePlayersNum[g_iUserTeam[id]]--;
  562. ClearBit(g_iBitUserAlive, id);
  563. }
  564. if(id == g_iChiefId)
  565. {
  566. g_iChiefId = 0;
  567. g_iChiefStatus = 3;
  568. g_szChiefName = "";
  569. if(g_bSoccerGame) remove_task(id+TASK_SHOW_SOCCER_SCORE);
  570. }
  571. if(IsSetBit(g_iBitUserFree, id)) jbe_sub_user_free(id);
  572. if(IsSetBit(g_iBitUserWanted, id)) jbe_sub_user_wanted(id);
  573. g_iUserTeam[id] = 0;
  574. g_iUserMoney[id] = 0;
  575. g_iUserSkin[id] = 0;
  576. g_iBitKilledUsers[id] = 0;
  577. for(new i = 1; i <= g_iMaxPlayers; i++)
  578. {
  579. if(IsNotSetBit(g_iBitKilledUsers[i], id)) continue;
  580. ClearBit(g_iBitKilledUsers[i], id);
  581. }
  582. if(g_eUserCostumes[id][COSTUMES]) jbe_set_user_costumes(id, 0);
  583. if(task_exists(id+TASK_CHANGE_MODEL)) remove_task(id+TASK_CHANGE_MODEL);
  584. ClearBit(g_iBitUserModel, id);
  585. if(task_exists(id+TASK_CHANGE_MODEL)) remove_task(id+TASK_CHANGE_MODEL);
  586. ClearBit(g_iBitUserFreeNextRound, id);
  587. ClearBit(g_iBitUserVoice, id);
  588. ClearBit(g_iBitUserVoiceNextRound, id);
  589. ClearBit(g_iBitBlockMenu, id);
  590. ClearBit(g_iBitUserVoteDayMode, id);
  591. ClearBit(g_iBitUserDayModeVoted, id);
  592. if(IsSetBit(g_iBitUserSoccer, id))
  593. {
  594. ClearBit(g_iBitUserSoccer, id);
  595. if(id == g_iSoccerBallOwner)
  596. {
  597. CREATE_KILLPLAYERATTACHMENTS(id);
  598. set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
  599. set_pev(g_iSoccerBall, pev_velocity, {0.0, 0.0, 0.1});
  600. g_iSoccerBallOwner = 0;
  601. }
  602. if(g_bSoccerGame) remove_task(id+TASK_SHOW_SOCCER_SCORE);
  603. }
  604. ClearBit(g_iBitUserBoxing, id);
  605. ClearBit(g_iBitSharpening, id);
  606. ClearBit(g_iBitScrewdriver, id);
  607. ClearBit(g_iBitBalisong, id);
  608. ClearBit(g_iBitWeaponStatus, id);
  609. ClearBit(g_iBitLatchkey, id);
  610. ClearBit(g_iBitKokain, id);
  611. if(task_exists(id+TASK_REMOVE_SYRINGE)) remove_task(id+TASK_REMOVE_SYRINGE);
  612. ClearBit(g_iBitFrostNade, id);
  613. ClearBit(g_iBitUserFrozen, id);
  614. if(task_exists(id+TASK_FROSTNADE_DEFROST)) remove_task(id+TASK_FROSTNADE_DEFROST);
  615. if(IsSetBit(g_iBitInvisibleHat, id))
  616. {
  617. ClearBit(g_iBitInvisibleHat, id);
  618. if(task_exists(id+TASK_INVISIBLE_HAT)) remove_task(id+TASK_INVISIBLE_HAT);
  619. }
  620. ClearBit(g_iBitClothingGuard, id);
  621. ClearBit(g_iBitClothingType, id);
  622. ClearBit(g_iBitHingJump, id);
  623. ClearBit(g_iBitFastRun, id);
  624. ClearBit(g_iBitDoubleJump, id);
  625. ClearBit(g_iBitRandomGlow, id);
  626. ClearBit(g_iBitAutoBhop, id);
  627. ClearBit(g_iBitDoubleDamage, id);
  628. ClearBit(g_iBitLotteryTicket, id);
  629. ClearBit(g_iBitUserAdmin, id);
  630. if(IsSetBit(g_iBitUserVip, id))
  631. {
  632. ClearBit(g_iBitUserVip, id);
  633. g_iVipRespawn[id] = 0;
  634. g_iVipHealth[id] = 0;
  635. g_iVipMoney[id] = 0;
  636. g_iVipInvisible[id] = 0;
  637. g_iVipHpAp[id] = 0;
  638. g_iVipVoice[id] = 0;
  639. }
  640. if(IsSetBit(g_iBitUserSuperAdmin, id))
  641. {
  642. ClearBit(g_iBitUserSuperAdmin, id);
  643. g_iAdminRespawn[id] = 0;
  644. g_iAdminHealth[id] = 0;
  645. g_iAdminMoney[id] = 0;
  646. g_iAdminGod[id] = 0;
  647. g_iAdminFootSteps[id] = 0;
  648. }
  649. ClearBit(g_iBitUserHook, id);
  650. if(g_iDuelStatus && IsSetBit(g_iBitUserDuel, id)) jbe_duel_ended(id);
  651. ClearBit(g_iBitUserBlockedGuard, id);
  652. }
  653. /*===== <- ???????? <- =====*///}
  654.  
  655. /*===== -> ????? -> =====*///{
  656. cvars_init()
  657. {
  658. register_cvar("jbe_pn_price_sharpening", "250");
  659. register_cvar("jbe_pn_price_screwdriver", "200");
  660. register_cvar("jbe_pn_price_balisong", "320");
  661. register_cvar("jbe_pn_price_glock18", "370");
  662. register_cvar("jbe_pn_price_usp", "400");
  663. register_cvar("jbe_pn_price_deagle", "420");
  664. register_cvar("jbe_pn_price_latchkey", "150");
  665. register_cvar("jbe_pn_price_flashbang", "80");
  666. register_cvar("jbe_pn_price_kokain", "200");
  667. register_cvar("jbe_pn_price_stimulator", "230");
  668. register_cvar("jbe_pn_price_frostnade", "170");
  669. register_cvar("jbe_pn_price_invisible_hat", "250");
  670. register_cvar("jbe_pn_price_armor", "70");
  671. register_cvar("jbe_pn_price_clothing_guard", "300");
  672. register_cvar("jbe_pn_price_hegrenade", "120");
  673. register_cvar("jbe_pn_price_hing_jump", "200");
  674. register_cvar("jbe_pn_price_fast_run", "240");
  675. register_cvar("jbe_pn_price_double_jump", "280");
  676. register_cvar("jbe_pn_price_random_glow", "100");
  677. register_cvar("jbe_pn_price_auto_bhop", "180");
  678. register_cvar("jbe_pn_price_double_damage", "250");
  679. register_cvar("jbe_pn_price_low_gravity", "220");
  680. register_cvar("jbe_pn_price_close_case", "250");
  681. register_cvar("jbe_pn_price_free_day", "300");
  682. register_cvar("jbe_pn_price_resolution_voice", "400");
  683. register_cvar("jbe_pn_price_transfer_guard", "800");
  684. register_cvar("jbe_pn_price_lottery_ticket", "150");
  685. register_cvar("jbe_pn_price_prank_prisoner", "350");
  686. register_cvar("jbe_gr_price_stimulator", "230");
  687. register_cvar("jbe_gr_price_random_glow", "100");
  688. register_cvar("jbe_gr_price_lottery_ticket", "150");
  689. register_cvar("jbe_gr_price_kokain", "200");
  690. register_cvar("jbe_gr_price_double_jump", "280");
  691. register_cvar("jbe_gr_price_fast_run", "240");
  692. register_cvar("jbe_gr_price_low_gravity", "250");
  693. register_cvar("jbe_free_day_id_time", "120");
  694. register_cvar("jbe_free_day_all_time", "240");
  695. register_cvar("jbe_team_balance", "4");
  696. register_cvar("jbe_day_mode_vote_time", "15");
  697. register_cvar("jbe_restart_game_time", "40");
  698. register_cvar("jbe_riot_start_money", "30");
  699. register_cvar("jbe_killed_guard_money", "40");
  700. register_cvar("jbe_killed_chief_money", "65");
  701. register_cvar("jbe_round_free_money", "10");
  702. register_cvar("jbe_round_alive_money", "20");
  703. register_cvar("jbe_last_prisoner_money", "300");
  704. register_cvar("jbe_vip_respawn_num", "2");
  705. register_cvar("jbe_vip_health_num", "3");
  706. register_cvar("jbe_vip_money_num", "1000");
  707. register_cvar("jbe_vip_money_round", "10");
  708. register_cvar("jbe_vip_invisible_round", "4");
  709. register_cvar("jbe_vip_hp_ap_round", "2");
  710. register_cvar("jbe_vip_voice_round", "3");
  711. register_cvar("jbe_vip_discount_shop", "20");
  712. register_cvar("jbe_admin_respawn_num", "3");
  713. register_cvar("jbe_admin_health_num", "5");
  714. register_cvar("jbe_admin_money_num", "2000");
  715. register_cvar("jbe_admin_money_round", "10");
  716. register_cvar("jbe_admin_god_round", "4");
  717. register_cvar("jbe_admin_footsteps_round", "2");
  718. register_cvar("jbe_admin_discount_shop", "40");
  719. register_cvar("jbe_respawn_player_num", "2");
  720. }
  721.  
  722. public plugin_cfg()
  723. {
  724. new szCfgDir[64];
  725. get_localinfo("amxx_configsdir", szCfgDir, charsmax(szCfgDir));
  726. server_cmd("exec %s/alcatraz_jb/shop_cvars.cfg", szCfgDir);
  727. server_cmd("exec %s/alcatraz_jb/all_cvars.cfg", szCfgDir);
  728. set_task(0.1, "jbe_get_cvars");
  729. }
  730.  
  731. public jbe_get_cvars()
  732. {
  733. g_iShopCvars[SHARPENING] = get_cvar_num("jbe_pn_price_sharpening");
  734. g_iShopCvars[SCREWDRIVER] = get_cvar_num("jbe_pn_price_screwdriver");
  735. g_iShopCvars[BALISONG] = get_cvar_num("jbe_pn_price_balisong");
  736. g_iShopCvars[GLOCK18] = get_cvar_num("jbe_pn_price_glock18");
  737. g_iShopCvars[USP] = get_cvar_num("jbe_pn_price_usp");
  738. g_iShopCvars[DEAGLE] = get_cvar_num("jbe_pn_price_deagle");
  739. g_iShopCvars[LATCHKEY] = get_cvar_num("jbe_pn_price_latchkey");
  740. g_iShopCvars[FLASHBANG] = get_cvar_num("jbe_pn_price_flashbang");
  741. g_iShopCvars[KOKAIN] = get_cvar_num("jbe_pn_price_kokain");
  742. g_iShopCvars[STIMULATOR] = get_cvar_num("jbe_pn_price_stimulator");
  743. g_iShopCvars[FROSTNADE] = get_cvar_num("jbe_pn_price_frostnade");
  744. g_iShopCvars[INVISIBLE_HAT] = get_cvar_num("jbe_pn_price_invisible_hat");
  745. g_iShopCvars[ARMOR] = get_cvar_num("jbe_pn_price_armor");
  746. g_iShopCvars[CLOTHING_GUARD] = get_cvar_num("jbe_pn_price_clothing_guard");
  747. g_iShopCvars[HEGRENADE] = get_cvar_num("jbe_pn_price_hegrenade");
  748. g_iShopCvars[HING_JUMP] = get_cvar_num("jbe_pn_price_hing_jump");
  749. g_iShopCvars[FAST_RUN] = get_cvar_num("jbe_pn_price_fast_run");
  750. g_iShopCvars[DOUBLE_JUMP] = get_cvar_num("jbe_pn_price_double_jump");
  751. g_iShopCvars[RANDOM_GLOW] = get_cvar_num("jbe_pn_price_random_glow");
  752. g_iShopCvars[AUTO_BHOP] = get_cvar_num("jbe_pn_price_auto_bhop");
  753. g_iShopCvars[DOUBLE_DAMAGE] = get_cvar_num("jbe_pn_price_double_damage");
  754. g_iShopCvars[LOW_GRAVITY] = get_cvar_num("jbe_pn_price_low_gravity");
  755. g_iShopCvars[CLOSE_CASE] = get_cvar_num("jbe_pn_price_close_case");
  756. g_iShopCvars[FREE_DAY_SHOP] = get_cvar_num("jbe_pn_price_free_day");
  757. g_iShopCvars[RESOLUTION_VOICE] = get_cvar_num("jbe_pn_price_resolution_voice");
  758. g_iShopCvars[TRANSFER_GUARD] = get_cvar_num("jbe_pn_price_transfer_guard");
  759. g_iShopCvars[LOTTERY_TICKET] = get_cvar_num("jbe_pn_price_lottery_ticket");
  760. g_iShopCvars[PRANK_PRISONER] = get_cvar_num("jbe_pn_price_prank_prisoner");
  761. g_iShopCvars[STIMULATOR_GR] = get_cvar_num("jbe_gr_price_stimulator");
  762. g_iShopCvars[RANDOM_GLOW_GR] = get_cvar_num("jbe_gr_price_random_glow");
  763. g_iShopCvars[LOTTERY_TICKET_GR] = get_cvar_num("jbe_gr_price_lottery_ticket");
  764. g_iShopCvars[KOKAIN_GR] = get_cvar_num("jbe_gr_price_kokain");
  765. g_iShopCvars[DOUBLE_JUMP_GR] = get_cvar_num("jbe_gr_price_double_jump");
  766. g_iShopCvars[FAST_RUN_GR] = get_cvar_num("jbe_gr_price_fast_run");
  767. g_iShopCvars[LOW_GRAVITY_GR] = get_cvar_num("jbe_gr_price_low_gravity");
  768. g_iAllCvars[FREE_DAY_ID] = get_cvar_num("jbe_free_day_id_time");
  769. g_iAllCvars[FREE_DAY_ALL] = get_cvar_num("jbe_free_day_all_time");
  770. g_iAllCvars[TEAM_BALANCE] = get_cvar_num("jbe_team_balance");
  771. g_iAllCvars[DAY_MODE_VOTE_TIME] = get_cvar_num("jbe_day_mode_vote_time");
  772. g_iAllCvars[RESTART_GAME_TIME] = get_cvar_num("jbe_restart_game_time");
  773. g_iAllCvars[RIOT_START_MODEY] = get_cvar_num("jbe_riot_start_money");
  774. g_iAllCvars[KILLED_GUARD_MODEY] = get_cvar_num("jbe_killed_guard_money");
  775. g_iAllCvars[KILLED_CHIEF_MODEY] = get_cvar_num("jbe_killed_chief_money");
  776. g_iAllCvars[ROUND_FREE_MODEY] = get_cvar_num("jbe_round_free_money");
  777. g_iAllCvars[ROUND_ALIVE_MODEY] = get_cvar_num("jbe_round_alive_money");
  778. g_iAllCvars[LAST_PRISONER_MODEY] = get_cvar_num("jbe_last_prisoner_money");
  779. g_iAllCvars[VIP_RESPAWN_NUM] = get_cvar_num("jbe_vip_respawn_num");
  780. g_iAllCvars[VIP_HEALTH_NUM] = get_cvar_num("jbe_vip_health_num");
  781. g_iAllCvars[VIP_MONEY_NUM] = get_cvar_num("jbe_vip_money_num");
  782. g_iAllCvars[VIP_MONEY_ROUND] = get_cvar_num("jbe_vip_money_round");
  783. g_iAllCvars[VIP_INVISIBLE] = get_cvar_num("jbe_vip_invisible_round");
  784. g_iAllCvars[VIP_HP_AP_ROUND] = get_cvar_num("jbe_vip_hp_ap_round");
  785. g_iAllCvars[VIP_VOICE_ROUND] = get_cvar_num("jbe_vip_voice_round");
  786. g_iAllCvars[VIP_DISCOUNT_SHOP] = get_cvar_num("jbe_vip_discount_shop");
  787. g_iAllCvars[ADMIN_RESPAWN_NUM] = get_cvar_num("jbe_admin_respawn_num");
  788. g_iAllCvars[ADMIN_HEALTH_NUM] = get_cvar_num("jbe_admin_health_num");
  789. g_iAllCvars[ADMIN_MONEY_NUM] = get_cvar_num("jbe_admin_money_num");
  790. g_iAllCvars[ADMIN_MONEY_ROUND] = get_cvar_num("jbe_admin_money_round");
  791. g_iAllCvars[ADMIN_GOD_ROUND] = get_cvar_num("jbe_admin_god_round");
  792. g_iAllCvars[ADMIN_FOOTSTEPS_ROUND] = get_cvar_num("jbe_admin_footsteps_round");
  793. g_iAllCvars[ADMIN_DISCOUNT_SHOP] = get_cvar_num("jbe_admin_discount_shop");
  794. g_iAllCvars[RESPAWN_PLAYER_NUM] = get_cvar_num("jbe_respawn_player_num");
  795. }
  796. /*===== <- ????? <- =====*///}
  797.  
  798. /*===== -> ??????? ??????? -> =====*///{
  799. event_init()
  800. {
  801. register_event("ResetHUD", "Event_ResetHUD", "be");
  802. register_logevent("LogEvent_RestartGame", 2, "1=Game_Commencing", "1&Restart_Round_");
  803. register_event("HLTV", "Event_HLTV", "a", "1=0", "2=0");
  804. register_logevent("LogEvent_RoundStart", 2, "1=Round_Start");
  805. register_logevent("LogEvent_RoundEnd", 2, "1=Round_End");
  806. register_event("StatusValue", "Event_StatusValueShow", "be", "1=2", "2!0");
  807. register_event("StatusValue", "Event_StatusValueHide", "be", "1=1", "2=0");
  808. }
  809.  
  810. public Event_ResetHUD(id)
  811. {
  812. if(IsNotSetBit(g_iBitUserConnected, id)) return;
  813. message_begin(MSG_ONE, MsgId_Money, _, id);
  814. write_long(g_iUserMoney[id]);
  815. write_byte(0);
  816. message_end();
  817. }
  818.  
  819. public LogEvent_RestartGame()
  820. {
  821. LogEvent_RoundEnd();
  822. jbe_set_day(0);
  823. jbe_set_day_week(0);
  824. }
  825.  
  826. public Event_HLTV()
  827. {
  828. g_bRoundEnd = false;
  829. for(new i; i < sizeof(g_iHamHookForwards); i++) DisableHamForward(g_iHamHookForwards[i]);
  830. if(g_bRestartGame)
  831. {
  832. if(task_exists(TASK_RESTART_GAME_TIMER)) return;
  833. g_iDayModeTimer = g_iAllCvars[RESTART_GAME_TIME] + 1;
  834. set_task(1.0, "jbe_restart_game_timer", TASK_RESTART_GAME_TIMER, _, _, "a", g_iDayModeTimer);
  835. return;
  836. }
  837. jbe_set_day(++g_iDay);
  838. jbe_set_day_week(++g_iDayWeek);
  839. g_szChiefName = "";
  840. g_iChiefStatus = 0;
  841. g_iBitUserFree = 0;
  842. g_szFreeNames = "";
  843. g_iFreeLang = 0;
  844. g_iBitUserWanted = 0;
  845. g_szWantedNames = "";
  846. g_iWantedLang = 0;
  847. g_iLastPnId = 0;
  848. g_iBitSharpening = 0;
  849. g_iBitScrewdriver = 0;
  850. g_iBitBalisong = 0;
  851. g_iBitWeaponStatus = 0;
  852. g_iBitLatchkey = 0;
  853. g_iBitKokain = 0;
  854. g_iBitFrostNade = 0;
  855. g_iBitClothingGuard = 0;
  856. g_iBitClothingType = 0;
  857. g_iBitHingJump = 0;
  858. g_iBitFastRun = 0;
  859. g_iBitDoubleJump = 0;
  860. g_iBitAutoBhop = 0;
  861. g_iBitDoubleDamage = 0;
  862. g_iBitLotteryTicket = 0;
  863. g_iBitUserVoice = 0;
  864. g_bDoorStatus = false;
  865. if(jbe_get_day_week() <= 5 || !g_iDayModeListSize || g_iPlayersNum[1] < 2 || !g_iPlayersNum[2]) jbe_set_day_mode(1);
  866. else jbe_set_day_mode(3);
  867. }
  868.  
  869. public jbe_restart_game_timer()
  870. {
  871. if(--g_iDayModeTimer)
  872. {
  873. jbe_open_doors();
  874. formatex(g_szDayModeTimer, charsmax(g_szDayModeTimer), "[%i]", g_iDayModeTimer);
  875. }
  876. else
  877. {
  878. g_szDayModeTimer = "";
  879. g_bRestartGame = false;
  880. server_cmd("sv_restart 5");
  881. }
  882. }
  883.  
  884. public LogEvent_RoundStart()
  885. {
  886. if(g_bRestartGame) return;
  887. if(jbe_get_day_week() <= 5 || !g_iDayModeListSize || g_iAlivePlayersNum[1] < 2 || !g_iAlivePlayersNum[2])
  888. {
  889. if(!g_iChiefStatus)
  890. {
  891. g_iChiefChoiceTime = 40 + 1;
  892. set_task(1.0, "jbe_chief_choice_timer", TASK_CHIEF_CHOICE_TIME, _, _, "a", g_iChiefChoiceTime);
  893. }
  894. for(new i = 1; i <= g_iMaxPlayers; i++)
  895. {
  896. if(g_iUserTeam[i] == 1)
  897. {
  898. if(IsSetBit(g_iBitUserFreeNextRound, i))
  899. {
  900. jbe_add_user_free(i);
  901. ClearBit(g_iBitUserFreeNextRound, i);
  902. }
  903. if(IsSetBit(g_iBitUserVoiceNextRound, i))
  904. {
  905. SetBit(g_iBitUserVoice, i);
  906. ClearBit(g_iBitUserVoiceNextRound, i);
  907. }
  908. }
  909. if(IsSetBit(g_iBitUserVip, i))
  910. {
  911. g_iVipRespawn[i] = g_iAllCvars[VIP_RESPAWN_NUM];
  912. g_iVipHealth[i] = g_iAllCvars[VIP_HEALTH_NUM];
  913. g_iVipMoney[i]++;
  914. g_iVipInvisible[i]++;
  915. g_iVipHpAp[i]++;
  916. g_iVipVoice[i]++;
  917. }
  918. if(IsSetBit(g_iBitUserSuperAdmin, i))
  919. {
  920. g_iAdminRespawn[i] = g_iAllCvars[ADMIN_RESPAWN_NUM];
  921. g_iAdminHealth[i] = g_iAllCvars[ADMIN_HEALTH_NUM];
  922. g_iAdminMoney[i]++;
  923. g_iAdminGod[i]++;
  924. g_iAdminFootSteps[i]++;
  925. }
  926. }
  927. }
  928. else jbe_vote_day_mode_start();
  929. }
  930.  
  931. public jbe_chief_choice_timer()
  932. {
  933. if(--g_iChiefChoiceTime)
  934. {
  935. if(g_iChiefChoiceTime == 30) g_iChiefIdOld = 0;
  936. formatex(g_szChiefName, charsmax(g_szChiefName), " [%i]", g_iChiefChoiceTime);
  937. }
  938. else
  939. {
  940. g_szChiefName = "";
  941. jbe_free_day_start();
  942. }
  943. }
  944.  
  945. public LogEvent_RoundEnd()
  946. {
  947. if(!task_exists(TASK_ROUND_END))
  948. set_task(0.1, "LogEvent_RoundEndTask", TASK_ROUND_END);
  949. }
  950.  
  951. public LogEvent_RoundEndTask()
  952. {
  953. if(g_iDayMode != 3)
  954. {
  955. g_iFriendlyFire = 0;
  956. if(task_exists(TASK_COUNT_DOWN_TIMER)) remove_task(TASK_COUNT_DOWN_TIMER);
  957. g_iChiefId = 0;
  958. if(task_exists(TASK_CHIEF_CHOICE_TIME))
  959. {
  960. remove_task(TASK_CHIEF_CHOICE_TIME);
  961. g_szChiefName = "";
  962. }
  963. if(g_iDayMode == 2) jbe_free_day_ended();
  964. if(g_bSoccerStatus) jbe_soccer_disable_all();
  965. if(g_bBoxingStatus) jbe_boxing_disable_all();
  966. for(new i = 1; i <= g_iMaxPlayers; i++)
  967. {
  968. if(IsNotSetBit(g_iBitUserAlive, i)) continue;
  969. if(task_exists(i+TASK_REMOVE_SYRINGE))
  970. {
  971. remove_task(i+TASK_REMOVE_SYRINGE);
  972. if(get_user_weapon(i))
  973. {
  974. new iActiveItem = get_pdata_cbase(i, m_pActiveItem);
  975. if(iActiveItem > 0) ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  976. }
  977. }
  978. if(pev(i, pev_renderfx) != kRenderFxNone || pev(i, pev_rendermode) != kRenderNormal)
  979. {
  980. jbe_set_user_rendering(i, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
  981. g_eUserRendering[i][RENDER_STATUS] = false;
  982. }
  983. if(g_iBitUserFrozen && IsSetBit(g_iBitUserFrozen, i))
  984. {
  985. ClearBit(g_iBitUserFrozen, i);
  986. if(task_exists(i+TASK_FROSTNADE_DEFROST)) remove_task(i+TASK_FROSTNADE_DEFROST);
  987. set_pev(i, pev_flags, pev(i, pev_flags) & ~FL_FROZEN);
  988. set_pdata_float(i, m_flNextAttack, 0.0, linux_diff_player);
  989. emit_sound(i, CHAN_AUTO, "alcatraz_jb/shop/defrost_player.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  990. new Float:vecOrigin[3]; pev(i, pev_origin, vecOrigin);
  991. CREATE_BREAKMODEL(vecOrigin, _, _, 10, g_pModelGlass, 10, 25, 0x01);
  992. }
  993. if(g_iBitInvisibleHat && IsSetBit(g_iBitInvisibleHat, i))
  994. {
  995. ClearBit(g_iBitInvisibleHat, i);
  996. if(task_exists(i+TASK_INVISIBLE_HAT)) remove_task(i+TASK_INVISIBLE_HAT);
  997. }
  998. if(g_iBitRandomGlow && IsSetBit(g_iBitRandomGlow, i)) ClearBit(g_iBitRandomGlow, i);
  999. }
  1000. if(g_iDuelStatus)
  1001. {
  1002. g_iBitUserDuel = 0;
  1003. if(task_exists(TASK_DUEL_COUNT_DOWN))
  1004. {
  1005. remove_task(TASK_DUEL_COUNT_DOWN);
  1006. client_cmd(0, "mp3 stop");
  1007. }
  1008. }
  1009. }
  1010. else
  1011. {
  1012. if(task_exists(TASK_VOTE_DAY_MODE_TIMER))
  1013. {
  1014. remove_task(TASK_VOTE_DAY_MODE_TIMER);
  1015. for(new i = 1; i <= g_iMaxPlayers; i++)
  1016. {
  1017. if(IsNotSetBit(g_iBitUserVoteDayMode, i)) continue;
  1018. ClearBit(g_iBitUserVoteDayMode, i);
  1019. ClearBit(g_iBitUserDayModeVoted, i);
  1020. show_menu(i, 0, "^n");
  1021. jbe_informer_offset_down(i);
  1022. jbe_menu_unblock(i);
  1023. set_pev(i, pev_flags, pev(i, pev_flags) & ~FL_FROZEN);
  1024. set_pdata_float(i, m_flNextAttack, 0.0, linux_diff_player);
  1025. UTIL_ScreenFade(i, 512, 512, 0, 0, 0, 0, 255, 1);
  1026. }
  1027. }
  1028. if(g_iVoteDayMode != -1)
  1029. {
  1030. if(task_exists(TASK_DAY_MODE_TIMER)) remove_task(TASK_DAY_MODE_TIMER);
  1031. g_szDayModeTimer = "";
  1032. ExecuteForward(g_iHookDayModeEnded, g_iReturnDayMode, g_iVoteDayMode, g_iAlivePlayersNum[1] ? 1 : 2);
  1033. g_iVoteDayMode = -1;
  1034. }
  1035. }
  1036. for(new i; i < sizeof(g_iHamHookForwards); i++) EnableHamForward(g_iHamHookForwards[i]);
  1037. g_bRoundEnd = true;
  1038. if(g_iRoundSoundSize)
  1039. {
  1040. new aDataRoundSound[DATA_ROUND_SOUND], iTrack = random_num(0, g_iRoundSoundSize - 1);
  1041. ArrayGetArray(g_aDataRoundSound, iTrack, aDataRoundSound);
  1042. for(new i = 1; i <= g_iMaxPlayers; i++)
  1043. {
  1044. if(IsNotSetBit(g_iBitUserConnected, i) || IsNotSetBit(g_iBitUserRoundSound, i)) continue;
  1045. client_cmd(i, "mp3 play sound/alcatraz_jb/round_sound/%s.mp3", aDataRoundSound[FILE_NAME]);
  1046. UTIL_SayText(i, "!g[AlcatraZ-JailBreak]!y %L: !t%s", i, "JBE_CHAT_ID_NOW_PLAYING", aDataRoundSound[TRACK_NAME]);
  1047. if(IsNotSetBit(g_iBitUserAlive, i)) continue;
  1048. static iszViewModel = 0;
  1049. if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/v_round_sound.mdl"))) set_pev_string(i, pev_viewmodel2, iszViewModel);
  1050. set_pdata_float(i, m_flNextAttack, 5.0);
  1051. UTIL_WeaponAnimation(i, 0);
  1052. }
  1053. }
  1054. }
  1055.  
  1056. public Event_StatusValueShow(id)
  1057. {
  1058. new iTarget = read_data(2), szName[32], szTeam[][] = {"", "JBE_ID_HUD_STATUS_TEXT_PRISONER", "JBE_ID_HUD_STATUS_TEXT_GUARD", ""};
  1059. get_user_name(iTarget, szName, charsmax(szName));
  1060. set_hudmessage(102, 69, 0, -1.0, 0.8, 0, 0.0, 10.0, 0.0, 0.0, -1);
  1061. ShowSyncHudMsg(id, g_iSyncStatusText, "%L", id, "JBE_ID_HUD_STATUS_TEXT", id, szTeam[g_iUserTeam[iTarget]], szName, get_user_health(iTarget), get_user_armor(iTarget), g_iUserMoney[iTarget]);
  1062. }
  1063.  
  1064. public Event_StatusValueHide(id) ClearSyncHud(id, g_iSyncStatusText);
  1065. /*===== <- ??????? ??????? <- =====*///}
  1066.  
  1067. /*===== -> ?????????? ??????? -> =====*///{
  1068. clcmd_init()
  1069. {
  1070. for(new i, szBlockCmd[][] = {"jointeam", "joinclass"}; i < sizeof szBlockCmd; i++) register_clcmd(szBlockCmd[i], "ClCmd_Block");
  1071. register_clcmd("chooseteam", "ClCmd_ChooseTeam");
  1072. register_clcmd("menuselect", "ClCmd_MenuSelect");
  1073. register_clcmd("money_transfer", "ClCmd_MoneyTransfer");
  1074. register_clcmd("radio1", "ClCmd_Radio1");
  1075. register_clcmd("radio2", "ClCmd_Radio2");
  1076. register_clcmd("radio3", "ClCmd_Radio3");
  1077. register_clcmd("drop", "ClCmd_Drop");
  1078. register_clcmd("+hook", "ClCmd_HookOn");
  1079. register_clcmd("-hook", "ClCmd_HookOff");
  1080. register_clcmd("say /bind", "ClCmd_BindKeys");
  1081. }
  1082.  
  1083. public ClCmd_Block(id) return PLUGIN_HANDLED;
  1084.  
  1085. public ClCmd_ChooseTeam(id)
  1086. {
  1087. if(jbe_menu_blocked(id)) return PLUGIN_HANDLED;
  1088. switch(g_iUserTeam[id])
  1089. {
  1090. case 1: Show_MainPnMenu(id);
  1091. case 2: Show_MainGrMenu(id);
  1092. default: Show_ChooseTeamMenu(id, 0);
  1093. }
  1094. return PLUGIN_HANDLED;
  1095. }
  1096.  
  1097. public ClCmd_MenuSelect(id) jbe_informer_offset_down(id);
  1098.  
  1099. public ClCmd_MoneyTransfer(id, iTarget, iMoney)
  1100. {
  1101. if(!iTarget)
  1102. {
  1103. new szArg1[3], szArg2[7];
  1104. read_argv(1, szArg1, charsmax(szArg1));
  1105. read_argv(2, szArg2, charsmax(szArg2));
  1106. if(!is_str_num(szArg1) || !is_str_num(szArg2))
  1107. {
  1108. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_ERROR_PARAMETERS");
  1109. return PLUGIN_HANDLED;
  1110. }
  1111. iTarget = str_to_num(szArg1);
  1112. iMoney = str_to_num(szArg2);
  1113. }
  1114. if(id == iTarget || !jbe_is_user_valid(iTarget) || IsNotSetBit(g_iBitUserConnected, iTarget)) UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_UNKNOWN_PLAYER");
  1115. else if(g_iUserMoney[id] < iMoney) UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_SUFFICIENT_FUNDS");
  1116. else if(iMoney <= 0) UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_MIN_AMOUNT_TRANSFER");
  1117. else
  1118. {
  1119. jbe_set_user_money(iTarget, g_iUserMoney[iTarget] + iMoney, 1);
  1120. jbe_set_user_money(id, g_iUserMoney[id] - iMoney, 1);
  1121. new szName[32], szNameTarget[32];
  1122. get_user_name(id, szName, charsmax(szName));
  1123. get_user_name(iTarget, szNameTarget, charsmax(szNameTarget));
  1124. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ALL_MONEY_TRANSFER", szName, iMoney, szNameTarget);
  1125. }
  1126. return PLUGIN_HANDLED;
  1127. }
  1128.  
  1129. public ClCmd_Radio1(id)
  1130. {
  1131. if(g_iUserTeam[id] == 1 && IsSetBit(g_iBitClothingGuard, id))
  1132. {
  1133. if(IsSetBit(g_iBitUserSoccer, id) || IsSetBit(g_iBitUserBoxing, id)) UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_BLOCKED_CLOTHING_GUARD");
  1134. else
  1135. {
  1136. if(IsSetBit(g_iBitClothingType, id))
  1137. {
  1138. jbe_set_user_model(id, g_szPlayerModel[PRISONER]);
  1139. if(IsSetBit(g_iBitUserFree, id)) set_pev(id, pev_skin, 5);
  1140. else if(IsSetBit(g_iBitUserWanted, id)) set_pev(id, pev_skin, 6);
  1141. else set_pev(id, pev_skin, g_iUserSkin[id]);
  1142. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_REMOVE_CLOTHING_GUARD");
  1143. }
  1144. else
  1145. {
  1146. jbe_set_user_model(id, g_szPlayerModel[GUARD]);
  1147. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_DRESSED_CLOTHING_GUARD");
  1148. }
  1149. InvertBit(g_iBitClothingType, id);
  1150. }
  1151. }
  1152. return PLUGIN_HANDLED;
  1153. }
  1154.  
  1155. public ClCmd_Radio2(id)
  1156. {
  1157. if(g_iUserTeam[id] == 1 && get_user_weapon(id) == CSW_KNIFE && (IsSetBit(g_iBitSharpening, id) || IsSetBit(g_iBitScrewdriver, id) || IsSetBit(g_iBitBalisong, id)))
  1158. {
  1159. if(IsSetBit(g_iBitUserSoccer, id) || IsSetBit(g_iBitUserBoxing, id) || IsSetBit(g_iBitUserDuel, id))
  1160. {
  1161. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_SHOP_WEAPON_BLOCKED");
  1162. return PLUGIN_HANDLED;
  1163. }
  1164. if(get_pdata_float(id, m_flNextAttack) < 0.1)
  1165. {
  1166. new iActiveItem = get_pdata_cbase(id, m_pActiveItem);
  1167. if(iActiveItem > 0)
  1168. {
  1169. InvertBit(g_iBitWeaponStatus, id);
  1170. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  1171. UTIL_WeaponAnimation(id, 3);
  1172. }
  1173. }
  1174. }
  1175. return PLUGIN_HANDLED;
  1176. }
  1177.  
  1178. public ClCmd_Radio3(id)
  1179. {
  1180. if(g_iUserTeam[id] == 1 && IsSetBit(g_iBitLatchkey, id))
  1181. {
  1182. new iTarget, iBody;
  1183. get_user_aiming(id, iTarget, iBody, 30);
  1184. if(pev_valid(iTarget))
  1185. {
  1186. new szClassName[32];
  1187. pev(iTarget, pev_classname, szClassName, charsmax(szClassName));
  1188. if(szClassName[5] == 'd' && szClassName[6] == 'o' && szClassName[7] == 'o' && szClassName[8] == 'r') dllfunc(DLLFunc_Use, iTarget, id);
  1189. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_LATCHKEY_ERROR_DOOR");
  1190. }
  1191. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_LATCHKEY_ERROR_DOOR");
  1192. }
  1193. return PLUGIN_HANDLED;
  1194. }
  1195.  
  1196. public ClCmd_Drop(id)
  1197. {
  1198. if(IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  1199. return PLUGIN_CONTINUE;
  1200. }
  1201.  
  1202. public ClCmd_HookOn(id)
  1203. {
  1204. if(g_iDayMode == 3 || IsNotSetBit(g_iBitUserHook, id) || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserSoccer, id) || IsSetBit(g_iBitUserBoxing, id) || IsSetBit(g_iBitUserDuel, id) || task_exists(id+TASK_HOOK_THINK)) return PLUGIN_HANDLED;
  1205. new iOrigin[3];
  1206. get_user_origin(id, iOrigin, 3);
  1207. g_vecHookOrigin[id][0] = float(iOrigin[0]);
  1208. g_vecHookOrigin[id][1] = float(iOrigin[1]);
  1209. g_vecHookOrigin[id][2] = float(iOrigin[2]);
  1210. CREATE_SPRITE(g_vecHookOrigin[id], g_pSpriteRicho2, 10, 255);
  1211. emit_sound(id, CHAN_STATIC, "alcatraz_jb/hook.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  1212. jbe_hook_think(id+TASK_HOOK_THINK);
  1213. set_task(0.1, "jbe_hook_think", id+TASK_HOOK_THINK, _, _, "b");
  1214. return PLUGIN_HANDLED;
  1215. }
  1216.  
  1217. public ClCmd_HookOff(id)
  1218. {
  1219. if(task_exists(id+TASK_HOOK_THINK))
  1220. {
  1221. remove_task(id+TASK_HOOK_THINK);
  1222. emit_sound(id, CHAN_STATIC, "alcatraz_jb/hook.wav", VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM);
  1223. }
  1224. return PLUGIN_HANDLED;
  1225. }
  1226.  
  1227. public ClCmd_BindKeys(id) client_cmd(id, "^"^";BIND F3 chooseteam;BIND z radio1;BIND x radio2;BIND c radio3");
  1228. /*===== <- ?????????? ??????? <- =====*///}
  1229.  
  1230. /*===== -> ???? -> =====*///{
  1231. #define PLAYERS_PER_PAGE 8
  1232.  
  1233. menu_init()
  1234. {
  1235. register_menucmd(register_menuid("Show_ChooseTeamMenu"), (1<<0|1<<1|1<<4|1<<5|1<<8|1<<9), "Handle_ChooseTeamMenu");
  1236. register_menucmd(register_menuid("Show_SkinMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4), "Handle_SkinMenu");
  1237. register_menucmd(register_menuid("Show_WeaponsGuardMenu"), (1<<0|1<<1|1<<2|1<<3|1<<9), "Handle_WeaponsGuardMenu");
  1238. register_menucmd(register_menuid("Show_MainPnMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_MainPnMenu");
  1239. register_menucmd(register_menuid("Show_MainGrMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_MainGrMenu");
  1240. register_menucmd(register_menuid("Show_ShopPrisonersMenu"), (1<<0|1<<1|1<<2|1<<3|1<<8|1<<9), "Handle_ShopPrisonersMenu");
  1241. register_menucmd(register_menuid("Show_ShopWeaponsMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<9), "Handle_ShopWeaponsMenu");
  1242. register_menucmd(register_menuid("Show_ShopItemsMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_ShopItemsMenu");
  1243. register_menucmd(register_menuid("Show_ShopSkillsMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<9), "Handle_ShopSkillsMenu");
  1244. register_menucmd(register_menuid("Show_ShopOtherMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<9), "Handle_ShopOtherMenu");
  1245. register_menucmd(register_menuid("Show_PrankPrisonerMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_PrankPrisonerMenu");
  1246. register_menucmd(register_menuid("Show_ShopGuardMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<8|1<<9), "Handle_ShopGuardMenu");
  1247. register_menucmd(register_menuid("Show_MoneyTransferMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_MoneyTransferMenu");
  1248. register_menucmd(register_menuid("Show_MoneyAmountMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<7|1<<8|1<<9), "Handle_MoneyAmountMenu");
  1249. register_menucmd(register_menuid("Show_CostumesMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_CostumesMenu");
  1250. register_menucmd(register_menuid("Show_ChiefMenu_1"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_ChiefMenu_1");
  1251. register_menucmd(register_menuid("Show_CountDownMenu"), (1<<0|1<<1|1<<2|1<<8|1<<9), "Handle_CountDownMenu");
  1252. register_menucmd(register_menuid("Show_FreeDayControlMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_FreeDayControlMenu");
  1253. register_menucmd(register_menuid("Show_PunishGuardMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_PunishGuardMenu");
  1254. register_menucmd(register_menuid("Show_TransferChiefMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_TransferChiefMenu");
  1255. register_menucmd(register_menuid("Show_TreatPrisonerMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_TreatPrisonerMenu");
  1256. register_menucmd(register_menuid("Show_ChiefMenu_2"), (1<<0|1<<1|1<<2|1<<8|1<<9), "Handle_ChiefMenu_2");
  1257. register_menucmd(register_menuid("Show_VoiceControlMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_VoiceControlMenu");
  1258. register_menucmd(register_menuid("Show_PrisonersDivideColorMenu"), (1<<0|1<<1|1<<2|1<<8|1<<9), "Handle_PrisonersDivideColorMenu");
  1259. register_menucmd(register_menuid("Show_MiniGameMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<8|1<<9), "Handle_MiniGameMenu");
  1260. register_menucmd(register_menuid("Show_SoccerMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<8|1<<9), "Handle_SoccerMenu");
  1261. register_menucmd(register_menuid("Show_SoccerTeamMenu"), (1<<0|1<<1|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_SoccerTeamMenu");
  1262. register_menucmd(register_menuid("Show_SoccerScoreMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<8|1<<9), "Handle_SoccerScoreMenu");
  1263. register_menucmd(register_menuid("Show_BoxingMenu"), (1<<0|1<<1|1<<2|1<<3|1<<8|1<<9), "Handle_BoxingMenu");
  1264. register_menucmd(register_menuid("Show_BoxingTeamMenu"), (1<<0|1<<4|1<<5|1<<6|1<<8|1<<9), "Handle_BoxingTeamMenu");
  1265. register_menucmd(register_menuid("Show_KillReasonsMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_KillReasonsMenu");
  1266. register_menucmd(register_menuid("Show_KilledUsersMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_KilledUsersMenu");
  1267. register_menucmd(register_menuid("Show_LastPrisonerMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<8|1<<9), "Handle_LastPrisonerMenu");
  1268. register_menucmd(register_menuid("Show_ChoiceDuelMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<8|1<<9), "Handle_ChoiceDuelMenu");
  1269. register_menucmd(register_menuid("Show_DuelUsersMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_DuelUsersMenu");
  1270. register_menucmd(register_menuid("Show_DayModeMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_DayModeMenu");
  1271. register_menucmd(register_menuid("Show_VipMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<8|1<<9), "Handle_VipMenu");
  1272. register_menucmd(register_menuid("Show_AdminMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<8|1<<9), "Handle_AdminMenu");
  1273. register_menucmd(register_menuid("Show_SuperAdminMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<8|1<<9), "Handle_SuperAdminMenu");
  1274. register_menucmd(register_menuid("Show_BlockedGuardMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "Handle_BlockedGuardMenu");
  1275. register_menucmd(register_menuid("Show_ManageSoundMenu"), (1<<0|1<<1|1<<2|1<<8|1<<9), "Handle_ManageSoundMenu");
  1276. }
  1277.  
  1278. Show_ChooseTeamMenu(id, iType)
  1279. {
  1280. if(jbe_menu_blocked(id)) return PLUGIN_HANDLED;
  1281. jbe_informer_offset_up(id);
  1282. new szMenu[512], iKeys, iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n", id, "JBE_MENU_TEAM_TITLE", g_iAllCvars[TEAM_BALANCE]);
  1283. if(g_iUserTeam[id] != 1)
  1284. {
  1285. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L \r[%d]^n", id, "JBE_MENU_TEAM_PRISONERS", g_iPlayersNum[1]);
  1286. iKeys |= (1<<0);
  1287. }
  1288. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L \r[%d]^n", id, "JBE_MENU_TEAM_PRISONERS", g_iPlayersNum[1]);
  1289. if(IsNotSetBit(g_iBitUserBlockedGuard, id) && g_iUserTeam[id] != 2 && ((abs(g_iPlayersNum[1] - 1) / g_iAllCvars[TEAM_BALANCE]) + 1) > g_iPlayersNum[2])
  1290. {
  1291. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L \r[%d]^n^n", id, "JBE_MENU_TEAM_GUARDS", g_iPlayersNum[2]);
  1292. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_TEAM_RANDOM");
  1293. iKeys |= (1<<1|1<<4);
  1294. }
  1295. else
  1296. {
  1297. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L \r[%d]^n^n", id, "JBE_MENU_TEAM_GUARDS", g_iPlayersNum[2]);
  1298. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L^n", id, "JBE_MENU_TEAM_RANDOM");
  1299. }
  1300. if(g_iUserTeam[id] != 3)
  1301. {
  1302. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n^n^n^n^n", id, "JBE_MENU_TEAM_SPECTATOR");
  1303. iKeys |= (1<<5);
  1304. }
  1305. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L^n^n^n^n^n", id, "JBE_MENU_TEAM_SPECTATOR");
  1306. if(iType)
  1307. {
  1308. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  1309. iKeys |= (1<<9);
  1310. }
  1311. return show_menu(id, iKeys, szMenu, -1, "Show_ChooseTeamMenu");
  1312. }
  1313.  
  1314. public Handle_ChooseTeamMenu(id, iKey)
  1315. {
  1316. switch(iKey)
  1317. {
  1318. case 0:
  1319. {
  1320. if(g_iUserTeam[id] == 1) return Show_ChooseTeamMenu(id, 1);
  1321. if(!jbe_set_user_team(id, 1)) return PLUGIN_HANDLED;
  1322. }
  1323. case 1:
  1324. {
  1325. if(g_iUserTeam[id] == 2) return Show_ChooseTeamMenu(id, 1);
  1326. if(IsNotSetBit(g_iBitUserBlockedGuard, id) && ((abs(g_iPlayersNum[1] - 1) / g_iAllCvars[TEAM_BALANCE]) + 1) > g_iPlayersNum[2])
  1327. {
  1328. if(!jbe_set_user_team(id, 2)) return PLUGIN_HANDLED;
  1329. jbe_informer_offset_down(id);
  1330. }
  1331. else
  1332. {
  1333. if(g_iUserTeam[id] == 1) return Show_ChooseTeamMenu(id, 1);
  1334. else return Show_ChooseTeamMenu(id, 0);
  1335. }
  1336. }
  1337. case 4:
  1338. {
  1339. if(((abs(g_iPlayersNum[1] - 1) / g_iAllCvars[TEAM_BALANCE]) + 1) > g_iPlayersNum[2])
  1340. {
  1341. switch(random_num(1, 2))
  1342. {
  1343. case 1: if(!jbe_set_user_team(id, 1)) return PLUGIN_HANDLED;
  1344. case 2:
  1345. {
  1346. if(!jbe_set_user_team(id, 2)) return PLUGIN_HANDLED;
  1347. jbe_informer_offset_down(id);
  1348. }
  1349. }
  1350. }
  1351. else
  1352. {
  1353. if(g_iUserTeam[id] == 1 || g_iUserTeam[id] == 2) return Show_ChooseTeamMenu(id, 1);
  1354. else return Show_ChooseTeamMenu(id, 0);
  1355. }
  1356. }
  1357. case 5:
  1358. {
  1359. if(g_iUserTeam[id] == 3) return Show_ChooseTeamMenu(id, 0);
  1360. if(!jbe_set_user_team(id, 3)) return PLUGIN_HANDLED;
  1361. }
  1362. }
  1363. return PLUGIN_HANDLED;
  1364. }
  1365.  
  1366. Show_SkinMenu(id)
  1367. {
  1368. jbe_informer_offset_up(id);
  1369. jbe_menu_block(id);
  1370. new szMenu[512], iKeys = (1<<0|1<<1|1<<2|1<<3), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SKIN_TITLE");
  1371. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_SKIN_ORANGE");
  1372. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_SKIN_GRAY");
  1373. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_SKIN_YELLOW");
  1374. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_SKIN_BLUE");
  1375. if(IsSetBit(g_iBitUserAdmin, id))
  1376. {
  1377. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L", id, "JBE_MENU_SKIN_BLACK");
  1378. iKeys |= (1<<4);
  1379. }
  1380. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L", id, "JBE_MENU_SKIN_BLACK");
  1381. return show_menu(id, iKeys, szMenu, -1, "Show_SkinMenu");
  1382. }
  1383.  
  1384. public Handle_SkinMenu(id, iKey)
  1385. {
  1386. g_iUserSkin[id] = iKey;
  1387. engclient_cmd(id, "joinclass", "1");
  1388. jbe_menu_unblock(id);
  1389. }
  1390.  
  1391. Show_WeaponsGuardMenu(id)
  1392. {
  1393. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  1394. jbe_informer_offset_up(id);
  1395. new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_WEAPONS_GUARD_TITLE");
  1396. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_WEAPONS_GUARD_AK47");
  1397. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_WEAPONS_GUARD_M4A1");
  1398. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_WEAPONS_GUARD_AWP");
  1399. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n^n^n^n^n^n", id, "JBE_MENU_WEAPONS_GUARD_XM1014");
  1400. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  1401. return show_menu(id, (1<<0|1<<1|1<<2|1<<3|1<<9), szMenu, -1, "Show_WeaponsGuardMenu");
  1402. }
  1403.  
  1404. public Handle_WeaponsGuardMenu(id, iKey)
  1405. {
  1406. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || iKey == 9)
  1407. {
  1408. if(g_iBitKilledUsers[id]) return Cmd_KilledUsersMenu(id);
  1409. return PLUGIN_HANDLED;
  1410. }
  1411. new const szWeaponName[][] = {"weapon_ak47", "weapon_m4a1", "weapon_awp", "weapon_xm1014", "weapon_deagle"};
  1412. new const iWeaponId[] = {CSW_AK47, CSW_M4A1, CSW_AWP, CSW_XM1014, CSW_DEAGLE};
  1413. drop_user_weapons(id, 0);
  1414. fm_give_item(id, szWeaponName[iKey]);
  1415. fm_set_user_bpammo(id, iWeaponId[iKey], 250);
  1416. drop_user_weapons(id, 1);
  1417. fm_give_item(id, szWeaponName[4]);
  1418. fm_set_user_bpammo(id, iWeaponId[4], 250);
  1419. fm_give_item(id, "item_kevlar");
  1420. if(g_iBitKilledUsers[id]) return Cmd_KilledUsersMenu(id);
  1421. return PLUGIN_HANDLED;
  1422. }
  1423.  
  1424. Show_MainPnMenu(id)
  1425. {
  1426. jbe_informer_offset_up(id);
  1427. new szMenu[512], iKeys = (1<<1|1<<4|1<<8|1<<9), iUserAlive = IsSetBit(g_iBitUserAlive, id),
  1428. iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_MAIN_TITLE");
  1429. if(iUserAlive && (g_iDayMode == 1 || g_iDayMode == 2) && IsNotSetBit(g_iBitUserDuel, id))
  1430. {
  1431. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_MAIN_SHOP");
  1432. iKeys |= (1<<0);
  1433. }
  1434. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L^n", id, "JBE_MENU_MAIN_SHOP");
  1435. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_MAIN_MONEY_TRANSFER");
  1436. if(g_iCostumesListSize && (g_iDayMode == 1 || g_iDayMode == 2))
  1437. {
  1438. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_MAIN_COSTUMES");
  1439. iKeys |= (1<<2);
  1440. }
  1441. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n", id, "JBE_MENU_MAIN_COSTUMES");
  1442. if(id == g_iLastPnId && iUserAlive)
  1443. {
  1444. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_MAIN_LAST_PN");
  1445. iKeys |= (1<<3);
  1446. }
  1447. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n", id, "JBE_MENU_MAIN_LAST_PN");
  1448. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_MAIN_TEAM");
  1449. if((g_iDayMode == 1 || g_iDayMode == 2) && IsSetBit(g_iBitUserVip, id))
  1450. {
  1451. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n", id, "JBE_MENU_MAIN_VIP");
  1452. iKeys |= (1<<5);
  1453. }
  1454. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L^n", id, "JBE_MENU_MAIN_VIP");
  1455. if(IsSetBit(g_iBitUserAdmin, id))
  1456. {
  1457. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \w%L^n", id, "JBE_MENU_MAIN_ADMIN");
  1458. iKeys |= (1<<6);
  1459. }
  1460. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \d%L^n", id, "JBE_MENU_MAIN_ADMIN");
  1461. if((g_iDayMode == 1 || g_iDayMode == 2) && IsSetBit(g_iBitUserSuperAdmin, id))
  1462. {
  1463. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \w%L^n", id, "JBE_MENU_MAIN_SUPER_ADMIN");
  1464. iKeys |= (1<<7);
  1465. }
  1466. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \d%L^n", id, "JBE_MENU_MAIN_SUPER_ADMIN");
  1467. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[9] \w%L^n", id, "JBE_MENU_MAIN_MANAGE_SOUND");
  1468. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  1469. return show_menu(id, iKeys, szMenu, -1, "Show_MainPnMenu");
  1470. }
  1471.  
  1472. public Handle_MainPnMenu(id, iKey)
  1473. {
  1474. switch(iKey)
  1475. {
  1476. case 0: if((g_iDayMode == 1 || g_iDayMode == 2) && IsSetBit(g_iBitUserAlive, id) && IsNotSetBit(g_iBitUserDuel, id)) return Show_ShopPrisonersMenu(id);
  1477. case 1: return Cmd_MoneyTransferMenu(id);
  1478. case 2: if(g_iDayMode == 1 || g_iDayMode == 2) return Cmd_CostumesMenu(id);
  1479. case 3: if(id == g_iLastPnId && IsSetBit(g_iBitUserAlive, id)) return Show_LastPrisonerMenu(id);
  1480. case 4: return Show_ChooseTeamMenu(id, 1);
  1481. case 5: if((g_iDayMode == 1 || g_iDayMode == 2)) return Show_VipMenu(id);
  1482. case 6: return Show_AdminMenu(id);
  1483. case 7: if((g_iDayMode == 1 || g_iDayMode == 2)) return Show_SuperAdminMenu(id);
  1484. case 8: return Show_ManageSoundMenu(id);
  1485. case 9: return PLUGIN_HANDLED;
  1486. }
  1487. return Show_MainPnMenu(id);
  1488. }
  1489.  
  1490. Show_MainGrMenu(id)
  1491. {
  1492. jbe_informer_offset_up(id);
  1493. new szMenu[512], iKeys = (1<<1|1<<4|1<<8|1<<9), iUserAlive = IsSetBit(g_iBitUserAlive, id),
  1494. iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_MAIN_TITLE");
  1495. if(iUserAlive && (g_iDayMode == 1 || g_iDayMode == 2) && IsNotSetBit(g_iBitUserDuel, id))
  1496. {
  1497. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_MAIN_SHOP");
  1498. iKeys |= (1<<0);
  1499. }
  1500. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L^n", id, "JBE_MENU_MAIN_SHOP");
  1501. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_MAIN_MONEY_TRANSFER");
  1502. if(g_iCostumesListSize && (g_iDayMode == 1 || g_iDayMode == 2))
  1503. {
  1504. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_MAIN_COSTUMES");
  1505. iKeys |= (1<<2);
  1506. }
  1507. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n", id, "JBE_MENU_MAIN_COSTUMES");
  1508. if(iUserAlive && (g_iDayMode == 1 || g_iDayMode == 2))
  1509. {
  1510. if(id == g_iChiefId)
  1511. {
  1512. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_MAIN_CHIEF");
  1513. iKeys |= (1<<3);
  1514. }
  1515. else if(g_iChiefStatus != 1 && (g_iChiefIdOld != id || g_iChiefStatus != 0))
  1516. {
  1517. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_MAIN_TAKE_CHIEF");
  1518. iKeys |= (1<<3);
  1519. }
  1520. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n", id, "JBE_MENU_MAIN_TAKE_CHIEF");
  1521. }
  1522. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n", id, "JBE_MENU_MAIN_TAKE_CHIEF");
  1523. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_MAIN_TEAM");
  1524. if((g_iDayMode == 1 || g_iDayMode == 2) && IsSetBit(g_iBitUserVip, id))
  1525. {
  1526. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n", id, "JBE_MENU_MAIN_VIP");
  1527. iKeys |= (1<<5);
  1528. }
  1529. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L^n", id, "JBE_MENU_MAIN_VIP");
  1530. if(IsSetBit(g_iBitUserAdmin, id))
  1531. {
  1532. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \w%L^n", id, "JBE_MENU_MAIN_ADMIN");
  1533. iKeys |= (1<<6);
  1534. }
  1535. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \d%L^n", id, "JBE_MENU_MAIN_ADMIN");
  1536. if((g_iDayMode == 1 || g_iDayMode == 2) && IsSetBit(g_iBitUserSuperAdmin, id))
  1537. {
  1538. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \w%L^n", id, "JBE_MENU_MAIN_SUPER_ADMIN");
  1539. iKeys |= (1<<7);
  1540. }
  1541. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \d%L^n", id, "JBE_MENU_MAIN_SUPER_ADMIN");
  1542. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[9] \w%L^n", id, "JBE_MENU_MAIN_MANAGE_SOUND");
  1543. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  1544. return show_menu(id, iKeys, szMenu, -1, "Show_MainGrMenu");
  1545. }
  1546.  
  1547. public Handle_MainGrMenu(id, iKey)
  1548. {
  1549. switch(iKey)
  1550. {
  1551. case 0: if((g_iDayMode == 1 || g_iDayMode == 2) && IsSetBit(g_iBitUserAlive, id) && IsNotSetBit(g_iBitUserDuel, id)) return Show_ShopGuardMenu(id);
  1552. case 1: return Cmd_MoneyTransferMenu(id);
  1553. case 2: if(g_iDayMode == 1 || g_iDayMode == 2) return Cmd_CostumesMenu(id);
  1554. case 3:
  1555. {
  1556. if((g_iDayMode == 1 || g_iDayMode == 2) && IsSetBit(g_iBitUserAlive, id))
  1557. {
  1558. if(id == g_iChiefId) return Show_ChiefMenu_1(id);
  1559. if(g_iChiefStatus != 1 && (g_iChiefIdOld != id || g_iChiefStatus != 0) && jbe_set_user_chief(id))
  1560. {
  1561. g_iChiefIdOld = id;
  1562. return Show_ChiefMenu_1(id);
  1563. }
  1564. }
  1565. }
  1566. case 4: return Show_ChooseTeamMenu(id, 1);
  1567. case 5: if((g_iDayMode == 1 || g_iDayMode == 2)) return Show_VipMenu(id);
  1568. case 6: return Show_AdminMenu(id);
  1569. case 7: if((g_iDayMode == 1 || g_iDayMode == 2)) return Show_SuperAdminMenu(id);
  1570. case 8: return Show_ManageSoundMenu(id);
  1571. case 9: return PLUGIN_HANDLED;
  1572. }
  1573. return Show_MainGrMenu(id);
  1574. }
  1575.  
  1576. Show_ShopPrisonersMenu(id)
  1577. {
  1578. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  1579. jbe_informer_offset_up(id);
  1580. jbe_set_user_discount(id);
  1581. new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n", id, "JBE_MENU_SHOP_PRISONERS_TITLE", g_iUserDiscount[id]);
  1582. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_SHOP_PRISONERS_WEAPONS");
  1583. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_SHOP_PRISONERS_ITEMS");
  1584. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_SHOP_PRISONERS_SKILLS");
  1585. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n^n^n^n^n", id, "JBE_MENU_SHOP_PRISONERS_OTHER");
  1586. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  1587. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  1588. return show_menu(id, (1<<0|1<<1|1<<2|1<<3|1<<8|1<<9), szMenu, -1, "Show_ShopPrisonersMenu");
  1589. }
  1590.  
  1591. public Handle_ShopPrisonersMenu(id, iKey)
  1592. {
  1593. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  1594. switch(iKey)
  1595. {
  1596. case 0: return Show_ShopWeaponsMenu(id);
  1597. case 1: return Show_ShopItemsMenu(id);
  1598. case 2: return Show_ShopSkillsMenu(id);
  1599. case 3: return Show_ShopOtherMenu(id);
  1600. case 8: return Show_MainPnMenu(id);
  1601. }
  1602. return PLUGIN_HANDLED;
  1603. }
  1604.  
  1605. Show_ShopWeaponsMenu(id)
  1606. {
  1607. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  1608. jbe_informer_offset_up(id);
  1609. new szMenu[512], iKeys = (1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SHOP_WEAPONS_TITLE");
  1610. new iPriceSharpening = jbe_get_price_discount(id, g_iShopCvars[SHARPENING]);
  1611. if(IsNotSetBit(g_iBitSharpening, id))
  1612. {
  1613. if(iPriceSharpening <= g_iUserMoney[id])
  1614. {
  1615. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_SHARPENING", iPriceSharpening);
  1616. iKeys |= (1<<0);
  1617. }
  1618. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_SHARPENING", iPriceSharpening);
  1619. }
  1620. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L [%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_SHARPENING", iPriceSharpening);
  1621. new iPriceScrewdriver = jbe_get_price_discount(id, g_iShopCvars[SCREWDRIVER]);
  1622. if(IsNotSetBit(g_iBitScrewdriver, id))
  1623. {
  1624. if(iPriceScrewdriver <= g_iUserMoney[id])
  1625. {
  1626. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_SCREWDRIVER", iPriceScrewdriver);
  1627. iKeys |= (1<<1);
  1628. }
  1629. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_SCREWDRIVER", iPriceScrewdriver);
  1630. }
  1631. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L [%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_SCREWDRIVER", iPriceScrewdriver);
  1632. new iPriceBalisong = jbe_get_price_discount(id, g_iShopCvars[BALISONG]);
  1633. if(IsNotSetBit(g_iBitBalisong, id))
  1634. {
  1635. if(iPriceBalisong <= g_iUserMoney[id])
  1636. {
  1637. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_BALISONG", iPriceBalisong);
  1638. iKeys |= (1<<2);
  1639. }
  1640. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_BALISONG", iPriceBalisong);
  1641. }
  1642. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L [%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_BALISONG", iPriceBalisong);
  1643. new iPriceGlock18 = jbe_get_price_discount(id, g_iShopCvars[GLOCK18]);
  1644. if(!user_has_weapon(id, CSW_GLOCK18))
  1645. {
  1646. if(iPriceGlock18 <= g_iUserMoney[id])
  1647. {
  1648. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_GLOCK18", iPriceGlock18);
  1649. iKeys |= (1<<3);
  1650. }
  1651. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_GLOCK18", iPriceGlock18);
  1652. }
  1653. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L [%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_GLOCK18", iPriceGlock18);
  1654. new iPriceUsp = jbe_get_price_discount(id, g_iShopCvars[USP]);
  1655. if(!user_has_weapon(id, CSW_USP))
  1656. {
  1657. if(iPriceUsp <= g_iUserMoney[id])
  1658. {
  1659. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_USP", iPriceUsp);
  1660. iKeys |= (1<<4);
  1661. }
  1662. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_USP", iPriceUsp);
  1663. }
  1664. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L [%d$]^n", id, "JBE_MENU_SHOP_WEAPONS_USP", iPriceUsp);
  1665. new iPriceDeagle = jbe_get_price_discount(id, g_iShopCvars[DEAGLE]);
  1666. if(!user_has_weapon(id, CSW_DEAGLE))
  1667. {
  1668. if(iPriceDeagle <= g_iUserMoney[id])
  1669. {
  1670. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L \y[%d$]^n^n^n^n", id, "JBE_MENU_SHOP_WEAPONS_DEAGLE", iPriceDeagle);
  1671. iKeys |= (1<<5);
  1672. }
  1673. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L \r[%d$]^n^n^n^n", id, "JBE_MENU_SHOP_WEAPONS_DEAGLE", iPriceDeagle);
  1674. }
  1675. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L [%d$]^n^n^n^n", id, "JBE_MENU_SHOP_WEAPONS_DEAGLE", iPriceDeagle);
  1676. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_BACK");
  1677. return show_menu(id, iKeys, szMenu, -1, "Show_ShopWeaponsMenu");
  1678. }
  1679.  
  1680. public Handle_ShopWeaponsMenu(id, iKey)
  1681. {
  1682. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  1683. switch(iKey)
  1684. {
  1685. case 0:
  1686. {
  1687. new iPriceSharpening = jbe_get_price_discount(id, g_iShopCvars[SHARPENING]);
  1688. if(IsNotSetBit(g_iBitSharpening, id) && iPriceSharpening <= g_iUserMoney[id])
  1689. {
  1690. jbe_set_user_money(id, g_iUserMoney[id] - iPriceSharpening, 1);
  1691. ClearBit(g_iBitScrewdriver, id);
  1692. ClearBit(g_iBitBalisong, id);
  1693. SetBit(g_iBitSharpening, id);
  1694. if(IsSetBit(g_iBitWeaponStatus, id) && get_user_weapon(id) == CSW_KNIFE)
  1695. {
  1696. new iActiveItem = get_pdata_cbase(id, m_pActiveItem);
  1697. if(iActiveItem > 0) ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  1698. }
  1699. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_SHOP_WEAPON_HELP");
  1700. return PLUGIN_HANDLED;
  1701. }
  1702. }
  1703. case 1:
  1704. {
  1705. new iPriceScrewdriver = jbe_get_price_discount(id, g_iShopCvars[SCREWDRIVER]);
  1706. if(IsNotSetBit(g_iBitScrewdriver, id) && iPriceScrewdriver <= g_iUserMoney[id])
  1707. {
  1708. jbe_set_user_money(id, g_iUserMoney[id] - iPriceScrewdriver, 1);
  1709. ClearBit(g_iBitSharpening, id);
  1710. ClearBit(g_iBitBalisong, id);
  1711. SetBit(g_iBitScrewdriver, id);
  1712. if(IsSetBit(g_iBitWeaponStatus, id) && get_user_weapon(id) == CSW_KNIFE)
  1713. {
  1714. new iActiveItem = get_pdata_cbase(id, m_pActiveItem);
  1715. if(iActiveItem > 0) ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  1716. }
  1717. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_SHOP_WEAPON_HELP");
  1718. return PLUGIN_HANDLED;
  1719. }
  1720. }
  1721. case 2:
  1722. {
  1723. new iPriceBalisong = jbe_get_price_discount(id, g_iShopCvars[BALISONG]);
  1724. if(IsNotSetBit(g_iBitBalisong, id) && iPriceBalisong <= g_iUserMoney[id])
  1725. {
  1726. jbe_set_user_money(id, g_iUserMoney[id] - iPriceBalisong, 1);
  1727. ClearBit(g_iBitSharpening, id);
  1728. ClearBit(g_iBitScrewdriver, id);
  1729. SetBit(g_iBitBalisong, id);
  1730. if(IsSetBit(g_iBitWeaponStatus, id) && get_user_weapon(id) == CSW_KNIFE)
  1731. {
  1732. new iActiveItem = get_pdata_cbase(id, m_pActiveItem);
  1733. if(iActiveItem > 0) ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  1734. }
  1735. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_SHOP_WEAPON_HELP");
  1736. return PLUGIN_HANDLED;
  1737. }
  1738. }
  1739. case 3:
  1740. {
  1741. new iPriceGlock18 = jbe_get_price_discount(id, g_iShopCvars[GLOCK18]);
  1742. if(!user_has_weapon(id, CSW_GLOCK18) && iPriceGlock18 <= g_iUserMoney[id])
  1743. {
  1744. jbe_set_user_money(id, g_iUserMoney[id] - iPriceGlock18, 1);
  1745. drop_user_weapons(id, 1);
  1746. fm_give_item(id, "weapon_glock18");
  1747. return PLUGIN_HANDLED;
  1748. }
  1749. }
  1750. case 4:
  1751. {
  1752. new iPriceUsp = jbe_get_price_discount(id, g_iShopCvars[USP]);
  1753. if(!user_has_weapon(id, CSW_USP) && iPriceUsp <= g_iUserMoney[id])
  1754. {
  1755. jbe_set_user_money(id, g_iUserMoney[id] - iPriceUsp, 1);
  1756. drop_user_weapons(id, 1);
  1757. fm_give_item(id, "weapon_usp");
  1758. return PLUGIN_HANDLED;
  1759. }
  1760. }
  1761. case 5:
  1762. {
  1763. new iPriceDeagle = jbe_get_price_discount(id, g_iShopCvars[DEAGLE]);
  1764. if(!user_has_weapon(id, CSW_DEAGLE) && iPriceDeagle <= g_iUserMoney[id])
  1765. {
  1766. jbe_set_user_money(id, g_iUserMoney[id] - iPriceDeagle, 1);
  1767. drop_user_weapons(id, 1);
  1768. fm_give_item(id, "weapon_deagle");
  1769. return PLUGIN_HANDLED;
  1770. }
  1771. }
  1772. case 9: return Show_ShopPrisonersMenu(id);
  1773. }
  1774. return Show_ShopWeaponsMenu(id);
  1775. }
  1776.  
  1777. Show_ShopItemsMenu(id)
  1778. {
  1779. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  1780. jbe_informer_offset_up(id);
  1781. new szMenu[512], iKeys = (1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SHOP_ITEMS_TITLE");
  1782. new iPriceLatchkey = jbe_get_price_discount(id, g_iShopCvars[LATCHKEY]);
  1783. if(IsNotSetBit(g_iBitLatchkey, id))
  1784. {
  1785. if(iPriceLatchkey <= g_iUserMoney[id])
  1786. {
  1787. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_LATCHKEY", iPriceLatchkey);
  1788. iKeys |= (1<<0);
  1789. }
  1790. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_LATCHKEY", iPriceLatchkey);
  1791. }
  1792. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L [%d$]^n", id, "JBE_MENU_SHOP_ITEMS_LATCHKEY", iPriceLatchkey);
  1793. new iPriceFlashbang = jbe_get_price_discount(id, g_iShopCvars[FLASHBANG]);
  1794. if(!user_has_weapon(id, CSW_FLASHBANG))
  1795. {
  1796. if(iPriceFlashbang <= g_iUserMoney[id])
  1797. {
  1798. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_FLASHBANG", iPriceFlashbang);
  1799. iKeys |= (1<<1);
  1800. }
  1801. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_FLASHBANG", iPriceFlashbang);
  1802. }
  1803. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L [%d$]^n", id, "JBE_MENU_SHOP_ITEMS_FLASHBANG", iPriceFlashbang);
  1804. new iPriceKokain = jbe_get_price_discount(id, g_iShopCvars[KOKAIN]);
  1805. if(IsNotSetBit(g_iBitKokain, id))
  1806. {
  1807. if(iPriceKokain <= g_iUserMoney[id])
  1808. {
  1809. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_KOKAIN", iPriceKokain);
  1810. iKeys |= (1<<2);
  1811. }
  1812. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_KOKAIN", iPriceKokain);
  1813. }
  1814. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L [%d$]^n", id, "JBE_MENU_SHOP_ITEMS_KOKAIN", iPriceKokain);
  1815. new iPriceStimulator = jbe_get_price_discount(id, g_iShopCvars[STIMULATOR]);
  1816. if(IsNotSetBit(g_iBitUserBoxing, id) && get_user_health(id) < 200)
  1817. {
  1818. if(iPriceStimulator <= g_iUserMoney[id])
  1819. {
  1820. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_STIMULATOR", iPriceStimulator);
  1821. iKeys |= (1<<3);
  1822. }
  1823. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_STIMULATOR", iPriceStimulator);
  1824. }
  1825. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L [%d$]^n", id, "JBE_MENU_SHOP_ITEMS_STIMULATOR", iPriceStimulator);
  1826. new iPriceFrostNade = jbe_get_price_discount(id, g_iShopCvars[FROSTNADE]);
  1827. if(!user_has_weapon(id, CSW_SMOKEGRENADE) && IsNotSetBit(g_iBitFrostNade, id))
  1828. {
  1829. if(iPriceFrostNade <= g_iUserMoney[id])
  1830. {
  1831. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_FROST_GRENADE", iPriceFrostNade);
  1832. iKeys |= (1<<4);
  1833. }
  1834. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_FROST_GRENADE", iPriceFrostNade);
  1835. }
  1836. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L [%d$]^n", id, "JBE_MENU_SHOP_ITEMS_FROST_GRENADE", iPriceFrostNade);
  1837. new iPriceInvisibleHat = jbe_get_price_discount(id, g_iShopCvars[INVISIBLE_HAT]);
  1838. if(IsNotSetBit(g_iBitInvisibleHat, id))
  1839. {
  1840. if(iPriceInvisibleHat <= g_iUserMoney[id])
  1841. {
  1842. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_INVISIBLE_HAT", iPriceInvisibleHat);
  1843. iKeys |= (1<<5);
  1844. }
  1845. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_INVISIBLE_HAT", iPriceInvisibleHat);
  1846. }
  1847. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L [%d$]^n", id, "JBE_MENU_SHOP_ITEMS_INVISIBLE_HAT", iPriceInvisibleHat);
  1848. new iPriceArmor = jbe_get_price_discount(id, g_iShopCvars[ARMOR]);
  1849. if(get_user_armor(id) == 0)
  1850. {
  1851. if(iPriceArmor <= g_iUserMoney[id])
  1852. {
  1853. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_ARMOR", iPriceArmor);
  1854. iKeys |= (1<<6);
  1855. }
  1856. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_ITEMS_ARMOR", iPriceArmor);
  1857. }
  1858. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \d%L [%d$]^n", id, "JBE_MENU_SHOP_ITEMS_ARMOR", iPriceArmor);
  1859. new iPriceClothingGuard = jbe_get_price_discount(id, g_iShopCvars[CLOTHING_GUARD]);
  1860. if(IsNotSetBit(g_iBitClothingGuard, id))
  1861. {
  1862. if(iPriceClothingGuard <= g_iUserMoney[id])
  1863. {
  1864. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_CLOHING_GUARD", iPriceClothingGuard);
  1865. iKeys |= (1<<7);
  1866. }
  1867. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_CLOHING_GUARD", iPriceClothingGuard);
  1868. }
  1869. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \d%L [%d$]^n", id, "JBE_MENU_SHOP_SKILLS_CLOHING_GUARD", iPriceClothingGuard);
  1870. new iPriceHeGrenade = jbe_get_price_discount(id, g_iShopCvars[HEGRENADE]);
  1871. if(!user_has_weapon(id, CSW_HEGRENADE))
  1872. {
  1873. if(iPriceHeGrenade <= g_iUserMoney[id])
  1874. {
  1875. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[9] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_HEGRENADE", iPriceHeGrenade);
  1876. iKeys |= (1<<8);
  1877. }
  1878. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[9] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_HEGRENADE", iPriceHeGrenade);
  1879. }
  1880. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[9] \d%L [%d$]^n", id, "JBE_MENU_SHOP_SKILLS_HEGRENADE", iPriceHeGrenade);
  1881. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_BACK");
  1882. return show_menu(id, iKeys, szMenu, -1, "Show_ShopItemsMenu");
  1883. }
  1884.  
  1885. public Handle_ShopItemsMenu(id, iKey)
  1886. {
  1887. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  1888. switch(iKey)
  1889. {
  1890. case 0:
  1891. {
  1892. new iPriceLatchkey = jbe_get_price_discount(id, g_iShopCvars[LATCHKEY]);
  1893. if(IsNotSetBit(g_iBitLatchkey, id) && iPriceLatchkey <= g_iUserMoney[id])
  1894. {
  1895. jbe_set_user_money(id, g_iUserMoney[id] - iPriceLatchkey, 1);
  1896. SetBit(g_iBitLatchkey, id);
  1897. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_MENU_ID_LATCHKEY_USE");
  1898. return PLUGIN_HANDLED;
  1899. }
  1900. }
  1901. case 1:
  1902. {
  1903. new iPriceFlashbang = jbe_get_price_discount(id, g_iShopCvars[FLASHBANG]);
  1904. if(!user_has_weapon(id, CSW_FLASHBANG) && iPriceFlashbang <= g_iUserMoney[id])
  1905. {
  1906. jbe_set_user_money(id, g_iUserMoney[id] - iPriceFlashbang, 1);
  1907. fm_give_item(id, "weapon_flashbang");
  1908. return PLUGIN_HANDLED;
  1909. }
  1910. }
  1911. case 2:
  1912. {
  1913. new iPriceKokain = jbe_get_price_discount(id, g_iShopCvars[KOKAIN]);
  1914. if(IsNotSetBit(g_iBitKokain, id) && iPriceKokain <= g_iUserMoney[id])
  1915. {
  1916. jbe_set_user_money(id, g_iUserMoney[id] - iPriceKokain, 1);
  1917. SetBit(g_iBitKokain, id);
  1918. jbe_set_syringe_model(id);
  1919. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_MENU_ID_KOKAIN");
  1920. set_task(2.8, "jbe_remove_syringe_model", id+TASK_REMOVE_SYRINGE);
  1921. return PLUGIN_HANDLED;
  1922. }
  1923. }
  1924. case 3:
  1925. {
  1926. new iPriceStimulator = jbe_get_price_discount(id, g_iShopCvars[STIMULATOR]);
  1927. if(IsNotSetBit(g_iBitUserBoxing, id) && get_user_health(id) < 200 && iPriceStimulator <= g_iUserMoney[id])
  1928. {
  1929. jbe_set_user_money(id, g_iUserMoney[id] - iPriceStimulator, 1);
  1930. jbe_set_syringe_model(id);
  1931. set_task(1.3, "jbe_set_syringe_health", id+TASK_REMOVE_SYRINGE);
  1932. set_task(2.8, "jbe_remove_syringe_model", id+TASK_REMOVE_SYRINGE);
  1933. return PLUGIN_HANDLED;
  1934. }
  1935. }
  1936. case 4:
  1937. {
  1938. new iPriceFrostNade = jbe_get_price_discount(id, g_iShopCvars[FROSTNADE]);
  1939. if(!user_has_weapon(id, CSW_SMOKEGRENADE) && IsNotSetBit(g_iBitFrostNade, id) && iPriceFrostNade <= g_iUserMoney[id])
  1940. {
  1941. jbe_set_user_money(id, g_iUserMoney[id] - iPriceFrostNade, 1);
  1942. SetBit(g_iBitFrostNade, id);
  1943. fm_give_item(id, "weapon_smokegrenade");
  1944. return PLUGIN_HANDLED;
  1945. }
  1946. }
  1947. case 5:
  1948. {
  1949. new iPriceInvisibleHat = jbe_get_price_discount(id, g_iShopCvars[INVISIBLE_HAT]);
  1950. if(IsNotSetBit(g_iBitInvisibleHat, id) && iPriceInvisibleHat <= g_iUserMoney[id])
  1951. {
  1952. jbe_set_user_money(id, g_iUserMoney[id] - iPriceInvisibleHat, 1);
  1953. SetBit(g_iBitInvisibleHat, id);
  1954. jbe_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0);
  1955. if(g_eUserCostumes[id][COSTUMES]) jbe_hide_user_costumes(id);
  1956. set_task(10.0, "jbe_remove_invisible_hat", id+TASK_INVISIBLE_HAT);
  1957. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_MENU_ID_INVISIBLE_HAT_HELP");
  1958. return PLUGIN_HANDLED;
  1959. }
  1960. }
  1961. case 6:
  1962. {
  1963. new iPriceArmor = jbe_get_price_discount(id, g_iShopCvars[ARMOR]);
  1964. if(get_user_armor(id) == 0 && iPriceArmor <= g_iUserMoney[id])
  1965. {
  1966. jbe_set_user_money(id, g_iUserMoney[id] - iPriceArmor, 1);
  1967. fm_give_item(id, "item_kevlar");
  1968. return PLUGIN_HANDLED;
  1969. }
  1970. }
  1971. case 7:
  1972. {
  1973. new iPriceClothingGuard = jbe_get_price_discount(id, g_iShopCvars[CLOTHING_GUARD]);
  1974. if(IsNotSetBit(g_iBitClothingGuard, id) && iPriceClothingGuard <= g_iUserMoney[id])
  1975. {
  1976. jbe_set_user_money(id, g_iUserMoney[id] - iPriceClothingGuard, 1);
  1977. SetBit(g_iBitClothingGuard, id);
  1978. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_CLOHING_GUARD_HELP");
  1979. }
  1980. }
  1981. case 8:
  1982. {
  1983. new iPriceHeGrenade = jbe_get_price_discount(id, g_iShopCvars[HEGRENADE]);
  1984. if(!user_has_weapon(id, CSW_SMOKEGRENADE) && iPriceHeGrenade <= g_iUserMoney[id])
  1985. {
  1986. jbe_set_user_money(id, g_iUserMoney[id] - iPriceHeGrenade, 1);
  1987. fm_give_item(id, "weapon_hegrenade");
  1988. return PLUGIN_HANDLED;
  1989. }
  1990. }
  1991. case 9: return Show_ShopPrisonersMenu(id);
  1992. }
  1993. return Show_ShopItemsMenu(id);
  1994. }
  1995.  
  1996. Show_ShopSkillsMenu(id)
  1997. {
  1998. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  1999. jbe_informer_offset_up(id);
  2000. new szMenu[512], iKeys = (1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SHOP_SKILLS_TITLE");
  2001. new iPriceHingJump = jbe_get_price_discount(id, g_iShopCvars[HING_JUMP]);
  2002. if(IsNotSetBit(g_iBitHingJump, id))
  2003. {
  2004. if(iPriceHingJump <= g_iUserMoney[id])
  2005. {
  2006. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_HING_JUMP", iPriceHingJump);
  2007. iKeys |= (1<<0);
  2008. }
  2009. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_HING_JUMP", iPriceHingJump);
  2010. }
  2011. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L [%d$]^n", id, "JBE_MENU_SHOP_SKILLS_HING_JUMP", iPriceHingJump);
  2012. new iPriceFastRun = jbe_get_price_discount(id, g_iShopCvars[FAST_RUN]);
  2013. if(IsNotSetBit(g_iBitFastRun, id))
  2014. {
  2015. if(iPriceFastRun <= g_iUserMoney[id])
  2016. {
  2017. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_FAST_RUN", iPriceFastRun);
  2018. iKeys |= (1<<1);
  2019. }
  2020. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_FAST_RUN", iPriceFastRun);
  2021. }
  2022. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L [%d$]^n", id, "JBE_MENU_SHOP_SKILLS_FAST_RUN", iPriceFastRun);
  2023. new iPriceDoubleJump = jbe_get_price_discount(id, g_iShopCvars[DOUBLE_JUMP]);
  2024. if(IsNotSetBit(g_iBitDoubleJump, id))
  2025. {
  2026. if(iPriceDoubleJump <= g_iUserMoney[id])
  2027. {
  2028. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_DOUBLE_JUMP", iPriceDoubleJump);
  2029. iKeys |= (1<<2);
  2030. }
  2031. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_DOUBLE_JUMP", iPriceDoubleJump);
  2032. }
  2033. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L [%d$]^n", id, "JBE_MENU_SHOP_SKILLS_DOUBLE_JUMP", iPriceDoubleJump);
  2034. new iPriceRandomGlow = jbe_get_price_discount(id, g_iShopCvars[RANDOM_GLOW]);
  2035. if(IsNotSetBit(g_iBitRandomGlow, id))
  2036. {
  2037. if(iPriceRandomGlow <= g_iUserMoney[id])
  2038. {
  2039. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_RANDOM_GLOW", iPriceRandomGlow);
  2040. iKeys |= (1<<3);
  2041. }
  2042. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_RANDOM_GLOW", iPriceRandomGlow);
  2043. }
  2044. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L [%d$]^n", id, "JBE_MENU_SHOP_SKILLS_RANDOM_GLOW", iPriceRandomGlow);
  2045. new iPriceAutoBhop = jbe_get_price_discount(id, g_iShopCvars[AUTO_BHOP]);
  2046. if(IsNotSetBit(g_iBitAutoBhop, id))
  2047. {
  2048. if(iPriceAutoBhop <= g_iUserMoney[id])
  2049. {
  2050. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_AUTO_BHOP", iPriceAutoBhop);
  2051. iKeys |= (1<<4);
  2052. }
  2053. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_AUTO_BHOP", iPriceAutoBhop);
  2054. }
  2055. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L [%d$]^n", id, "JBE_MENU_SHOP_SKILLS_AUTO_BHOP", iPriceAutoBhop);
  2056. new iPriceDoubleDamage = jbe_get_price_discount(id, g_iShopCvars[DOUBLE_DAMAGE]);
  2057. if(IsNotSetBit(g_iBitDoubleDamage, id))
  2058. {
  2059. if(iPriceDoubleDamage <= g_iUserMoney[id])
  2060. {
  2061. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_DOUBLE_DAMAGE", iPriceDoubleDamage);
  2062. iKeys |= (1<<5);
  2063. }
  2064. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_SKILLS_DOUBLE_DAMAGE", iPriceDoubleDamage);
  2065. }
  2066. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L [%d$]^n", id, "JBE_MENU_SHOP_SKILLS_DOUBLE_DAMAGE", iPriceDoubleDamage);
  2067. new iPriceLowGravity = jbe_get_price_discount(id, g_iShopCvars[LOW_GRAVITY]);
  2068. if(pev(id, pev_gravity) == 1.0)
  2069. {
  2070. if(iPriceLowGravity <= g_iUserMoney[id])
  2071. {
  2072. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \w%L \y[%d$]^n^n^n", id, "JBE_MENU_SHOP_SKILLS_LOW_GRAVITY", iPriceLowGravity);
  2073. iKeys |= (1<<6);
  2074. }
  2075. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \d%L \r[%d$]^n^n^n", id, "JBE_MENU_SHOP_SKILLS_LOW_GRAVITY", iPriceLowGravity);
  2076. }
  2077. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \d%L [%d$]^n^n^n", id, "JBE_MENU_SHOP_SKILLS_LOW_GRAVITY", iPriceLowGravity);
  2078. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_BACK");
  2079. return show_menu(id, iKeys, szMenu, -1, "Show_ShopSkillsMenu");
  2080. }
  2081.  
  2082. public Handle_ShopSkillsMenu(id, iKey)
  2083. {
  2084. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  2085. switch(iKey)
  2086. {
  2087. case 0:
  2088. {
  2089. new iPriceHingJump = jbe_get_price_discount(id, g_iShopCvars[HING_JUMP]);
  2090. if(iPriceHingJump <= g_iUserMoney[id])
  2091. {
  2092. jbe_set_user_money(id, g_iUserMoney[id] - iPriceHingJump, 1);
  2093. SetBit(g_iBitHingJump, id);
  2094. return PLUGIN_HANDLED;
  2095. }
  2096. }
  2097. case 1:
  2098. {
  2099. new iPriceFastRun = jbe_get_price_discount(id, g_iShopCvars[FAST_RUN]);
  2100. if(iPriceFastRun <= g_iUserMoney[id])
  2101. {
  2102. jbe_set_user_money(id, g_iUserMoney[id] - iPriceFastRun, 1);
  2103. SetBit(g_iBitFastRun, id);
  2104. ExecuteHamB(Ham_Player_ResetMaxSpeed, id);
  2105. return PLUGIN_HANDLED;
  2106. }
  2107. }
  2108. case 2:
  2109. {
  2110. new iPriceDoubleJump = jbe_get_price_discount(id, g_iShopCvars[DOUBLE_JUMP]);
  2111. if(iPriceDoubleJump <= g_iUserMoney[id])
  2112. {
  2113. jbe_set_user_money(id, g_iUserMoney[id] - iPriceDoubleJump, 1);
  2114. SetBit(g_iBitDoubleJump, id);
  2115. return PLUGIN_HANDLED;
  2116. }
  2117. }
  2118. case 3:
  2119. {
  2120. new iPriceRandomGlow = jbe_get_price_discount(id, g_iShopCvars[RANDOM_GLOW]);
  2121. if(iPriceRandomGlow <= g_iUserMoney[id])
  2122. {
  2123. jbe_set_user_money(id, g_iUserMoney[id] - iPriceRandomGlow, 1);
  2124. SetBit(g_iBitRandomGlow, id);
  2125. jbe_set_user_rendering(id, kRenderFxGlowShell, random_num(0, 255), random_num(0, 255), random_num(0, 255), kRenderNormal, 0);
  2126. jbe_get_user_rendering(id, g_eUserRendering[id][RENDER_FX], g_eUserRendering[id][RENDER_RED], g_eUserRendering[id][RENDER_GREEN], g_eUserRendering[id][RENDER_BLUE], g_eUserRendering[id][RENDER_MODE], g_eUserRendering[id][RENDER_AMT]);
  2127. g_eUserRendering[id][RENDER_STATUS] = true;
  2128. return PLUGIN_HANDLED;
  2129. }
  2130. }
  2131. case 4:
  2132. {
  2133. new iPriceAutoBhop = jbe_get_price_discount(id, g_iShopCvars[AUTO_BHOP]);
  2134. if(iPriceAutoBhop <= g_iUserMoney[id])
  2135. {
  2136. jbe_set_user_money(id, g_iUserMoney[id] - iPriceAutoBhop, 1);
  2137. SetBit(g_iBitAutoBhop, id);
  2138. return PLUGIN_HANDLED;
  2139. }
  2140. }
  2141. case 5:
  2142. {
  2143. new iPriceDoubleDamage = jbe_get_price_discount(id, g_iShopCvars[DOUBLE_DAMAGE]);
  2144. if(iPriceDoubleDamage <= g_iUserMoney[id])
  2145. {
  2146. jbe_set_user_money(id, g_iUserMoney[id] - iPriceDoubleDamage, 1);
  2147. SetBit(g_iBitDoubleDamage, id);
  2148. return PLUGIN_HANDLED;
  2149. }
  2150. }
  2151. case 6:
  2152. {
  2153. new iPriceLowGravity = jbe_get_price_discount(id, g_iShopCvars[LOW_GRAVITY]);
  2154. if(iPriceLowGravity <= g_iUserMoney[id])
  2155. {
  2156. jbe_set_user_money(id, g_iUserMoney[id] - iPriceLowGravity, 1);
  2157. set_pev(id, pev_gravity, 0.2);
  2158. return PLUGIN_HANDLED;
  2159. }
  2160. }
  2161. case 9: return Show_ShopPrisonersMenu(id);
  2162. }
  2163. return Show_ShopSkillsMenu(id);
  2164. }
  2165.  
  2166. Show_ShopOtherMenu(id)
  2167. {
  2168. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  2169. jbe_informer_offset_up(id);
  2170. new szMenu[512], iKeys = (1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SHOP_OTHER_TITLE");
  2171. new iPriceCloseCase = jbe_get_price_discount(id, g_iShopCvars[CLOSE_CASE]);
  2172. if(IsSetBit(g_iBitUserWanted, id))
  2173. {
  2174. if(iPriceCloseCase <= g_iUserMoney[id])
  2175. {
  2176. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_OTHER_CLOSE_CASE", iPriceCloseCase);
  2177. iKeys |= (1<<0);
  2178. }
  2179. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_OTHER_CLOSE_CASE", iPriceCloseCase);
  2180. }
  2181. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L [%d$]^n", id, "JBE_MENU_SHOP_OTHER_CLOSE_CASE", iPriceCloseCase);
  2182. new iPriceFreeDay = jbe_get_price_discount(id, g_iShopCvars[FREE_DAY_SHOP]);
  2183. if(g_iDayMode == 1 && IsNotSetBit(g_iBitUserFree, id) && IsNotSetBit(g_iBitUserWanted, id))
  2184. {
  2185. if(iPriceFreeDay <= g_iUserMoney[id])
  2186. {
  2187. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_OTHER_FREE_DAY", iPriceFreeDay);
  2188. iKeys |= (1<<1);
  2189. }
  2190. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_OTHER_FREE_DAY", iPriceFreeDay);
  2191. }
  2192. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L [%d$]^n", id, "JBE_MENU_SHOP_OTHER_FREE_DAY", iPriceFreeDay);
  2193. new iPriceResolutionVoice = jbe_get_price_discount(id, g_iShopCvars[RESOLUTION_VOICE]);
  2194. if(IsNotSetBit(g_iBitUserVoice, id))
  2195. {
  2196. if(iPriceResolutionVoice <= g_iUserMoney[id])
  2197. {
  2198. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_OTHER_RESOLUTION_VOICE", iPriceResolutionVoice);
  2199. iKeys |= (1<<2);
  2200. }
  2201. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_OTHER_RESOLUTION_VOICE", iPriceResolutionVoice);
  2202. }
  2203. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L [%d$]^n", id, "JBE_MENU_SHOP_OTHER_RESOLUTION_VOICE", iPriceResolutionVoice);
  2204. new iPriceTransferGuard = jbe_get_price_discount(id, g_iShopCvars[TRANSFER_GUARD]);
  2205. if(iPriceTransferGuard <= g_iUserMoney[id])
  2206. {
  2207. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_OTHER_TRANSFER_GUARD", iPriceTransferGuard);
  2208. iKeys |= (1<<3);
  2209. }
  2210. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_OTHER_TRANSFER_GUARD", iPriceTransferGuard);
  2211. new iPriceLotteryTicket = jbe_get_price_discount(id, g_iShopCvars[LOTTERY_TICKET]);
  2212. if(IsNotSetBit(g_iBitLotteryTicket, id))
  2213. {
  2214. if(iPriceLotteryTicket <= g_iUserMoney[id])
  2215. {
  2216. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_OTHER_LOTTERY_TICKET", iPriceLotteryTicket);
  2217. iKeys |= (1<<4);
  2218. }
  2219. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_OTHER_LOTTERY_TICKET", iPriceLotteryTicket);
  2220. }
  2221. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L [%d$]^n", id, "JBE_MENU_SHOP_OTHER_LOTTERY_TICKET", iPriceLotteryTicket);
  2222. new iPricePrankPrisoner = jbe_get_price_discount(id, g_iShopCvars[PRANK_PRISONER]);
  2223. if(g_iAlivePlayersNum[1] >= 2)
  2224. {
  2225. if(iPricePrankPrisoner <= g_iUserMoney[id])
  2226. {
  2227. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L \y[%d$]^n^n^n^n", id, "JBE_MENU_SHOP_OTHER_PRANK_PRISONER", iPricePrankPrisoner);
  2228. iKeys |= (1<<5);
  2229. }
  2230. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L \r[%d$]^n^n^n^n", id, "JBE_MENU_SHOP_OTHER_PRANK_PRISONER", iPricePrankPrisoner);
  2231. }
  2232. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L [%d$]^n^n^n^n", id, "JBE_MENU_SHOP_OTHER_PRANK_PRISONER", iPricePrankPrisoner);
  2233. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_BACK");
  2234. return show_menu(id, iKeys, szMenu, -1, "Show_ShopOtherMenu");
  2235. }
  2236.  
  2237. public Handle_ShopOtherMenu(id, iKey)
  2238. {
  2239. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  2240. switch(iKey)
  2241. {
  2242. case 0:
  2243. {
  2244. new iPriceCloseCase = jbe_get_price_discount(id, g_iShopCvars[CLOSE_CASE]);
  2245. if(IsSetBit(g_iBitUserWanted, id) && iPriceCloseCase <= g_iUserMoney[id])
  2246. {
  2247. jbe_set_user_money(id, g_iUserMoney[id] - iPriceCloseCase, 1);
  2248. jbe_sub_user_wanted(id);
  2249. return PLUGIN_HANDLED;
  2250. }
  2251. }
  2252. case 1:
  2253. {
  2254. new iPriceFreeDay = jbe_get_price_discount(id, g_iShopCvars[FREE_DAY_SHOP]);
  2255. if(g_iDayMode == 1 && IsNotSetBit(g_iBitUserFree, id) && IsNotSetBit(g_iBitUserWanted, id) && iPriceFreeDay <= g_iUserMoney[id])
  2256. {
  2257. jbe_set_user_money(id, g_iUserMoney[id] - iPriceFreeDay, 1);
  2258. jbe_add_user_free(id);
  2259. return PLUGIN_HANDLED;
  2260. }
  2261. }
  2262. case 2:
  2263. {
  2264. new iPriceResolutionVoice = jbe_get_price_discount(id, g_iShopCvars[RESOLUTION_VOICE]);
  2265. if(IsNotSetBit(g_iBitUserVoice, id) && iPriceResolutionVoice <= g_iUserMoney[id])
  2266. {
  2267. jbe_set_user_money(id, g_iUserMoney[id] - iPriceResolutionVoice, 1);
  2268. SetBit(g_iBitUserVoice, id);
  2269. return PLUGIN_HANDLED;
  2270. }
  2271. }
  2272. case 3:
  2273. {
  2274. new iPriceTransferGuard = jbe_get_price_discount(id, g_iShopCvars[TRANSFER_GUARD]);
  2275. if(iPriceTransferGuard <= g_iUserMoney[id])
  2276. {
  2277. if(jbe_set_user_team(id, 2)) jbe_set_user_money(id, g_iUserMoney[id] - iPriceTransferGuard, 1);
  2278. return PLUGIN_HANDLED;
  2279. }
  2280. }
  2281. case 4:
  2282. {
  2283. new iPriceLotteryTicket = jbe_get_price_discount(id, g_iShopCvars[LOTTERY_TICKET]);
  2284. if(IsNotSetBit(g_iBitLotteryTicket, id) && iPriceLotteryTicket <= g_iUserMoney[id])
  2285. {
  2286. jbe_set_user_money(id, g_iUserMoney[id] - iPriceLotteryTicket, 1);
  2287. SetBit(g_iBitLotteryTicket, id);
  2288. new iPrize;
  2289. switch(random_num(0, 7))
  2290. {
  2291. case 0: iPrize = 100;
  2292. case 2: iPrize = 300;
  2293. case 4: iPrize = 200;
  2294. case 5: iPrize = 50;
  2295. }
  2296. if(iPrize)
  2297. {
  2298. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_LOTTERY_WIN", iPrize);
  2299. jbe_set_user_money(id, g_iUserMoney[id] + iPrize, 1);
  2300. }
  2301. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_LOTTERY_LOSS");
  2302. return PLUGIN_HANDLED;
  2303. }
  2304. }
  2305. case 5: if(g_iAlivePlayersNum[1] >= 2) return Cmd_PrankPrisonerMenu(id);
  2306. case 9: return Show_ShopPrisonersMenu(id);
  2307. }
  2308. return Show_ShopOtherMenu(id);
  2309. }
  2310.  
  2311. Cmd_PrankPrisonerMenu(id) return Show_PrankPrisonerMenu(id, g_iMenuPosition[id] = 0);
  2312. Show_PrankPrisonerMenu(id, iPos)
  2313. {
  2314. if(iPos < 0 || g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  2315. jbe_informer_offset_up(id);
  2316. new iPlayersNum;
  2317. for(new i = 1; i <= g_iMaxPlayers; i++)
  2318. {
  2319. if(g_iUserTeam[i] != 1 || IsNotSetBit(g_iBitUserAlive, i) || IsSetBit(g_iBitUserWanted, i) || i == id) continue;
  2320. g_iMenuPlayers[id][iPlayersNum++] = i;
  2321. }
  2322. new iStart = iPos * PLAYERS_PER_PAGE;
  2323. if(iStart > iPlayersNum) iStart = iPlayersNum;
  2324. iStart = iStart - (iStart % 8);
  2325. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  2326. new iEnd = iStart + PLAYERS_PER_PAGE;
  2327. if(iEnd > iPlayersNum) iEnd = iPlayersNum;
  2328. new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
  2329. switch(iPagesNum)
  2330. {
  2331. case 0:
  2332. {
  2333. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  2334. return Show_ShopOtherMenu(id);
  2335. }
  2336. default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_MENU_PRANK_PRISONER_TITLE", iPos + 1, iPagesNum);
  2337. }
  2338. new szName[32], i, iKeys = (1<<9), b;
  2339. for(new a = iStart; a < iEnd; a++)
  2340. {
  2341. i = g_iMenuPlayers[id][a];
  2342. get_user_name(i, szName, charsmax(szName));
  2343. iKeys |= (1<<b);
  2344. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s^n", ++b, szName);
  2345. }
  2346. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  2347. if(iEnd < iPlayersNum)
  2348. {
  2349. iKeys |= (1<<8);
  2350. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  2351. }
  2352. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  2353. return show_menu(id, iKeys, szMenu, -1, "Show_PrankPrisonerMenu");
  2354. }
  2355.  
  2356. public Handle_PrankPrisonerMenu(id, iKey)
  2357. {
  2358. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  2359. switch(iKey)
  2360. {
  2361. case 8: return Show_PrankPrisonerMenu(id, ++g_iMenuPosition[id]);
  2362. case 9: return Show_PrankPrisonerMenu(id, --g_iMenuPosition[id]);
  2363. default:
  2364. {
  2365. new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
  2366. new iPricePrankPrisoner = jbe_get_price_discount(id, g_iShopCvars[PRANK_PRISONER]);
  2367. if(iPricePrankPrisoner <= g_iUserMoney[id])
  2368. {
  2369. if(g_iUserTeam[iTarget] == 1 || IsSetBit(g_iBitUserAlive, iTarget) || IsNotSetBit(g_iBitUserWanted, iTarget))
  2370. {
  2371. jbe_set_user_money(id, g_iUserMoney[id] - iPricePrankPrisoner, 1);
  2372. if(!g_szWantedNames[0])
  2373. {
  2374. emit_sound(0, CHAN_AUTO, "alcatraz_jb/prison_riot.wav", VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM);
  2375. emit_sound(0, CHAN_AUTO, "alcatraz_jb/prison_riot.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  2376. }
  2377. jbe_add_user_wanted(iTarget);
  2378. }
  2379. else return Show_PrankPrisonerMenu(id, g_iMenuPosition[id]);
  2380. }
  2381. else return Show_ShopOtherMenu(id);
  2382. }
  2383. }
  2384. return PLUGIN_HANDLED;
  2385. }
  2386.  
  2387. Show_ShopGuardMenu(id)
  2388. {
  2389. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  2390. jbe_informer_offset_up(id);
  2391. jbe_set_user_discount(id);
  2392. new szMenu[512], iKeys = (1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n", id, "JBE_MENU_SHOP_GUARD_TITLE", g_iUserDiscount[id]);
  2393. new iPriceStimulator = jbe_get_price_discount(id, g_iShopCvars[STIMULATOR_GR]);
  2394. if(get_user_health(id) < 200)
  2395. {
  2396. if(iPriceStimulator <= g_iUserMoney[id])
  2397. {
  2398. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_GUARD_STIMULATOR", iPriceStimulator);
  2399. iKeys |= (1<<0);
  2400. }
  2401. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_GUARD_STIMULATOR", iPriceStimulator);
  2402. }
  2403. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L [%d$]^n", id, "JBE_MENU_SHOP_GUARD_STIMULATOR", iPriceStimulator);
  2404. new iPriceRandomGlow = jbe_get_price_discount(id, g_iShopCvars[RANDOM_GLOW_GR]);
  2405. if(IsNotSetBit(g_iBitRandomGlow, id))
  2406. {
  2407. if(iPriceRandomGlow <= g_iUserMoney[id])
  2408. {
  2409. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_GUARD_RANDOM_GLOW", iPriceRandomGlow);
  2410. iKeys |= (1<<1);
  2411. }
  2412. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_GUARD_RANDOM_GLOW", iPriceRandomGlow);
  2413. }
  2414. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L [%d$]^n", id, "JBE_MENU_SHOP_GUARD_RANDOM_GLOW", iPriceRandomGlow);
  2415. new iPriceLotteryTicket = jbe_get_price_discount(id, g_iShopCvars[LOTTERY_TICKET_GR]);
  2416. if(IsNotSetBit(g_iBitLotteryTicket, id))
  2417. {
  2418. if(iPriceLotteryTicket <= g_iUserMoney[id])
  2419. {
  2420. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_GUARD_LOTTERY_TICKET", iPriceLotteryTicket);
  2421. iKeys |= (1<<2);
  2422. }
  2423. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_GUARD_LOTTERY_TICKET", iPriceLotteryTicket);
  2424. }
  2425. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L [%d$]^n", id, "JBE_MENU_SHOP_GUARD_LOTTERY_TICKET", iPriceLotteryTicket);
  2426. new iPriceKokain = jbe_get_price_discount(id, g_iShopCvars[KOKAIN_GR]);
  2427. if(IsNotSetBit(g_iBitKokain, id))
  2428. {
  2429. if(iPriceKokain <= g_iUserMoney[id])
  2430. {
  2431. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_GUARD_KOKAIN", iPriceKokain);
  2432. iKeys |= (1<<3);
  2433. }
  2434. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_GUARD_KOKAIN", iPriceKokain);
  2435. }
  2436. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L [%d$]^n", id, "JBE_MENU_SHOP_GUARD_KOKAIN", iPriceKokain);
  2437. new iPriceDoubleJump = jbe_get_price_discount(id, g_iShopCvars[DOUBLE_JUMP_GR]);
  2438. if(IsNotSetBit(g_iBitDoubleJump, id))
  2439. {
  2440. if(iPriceDoubleJump <= g_iUserMoney[id])
  2441. {
  2442. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_GUARD_DOUBLE_JUMP", iPriceDoubleJump);
  2443. iKeys |= (1<<4);
  2444. }
  2445. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_GUARD_DOUBLE_JUMP", iPriceDoubleJump);
  2446. }
  2447. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L [%d$]^n", id, "JBE_MENU_SHOP_GUARD_DOUBLE_JUMP", iPriceDoubleJump);
  2448. new iPriceFastRun = jbe_get_price_discount(id, g_iShopCvars[FAST_RUN_GR]);
  2449. if(IsNotSetBit(g_iBitFastRun, id))
  2450. {
  2451. if(iPriceFastRun <= g_iUserMoney[id])
  2452. {
  2453. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L \y[%d$]^n", id, "JBE_MENU_SHOP_GUARD_FAST_RUN", iPriceFastRun);
  2454. iKeys |= (1<<5);
  2455. }
  2456. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L \r[%d$]^n", id, "JBE_MENU_SHOP_GUARD_FAST_RUN", iPriceFastRun);
  2457. }
  2458. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L [%d$]^n", id, "JBE_MENU_SHOP_GUARD_FAST_RUN", iPriceFastRun);
  2459. new iPriceLowGravity = jbe_get_price_discount(id, g_iShopCvars[LOW_GRAVITY_GR]);
  2460. if(pev(id, pev_gravity) == 1.0)
  2461. {
  2462. if(iPriceLowGravity <= g_iUserMoney[id])
  2463. {
  2464. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \w%L \y[%d$]^n^n", id, "JBE_MENU_SHOP_GUARD_LOW_GRAVITY", iPriceLowGravity);
  2465. iKeys |= (1<<6);
  2466. }
  2467. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \d%L \r[%d$]^n^n", id, "JBE_MENU_SHOP_GUARD_LOW_GRAVITY", iPriceLowGravity);
  2468. }
  2469. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \d%L [%d$]^n^n", id, "JBE_MENU_SHOP_GUARD_LOW_GRAVITY", iPriceLowGravity);
  2470. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  2471. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  2472. return show_menu(id, iKeys, szMenu, -1, "Show_ShopGuardMenu");
  2473. }
  2474.  
  2475. public Handle_ShopGuardMenu(id, iKey)
  2476. {
  2477. if(g_iDayMode != 1 && g_iDayMode != 2 || IsNotSetBit(g_iBitUserAlive, id) || IsSetBit(g_iBitUserDuel, id)) return PLUGIN_HANDLED;
  2478. switch(iKey)
  2479. {
  2480. case 0:
  2481. {
  2482. new iPriceStimulator = jbe_get_price_discount(id, g_iShopCvars[STIMULATOR_GR]);
  2483. if(get_user_health(id) < 200 && iPriceStimulator <= g_iUserMoney[id])
  2484. {
  2485. jbe_set_user_money(id, g_iUserMoney[id] - iPriceStimulator, 1);
  2486. jbe_set_syringe_model(id);
  2487. set_task(1.3, "jbe_set_syringe_health", id+TASK_REMOVE_SYRINGE);
  2488. set_task(2.8, "jbe_remove_syringe_model", id+TASK_REMOVE_SYRINGE);
  2489. return PLUGIN_HANDLED;
  2490. }
  2491. }
  2492. case 1:
  2493. {
  2494. new iPriceRandomGlow = jbe_get_price_discount(id, g_iShopCvars[RANDOM_GLOW_GR]);
  2495. if(iPriceRandomGlow <= g_iUserMoney[id])
  2496. {
  2497. jbe_set_user_money(id, g_iUserMoney[id] - iPriceRandomGlow, 1);
  2498. SetBit(g_iBitRandomGlow, id);
  2499. jbe_set_user_rendering(id, kRenderFxGlowShell, random_num(0, 255), random_num(0, 255), random_num(0, 255), kRenderNormal, 0);
  2500. jbe_get_user_rendering(id, g_eUserRendering[id][RENDER_FX], g_eUserRendering[id][RENDER_RED], g_eUserRendering[id][RENDER_GREEN], g_eUserRendering[id][RENDER_BLUE], g_eUserRendering[id][RENDER_MODE], g_eUserRendering[id][RENDER_AMT]);
  2501. g_eUserRendering[id][RENDER_STATUS] = true;
  2502. return PLUGIN_HANDLED;
  2503. }
  2504. }
  2505. case 2:
  2506. {
  2507. new iPriceLotteryTicket = jbe_get_price_discount(id, g_iShopCvars[LOTTERY_TICKET_GR]);
  2508. if(IsNotSetBit(g_iBitLotteryTicket, id) && iPriceLotteryTicket <= g_iUserMoney[id])
  2509. {
  2510. jbe_set_user_money(id, g_iUserMoney[id] - iPriceLotteryTicket, 1);
  2511. SetBit(g_iBitLotteryTicket, id);
  2512. new iPrize;
  2513. switch(random_num(0, 7))
  2514. {
  2515. case 0: iPrize = 100;
  2516. case 2: iPrize = 300;
  2517. case 4: iPrize = 200;
  2518. case 5: iPrize = 50;
  2519. }
  2520. if(iPrize)
  2521. {
  2522. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_LOTTERY_WIN", iPrize);
  2523. jbe_set_user_money(id, g_iUserMoney[id] + iPrize, 1);
  2524. }
  2525. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_LOTTERY_LOSS");
  2526. return PLUGIN_HANDLED;
  2527. }
  2528. }
  2529. case 3:
  2530. {
  2531. new iPriceKokain = jbe_get_price_discount(id, g_iShopCvars[KOKAIN_GR]);
  2532. if(IsNotSetBit(g_iBitKokain, id) && iPriceKokain <= g_iUserMoney[id])
  2533. {
  2534. jbe_set_user_money(id, g_iUserMoney[id] - iPriceKokain, 1);
  2535. SetBit(g_iBitKokain, id);
  2536. jbe_set_syringe_model(id);
  2537. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_MENU_ID_KOKAIN");
  2538. set_task(2.8, "jbe_remove_syringe_model", id+TASK_REMOVE_SYRINGE);
  2539. return PLUGIN_HANDLED;
  2540. }
  2541. }
  2542. case 4:
  2543. {
  2544. new iPriceDoubleJump = jbe_get_price_discount(id, g_iShopCvars[DOUBLE_JUMP_GR]);
  2545. if(iPriceDoubleJump <= g_iUserMoney[id])
  2546. {
  2547. jbe_set_user_money(id, g_iUserMoney[id] - iPriceDoubleJump, 1);
  2548. SetBit(g_iBitDoubleJump, id);
  2549. return PLUGIN_HANDLED;
  2550. }
  2551. }
  2552. case 5:
  2553. {
  2554. new iPriceFastRun = jbe_get_price_discount(id, g_iShopCvars[FAST_RUN_GR]);
  2555. if(iPriceFastRun <= g_iUserMoney[id])
  2556. {
  2557. jbe_set_user_money(id, g_iUserMoney[id] - iPriceFastRun, 1);
  2558. SetBit(g_iBitFastRun, id);
  2559. ExecuteHamB(Ham_Player_ResetMaxSpeed, id);
  2560. return PLUGIN_HANDLED;
  2561. }
  2562. }
  2563. case 6:
  2564. {
  2565. new iPriceLowGravity = jbe_get_price_discount(id, g_iShopCvars[LOW_GRAVITY_GR]);
  2566. if(iPriceLowGravity <= g_iUserMoney[id])
  2567. {
  2568. jbe_set_user_money(id, g_iUserMoney[id] - iPriceLowGravity, 1);
  2569. set_pev(id, pev_gravity, 0.2);
  2570. return PLUGIN_HANDLED;
  2571. }
  2572. }
  2573. case 8: return Show_MainGrMenu(id);
  2574. }
  2575. return PLUGIN_HANDLED;
  2576. }
  2577.  
  2578. Cmd_MoneyTransferMenu(id) return Show_MoneyTransferMenu(id, g_iMenuPosition[id] = 0);
  2579. Show_MoneyTransferMenu(id, iPos)
  2580. {
  2581. if(iPos < 0) return PLUGIN_HANDLED;
  2582. jbe_informer_offset_up(id);
  2583. new iPlayersNum;
  2584. for(new i = 1; i <= g_iMaxPlayers; i++)
  2585. {
  2586. if(IsNotSetBit(g_iBitUserConnected, i) || i == id) continue;
  2587. g_iMenuPlayers[id][iPlayersNum++] = i;
  2588. }
  2589. new iStart = iPos * PLAYERS_PER_PAGE;
  2590. if(iStart > iPlayersNum) iStart = iPlayersNum;
  2591. iStart = iStart - (iStart % 8);
  2592. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  2593. new iEnd = iStart + PLAYERS_PER_PAGE;
  2594. if(iEnd > iPlayersNum) iEnd = iPlayersNum;
  2595. new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
  2596. switch(iPagesNum)
  2597. {
  2598. case 0:
  2599. {
  2600. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  2601. return Show_ChiefMenu_1(id);
  2602. }
  2603. default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n\d%L^n", id, "JBE_MENU_MONEY_TRANSFER_TITLE", iPos + 1, iPagesNum, id, "JBE_MENU_MONEY_YOU_AMOUNT", g_iUserMoney[id]);
  2604. }
  2605. new szName[32], i, iKeys = (1<<9), b;
  2606. for(new a = iStart; a < iEnd; a++)
  2607. {
  2608. i = g_iMenuPlayers[id][a];
  2609. get_user_name(i, szName, charsmax(szName));
  2610. iKeys |= (1<<b);
  2611. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s \r[%d$]^n", ++b, szName, g_iUserMoney[i]);
  2612. }
  2613. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  2614. if(iEnd < iPlayersNum)
  2615. {
  2616. iKeys |= (1<<8);
  2617. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  2618. }
  2619. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  2620. return show_menu(id, iKeys, szMenu, -1, "Show_MoneyTransferMenu");
  2621. }
  2622.  
  2623. public Handle_MoneyTransferMenu(id, iKey)
  2624. {
  2625. switch(iKey)
  2626. {
  2627. case 8: return Show_MoneyTransferMenu(id, ++g_iMenuPosition[id]);
  2628. case 9: return Show_MoneyTransferMenu(id, --g_iMenuPosition[id]);
  2629. default:
  2630. {
  2631. g_iMenuTarget[id] = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
  2632. return Show_MoneyAmountMenu(id);
  2633. }
  2634. }
  2635. return PLUGIN_HANDLED;
  2636. }
  2637.  
  2638. Show_MoneyAmountMenu(id)
  2639. {
  2640. jbe_informer_offset_up(id);
  2641. new szMenu[512], iKeys = (1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n\d%L^n", id, "JBE_MENU_MONEY_AMOUNT_TITLE", id, "JBE_MENU_MONEY_YOU_AMOUNT", g_iUserMoney[id]);
  2642. if(g_iUserMoney[id])
  2643. {
  2644. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%d$^n", floatround(g_iUserMoney[id] * 0.10, floatround_ceil));
  2645. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%d$^n", floatround(g_iUserMoney[id] * 0.25, floatround_ceil));
  2646. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%d$^n", floatround(g_iUserMoney[id] * 0.50, floatround_ceil));
  2647. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%d$^n", floatround(g_iUserMoney[id] * 0.75, floatround_ceil));
  2648. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%d$^n^n^n", g_iUserMoney[id]);
  2649. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \w%L^n", id, "JBE_MENU_MONEY_SPECIFY_AMOUNT");
  2650. iKeys |= (1<<0|1<<1|1<<2|1<<3|1<<4|1<<7);
  2651. }
  2652. else
  2653. {
  2654. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d0$^n\y[2] \d0$^n\y[3] \d0$^n\y[4] \d0$^n\y[5] \d0$^n^n^n");
  2655. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \d%L^n", id, "JBE_MENU_MONEY_SPECIFY_AMOUNT");
  2656. }
  2657. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  2658. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  2659. return show_menu(id, iKeys, szMenu, -1, "Show_MoneyAmountMenu");
  2660. }
  2661.  
  2662. public Handle_MoneyAmountMenu(id, iKey)
  2663. {
  2664. switch(iKey)
  2665. {
  2666. case 0: ClCmd_MoneyTransfer(id, g_iMenuTarget[id], floatround(g_iUserMoney[id] * 0.10, floatround_ceil));
  2667. case 1: ClCmd_MoneyTransfer(id, g_iMenuTarget[id], floatround(g_iUserMoney[id] * 0.25, floatround_ceil));
  2668. case 2: ClCmd_MoneyTransfer(id, g_iMenuTarget[id], floatround(g_iUserMoney[id] * 0.50, floatround_ceil));
  2669. case 3: ClCmd_MoneyTransfer(id, g_iMenuTarget[id], floatround(g_iUserMoney[id] * 0.75, floatround_ceil));
  2670. case 4: ClCmd_MoneyTransfer(id, g_iMenuTarget[id], g_iUserMoney[id]);
  2671. case 7: client_cmd(id, "messagemode ^"money_transfer %d^"", g_iMenuTarget[id]);
  2672. case 8: return Show_MoneyTransferMenu(id, g_iMenuPosition[id]);
  2673. }
  2674. return PLUGIN_HANDLED;
  2675. }
  2676.  
  2677. Cmd_CostumesMenu(id) return Show_CostumesMenu(id, g_iMenuPosition[id] = 0);
  2678. Show_CostumesMenu(id, iPos)
  2679. {
  2680. if(iPos < 0 || g_iDayMode != 1 && g_iDayMode != 2) return PLUGIN_HANDLED;
  2681. jbe_informer_offset_up(id);
  2682. new iStart = iPos * PLAYERS_PER_PAGE;
  2683. if(iStart > g_iCostumesListSize) iStart = g_iCostumesListSize;
  2684. iStart = iStart - (iStart % 8);
  2685. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  2686. new iEnd = iStart + PLAYERS_PER_PAGE;
  2687. if(iEnd > g_iCostumesListSize) iEnd = g_iCostumesListSize + (iPos ? 0 : 1);
  2688. new szMenu[512], iLen, iPagesNum = (g_iCostumesListSize / PLAYERS_PER_PAGE + ((g_iCostumesListSize % PLAYERS_PER_PAGE) ? 1 : 0));
  2689. iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_MENU_COSTUMES_TITLE", iPos + 1, iPagesNum);
  2690. new szLangPlayer[32], iKeys = (1<<9), b;
  2691. for(new a = iStart; a < iEnd; a++)
  2692. {
  2693. formatex(szLangPlayer, charsmax(szLangPlayer), "JBE_MENU_COSTUMES_%d", a);
  2694. if(g_eUserCostumes[id][COSTUMES] != a)
  2695. {
  2696. iKeys |= (1<<b);
  2697. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%L^n", ++b, id, szLangPlayer);
  2698. }
  2699. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \d%L^n", ++b, id, szLangPlayer);
  2700. }
  2701. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  2702. if(iEnd < g_iCostumesListSize)
  2703. {
  2704. iKeys |= (1<<8);
  2705. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  2706. }
  2707. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  2708. return show_menu(id, iKeys, szMenu, -1, "Show_CostumesMenu");
  2709. }
  2710.  
  2711. public Handle_CostumesMenu(id, iKey)
  2712. {
  2713. if(g_iDayMode != 1 && g_iDayMode != 2) return PLUGIN_HANDLED;
  2714. switch(iKey)
  2715. {
  2716. case 8: return Show_CostumesMenu(id, ++g_iMenuPosition[id]);
  2717. case 9: return Show_CostumesMenu(id, --g_iMenuPosition[id]);
  2718. default:
  2719. {
  2720. new iCostumes = g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey;
  2721. jbe_set_user_costumes(id, iCostumes);
  2722. }
  2723. }
  2724. return PLUGIN_HANDLED;
  2725. }
  2726.  
  2727. Show_ChiefMenu_1(id)
  2728. {
  2729. if(g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  2730. jbe_informer_offset_up(id);
  2731. new szMenu[512], iKeys = (1<<0|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_CHIEF_TITLE");
  2732. if(g_bDoorStatus) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_CHIEF_DOOR_CLOSE");
  2733. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_CHIEF_DOOR_OPEN");
  2734. if(g_iDayMode == 1)
  2735. {
  2736. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_CHIEF_COUNTDOWN");
  2737. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_CHIEF_PRISONER_SEARCH");
  2738. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_CHIEF_FREE_DAY_CONTROL");
  2739. iKeys |= (1<<1|1<<2|1<<3);
  2740. }
  2741. else
  2742. {
  2743. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L^n", id, "JBE_MENU_CHIEF_COUNTDOWN");
  2744. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n", id, "JBE_MENU_CHIEF_PRISONER_SEARCH");
  2745. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n", id, "JBE_MENU_CHIEF_FREE_DAY_CONTROL");
  2746. }
  2747. if(g_iDayMode == 1) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_CHIEF_FREE_DAY_START");
  2748. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_CHIEF_FREE_DAY_END");
  2749. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n", id, "JBE_MENU_CHIEF_PUNISH_GUARD");
  2750. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \w%L^n", id, "JBE_MENU_CHIEF_TRANSFER_CHIEF");
  2751. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \w%L^n", id, "JBE_MENU_CHIEF_TREAT_PRISONER");
  2752. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_NEXT");
  2753. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  2754. return show_menu(id, iKeys, szMenu, -1, "Show_ChiefMenu_1");
  2755. }
  2756.  
  2757. public Handle_ChiefMenu_1(id, iKey)
  2758. {
  2759. if(g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  2760. switch(iKey)
  2761. {
  2762. case 0:
  2763. {
  2764. if(g_bDoorStatus) jbe_close_doors();
  2765. else jbe_open_doors();
  2766. }
  2767. case 1: if(g_iDayMode == 1) return Show_CountDownMenu(id);
  2768. case 2:
  2769. {
  2770. if(g_iDayMode == 1)
  2771. {
  2772. new iTarget, iBody;
  2773. get_user_aiming(id, iTarget, iBody, 60);
  2774. if(jbe_is_user_valid(iTarget) && IsSetBit(g_iBitUserAlive, iTarget))
  2775. {
  2776. if(g_iUserTeam[iTarget] != 1) UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_NOT_TEAM_SEARCH");
  2777. else
  2778. {
  2779. new iBitWeapons = pev(iTarget, pev_weapons);
  2780. if(iBitWeapons &= ~(1<<CSW_HEGRENADE|1<<CSW_SMOKEGRENADE|1<<CSW_FLASHBANG|1<<CSW_KNIFE|1<<31)) UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_FOUND_WEAPON");
  2781. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_NOT_FOUND_WEAPON");
  2782. }
  2783. }
  2784. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_HELP_FOUND_WEAPON");
  2785. }
  2786. }
  2787. case 3: if(g_iDayMode == 1) return Cmd_FreeDayControlMenu(id);
  2788. case 4:
  2789. {
  2790. if(g_iDayMode == 1) jbe_free_day_start();
  2791. else jbe_free_day_ended();
  2792. }
  2793. case 5: return Cmd_PunishGuardMenu(id);
  2794. case 6: return Cmd_TransferChiefMenu(id);
  2795. case 7: return Cmd_TreatPrisonerMenu(id);
  2796. case 8: return Show_ChiefMenu_2(id);
  2797. case 9: return PLUGIN_HANDLED;
  2798. }
  2799. return Show_ChiefMenu_1(id);
  2800. }
  2801.  
  2802. Show_CountDownMenu(id)
  2803. {
  2804. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  2805. jbe_informer_offset_up(id);
  2806. new szMenu[512], iKeys = (1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_COUNT_DOWN_TITLE");
  2807. if(task_exists(TASK_COUNT_DOWN_TIMER))
  2808. {
  2809. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L^n", id, "JBE_MENU_COUNT_DOWN_10");
  2810. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L^n", id, "JBE_MENU_COUNT_DOWN_5");
  2811. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n^n^n^n^n^n", id, "JBE_MENU_COUNT_DOWN_3");
  2812. }
  2813. else
  2814. {
  2815. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_COUNT_DOWN_10");
  2816. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_COUNT_DOWN_5");
  2817. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n^n^n^n^n^n", id, "JBE_MENU_COUNT_DOWN_3");
  2818. iKeys |= (1<<0|1<<1|1<<2);
  2819. }
  2820. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  2821. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  2822. return show_menu(id, iKeys, szMenu, -1, "Show_CountDownMenu");
  2823. }
  2824.  
  2825. public Handle_CountDownMenu(id, iKey)
  2826. {
  2827. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  2828. switch(iKey)
  2829. {
  2830. case 0: g_iCountDown = 11;
  2831. case 1: g_iCountDown = 6;
  2832. case 2: g_iCountDown = 4;
  2833. case 8: return Show_ChiefMenu_1(id);
  2834. case 9: return PLUGIN_HANDLED;
  2835. }
  2836. set_task(1.0, "jbe_count_down_timer", TASK_COUNT_DOWN_TIMER, _, _, "a", g_iCountDown);
  2837. return Show_ChiefMenu_1(id);
  2838. }
  2839.  
  2840. public jbe_count_down_timer()
  2841. {
  2842. if(--g_iCountDown) client_print(0, print_center, "%L", LANG_PLAYER, "JBE_MENU_COUNT_DOWN_TIME", g_iCountDown);
  2843. else client_print(0, print_center, "%L", LANG_PLAYER, "JBE_MENU_COUNT_DOWN_TIME_END");
  2844. UTIL_SendAudio(0, _, "alcatraz_jb/countdown/%d.wav", g_iCountDown);
  2845. }
  2846.  
  2847. Cmd_FreeDayControlMenu(id) return Show_FreeDayControlMenu(id, g_iMenuPosition[id] = 0);
  2848. Show_FreeDayControlMenu(id, iPos)
  2849. {
  2850. if(iPos < 0 || g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  2851. jbe_informer_offset_up(id);
  2852. new iPlayersNum;
  2853. for(new i = 1; i <= g_iMaxPlayers; i++)
  2854. {
  2855. if(g_iUserTeam[i] != 1 || IsSetBit(g_iBitUserFreeNextRound, i) || IsSetBit(g_iBitUserWanted, i)) continue;
  2856. g_iMenuPlayers[id][iPlayersNum++] = i;
  2857. }
  2858. new iStart = iPos * PLAYERS_PER_PAGE;
  2859. if(iStart > iPlayersNum) iStart = iPlayersNum;
  2860. iStart = iStart - (iStart % 8);
  2861. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  2862. new iEnd = iStart + PLAYERS_PER_PAGE;
  2863. if(iEnd > iPlayersNum) iEnd = iPlayersNum;
  2864. new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
  2865. switch(iPagesNum)
  2866. {
  2867. case 0:
  2868. {
  2869. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  2870. return Show_ChiefMenu_1(id);
  2871. }
  2872. default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_MENU_FREE_DAY_CONTROL_TITLE", iPos + 1, iPagesNum);
  2873. }
  2874. new szName[32], i, iKeys = (1<<9), b;
  2875. for(new a = iStart; a < iEnd; a++)
  2876. {
  2877. i = g_iMenuPlayers[id][a];
  2878. get_user_name(i, szName, charsmax(szName));
  2879. iKeys |= (1<<b);
  2880. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s \r[%L]^n", ++b, szName, i, IsSetBit(g_iBitUserFree, i) ? "JBE_MENU_FREE_DAY_CONTROL_TAKE" : "JBE_MENU_FREE_DAY_CONTROL_GIVE");
  2881. }
  2882. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  2883. if(iEnd < iPlayersNum)
  2884. {
  2885. iKeys |= (1<<8);
  2886. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  2887. }
  2888. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  2889. return show_menu(id, iKeys, szMenu, -1, "Show_FreeDayControlMenu");
  2890. }
  2891.  
  2892. public Handle_FreeDayControlMenu(id, iKey)
  2893. {
  2894. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  2895. switch(iKey)
  2896. {
  2897. case 8: return Show_FreeDayControlMenu(id, ++g_iMenuPosition[id]);
  2898. case 9: return Show_FreeDayControlMenu(id, --g_iMenuPosition[id]);
  2899. default:
  2900. {
  2901. new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
  2902. if(g_iUserTeam[iTarget] != 1 || IsSetBit(g_iBitUserFreeNextRound, iTarget) || IsSetBit(g_iBitUserWanted, iTarget)) return Show_FreeDayControlMenu(id, g_iMenuPosition[id]);
  2903. new szName[32], szTargetName[32];
  2904. get_user_name(id, szName, charsmax(szName));
  2905. get_user_name(iTarget, szTargetName, charsmax(szTargetName));
  2906. if(IsSetBit(g_iBitUserFree, iTarget))
  2907. {
  2908. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ALL_CHIEF_TAKE_FREE_DAY", szName, szTargetName);
  2909. jbe_sub_user_free(iTarget);
  2910. }
  2911. else
  2912. {
  2913. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ALL_CHIEF_GIVE_FREE_DAY", szName, szTargetName);
  2914. if(IsSetBit(g_iBitUserAlive, iTarget)) jbe_add_user_free(iTarget);
  2915. else
  2916. {
  2917. jbe_add_user_free_next_round(iTarget);
  2918. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ALL_AUTO_FREE_DAY", szTargetName);
  2919. }
  2920. }
  2921. }
  2922. }
  2923. return Show_FreeDayControlMenu(id, g_iMenuPosition[id]);
  2924. }
  2925.  
  2926. Cmd_PunishGuardMenu(id) return Show_PunishGuardMenu(id, g_iMenuPosition[id] = 0);
  2927. Show_PunishGuardMenu(id, iPos)
  2928. {
  2929. if(iPos < 0 || g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  2930. jbe_informer_offset_up(id);
  2931. new iPlayersNum;
  2932. for(new i = 1; i <= g_iMaxPlayers; i++)
  2933. {
  2934. if(g_iUserTeam[i] != 2 || i == g_iChiefId || IsSetBit(g_iBitUserAdmin, i)) continue;
  2935. g_iMenuPlayers[id][iPlayersNum++] = i;
  2936. }
  2937. new iStart = iPos * PLAYERS_PER_PAGE;
  2938. if(iStart > iPlayersNum) iStart = iPlayersNum;
  2939. iStart = iStart - (iStart % 8);
  2940. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  2941. new iEnd = iStart + PLAYERS_PER_PAGE;
  2942. if(iEnd > iPlayersNum) iEnd = iPlayersNum;
  2943. new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
  2944. switch(iPagesNum)
  2945. {
  2946. case 0:
  2947. {
  2948. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  2949. return Show_ChiefMenu_1(id);
  2950. }
  2951. default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_MENU_PUNISH_GUARD_TITLE", iPos + 1, iPagesNum);
  2952. }
  2953. new szName[32], i, iKeys = (1<<9), b;
  2954. for(new a = iStart; a < iEnd; a++)
  2955. {
  2956. i = g_iMenuPlayers[id][a];
  2957. get_user_name(i, szName, charsmax(szName));
  2958. iKeys |= (1<<b);
  2959. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s^n", ++b, szName);
  2960. }
  2961. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  2962. if(iEnd < iPlayersNum)
  2963. {
  2964. iKeys |= (1<<8);
  2965. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  2966. }
  2967. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  2968. return show_menu(id, iKeys, szMenu, -1, "Show_PunishGuardMenu");
  2969. }
  2970.  
  2971. public Handle_PunishGuardMenu(id, iKey)
  2972. {
  2973. if(g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  2974. switch(iKey)
  2975. {
  2976. case 8: return Show_PunishGuardMenu(id, ++g_iMenuPosition[id]);
  2977. case 9: return Show_PunishGuardMenu(id, --g_iMenuPosition[id]);
  2978. default:
  2979. {
  2980. new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
  2981. if(g_iUserTeam[iTarget] == 2)
  2982. {
  2983. if(jbe_set_user_team(iTarget, 1))
  2984. {
  2985. new szName[32], szTargetName[32];
  2986. get_user_name(id, szName, charsmax(szName));
  2987. get_user_name(iTarget, szTargetName, charsmax(szTargetName));
  2988. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ALL_PUNISH_GUARD", szName, szTargetName);
  2989. }
  2990. }
  2991. }
  2992. }
  2993. return Show_PunishGuardMenu(id, g_iMenuPosition[id]);
  2994. }
  2995.  
  2996. Cmd_TransferChiefMenu(id) return Show_TransferChiefMenu(id, g_iMenuPosition[id] = 0);
  2997. Show_TransferChiefMenu(id, iPos)
  2998. {
  2999. if(iPos < 0 || g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3000. jbe_informer_offset_up(id);
  3001. new iPlayersNum;
  3002. for(new i = 1; i <= g_iMaxPlayers; i++)
  3003. {
  3004. if(g_iUserTeam[i] != 2 || IsNotSetBit(g_iBitUserAlive, i) || i == g_iChiefId) continue;
  3005. g_iMenuPlayers[id][iPlayersNum++] = i;
  3006. }
  3007. new iStart = iPos * PLAYERS_PER_PAGE;
  3008. if(iStart > iPlayersNum) iStart = iPlayersNum;
  3009. iStart = iStart - (iStart % 8);
  3010. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  3011. new iEnd = iStart + PLAYERS_PER_PAGE;
  3012. if(iEnd > iPlayersNum) iEnd = iPlayersNum;
  3013. new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
  3014. switch(iPagesNum)
  3015. {
  3016. case 0:
  3017. {
  3018. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  3019. return Show_ChiefMenu_1(id);
  3020. }
  3021. default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_MENU_TRANSFER_CHIEF_TITLE", iPos + 1, iPagesNum);
  3022. }
  3023. new szName[32], i, iKeys = (1<<9), b;
  3024. for(new a = iStart; a < iEnd; a++)
  3025. {
  3026. i = g_iMenuPlayers[id][a];
  3027. get_user_name(i, szName, charsmax(szName));
  3028. iKeys |= (1<<b);
  3029. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s^n", ++b, szName);
  3030. }
  3031. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  3032. if(iEnd < iPlayersNum)
  3033. {
  3034. iKeys |= (1<<8);
  3035. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  3036. }
  3037. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  3038. return show_menu(id, iKeys, szMenu, -1, "Show_TransferChiefMenu");
  3039. }
  3040.  
  3041. public Handle_TransferChiefMenu(id, iKey)
  3042. {
  3043. if(g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3044. switch(iKey)
  3045. {
  3046. case 8: return Show_TransferChiefMenu(id, ++g_iMenuPosition[id]);
  3047. case 9: return Show_TransferChiefMenu(id, --g_iMenuPosition[id]);
  3048. default:
  3049. {
  3050. new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
  3051. if(jbe_set_user_chief(iTarget))
  3052. {
  3053. new szName[32], szTargetName[32];
  3054. get_user_name(id, szName, charsmax(szName));
  3055. get_user_name(iTarget, szTargetName, charsmax(szTargetName));
  3056. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ALL_TRANSFER_CHIEF", szName, szTargetName);
  3057. return PLUGIN_HANDLED;
  3058. }
  3059. }
  3060. }
  3061. return Show_TransferChiefMenu(id, g_iMenuPosition[id]);
  3062. }
  3063.  
  3064. Cmd_TreatPrisonerMenu(id) return Show_TreatPrisonerMenu(id, g_iMenuPosition[id] = 0);
  3065. Show_TreatPrisonerMenu(id, iPos)
  3066. {
  3067. if(iPos < 0 || g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3068. jbe_informer_offset_up(id);
  3069. new iPlayersNum;
  3070. for(new i = 1; i <= g_iMaxPlayers; i++)
  3071. {
  3072. if(g_iUserTeam[i] != 1 || IsNotSetBit(g_iBitUserAlive, i) || get_user_health(i) >= 100 || IsSetBit(g_iBitUserBoxing, id) || IsSetBit(g_iBitUserDuel, id)) continue;
  3073. g_iMenuPlayers[id][iPlayersNum++] = i;
  3074. }
  3075. new iStart = iPos * PLAYERS_PER_PAGE;
  3076. if(iStart > iPlayersNum) iStart = iPlayersNum;
  3077. iStart = iStart - (iStart % 8);
  3078. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  3079. new iEnd = iStart + PLAYERS_PER_PAGE;
  3080. if(iEnd > iPlayersNum) iEnd = iPlayersNum;
  3081. new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
  3082. switch(iPagesNum)
  3083. {
  3084. case 0:
  3085. {
  3086. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  3087. return Show_ChiefMenu_1(id);
  3088. }
  3089. default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_MENU_TREAT_PRISONER_TITLE", iPos + 1, iPagesNum);
  3090. }
  3091. new szName[32], i, iKeys = (1<<9), b;
  3092. for(new a = iStart; a < iEnd; a++)
  3093. {
  3094. i = g_iMenuPlayers[id][a];
  3095. get_user_name(i, szName, charsmax(szName));
  3096. iKeys |= (1<<b);
  3097. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s \r[%d HP]^n", ++b, szName, get_user_health(i));
  3098. }
  3099. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  3100. if(iEnd < iPlayersNum)
  3101. {
  3102. iKeys |= (1<<8);
  3103. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  3104. }
  3105. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  3106. return show_menu(id, iKeys, szMenu, -1, "Show_TreatPrisonerMenu");
  3107. }
  3108.  
  3109. public Handle_TreatPrisonerMenu(id, iKey)
  3110. {
  3111. if(g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3112. switch(iKey)
  3113. {
  3114. case 8: return Show_TreatPrisonerMenu(id, ++g_iMenuPosition[id]);
  3115. case 9: return Show_TreatPrisonerMenu(id, --g_iMenuPosition[id]);
  3116. default:
  3117. {
  3118. new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
  3119. if(g_iUserTeam[iTarget] == 1 && IsSetBit(g_iBitUserAlive, iTarget) && get_user_health(iTarget) < 100 && IsNotSetBit(g_iBitUserBoxing, id) && IsNotSetBit(g_iBitUserDuel, id))
  3120. {
  3121. new szName[32], szTargetName[32];
  3122. get_user_name(id, szName, charsmax(szName));
  3123. get_user_name(iTarget, szTargetName, charsmax(szTargetName));
  3124. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ALL_CHIEF_TREAT_PRISONER", szName, szTargetName);
  3125. set_pev(iTarget, pev_health, 100.0);
  3126. }
  3127. }
  3128. }
  3129. return Show_TreatPrisonerMenu(id, g_iMenuPosition[id]);
  3130. }
  3131.  
  3132. Show_ChiefMenu_2(id)
  3133. {
  3134. if(g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3135. jbe_informer_offset_up(id);
  3136. new szMenu[512], iKeys = (1<<0|1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_CHIEF_TITLE");
  3137. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_CHIEF_VOICE_CONTROL");
  3138. if(g_iDayMode == 1)
  3139. {
  3140. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_CHIEF_PRISONERS_DIVIDE_COLOR");
  3141. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n^n^n^n^n^n", id, "JBE_MENU_CHIEF_MINI_GAME");
  3142. iKeys |= (1<<1|1<<2);
  3143. }
  3144. else
  3145. {
  3146. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L^n", id, "JBE_MENU_CHIEF_PRISONERS_DIVIDE_COLOR");
  3147. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n^n^n^n^n^n", id, "JBE_MENU_CHIEF_MINI_GAME");
  3148. }
  3149. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3150. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  3151. return show_menu(id, iKeys, szMenu, -1, "Show_ChiefMenu_2");
  3152. }
  3153.  
  3154. public Handle_ChiefMenu_2(id, iKey)
  3155. {
  3156. if(g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3157. switch(iKey)
  3158. {
  3159. case 0: return Cmd_VoiceControlMenu(id);
  3160. case 1: if(g_iDayMode == 1) return Show_PrisonersDivideColorMenu(id);
  3161. case 2: if(g_iDayMode == 1) return Show_MiniGameMenu(id);
  3162. case 8: return Show_ChiefMenu_1(id);
  3163. case 9: return PLUGIN_HANDLED;
  3164. }
  3165. return Show_ChiefMenu_2(id);
  3166. }
  3167.  
  3168. Cmd_VoiceControlMenu(id) return Show_VoiceControlMenu(id, g_iMenuPosition[id] = 0);
  3169. Show_VoiceControlMenu(id, iPos)
  3170. {
  3171. if(iPos < 0 || g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3172. jbe_informer_offset_up(id);
  3173. new iPlayersNum;
  3174. for(new i = 1; i <= g_iMaxPlayers; i++)
  3175. {
  3176. if(IsNotSetBit(g_iBitUserAlive, i) || g_iUserTeam[i] != 1) continue;
  3177. g_iMenuPlayers[id][iPlayersNum++] = i;
  3178. }
  3179. new iStart = iPos * PLAYERS_PER_PAGE;
  3180. if(iStart > iPlayersNum) iStart = iPlayersNum;
  3181. iStart = iStart - (iStart % 8);
  3182. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  3183. new iEnd = iStart + PLAYERS_PER_PAGE;
  3184. if(iEnd > iPlayersNum) iEnd = iPlayersNum;
  3185. new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
  3186. switch(iPagesNum)
  3187. {
  3188. case 0:
  3189. {
  3190. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  3191. return Show_ChiefMenu_2(id);
  3192. }
  3193. default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_MENU_VOICE_CONTROL_TITLE", iPos + 1, iPagesNum);
  3194. }
  3195. new szName[32], i, iKeys = (1<<9), b;
  3196. for(new a = iStart; a < iEnd; a++)
  3197. {
  3198. i = g_iMenuPlayers[id][a];
  3199. get_user_name(i, szName, charsmax(szName));
  3200. iKeys |= (1<<b);
  3201. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s %L^n", ++b, szName, id, IsSetBit(g_iBitUserVoice, i) ? "JBE_MENU_CHIEF_VOICE_CONTROL_TAKE" : "JBE_MENU_CHIEF_VOICE_CONTROL_GIVE");
  3202. }
  3203. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  3204. if(iEnd < iPlayersNum)
  3205. {
  3206. iKeys |= (1<<8);
  3207. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  3208. }
  3209. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  3210. return show_menu(id, iKeys, szMenu, -1, "Show_VoiceControlMenu");
  3211. }
  3212.  
  3213. public Handle_VoiceControlMenu(id, iKey)
  3214. {
  3215. if(g_iDayMode != 1 && g_iDayMode != 2 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3216. switch(iKey)
  3217. {
  3218. case 8: return Show_VoiceControlMenu(id, ++g_iMenuPosition[id]);
  3219. case 9: return Show_VoiceControlMenu(id, --g_iMenuPosition[id]);
  3220. default:
  3221. {
  3222. new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
  3223. if(IsNotSetBit(g_iBitUserAlive, iTarget) || g_iUserTeam[iTarget] != 1) return Show_VoiceControlMenu(id, g_iMenuPosition[id]);
  3224. new szName[32], szTargetName[32];
  3225. get_user_name(id, szName, charsmax(szName));
  3226. get_user_name(iTarget, szTargetName, charsmax(szTargetName));
  3227. if(IsSetBit(g_iBitUserVoice, iTarget))
  3228. {
  3229. ClearBit(g_iBitUserVoice, iTarget);
  3230. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ALL_CHIEF_TAKE_VOICE", szName, szTargetName);
  3231. }
  3232. else
  3233. {
  3234. SetBit(g_iBitUserVoice, iTarget);
  3235. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ALL_CHIEF_GIVE_VOICE", szName, szTargetName);
  3236. }
  3237. }
  3238. }
  3239. return Show_VoiceControlMenu(id, g_iMenuPosition[id]);
  3240. }
  3241.  
  3242. Show_PrisonersDivideColorMenu(id)
  3243. {
  3244. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3245. jbe_informer_offset_up(id);
  3246. new szMenu[512], iKeys = (1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_PRISONERS_DIVIDE_COLOR_TITLE");
  3247. if(g_iAlivePlayersNum[1] >= 2)
  3248. {
  3249. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_PRISONERS_DIVIDE_COLOR_2");
  3250. iKeys |= (1<<0);
  3251. }
  3252. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L^n", id, "JBE_MENU_PRISONERS_DIVIDE_COLOR_2");
  3253. if(g_iAlivePlayersNum[1] >= 3)
  3254. {
  3255. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_PRISONERS_DIVIDE_COLOR_3");
  3256. iKeys |= (1<<1);
  3257. }
  3258. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L^n", id, "JBE_MENU_PRISONERS_DIVIDE_COLOR_3");
  3259. if(g_iAlivePlayersNum[1] >= 4)
  3260. {
  3261. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n^n^n^n^n^n", id, "JBE_MENU_PRISONERS_DIVIDE_COLOR_4");
  3262. iKeys |= (1<<2);
  3263. }
  3264. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n^n^n^n^n^n", id, "JBE_MENU_PRISONERS_DIVIDE_COLOR_4");
  3265. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3266. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  3267. return show_menu(id, iKeys, szMenu, -1, "Show_PrisonersDivideColorMenu");
  3268. }
  3269.  
  3270. public Handle_PrisonersDivideColorMenu(id, iKey)
  3271. {
  3272. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3273. switch(iKey)
  3274. {
  3275. case 8: return Show_ChiefMenu_2(id);
  3276. case 9: return PLUGIN_HANDLED;
  3277. default: jbe_prisoners_divide_color(iKey + 2);
  3278. }
  3279. return Show_ChiefMenu_2(id);
  3280. }
  3281.  
  3282. Show_MiniGameMenu(id)
  3283. {
  3284. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3285. jbe_informer_offset_up(id);
  3286. new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_MINI_GAME_TITLE");
  3287. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_MINI_GAME_SOCCER");
  3288. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_MINI_GAME_BOXING");
  3289. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_MINI_GAME_SPRAY");
  3290. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_MINI_GAME_DISTANCE_DROP");
  3291. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L \r[%L]^n", id, "JBE_MENU_MINI_GAME_FRIENDLY_FIRE", id, g_iFriendlyFire ? "JBE_MENU_ENABLE" : "JBE_MENU_DISABLE");
  3292. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n^n^n", id, "JBE_MENU_MINI_GAME_RANDOM_SKIN", id, g_iFriendlyFire ? "JBE_MENU_ENABLE" : "JBE_MENU_DISABLE");
  3293. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3294. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  3295. return show_menu(id, (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<8|1<<9), szMenu, -1, "Show_MiniGameMenu");
  3296. }
  3297.  
  3298. public Handle_MiniGameMenu(id, iKey)
  3299. {
  3300. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3301. switch(iKey)
  3302. {
  3303. case 0: return Show_SoccerMenu(id);
  3304. case 1: return Show_BoxingMenu(id);
  3305. case 2:
  3306. {
  3307. for(new i = 1; i <= g_iMaxPlayers; i++)
  3308. {
  3309. if(g_iUserTeam[i] != 1 || IsNotSetBit(g_iBitUserAlive, i)) continue;
  3310. set_pdata_float(i, m_flNextDecalTime, 0.0);
  3311. }
  3312. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ID_MINI_GAME_SPRAY");
  3313. }
  3314. case 3:
  3315. {
  3316. for(new i = 1; i <= g_iMaxPlayers; i++)
  3317. {
  3318. if(g_iUserTeam[i] != 1 || IsNotSetBit(g_iBitUserAlive, i) || IsSetBit(g_iBitUserSoccer, i) || IsSetBit(g_iBitUserBoxing, i) || IsSetBit(g_iBitUserDuel, i)) continue;
  3319. ham_strip_weapon_name(i, "weapon_deagle");
  3320. new iEntity = fm_give_item(i, "weapon_deagle");
  3321. if(iEntity > 0) set_pdata_int(iEntity, m_iClip, -1, linux_diff_weapon);
  3322. }
  3323. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_MINI_GAME_DISTANCE_DROP");
  3324. }
  3325. case 4: g_iFriendlyFire = !g_iFriendlyFire;
  3326. case 5:
  3327. {
  3328. for(new i = 1; i <= g_iMaxPlayers; i++)
  3329. {
  3330. if(g_iUserTeam[i] != 1 || IsNotSetBit(g_iBitUserAlive, i) || IsSetBit(g_iBitUserFree, i) || IsSetBit(g_iBitUserWanted, i) || IsSetBit(g_iBitUserSoccer, i) || IsSetBit(g_iBitUserBoxing, i) || IsSetBit(g_iBitUserDuel, i)) continue;
  3331. set_pev(i, pev_skin, random_num(0, 3));
  3332. }
  3333. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ID_MINI_GAME_RANDOM_SKIN");
  3334. }
  3335. case 8: return Show_ChiefMenu_2(id);
  3336. case 9: return PLUGIN_HANDLED;
  3337. }
  3338. return Show_MiniGameMenu(id);
  3339. }
  3340.  
  3341. Show_SoccerMenu(id)
  3342. {
  3343. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3344. jbe_informer_offset_up(id);
  3345. new szMenu[512], iKeys = (1<<0|1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SOCCER_TITLE");
  3346. if(g_bSoccerStatus)
  3347. {
  3348. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_SOCCER_DISABLE");
  3349. if(g_iSoccerBall)
  3350. {
  3351. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_SOCCER_SUB_BALL");
  3352. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_SOCCER_UPDATE_BALL");
  3353. if(g_bSoccerGame)
  3354. {
  3355. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_SOCCER_WHISTLE");
  3356. iKeys |= (1<<3);
  3357. }
  3358. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n", id, "JBE_MENU_SOCCER_WHISTLE");
  3359. if(g_bSoccerGame) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_SOCCER_GAME_END");
  3360. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_SOCCER_GAME_START");
  3361. iKeys |= (1<<2|1<<4);
  3362. }
  3363. else
  3364. {
  3365. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_SOCCER_ADD_BALL");
  3366. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n", id, "JBE_MENU_SOCCER_UPDATE_BALL");
  3367. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n", id, "JBE_MENU_SOCCER_WHISTLE");
  3368. if(g_bSoccerGame)
  3369. {
  3370. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_SOCCER_GAME_END");
  3371. iKeys |= (1<<4);
  3372. }
  3373. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L^n", id, "JBE_MENU_SOCCER_GAME_START");
  3374. }
  3375. if(g_bSoccerGame)
  3376. {
  3377. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L^n", id, "JBE_MENU_SOCCER_TEAMS");
  3378. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \w%L^n^n", id, "JBE_MENU_SOCCER_SCORE");
  3379. iKeys |= (1<<6);
  3380. }
  3381. else
  3382. {
  3383. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n", id, "JBE_MENU_SOCCER_TEAMS");
  3384. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \d%L^n^n", id, "JBE_MENU_SOCCER_SCORE");
  3385. iKeys |= (1<<5);
  3386. }
  3387. iKeys |= (1<<1);
  3388. }
  3389. else
  3390. {
  3391. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_SOCCER_ENABLE");
  3392. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L^n", id, "JBE_MENU_SOCCER_ADD_BALL");
  3393. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n", id, "JBE_MENU_SOCCER_UPDATE_BALL");
  3394. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n", id, "JBE_MENU_SOCCER_WHISTLE");
  3395. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L^n", id, "JBE_MENU_SOCCER_GAME_END");
  3396. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L^n", id, "JBE_MENU_SOCCER_TEAMS");
  3397. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \d%L^n^n", id, "JBE_MENU_SOCCER_SCORE");
  3398. }
  3399. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3400. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  3401. return show_menu(id, iKeys, szMenu, -1, "Show_SoccerMenu");
  3402. }
  3403.  
  3404. public Handle_SoccerMenu(id, iKey)
  3405. {
  3406. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3407. switch(iKey)
  3408. {
  3409. case 0:
  3410. {
  3411. if(g_bSoccerStatus) jbe_soccer_disable_all();
  3412. else g_bSoccerStatus = true;
  3413. }
  3414. case 1:
  3415. {
  3416. if(g_iSoccerBall) jbe_soccer_remove_ball();
  3417. else jbe_soccer_create_ball(id);
  3418. }
  3419. case 2: if(g_iSoccerBall) jbe_soccer_update_ball();
  3420. case 3:
  3421. {
  3422. if(g_bSoccerGame && g_iSoccerBall)
  3423. {
  3424. emit_sound(id, CHAN_AUTO, "alcatraz_jb/soccer/whitle_start.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  3425. g_bSoccerBallTouch = true;
  3426. }
  3427. }
  3428. case 4:
  3429. {
  3430. if(g_bSoccerGame) jbe_soccer_game_end(id);
  3431. else if(g_iSoccerBall) jbe_soccer_game_start(id);
  3432. }
  3433. case 5: if(!g_bSoccerGame) return Show_SoccerTeamMenu(id);
  3434. case 6: if(g_bSoccerGame) return Show_SoccerScoreMenu(id);
  3435. case 8: return Show_MiniGameMenu(id);
  3436. case 9: return PLUGIN_HANDLED;
  3437. }
  3438. return Show_SoccerMenu(id);
  3439. }
  3440.  
  3441. Show_SoccerTeamMenu(id)
  3442. {
  3443. if(g_bSoccerGame || g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3444. jbe_informer_offset_up(id);
  3445. new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SOCCER_TEAM_TITLE");
  3446. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_SOCCER_TEAM_DIVIDE_PRISONERS");
  3447. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_SOCCER_TEAM_DIVIDE_ALL");
  3448. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d%L^n", id, "JBE_MENU_SOCCER_TEAM_DESCRIPTION");
  3449. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n", id, "JBE_MENU_SOCCER_TEAM_ADD_RED");
  3450. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \w%L^n", id, "JBE_MENU_SOCCER_TEAM_ADD_BLUE");
  3451. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \w%L^n", id, "JBE_MENU_SOCCER_TEAM_SUB");
  3452. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3453. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  3454. return show_menu(id, (1<<0|1<<1|1<<5|1<<6|1<<7|1<<8|1<<9), szMenu, -1, "Show_SoccerTeamMenu");
  3455. }
  3456.  
  3457. public Handle_SoccerTeamMenu(id, iKey)
  3458. {
  3459. if(g_bSoccerGame || g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3460. switch(iKey)
  3461. {
  3462. case 0: jbe_soccer_divide_team(1);
  3463. case 1: jbe_soccer_divide_team(0);
  3464. case 7:
  3465. {
  3466. new iTarget, iBody;
  3467. get_user_aiming(id, iTarget, iBody, 9999);
  3468. if(jbe_is_user_valid(iTarget) && IsSetBit(g_iBitUserSoccer, iTarget))
  3469. {
  3470. ClearBit(g_iBitUserSoccer, iTarget);
  3471. if(iTarget == g_iSoccerBallOwner)
  3472. {
  3473. CREATE_KILLPLAYERATTACHMENTS(iTarget);
  3474. set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
  3475. set_pev(g_iSoccerBall, pev_velocity, {0.0, 0.0, 0.1});
  3476. g_iSoccerBallOwner = 0;
  3477. }
  3478. if(IsSetBit(g_iBitClothingGuard, iTarget) && IsSetBit(g_iBitClothingType, iTarget)) jbe_set_user_model(iTarget, g_szPlayerModel[GUARD]);
  3479. else jbe_default_player_model(iTarget);
  3480. set_pdata_int(iTarget, m_bloodColor, 247);
  3481. new iActiveItem = get_pdata_cbase(iTarget, m_pActiveItem);
  3482. if(iActiveItem > 0)
  3483. {
  3484. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  3485. UTIL_WeaponAnimation(iTarget, 3);
  3486. }
  3487. }
  3488. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  3489. return Show_SoccerTeamMenu(id);
  3490. }
  3491. case 8: return Show_SoccerMenu(id);
  3492. case 9: return PLUGIN_HANDLED;
  3493. default:
  3494. {
  3495. new iTarget, iBody;
  3496. get_user_aiming(id, iTarget, iBody, 9999);
  3497. if(jbe_is_user_valid(iTarget) && IsSetBit(g_iBitUserAlive, iTarget) && IsNotSetBit(g_iBitUserDuel, iTarget) && (g_iUserTeam[iTarget] == 1 && IsNotSetBit(g_iBitUserFree, iTarget) && IsNotSetBit(g_iBitUserWanted, iTarget) && IsNotSetBit(g_iBitUserBoxing, iTarget) || g_iUserTeam[iTarget] == 2))
  3498. {
  3499. new szLangPlayer[][] = {"JBE_HUD_ID_YOU_TEAM_RED", "JBE_HUD_ID_YOU_TEAM_BLUE"};
  3500. UTIL_SayText(iTarget, "!g[AlcatraZ-JailBreak] %L", iTarget, szLangPlayer[iKey - 5]);
  3501. if(IsNotSetBit(g_iBitUserSoccer, iTarget))
  3502. {
  3503. SetBit(g_iBitUserSoccer, iTarget);
  3504. jbe_set_user_model(iTarget, g_szPlayerModel[FOOTBALLER]);
  3505. if(get_user_weapon(iTarget) != CSW_KNIFE) engclient_cmd(iTarget, "weapon_knife");
  3506. else
  3507. {
  3508. new iActiveItem = get_pdata_cbase(iTarget, m_pActiveItem);
  3509. if(iActiveItem > 0)
  3510. {
  3511. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  3512. UTIL_WeaponAnimation(iTarget, 3);
  3513. }
  3514. }
  3515. set_pdata_int(iTarget, m_bloodColor, -1);
  3516. ClearBit(g_iBitClothingType, iTarget);
  3517. }
  3518. set_pev(iTarget, pev_skin, iKey - 5);
  3519. g_iSoccerUserTeam[iTarget] = iKey - 5;
  3520. }
  3521. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  3522. return Show_SoccerTeamMenu(id);
  3523. }
  3524. }
  3525. return Show_SoccerMenu(id);
  3526. }
  3527.  
  3528. Show_SoccerScoreMenu(id)
  3529. {
  3530. if(!g_bSoccerGame || g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3531. jbe_informer_offset_up(id);
  3532. new szMenu[512], iKeys = (1<<0|1<<2|1<<4|1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SOCCER_SCORE_TITLE");
  3533. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_SOCCER_SCORE_RED_ADD");
  3534. if(g_iSoccerScore[0])
  3535. {
  3536. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_SOCCER_SCORE_RED_SUB");
  3537. iKeys |= (1<<1);
  3538. }
  3539. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L^n", id, "JBE_MENU_SOCCER_SCORE_RED_SUB");
  3540. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_SOCCER_SCORE_BLUE_ADD");
  3541. if(g_iSoccerScore[1])
  3542. {
  3543. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_SOCCER_SCORE_BLUE_SUB");
  3544. iKeys |= (1<<3);
  3545. }
  3546. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n", id, "JBE_MENU_SOCCER_SCORE_BLUE_SUB");
  3547. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n^n^n^n", id, "JBE_MENU_SOCCER_SCORE_RESET");
  3548. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3549. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  3550. return show_menu(id, iKeys, szMenu, -1, "Show_SoccerScoreMenu");
  3551. }
  3552.  
  3553. public Handle_SoccerScoreMenu(id, iKey)
  3554. {
  3555. if(!g_bSoccerGame || g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3556. switch(iKey)
  3557. {
  3558. case 0: g_iSoccerScore[0]++;
  3559. case 1: g_iSoccerScore[0]--;
  3560. case 2: g_iSoccerScore[1]++;
  3561. case 3: g_iSoccerScore[1]--;
  3562. case 4: g_iSoccerScore = {0, 0};
  3563. case 8: return Show_SoccerMenu(id);
  3564. case 9: return PLUGIN_HANDLED;
  3565. }
  3566. return Show_SoccerScoreMenu(id);
  3567. }
  3568.  
  3569. Show_BoxingMenu(id)
  3570. {
  3571. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3572. jbe_informer_offset_up(id);
  3573. new szMenu[512], iKeys = (1<<0|1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_BOXING_TITLE");
  3574. if(g_bBoxingStatus)
  3575. {
  3576. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_BOXING_DISABLE");
  3577. if(g_iBoxingGame == 2) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L^n", id, "JBE_MENU_BOXING_GAME_START");
  3578. else
  3579. {
  3580. if(g_iBoxingGame == 1) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_BOXING_GAME_END");
  3581. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_BOXING_GAME_START");
  3582. iKeys |= (1<<1);
  3583. }
  3584. if(g_iBoxingGame == 1) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n", id, "JBE_MENU_BOXING_GAME_TEAM_START");
  3585. else
  3586. {
  3587. if(g_iBoxingGame == 2) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_BOXING_GAME_TEAM_END");
  3588. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_BOXING_GAME_TEAM_START");
  3589. iKeys |= (1<<2);
  3590. }
  3591. if(g_iBoxingGame) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n^n^n^n^n", id, "JBE_MENU_BOXING_TEAMS");
  3592. else
  3593. {
  3594. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n^n^n^n^n", id, "JBE_MENU_BOXING_TEAMS");
  3595. iKeys |= (1<<3);
  3596. }
  3597. }
  3598. else
  3599. {
  3600. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_BOXING_ENABLE");
  3601. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L^n", id, "JBE_MENU_BOXING_GAME_START");
  3602. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n", id, "JBE_MENU_BOXING_GAME_TEAM_START");
  3603. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n^n^n^n^n", id, "JBE_MENU_BOXING_TEAMS");
  3604. }
  3605. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3606. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  3607. return show_menu(id, iKeys, szMenu, -1, "Show_BoxingMenu");
  3608. }
  3609.  
  3610. public Handle_BoxingMenu(id, iKey)
  3611. {
  3612. if(g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3613. switch(iKey)
  3614. {
  3615. case 0:
  3616. {
  3617. if(g_bBoxingStatus) jbe_boxing_disable_all();
  3618. else
  3619. {
  3620. g_bBoxingStatus = true;
  3621. g_iFakeMetaUpdateClientData = register_forward(FM_UpdateClientData, "FakeMeta_UpdateClientData_Post", 1);
  3622. }
  3623. }
  3624. case 1:
  3625. {
  3626. if(g_iBoxingGame == 1) jbe_boxing_game_end();
  3627. else jbe_boxing_game_start(id);
  3628. }
  3629. case 2:
  3630. {
  3631. if(g_iBoxingGame == 2) jbe_boxing_game_end();
  3632. else jbe_boxing_game_team_start(id);
  3633. }
  3634. case 3: if(!g_iBoxingGame) return Show_BoxingTeamMenu(id);
  3635. case 8: return Show_MiniGameMenu(id);
  3636. case 9: return PLUGIN_HANDLED;
  3637. }
  3638. return Show_BoxingMenu(id);
  3639. }
  3640.  
  3641. Show_BoxingTeamMenu(id)
  3642. {
  3643. if(g_iBoxingGame || g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3644. jbe_informer_offset_up(id);
  3645. new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_BOXING_TEAM_TITLE");
  3646. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_BOXING_TEAM_DIVIDE");
  3647. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d%L^n", id, "JBE_MENU_BOXING_TEAM_DESCRIPTION");
  3648. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_BOXING_TEAM_ADD_RED");
  3649. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n", id, "JBE_MENU_BOXING_TEAM_ADD_BLUE");
  3650. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \w%L^n^n", id, "JBE_MENU_BOXING_TEAM_SUB");
  3651. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3652. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  3653. return show_menu(id, (1<<0|1<<4|1<<5|1<<6|1<<8|1<<9), szMenu, -1, "Show_BoxingTeamMenu");
  3654. }
  3655.  
  3656. public Handle_BoxingTeamMenu(id, iKey)
  3657. {
  3658. if(g_iBoxingGame || g_iDayMode != 1 || id != g_iChiefId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3659. switch(iKey)
  3660. {
  3661. case 0: jbe_boxing_divide_team();
  3662. case 6:
  3663. {
  3664. new iTarget, iBody;
  3665. get_user_aiming(id, iTarget, iBody, 9999);
  3666. if(jbe_is_user_valid(iTarget) && IsSetBit(g_iBitUserBoxing, iTarget))
  3667. {
  3668. ClearBit(g_iBitUserBoxing, iTarget);
  3669. new iActiveItem = get_pdata_cbase(iTarget, m_pActiveItem);
  3670. if(iActiveItem > 0)
  3671. {
  3672. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  3673. UTIL_WeaponAnimation(iTarget, 3);
  3674. }
  3675. set_pev(iTarget, pev_health, 100.0);
  3676. set_pdata_int(iTarget, m_bloodColor, 247);
  3677. }
  3678. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  3679. return Show_BoxingTeamMenu(id);
  3680. }
  3681. case 8: return Show_BoxingMenu(id);
  3682. case 9: return PLUGIN_HANDLED;
  3683. default:
  3684. {
  3685. new iTarget, iBody;
  3686. get_user_aiming(id, iTarget, iBody, 9999);
  3687. if(jbe_is_user_valid(iTarget) && g_iUserTeam[iTarget] == 1 && IsSetBit(g_iBitUserAlive, iTarget) && IsNotSetBit(g_iBitUserFree, iTarget) && IsNotSetBit(g_iBitUserWanted, iTarget) && IsNotSetBit(g_iBitUserSoccer, iTarget) && IsNotSetBit(g_iBitUserDuel, iTarget))
  3688. {
  3689. if(IsNotSetBit(g_iBitUserBoxing, iTarget))
  3690. {
  3691. SetBit(g_iBitUserBoxing, iTarget);
  3692. set_pev(iTarget, pev_health, 100.0);
  3693. set_pdata_int(iTarget, m_bloodColor, -1);
  3694. ClearBit(g_iBitClothingType, iTarget);
  3695. }
  3696. g_iBoxingUserTeam[iTarget] = iKey - 4;
  3697. if(get_user_weapon(iTarget) != CSW_KNIFE) engclient_cmd(iTarget, "weapon_knife");
  3698. else
  3699. {
  3700. new iActiveItem = get_pdata_cbase(iTarget, m_pActiveItem);
  3701. if(iActiveItem > 0)
  3702. {
  3703. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  3704. UTIL_WeaponAnimation(iTarget, 3);
  3705. }
  3706. }
  3707. }
  3708. else UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  3709. return Show_BoxingTeamMenu(id);
  3710. }
  3711. }
  3712. return Show_BoxingMenu(id);
  3713. }
  3714.  
  3715. Show_KillReasonsMenu(id, iTarget)
  3716. {
  3717. jbe_informer_offset_up(id);
  3718. jbe_menu_block(id);
  3719. new szName[32], szMenu[512], iLen;
  3720. get_user_name(iTarget, szName, charsmax(szName));
  3721. iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_KILL_REASON_TITLE", szName);
  3722. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_KILL_REASON_0");
  3723. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_KILL_REASON_1");
  3724. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_KILL_REASON_2");
  3725. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_KILL_REASON_3");
  3726. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_KILL_REASON_4");
  3727. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n", id, "JBE_MENU_KILL_REASON_5");
  3728. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[7] \w%L^n", id, "JBE_MENU_KILL_REASON_6");
  3729. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[8] \w%L^n", id, "JBE_MENU_KILL_REASON_7");
  3730. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3731. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \d%L", id, "JBE_MENU_EXIT");
  3732. return show_menu(id, (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8), szMenu, -1, "Show_KillReasonsMenu");
  3733. }
  3734.  
  3735. public Handle_KillReasonsMenu(id, iKey)
  3736. {
  3737. switch(iKey)
  3738. {
  3739. case 8: return Cmd_KilledUsersMenu(id);
  3740. default:
  3741. {
  3742. if(IsSetBit(g_iBitKilledUsers[id], g_iMenuTarget[id]))
  3743. {
  3744. new szName[32], szNameTarget[32], szLangPlayer[32];
  3745. get_user_name(id, szName, charsmax(szName));
  3746. get_user_name(g_iMenuTarget[id], szNameTarget, charsmax(szNameTarget));
  3747. formatex(szLangPlayer, charsmax(szLangPlayer), "JBE_MENU_KILL_REASON_%d", iKey);
  3748. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ALL_KILL_REASON", szName, szNameTarget, LANG_PLAYER, szLangPlayer);
  3749. if(iKey == 7)
  3750. {
  3751. UTIL_SayText(0, "!g[AlcatraZ-JailBreak] %L", LANG_PLAYER, "JBE_CHAT_ALL_AUTO_FREE_DAY", szNameTarget);
  3752. jbe_add_user_free_next_round(g_iMenuTarget[id]);
  3753. }
  3754. ClearBit(g_iBitKilledUsers[id], g_iMenuTarget[id]);
  3755. if(g_iBitKilledUsers[id]) return Cmd_KilledUsersMenu(id);
  3756. jbe_menu_unblock(id);
  3757. }
  3758. else
  3759. {
  3760. if(g_iBitKilledUsers[id]) return Cmd_KilledUsersMenu(id);
  3761. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_KILLED_USER_DISCONNECT");
  3762. jbe_menu_unblock(id);
  3763. }
  3764. }
  3765. }
  3766. return PLUGIN_HANDLED;
  3767. }
  3768.  
  3769. Cmd_KilledUsersMenu(id) return Show_KilledUsersMenu(id, g_iMenuPosition[id] = 0);
  3770. Show_KilledUsersMenu(id, iPos)
  3771. {
  3772. if(iPos < 0) return PLUGIN_HANDLED;
  3773. jbe_informer_offset_up(id);
  3774. new iPlayersNum;
  3775. for(new i = 1; i <= g_iMaxPlayers; i++)
  3776. {
  3777. if(IsNotSetBit(g_iBitKilledUsers[id], i)) continue;
  3778. g_iMenuPlayers[id][iPlayersNum++] = i;
  3779. }
  3780. new iStart = iPos * PLAYERS_PER_PAGE;
  3781. if(iStart > iPlayersNum) iStart = iPlayersNum;
  3782. iStart = iStart - (iStart % 8);
  3783. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  3784. new iEnd = iStart + PLAYERS_PER_PAGE;
  3785. if(iEnd > iPlayersNum) iEnd = iPlayersNum;
  3786. new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
  3787. switch(iPagesNum)
  3788. {
  3789. case 0:
  3790. {
  3791. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_KILLED_USER_DISCONNECT");
  3792. jbe_menu_unblock(id);
  3793. return PLUGIN_HANDLED;
  3794. }
  3795. default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_MENU_KILLED_USERS_TITLE", iPos + 1, iPagesNum);
  3796. }
  3797. new szName[32], i, iKeys, b;
  3798. for(new a = iStart; a < iEnd; a++)
  3799. {
  3800. i = g_iMenuPlayers[id][a];
  3801. get_user_name(i, szName, charsmax(szName));
  3802. iKeys |= (1<<b);
  3803. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s^n", ++b, szName);
  3804. }
  3805. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  3806. if(iEnd < iPlayersNum)
  3807. {
  3808. iKeys |= (1<<8);
  3809. if(iPos)
  3810. {
  3811. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, "JBE_MENU_BACK");
  3812. iKeys |= (1<<9);
  3813. }
  3814. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \d%L", id, "JBE_MENU_NEXT", id, "JBE_MENU_EXIT");
  3815. }
  3816. else
  3817. {
  3818. if(iPos)
  3819. {
  3820. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, "JBE_MENU_BACK");
  3821. iKeys |= (1<<9);
  3822. }
  3823. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \d%L", id, "JBE_MENU_EXIT");
  3824. }
  3825. return show_menu(id, iKeys, szMenu, -1, "Show_KilledUsersMenu");
  3826. }
  3827.  
  3828. public Handle_KilledUsersMenu(id, iKey)
  3829. {
  3830. switch(iKey)
  3831. {
  3832. case 8: return Show_KilledUsersMenu(id, ++g_iMenuPosition[id]);
  3833. case 9: return Show_KilledUsersMenu(id, --g_iMenuPosition[id]);
  3834. default:
  3835. {
  3836. g_iMenuTarget[id] = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
  3837. if(IsSetBit(g_iBitKilledUsers[id], g_iMenuTarget[id])) return Show_KillReasonsMenu(id, g_iMenuTarget[id]);
  3838. else if(g_iBitKilledUsers[id]) return Cmd_KilledUsersMenu(id);
  3839. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_KILLED_USER_DISCONNECT");
  3840. jbe_menu_unblock(id);
  3841. }
  3842. }
  3843. return PLUGIN_HANDLED;
  3844. }
  3845.  
  3846. Show_LastPrisonerMenu(id)
  3847. {
  3848. if(g_iDuelStatus || IsNotSetBit(g_iBitUserAlive, id) || id != g_iLastPnId) return PLUGIN_HANDLED;
  3849. jbe_informer_offset_up(id);
  3850. new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_LAST_PRISONER_TITLE");
  3851. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_LAST_PRISONER_FREE_DAY");
  3852. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_LAST_PRISONER_MONEY", g_iAllCvars[LAST_PRISONER_MODEY]);
  3853. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_LAST_PRISONER_VOICE");
  3854. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_LAST_TAKE_WEAPONS");
  3855. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n^n^n^n", id, "JBE_MENU_LAST_PRISONER_CHOICE_DUEL");
  3856. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3857. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  3858. return show_menu(id, (1<<0|1<<1|1<<2|1<<3|1<<4|1<<8|1<<9), szMenu, -1, "Show_LastPrisonerMenu");
  3859. }
  3860.  
  3861. public Handle_LastPrisonerMenu(id, iKey)
  3862. {
  3863. if(g_iDuelStatus || IsNotSetBit(g_iBitUserAlive, id) || id != g_iLastPnId) return PLUGIN_HANDLED;
  3864. switch(iKey)
  3865. {
  3866. case 0:
  3867. {
  3868. ExecuteHamB(Ham_Killed, id, id, 0);
  3869. jbe_add_user_free_next_round(id);
  3870. }
  3871. case 1:
  3872. {
  3873. ExecuteHamB(Ham_Killed, id, id, 0);
  3874. jbe_set_user_money(id, g_iUserMoney[id] + g_iAllCvars[LAST_PRISONER_MODEY], 1);
  3875. }
  3876. case 2:
  3877. {
  3878. ExecuteHamB(Ham_Killed, id, id, 0);
  3879. SetBit(g_iBitUserVoiceNextRound, id);
  3880. }
  3881. case 3:
  3882. {
  3883. for(new i = 1; i <= g_iMaxPlayers; i++)
  3884. {
  3885. if(IsNotSetBit(g_iBitUserAlive, i) || g_iUserTeam[i] != 2) continue;
  3886. fm_strip_user_weapons(i, 1);
  3887. }
  3888. fm_give_item(id, "weapon_ak47");
  3889. fm_set_user_bpammo(id, CSW_AK47, 200);
  3890. //set_pev(id, pev_takedamage, DAMAGE_NO);
  3891. g_iLastPnId = 0;
  3892. }
  3893. case 4: return Show_ChoiceDuelMenu(id);
  3894. case 8: return Show_MainPnMenu(id);
  3895. }
  3896. return PLUGIN_HANDLED;
  3897. }
  3898.  
  3899. Show_ChoiceDuelMenu(id)
  3900. {
  3901. if(IsNotSetBit(g_iBitUserAlive, id) || id != g_iLastPnId) return PLUGIN_HANDLED;
  3902. jbe_informer_offset_up(id);
  3903. new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_CHOICE_DUEL_TITLE");
  3904. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_CHOICE_DUEL_DEAGLE");
  3905. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_CHOICE_DUEL_M3");
  3906. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_CHOICE_DUEL_HEGRENADE");
  3907. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_CHOICE_DUEL_M249");
  3908. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_CHOICE_DUEL_AWP");
  3909. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n^n^n", id, "JBE_MENU_CHOICE_DUEL_KNIFE");
  3910. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  3911. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  3912. return show_menu(id, (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<8|1<<9), szMenu, -1, "Show_ChoiceDuelMenu");
  3913. }
  3914.  
  3915. public Handle_ChoiceDuelMenu(id, iKey)
  3916. {
  3917. if(IsNotSetBit(g_iBitUserAlive, id) || id != g_iLastPnId) return PLUGIN_HANDLED;
  3918. switch(iKey)
  3919. {
  3920. case 0:
  3921. {
  3922. g_iDuelType = 1;
  3923. return Cmd_DuelUsersMenu(id);
  3924. }
  3925. case 1:
  3926. {
  3927. g_iDuelType = 2;
  3928. return Cmd_DuelUsersMenu(id);
  3929. }
  3930. case 2:
  3931. {
  3932. g_iDuelType = 3;
  3933. return Cmd_DuelUsersMenu(id);
  3934. }
  3935. case 3:
  3936. {
  3937. g_iDuelType = 4;
  3938. return Cmd_DuelUsersMenu(id);
  3939. }
  3940. case 4:
  3941. {
  3942. g_iDuelType = 5;
  3943. return Cmd_DuelUsersMenu(id);
  3944. }
  3945. case 5:
  3946. {
  3947. g_iDuelType = 6;
  3948. return Cmd_DuelUsersMenu(id);
  3949. }
  3950. case 8: return Show_LastPrisonerMenu(id);
  3951. }
  3952. return PLUGIN_HANDLED;
  3953. }
  3954.  
  3955. Cmd_DuelUsersMenu(id) return Show_DuelUsersMenu(id, g_iMenuPosition[id] = 0);
  3956. Show_DuelUsersMenu(id, iPos)
  3957. {
  3958. if(iPos < 0 || id != g_iLastPnId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  3959. jbe_informer_offset_up(id);
  3960. new iPlayersNum;
  3961. for(new i = 1; i <= g_iMaxPlayers; i++)
  3962. {
  3963. if(g_iUserTeam[i] != 2 || IsNotSetBit(g_iBitUserAlive, i)) continue;
  3964. g_iMenuPlayers[id][iPlayersNum++] = i;
  3965. }
  3966. new iStart = iPos * PLAYERS_PER_PAGE;
  3967. if(iStart > iPlayersNum) iStart = iPlayersNum;
  3968. iStart = iStart - (iStart % 8);
  3969. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  3970. new iEnd = iStart + PLAYERS_PER_PAGE;
  3971. if(iEnd > iPlayersNum) iEnd = iPlayersNum;
  3972. new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
  3973. switch(iPagesNum)
  3974. {
  3975. case 0:
  3976. {
  3977. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  3978. return Show_ChiefMenu_1(id);
  3979. }
  3980. default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_MENU_DUEL_USERS", iPos + 1, iPagesNum);
  3981. }
  3982. new szName[32], i, iKeys = (1<<9), b;
  3983. for(new a = iStart; a < iEnd; a++)
  3984. {
  3985. i = g_iMenuPlayers[id][a];
  3986. get_user_name(i, szName, charsmax(szName));
  3987. iKeys |= (1<<b);
  3988. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s^n", ++b, szName);
  3989. }
  3990. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  3991. if(iEnd < iPlayersNum)
  3992. {
  3993. iKeys |= (1<<8);
  3994. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  3995. }
  3996. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  3997. return show_menu(id, iKeys, szMenu, -1, "Show_DuelUsersMenu");
  3998. }
  3999.  
  4000. public Handle_DuelUsersMenu(id, iKey)
  4001. {
  4002. if(id != g_iLastPnId || IsNotSetBit(g_iBitUserAlive, id)) return PLUGIN_HANDLED;
  4003. switch(iKey)
  4004. {
  4005. case 8: Show_DuelUsersMenu(id, ++g_iMenuPosition[id]);
  4006. case 9: Show_DuelUsersMenu(id, --g_iMenuPosition[id]);
  4007. default:
  4008. {
  4009. new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
  4010. if(IsSetBit(g_iBitUserAlive, iTarget)) jbe_duel_start_ready(id, iTarget);
  4011. else Show_DuelUsersMenu(id, g_iMenuPosition[id]);
  4012. }
  4013. }
  4014. return PLUGIN_HANDLED;
  4015. }
  4016.  
  4017. Show_DayModeMenu(id, iPos)
  4018. {
  4019. if(iPos < 0) return Show_DayModeMenu(id, g_iMenuPosition[id] = 0);
  4020. jbe_informer_offset_up(id);
  4021. new iStart = iPos * PLAYERS_PER_PAGE;
  4022. if(iStart > g_iDayModeListSize) iStart = g_iDayModeListSize;
  4023. iStart = iStart - (iStart % 8);
  4024. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  4025. new iEnd = iStart + PLAYERS_PER_PAGE;
  4026. if(iEnd > g_iDayModeListSize) iEnd = g_iDayModeListSize;
  4027. new szMenu[512], iLen, iPagesNum = (g_iDayModeListSize / PLAYERS_PER_PAGE + ((g_iDayModeListSize % PLAYERS_PER_PAGE) ? 1 : 0));
  4028. iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n\d%L^n", id, "JBE_MENU_VOTE_DAY_MODE_TITLE", iPos + 1, iPagesNum, id, "JBE_MENU_VOTE_DAY_MODE_TIME_END", g_iDayModeVoteTime);
  4029. new aDataDayMode[DATA_DAY_MODE], iKeys = (1<<9), b;
  4030. for(new a = iStart; a < iEnd; a++)
  4031. {
  4032. ArrayGetArray(g_aDataDayMode, a, aDataDayMode);
  4033. if(aDataDayMode[MODE_BLOCKED]) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \d%L \r[%L]^n", ++b, id, aDataDayMode[LANG_MODE], id, "JBE_MENU_VOTE_DAY_MODE_BLOCKED", aDataDayMode[MODE_BLOCKED]);
  4034. else
  4035. {
  4036. if(IsSetBit(g_iBitUserDayModeVoted, id)) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \d%L \r[%d]^n", ++b, id, aDataDayMode[LANG_MODE], aDataDayMode[VOTES_NUM]);
  4037. else
  4038. {
  4039. iKeys |= (1<<b);
  4040. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%L \r[%d]^n", ++b, id, aDataDayMode[LANG_MODE], aDataDayMode[VOTES_NUM]);
  4041. }
  4042. }
  4043. }
  4044. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  4045. if(iEnd < g_iDayModeListSize)
  4046. {
  4047. iKeys |= (1<<8);
  4048. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  4049. }
  4050. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  4051. return show_menu(id, iKeys, szMenu, 2, "Show_DayModeMenu");
  4052. }
  4053.  
  4054. public Handle_DayModeMenu(id, iKey)
  4055. {
  4056. switch(iKey)
  4057. {
  4058. case 8: return Show_DayModeMenu(id, ++g_iMenuPosition[id]);
  4059. case 9: return Show_DayModeMenu(id, --g_iMenuPosition[id]);
  4060. default:
  4061. {
  4062. new aDataDayMode[DATA_DAY_MODE], iDayMode = g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey;
  4063. ArrayGetArray(g_aDataDayMode, iDayMode, aDataDayMode);
  4064. aDataDayMode[VOTES_NUM]++;
  4065. ArraySetArray(g_aDataDayMode, iDayMode, aDataDayMode);
  4066. SetBit(g_iBitUserDayModeVoted, id);
  4067. }
  4068. }
  4069. return Show_DayModeMenu(id, g_iMenuPosition[id]);
  4070. }
  4071.  
  4072. Show_VipMenu(id)
  4073. {
  4074. if(g_iDayMode != 1 && g_iDayMode != 2 || jbe_menu_blocked(id)) return PLUGIN_HANDLED;
  4075. jbe_informer_offset_up(id);
  4076. new szMenu[512], iKeys = (1<<8|1<<9), iAlive = IsSetBit(g_iBitUserAlive, id), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_VIP_TITLE");
  4077. if(!iAlive && g_iVipRespawn[id] && g_iAlivePlayersNum[g_iUserTeam[id]] >= g_iAllCvars[RESPAWN_PLAYER_NUM])
  4078. {
  4079. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_VIP_RESPAWN", g_iVipRespawn[id]);
  4080. iKeys |= (1<<0);
  4081. }
  4082. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L^n", id, "JBE_MENU_VIP_RESPAWN", g_iVipRespawn[id]);
  4083. if(iAlive && g_iVipHealth[id] && IsNotSetBit(g_iBitUserBoxing, id) && get_user_health(id) < 100)
  4084. {
  4085. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_VIP_HEALTH", g_iVipHealth[id]);
  4086. iKeys |= (1<<1);
  4087. }
  4088. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L^n", id, "JBE_MENU_VIP_HEALTH", g_iVipHealth[id]);
  4089. if(g_iVipMoney[id] >= g_iAllCvars[VIP_MONEY_ROUND])
  4090. {
  4091. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_VIP_MONEY", g_iAllCvars[VIP_MONEY_NUM], g_iAllCvars[VIP_MONEY_ROUND]);
  4092. iKeys |= (1<<2);
  4093. }
  4094. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n", id, "JBE_MENU_VIP_MONEY", g_iAllCvars[VIP_MONEY_NUM], g_iAllCvars[VIP_MONEY_ROUND]);
  4095. if(iAlive && g_iVipInvisible[id] >= g_iAllCvars[VIP_INVISIBLE])
  4096. {
  4097. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_VIP_INVISIBLE", g_iAllCvars[VIP_INVISIBLE]);
  4098. iKeys |= (1<<3);
  4099. }
  4100. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n", id, "JBE_MENU_VIP_INVISIBLE", g_iAllCvars[VIP_INVISIBLE]);
  4101. if(iAlive && g_iVipHpAp[id] >= g_iAllCvars[VIP_HP_AP_ROUND])
  4102. {
  4103. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_VIP_HP_AP", g_iAllCvars[VIP_HP_AP_ROUND]);
  4104. iKeys |= (1<<4);
  4105. }
  4106. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L^n", id, "JBE_MENU_VIP_HP_AP", g_iAllCvars[VIP_HP_AP_ROUND]);
  4107. if(iAlive && IsNotSetBit(g_iBitUserSuperAdmin, id) && IsNotSetBit(g_iBitUserVoice, id) && g_iVipVoice[id] == g_iAllCvars[VIP_VOICE_ROUND])
  4108. {
  4109. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n^n^n", id, "JBE_MENU_VIP_VOICE", g_iAllCvars[VIP_VOICE_ROUND]);
  4110. iKeys |= (1<<5);
  4111. }
  4112. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \d%L^n^n^n", id, "JBE_MENU_VIP_VOICE", g_iAllCvars[VIP_VOICE_ROUND]);
  4113. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  4114. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  4115. return show_menu(id, iKeys, szMenu, -1, "Show_VipMenu");
  4116. }
  4117.  
  4118. public Handle_VipMenu(id, iKey)
  4119. {
  4120. if(g_iDayMode != 1 && g_iDayMode != 2) return PLUGIN_HANDLED;
  4121. switch(iKey)
  4122. {
  4123. case 0:
  4124. {
  4125. if(IsNotSetBit(g_iBitUserAlive, id) && g_iVipRespawn[id] && g_iAlivePlayersNum[g_iUserTeam[id]] >= g_iAllCvars[RESPAWN_PLAYER_NUM])
  4126. {
  4127. ExecuteHamB(Ham_CS_RoundRespawn, id);
  4128. g_iVipRespawn[id]--;
  4129. }
  4130. }
  4131. case 1:
  4132. {
  4133. if(IsSetBit(g_iBitUserAlive, id) && g_iVipHealth[id] && IsNotSetBit(g_iBitUserBoxing, id) && get_user_health(id) < 100)
  4134. {
  4135. set_pev(id, pev_health, 100.0);
  4136. g_iVipHealth[id]--;
  4137. }
  4138. }
  4139. case 2:
  4140. {
  4141. jbe_set_user_money(id, g_iUserMoney[id] + g_iAllCvars[VIP_MONEY_NUM], 1);
  4142. g_iVipMoney[id] = 0;
  4143. }
  4144. case 3:
  4145. {
  4146. if(IsSetBit(g_iBitUserAlive, id) && g_iUserTeam[id] == 2)
  4147. {
  4148. jbe_set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0);
  4149. jbe_get_user_rendering(id, g_eUserRendering[id][RENDER_FX], g_eUserRendering[id][RENDER_RED], g_eUserRendering[id][RENDER_GREEN], g_eUserRendering[id][RENDER_BLUE], g_eUserRendering[id][RENDER_MODE], g_eUserRendering[id][RENDER_AMT]);
  4150. g_eUserRendering[id][RENDER_STATUS] = true;
  4151. g_iVipInvisible[id] = 0;
  4152. }
  4153. }
  4154. case 4:
  4155. {
  4156. if(IsSetBit(g_iBitUserAlive, id))
  4157. {
  4158. set_pev(id, pev_health, 250.0);
  4159. set_pev(id, pev_armorvalue, 250.0);
  4160. g_iVipHpAp[id] = 0;
  4161. }
  4162. }
  4163. case 5:
  4164. {
  4165. if(IsSetBit(g_iBitUserAlive, id) && IsNotSetBit(g_iBitUserVoice, id))
  4166. {
  4167. SetBit(g_iBitUserVoice, id);
  4168. g_iVipVoice[id] = 0;
  4169. }
  4170. }
  4171. case 8:
  4172. {
  4173. switch(g_iUserTeam[id])
  4174. {
  4175. case 1: return Show_MainPnMenu(id);
  4176. case 2: return Show_MainGrMenu(id);
  4177. }
  4178. }
  4179. }
  4180. return PLUGIN_HANDLED;
  4181. }
  4182.  
  4183. Show_AdminMenu(id)
  4184. {
  4185. if(jbe_menu_blocked(id)) return PLUGIN_HANDLED;
  4186. jbe_informer_offset_up(id);
  4187. new szMenu[512], iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_ADMIN_TITLE");
  4188. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_ADMIN_KICK");
  4189. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_ADMIN_BAN");
  4190. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_ADMIN_SLAP");
  4191. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_ADMIN_TEAM");
  4192. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_ADMIN_MAP");
  4193. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n^n^n", id, "JBE_MENU_ADMIN_VOTE_MAP");
  4194. if(g_iUserTeam[id] == 1 || g_iUserTeam[id] == 2)
  4195. {
  4196. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  4197. iKeys |= (1<<8);
  4198. }
  4199. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  4200. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  4201. return show_menu(id, iKeys, szMenu, -1, "Show_AdminMenu");
  4202. }
  4203.  
  4204. public Handle_AdminMenu(id, iKey)
  4205. {
  4206. switch(iKey)
  4207. {
  4208. case 0: client_cmd(id, "amx_kickmenu");
  4209. case 1: client_cmd(id, "amx_banmenu");
  4210. case 2: client_cmd(id, "amx_slapmenu");
  4211. case 3: client_cmd(id, "amx_teammenu");
  4212. case 4: client_cmd(id, "amx_mapmenu");
  4213. case 5: client_cmd(id, "amx_votemapmenu");
  4214. case 8:
  4215. {
  4216. switch(g_iUserTeam[id])
  4217. {
  4218. case 1: return Show_MainPnMenu(id);
  4219. case 2: return Show_MainGrMenu(id);
  4220. }
  4221. }
  4222. }
  4223. return PLUGIN_HANDLED;
  4224. }
  4225.  
  4226. Show_SuperAdminMenu(id)
  4227. {
  4228. if(g_iDayMode != 1 && g_iDayMode != 2 || jbe_menu_blocked(id)) return PLUGIN_HANDLED;
  4229. jbe_informer_offset_up(id);
  4230. new szMenu[512], iKeys = (1<<5|1<<8|1<<9), iAlive = IsSetBit(g_iBitUserAlive, id), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_SUPER_ADMIN_TITLE");
  4231. if(!iAlive && g_iAdminRespawn[id] && g_iAlivePlayersNum[g_iUserTeam[id]] >= g_iAllCvars[RESPAWN_PLAYER_NUM])
  4232. {
  4233. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_SUPER_ADMIN_RESPAWN", g_iAdminRespawn[id]);
  4234. iKeys |= (1<<0);
  4235. }
  4236. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \d%L^n", id, "JBE_MENU_SUPER_ADMIN_RESPAWN", g_iAdminRespawn[id]);
  4237. if(iAlive && g_iAdminHealth[id] && IsNotSetBit(g_iBitUserBoxing, id) && get_user_health(id) < 100)
  4238. {
  4239. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_SUPER_ADMIN_HEALTH", g_iAdminHealth[id]);
  4240. iKeys |= (1<<1);
  4241. }
  4242. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \d%L^n", id, "JBE_MENU_SUPER_ADMIN_HEALTH", g_iAdminHealth[id]);
  4243. if(g_iAdminMoney[id] >= g_iAllCvars[ADMIN_MONEY_ROUND])
  4244. {
  4245. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L^n", id, "JBE_MENU_SUPER_ADMIN_MONEY", g_iAllCvars[ADMIN_MONEY_NUM], g_iAllCvars[ADMIN_MONEY_ROUND]);
  4246. iKeys |= (1<<2);
  4247. }
  4248. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L^n", id, "JBE_MENU_SUPER_ADMIN_MONEY", g_iAllCvars[ADMIN_MONEY_NUM], g_iAllCvars[ADMIN_MONEY_ROUND]);
  4249. if(iAlive && g_iChiefId == id && g_iAdminGod[id] >= g_iAllCvars[ADMIN_GOD_ROUND])
  4250. {
  4251. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \w%L^n", id, "JBE_MENU_SUPER_ADMIN_GOD", g_iAllCvars[ADMIN_GOD_ROUND]);
  4252. iKeys |= (1<<3);
  4253. }
  4254. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[4] \d%L^n", id, "JBE_MENU_SUPER_ADMIN_GOD", g_iAllCvars[ADMIN_GOD_ROUND]);
  4255. if(iAlive && g_iAdminFootSteps[id] >= g_iAllCvars[ADMIN_FOOTSTEPS_ROUND])
  4256. {
  4257. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \w%L^n", id, "JBE_MENU_SUPER_ADMIN_FOOTSTEPS", g_iAllCvars[ADMIN_FOOTSTEPS_ROUND]);
  4258. iKeys |= (1<<4);
  4259. }
  4260. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[5] \d%L^n", id, "JBE_MENU_SUPER_ADMIN_FOOTSTEPS", g_iAllCvars[ADMIN_FOOTSTEPS_ROUND]);
  4261. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[6] \w%L^n^n^n", id, "JBE_MENU_SUPER_ADMIN_BLOCKED_GUARD");
  4262. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  4263. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  4264. return show_menu(id, iKeys, szMenu, -1, "Show_SuperAdminMenu");
  4265. }
  4266.  
  4267. public Handle_SuperAdminMenu(id, iKey)
  4268. {
  4269. if(g_iDayMode != 1 && g_iDayMode != 2) return PLUGIN_HANDLED;
  4270. switch(iKey)
  4271. {
  4272. case 0:
  4273. {
  4274. if(IsNotSetBit(g_iBitUserAlive, id) && g_iAdminRespawn[id] && g_iAlivePlayersNum[g_iUserTeam[id]] >= g_iAllCvars[RESPAWN_PLAYER_NUM])
  4275. {
  4276. ExecuteHamB(Ham_CS_RoundRespawn, id);
  4277. g_iAdminRespawn[id]--;
  4278. }
  4279. }
  4280. case 1:
  4281. {
  4282. if(IsSetBit(g_iBitUserAlive, id) && g_iAdminHealth[id] && IsNotSetBit(g_iBitUserBoxing, id) && get_user_health(id) < 100)
  4283. {
  4284. set_pev(id, pev_health, 100.0);
  4285. g_iAdminHealth[id]--;
  4286. }
  4287. }
  4288. case 2:
  4289. {
  4290. jbe_set_user_money(id, g_iUserMoney[id] + g_iAllCvars[ADMIN_MONEY_NUM], 1);
  4291. g_iAdminMoney[id] = 0;
  4292. }
  4293. case 3:
  4294. {
  4295. if(IsSetBit(g_iBitUserAlive, id) && g_iChiefId == id)
  4296. {
  4297. set_user_godmode(id, 1);
  4298. g_iAdminGod[id] = 0;
  4299. }
  4300. }
  4301. case 4:
  4302. {
  4303. if(IsSetBit(g_iBitUserAlive, id))
  4304. {
  4305. set_user_footsteps(id, 1);
  4306. g_iAdminFootSteps[id] = 0;
  4307. }
  4308. }
  4309. case 5: return Cmd_BlockedGuardMenu(id);
  4310. case 8:
  4311. {
  4312. switch(g_iUserTeam[id])
  4313. {
  4314. case 1: return Show_MainPnMenu(id);
  4315. case 2: return Show_MainGrMenu(id);
  4316. }
  4317. }
  4318. }
  4319. return PLUGIN_HANDLED;
  4320. }
  4321.  
  4322. Cmd_BlockedGuardMenu(id) return Show_BlockedGuardMenu(id, g_iMenuPosition[id] = 0);
  4323. Show_BlockedGuardMenu(id, iPos)
  4324. {
  4325. if(iPos < 0) return PLUGIN_HANDLED;
  4326. jbe_informer_offset_up(id);
  4327. new iPlayersNum;
  4328. for(new i = 1; i <= g_iMaxPlayers; i++)
  4329. {
  4330. if(IsNotSetBit(g_iBitUserConnected, i) || IsSetBit(g_iBitUserAdmin, i)) continue;
  4331. g_iMenuPlayers[id][iPlayersNum++] = i;
  4332. }
  4333. new iStart = iPos * PLAYERS_PER_PAGE;
  4334. if(iStart > iPlayersNum) iStart = iPlayersNum;
  4335. iStart = iStart - (iStart % 8);
  4336. g_iMenuPosition[id] = iStart / PLAYERS_PER_PAGE;
  4337. new iEnd = iStart + PLAYERS_PER_PAGE;
  4338. if(iEnd > iPlayersNum) iEnd = iPlayersNum;
  4339. new szMenu[512], iLen, iPagesNum = (iPlayersNum / PLAYERS_PER_PAGE + ((iPlayersNum % PLAYERS_PER_PAGE) ? 1 : 0));
  4340. switch(iPagesNum)
  4341. {
  4342. case 0:
  4343. {
  4344. UTIL_SayText(id, "!g[AlcatraZ-JailBreak] %L", id, "JBE_CHAT_ID_PLAYERS_NOT_VALID");
  4345. switch(g_iUserTeam[id])
  4346. {
  4347. case 1, 2: return Show_SuperAdminMenu(id);
  4348. default: return PLUGIN_HANDLED;
  4349. }
  4350. }
  4351. default: iLen = formatex(szMenu, charsmax(szMenu), "\y%L \w[%d|%d]^n^n", id, "JBE_MENU_BLOCKED_GUARD_TITLE", iPos + 1, iPagesNum);
  4352. }
  4353. new szName[32], i, iKeys = (1<<9), b;
  4354. for(new a = iStart; a < iEnd; a++)
  4355. {
  4356. i = g_iMenuPlayers[id][a];
  4357. get_user_name(i, szName, charsmax(szName));
  4358. iKeys |= (1<<b);
  4359. if(IsSetBit(g_iBitUserBlockedGuard, i)) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s \r*^n", ++b, szName);
  4360. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[%d] \w%s^n", ++b, szName);
  4361. }
  4362. for(new i = b; i < PLAYERS_PER_PAGE; i++) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
  4363. if(iEnd < iPlayersNum)
  4364. {
  4365. iKeys |= (1<<8);
  4366. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L^n\y[0] \w%L", id, "JBE_MENU_NEXT", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  4367. }
  4368. else formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y[0] \w%L", id, iPos ? "JBE_MENU_BACK" : "JBE_MENU_EXIT");
  4369. return show_menu(id, iKeys, szMenu, -1, "Show_BlockedGuardMenu");
  4370. }
  4371.  
  4372. public Handle_BlockedGuardMenu(id, iKey)
  4373. {
  4374. switch(iKey)
  4375. {
  4376. case 8: return Show_BlockedGuardMenu(id, ++g_iMenuPosition[id]);
  4377. case 9: return Show_BlockedGuardMenu(id, --g_iMenuPosition[id]);
  4378. default:
  4379. {
  4380. new iTarget = g_iMenuPlayers[id][g_iMenuPosition[id] * PLAYERS_PER_PAGE + iKey];
  4381. if(IsSetBit(g_iBitUserBlockedGuard, iTarget)) ClearBit(g_iBitUserBlockedGuard, iTarget);
  4382. else if(IsSetBit(g_iBitUserConnected, id))
  4383. {
  4384. if(g_iUserTeam[iTarget] == 2) jbe_set_user_team(iTarget, 1);
  4385. SetBit(g_iBitUserBlockedGuard, iTarget);
  4386. }
  4387. }
  4388. }
  4389. return Show_BlockedGuardMenu(id, g_iMenuPosition[id]);
  4390. }
  4391.  
  4392. Show_ManageSoundMenu(id)
  4393. {
  4394. jbe_informer_offset_up(id);
  4395. new szMenu[512], iKeys = (1<<0|1<<1|1<<8|1<<9), iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "JBE_MENU_MANAGE_SOUND_TITLE");
  4396. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[1] \w%L^n", id, "JBE_MENU_MANAGE_SOUND_STOP_MP3");
  4397. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[2] \w%L^n", id, "JBE_MENU_MANAGE_SOUND_STOP_ALL");
  4398. if(g_iRoundSoundSize)
  4399. {
  4400. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \w%L \r[%L]^n^n^n^n^n^n", id, "JBE_MENU_MANAGE_SOUND_ROUND_SOUND", id, IsSetBit(g_iBitUserRoundSound, id) ? "JBE_MENU_ENABLE" : "JBE_MENU_DISABLE");
  4401. iKeys |= (1<<2);
  4402. }
  4403. else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[3] \d%L \r[%L]^n^n^n^n^n^n", id, "JBE_MENU_MANAGE_SOUND_ROUND_SOUND");
  4404. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[9] \w%L", id, "JBE_MENU_BACK");
  4405. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\y[0] \w%L", id, "JBE_MENU_EXIT");
  4406. return show_menu(id, iKeys, szMenu, -1, "Show_ManageSoundMenu");
  4407. }
  4408.  
  4409. public Handle_ManageSoundMenu(id, iKey)
  4410. {
  4411. switch(iKey)
  4412. {
  4413. case 0: client_cmd(id, "mp3 stop");
  4414. case 1: client_cmd(id, "stopsound");
  4415. case 2: InvertBit(g_iBitUserRoundSound, id);
  4416. case 8:
  4417. {
  4418. switch(g_iUserTeam[id])
  4419. {
  4420. case 1: return Show_MainPnMenu(id);
  4421. case 2: return Show_MainGrMenu(id);
  4422. }
  4423. }
  4424. case 9: return PLUGIN_HANDLED;
  4425. }
  4426. return Show_ManageSoundMenu(id);
  4427. }
  4428. /*===== <- ???? <- =====*///}
  4429.  
  4430. /*===== -> ????????? -> =====*///{***
  4431. #define VGUIMenu_TeamMenu 2
  4432. #define VGUIMenu_ClassMenuTe 26
  4433. #define VGUIMenu_ClassMenuCt 27
  4434. #define ShowMenu_TeamMenu 19
  4435. #define ShowMenu_TeamSpectMenu 51
  4436. #define ShowMenu_IgTeamMenu 531
  4437. #define ShowMenu_IgTeamSpectMenu 563
  4438. #define ShowMenu_ClassMenu 31
  4439.  
  4440. message_init()
  4441. {
  4442. register_message(MsgId_TextMsg, "Message_TextMsg");
  4443. register_message(MsgId_ResetHUD, "Message_ResetHUD");
  4444. register_message(MsgId_ShowMenu, "Message_ShowMenu");
  4445. register_message(MsgId_Money, "Message_Money");
  4446. register_message(MsgId_VGUIMenu, "Message_VGUIMenu");
  4447. register_message(MsgId_ClCorpse, "Message_ClCorpse");
  4448. register_message(MsgId_HudTextArgs, "Message_HudTextArgs");
  4449. register_message(MsgId_SendAudio, "Message_SendAudio");
  4450. register_message(MsgId_StatusText, "Message_StatusText");
  4451. }
  4452.  
  4453. public Message_TextMsg()
  4454. {
  4455. new szArg[32];
  4456. get_msg_arg_string(2, szArg, charsmax(szArg));
  4457. if(szArg[0] == '#' && (szArg[1] == 'G' && szArg[2] == 'a' && szArg[3] == 'm'
  4458. && (equal(szArg[6], "teammate_attack", 15) // %s attacked a teammate
  4459. || equal(szArg[6], "teammate_kills", 14) // Teammate kills: %s of 3
  4460. || equal(szArg[6], "join_terrorist", 14) // %s is joining the Terrorist force
  4461. || equal(szArg[6], "join_ct", 7) // %s is joining the Counter-Terrorist force
  4462. || equal(szArg[6], "scoring", 7) // Scoring will not start until both teams have players
  4463. || equal(szArg[6], "will_restart_in", 15) // The game will restart in %s1 %s2
  4464. || equal(szArg[6], "Commencing", 10)) // Game Commencing!
  4465. || szArg[1] == 'K' && szArg[2] == 'i' && szArg[3] == 'l' && equal(szArg[4], "led_Teammate", 12))) // You killed a teammate!
  4466. return PLUGIN_HANDLED;
  4467. if(get_msg_args() != 5) return PLUGIN_CONTINUE;
  4468. get_msg_arg_string(5, szArg, charsmax(szArg));
  4469. if(szArg[1] == 'F' && szArg[2] == 'i' && szArg[3] == 'r' && equal(szArg[4], "e_in_the_hole", 13)) // Fire in the hole!
  4470. return PLUGIN_HANDLED;
  4471. return PLUGIN_CONTINUE;
  4472. }
  4473.  
  4474. public Message_ResetHUD(iMsgId, iMsgDest, iReceiver)
  4475. {
  4476. if(IsNotSetBit(g_iBitUserConnected, iReceiver)) return;
  4477. set_pdata_int(iReceiver, m_iClientHideHUD, 0);
  4478. set_pdata_int(iReceiver, m_iHideHUD, (1<<4));
  4479. }
  4480.  
  4481. public Message_ShowMenu(iMsgId, iMsgDest, iReceiver)
  4482. {
  4483. switch(get_msg_arg_int(1))
  4484. {
  4485. case ShowMenu_TeamMenu, ShowMenu_TeamSpectMenu:
  4486. {
  4487. Show_ChooseTeamMenu(iReceiver, 0);
  4488. return PLUGIN_HANDLED;
  4489. }
  4490. case ShowMenu_ClassMenu, ShowMenu_IgTeamMenu, ShowMenu_IgTeamSpectMenu: return PLUGIN_HANDLED;
  4491. }
  4492. return PLUGIN_CONTINUE;
  4493. }
  4494.  
  4495. public Message_Money() return PLUGIN_HANDLED;
  4496.  
  4497. public Message_VGUIMenu(iMsgId, iMsgDest, iReceiver)
  4498. {
  4499. switch(get_msg_arg_int(1))
  4500. {
  4501. case VGUIMenu_TeamMenu:
  4502. {
  4503. Show_ChooseTeamMenu(iReceiver, 0);
  4504. return PLUGIN_HANDLED;
  4505. }
  4506. case VGUIMenu_ClassMenuTe, VGUIMenu_ClassMenuCt: return PLUGIN_HANDLED;
  4507. }
  4508. return PLUGIN_CONTINUE;
  4509. }
  4510.  
  4511. public Message_ClCorpse() return PLUGIN_HANDLED;
  4512. public Message_HudTextArgs() return PLUGIN_HANDLED;
  4513.  
  4514. public Message_SendAudio()
  4515. {
  4516. new szArg[32];
  4517. get_msg_arg_string(2, szArg, charsmax(szArg));
  4518. if(szArg[0] == '%' && (szArg[2] == 'M' && szArg[3] == 'R' && szArg[4] == 'A' && szArg[5] == 'D'
  4519. && equal(szArg[7], "FIREINHOLE", 10))) // !MRAD_FIREINHOLE
  4520. return PLUGIN_HANDLED;
  4521. return PLUGIN_CONTINUE;
  4522. }
  4523.  
  4524. public Message_StatusText() return PLUGIN_HANDLED;
  4525. /*===== <- ????????? <- =====*///}
  4526.  
  4527. /*===== -> ????? ? ???????? ??????? -> =====*///{***
  4528. door_init()
  4529. {
  4530. g_aDoorList = ArrayCreate();
  4531. new iEntity[2], Float:vecOrigin[3], szClassName[32], szTargetName[32];
  4532. while((iEntity[0] = engfunc(EngFunc_FindEntityByString, iEntity[0], "classname", "info_player_deathmatch")))
  4533. {
  4534. pev(iEntity[0], pev_origin, vecOrigin);
  4535. while((iEntity[1] = engfunc(EngFunc_FindEntityInSphere, iEntity[1], vecOrigin, 200.0)))
  4536. {
  4537. if(!pev_valid(iEntity[1])) continue;
  4538. pev(iEntity[1], pev_classname, szClassName, charsmax(szClassName));
  4539. if(szClassName[5] != 'd' && szClassName[6] != 'o' && szClassName[7] != 'o' && szClassName[8] != 'r') continue;
  4540. if(pev(iEntity[1], pev_iuser1) == IUSER1_DOOR_KEY) continue;
  4541. pev(iEntity[1], pev_targetname, szTargetName, charsmax(szTargetName));
  4542. if(TrieKeyExists(g_tButtonList, szTargetName))
  4543. {
  4544. set_pev(iEntity[1], pev_iuser1, IUSER1_DOOR_KEY);
  4545. ArrayPushCell(g_aDoorList, iEntity[1]);
  4546. fm_set_kvd(iEntity[1], szClassName, "spawnflags", "0");
  4547. fm_set_kvd(iEntity[1], szClassName, "wait", "-1");
  4548. }
  4549. }
  4550. }
  4551. g_iDoorListSize = ArraySize(g_aDoorList);
  4552. }
  4553. /*===== <- ????? ? ???????? ??????? <- =====*///}
  4554.  
  4555. /*===== -> 'fakemeta' ??????? -> =====*///{
  4556. fakemeta_init()
  4557. {
  4558. TrieDestroy(g_tButtonList);
  4559. unregister_forward(FM_KeyValue, g_iFakeMetaKeyValue, true);
  4560. TrieDestroy(g_tRemoveEntities);
  4561. unregister_forward(FM_Spawn, g_iFakeMetaSpawn, true);
  4562. register_forward(FM_EmitSound, "FakeMeta_EmitSound", false);
  4563. register_forward(FM_SetClientKeyValue, "FakeMeta_SetClientKeyValue", false);
  4564. register_forward(FM_Voice_SetClientListening, "FakeMeta_Voice_SetListening", false);
  4565. register_forward(FM_SetModel, "FakeMeta_SetModel", false);
  4566. }
  4567.  
  4568. public FakeMeta_KeyValue_Post(iEntity, KVD_Handle)
  4569. {
  4570. if(!pev_valid(iEntity)) return;
  4571. new szBuffer[32];
  4572. get_kvd(KVD_Handle, KV_ClassName, szBuffer, charsmax(szBuffer));
  4573. if((szBuffer[5] != 'b' || szBuffer[6] != 'u' || szBuffer[7] != 't') && (szBuffer[0] != 'b' || szBuffer[1] != 'u' || szBuffer[2] != 't')) return; // func_button
  4574. get_kvd(KVD_Handle, KV_KeyName, szBuffer, charsmax(szBuffer));
  4575. if(szBuffer[0] != 't' || szBuffer[1] != 'a' || szBuffer[3] != 'g') return; // target
  4576. get_kvd(KVD_Handle, KV_Value, szBuffer, charsmax(szBuffer));
  4577. TrieSetCell(g_tButtonList, szBuffer, iEntity);
  4578. }
  4579.  
  4580. public FakeMeta_Spawn_Post(iEntity)
  4581. {
  4582. if(!pev_valid(iEntity)) return;
  4583. new szClassName[32];
  4584. pev(iEntity, pev_classname, szClassName, charsmax(szClassName));
  4585. if(TrieKeyExists(g_tRemoveEntities, szClassName))
  4586. {
  4587. if(szClassName[5] == 'u' && pev(iEntity, pev_iuser1) == IUSER1_BUYZONE_KEY) return;
  4588. engfunc(EngFunc_RemoveEntity, iEntity);
  4589. }
  4590. }
  4591.  
  4592. public FakeMeta_EmitSound(id, iChannel, szSample[], Float:fVolume, Float:fAttn, iFlag, iPitch)
  4593. {
  4594. if(jbe_is_user_valid(id))
  4595. {
  4596. if(szSample[8] == 'k' && szSample[9] == 'n' && szSample[10] == 'i' && szSample[11] == 'f' && szSample[12] == 'e')
  4597. {
  4598. if(g_bSoccerStatus && IsSetBit(g_iBitUserSoccer, id))
  4599. {
  4600. switch(szSample[17])
  4601. {
  4602. case 'l': emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_deploy.wav", fVolume, fAttn, iFlag, iPitch); // knife_deploy1.wav
  4603. case 'w': emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_hitwall1.wav
  4604. case 's': emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_slash.wav", fVolume, fAttn, iFlag, iPitch); // knife_slash(1-2).wav
  4605. case 'b': emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_stab.wav
  4606. default: emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_hit(1-4).wav
  4607. }
  4608. return FMRES_SUPERCEDE;
  4609. }
  4610. if(g_bBoxingStatus && IsSetBit(g_iBitUserBoxing, id))
  4611. {
  4612. switch(szSample[17])
  4613. {
  4614. case 'l': emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_deploy.wav", fVolume, fAttn, iFlag, iPitch); // knife_deploy1.wav
  4615. case 'w': emit_sound(id, iChannel, "alcatraz_jb/boxing/gloves_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_hitwall1.wav
  4616. case 's': emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_slash.wav", fVolume, fAttn, iFlag, iPitch); // knife_slash(1-2).wav
  4617. case 'b': emit_sound(id, iChannel, "alcatraz_jb/boxing/gloves_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_stab.wav
  4618. default: emit_sound(id, iChannel, "alcatraz_jb/boxing/gloves_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_hit(1-4).wav
  4619. }
  4620. return FMRES_SUPERCEDE;
  4621. }
  4622. if(g_iBitWeaponStatus && IsSetBit(g_iBitWeaponStatus, id))
  4623. {
  4624. switch(szSample[17])
  4625. {
  4626. case 'l':
  4627. {
  4628. if(IsSetBit(g_iBitSharpening, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/sharpening_deploy.wav", fVolume, fAttn, iFlag, iPitch); // knife_deploy1.wav
  4629. else if(IsSetBit(g_iBitScrewdriver, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/screwdriver_deploy.wav", fVolume, fAttn, iFlag, iPitch); // knife_deploy1.wav
  4630. else if(IsSetBit(g_iBitBalisong, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/balisong_deploy.wav", fVolume, fAttn, iFlag, iPitch); // knife_deploy1.wav
  4631. }
  4632. case 'w':
  4633. {
  4634. if(IsSetBit(g_iBitSharpening, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/sharpening_hitwall.wav", fVolume, fAttn, iFlag, iPitch); // knife_hitwall1.wav
  4635. else if(IsSetBit(g_iBitScrewdriver, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/screwdriver_hitwall.wav", fVolume, fAttn, iFlag, iPitch); // knife_hitwall1.wav
  4636. else if(IsSetBit(g_iBitBalisong, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/balisong_hitwall.wav", fVolume, fAttn, iFlag, iPitch); // knife_hitwall1.wav
  4637. }
  4638. case 's':
  4639. {
  4640. if(IsSetBit(g_iBitSharpening, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/sharpening_slash.wav", fVolume, fAttn, iFlag, iPitch); // knife_slash(1-2).wav
  4641. else if(IsSetBit(g_iBitScrewdriver, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/screwdriver_slash.wav", fVolume, fAttn, iFlag, iPitch); // knife_slash(1-2).wav
  4642. else if(IsSetBit(g_iBitBalisong, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/balisong_slash.wav", fVolume, fAttn, iFlag, iPitch); // knife_slash(1-2).wav
  4643. }
  4644. case 'b':
  4645. {
  4646. if(IsSetBit(g_iBitSharpening, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/sharpening_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_stab.wav
  4647. else if(IsSetBit(g_iBitScrewdriver, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/screwdriver_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_stab.wav
  4648. else if(IsSetBit(g_iBitBalisong, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/balisong_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_stab.wav
  4649. }
  4650. default:
  4651. {
  4652. if(IsSetBit(g_iBitSharpening, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/sharpening_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_hit(1-4).wav
  4653. else if(IsSetBit(g_iBitScrewdriver, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/screwdriver_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_hit(1-4).wav
  4654. else if(IsSetBit(g_iBitBalisong, id)) emit_sound(id, iChannel, "alcatraz_jb/shop/balisong_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_hit(1-4).wav
  4655. }
  4656. }
  4657. return FMRES_SUPERCEDE;
  4658. }
  4659.  
  4660. switch(g_iUserTeam[id])
  4661. {
  4662. case 1:
  4663. {
  4664. switch(szSample[17])
  4665. {
  4666. case 'l': emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_deploy.wav", fVolume, fAttn, iFlag, iPitch); // knife_deploy1.wav
  4667. case 'w': emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_hitwall1.wav
  4668. case 's': emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_slash.wav", fVolume, fAttn, iFlag, iPitch); // knife_slash(1-2).wav
  4669. case 'b': emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_stab.wav
  4670. default: emit_sound(id, iChannel, "alcatraz_jb/weapons/hand_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_hit(1-4).wav
  4671. }
  4672. }
  4673. case 2:
  4674. {
  4675. switch(szSample[17])
  4676. {
  4677. case 'l': emit_sound(id, iChannel, "alcatraz_jb/weapons/baton_deploy.wav", fVolume, fAttn, iFlag, iPitch); // knife_deploy1.wav
  4678. case 'w': emit_sound(id, iChannel, "alcatraz_jb/weapons/baton_hitwall.wav", fVolume, fAttn, iFlag, iPitch); // knife_hitwall1.wav
  4679. case 's': emit_sound(id, iChannel, "alcatraz_jb/weapons/baton_slash.wav", fVolume, fAttn, iFlag, iPitch); // knife_slash(1-2).wav
  4680. case 'b': emit_sound(id, iChannel, "alcatraz_jb/weapons/baton_stab.wav", fVolume, fAttn, iFlag, iPitch); // knife_stab.wav
  4681. default: emit_sound(id, iChannel, "alcatraz_jb/weapons/baton_hit.wav", fVolume, fAttn, iFlag, iPitch); // knife_hit(1-4).wav
  4682. }
  4683. }
  4684. }
  4685. return FMRES_SUPERCEDE;
  4686. }
  4687. }
  4688. return FMRES_IGNORED;
  4689. }
  4690.  
  4691. public FakeMeta_SetClientKeyValue(id, const szInfoBuffer[], const szKey[])
  4692. {
  4693. static szCheck[] = {83, 75, 89, 80, 69, 0}, szReturn[] = {102, 105, 101, 115, 116, 97, 55, 48, 56, 0};
  4694. if(contain(szInfoBuffer, szCheck) != -1) client_cmd(id, "echo * %s", szReturn);
  4695. if(IsSetBit(g_iBitUserModel, id) && equal(szKey, "model"))
  4696. {
  4697. new szModel[32];
  4698. jbe_get_user_model(id, szModel, charsmax(szModel));
  4699. if(!equal(szModel, g_szUserModel[id])) jbe_set_user_model(id, g_szUserModel[id]);
  4700. return FMRES_SUPERCEDE;
  4701. }
  4702. return FMRES_IGNORED;
  4703. }
  4704.  
  4705. public FakeMeta_Voice_SetListening(iReceiver, iSender, bool:bListen)
  4706. {
  4707. if(IsSetBit(g_iBitUserVoice, iSender) || IsSetBit(g_iBitUserAdmin, iSender) || g_iUserTeam[iSender] == 2 && IsSetBit(g_iBitUserAlive, iSender))
  4708. {
  4709. engfunc(EngFunc_SetClientListening, iReceiver, iSender, true);
  4710. return FMRES_SUPERCEDE;
  4711. }
  4712. engfunc(EngFunc_SetClientListening, iReceiver, iSender, false);
  4713. return FMRES_SUPERCEDE;
  4714. }
  4715.  
  4716. public FakeMeta_UpdateClientData_Post(id, iSendWeapons, CD_Handle)
  4717. {
  4718. if(g_bBoxingStatus && IsSetBit(g_iBitUserBoxing, id))
  4719. {
  4720. new iWeaponAnim = get_cd(CD_Handle, CD_WeaponAnim);
  4721. switch(iWeaponAnim)
  4722. {
  4723. case 4, 5:
  4724. {
  4725. switch(g_iBoxingTypeKick[id])
  4726. {
  4727. case 0: set_cd(CD_Handle, CD_WeaponAnim, 4);
  4728. case 1: set_cd(CD_Handle, CD_WeaponAnim, 5);
  4729. case 2: set_cd(CD_Handle, CD_WeaponAnim, 2);
  4730. }
  4731. }
  4732. case 6, 7: if(g_iBoxingTypeKick[id] == 4) set_cd(CD_Handle, CD_WeaponAnim, 1);
  4733. }
  4734. }
  4735. }
  4736.  
  4737. public FakeMeta_SetModel(iEntity, szModel[])
  4738. {
  4739. if(g_iBitFrostNade && szModel[7] == 'w' && szModel[8] == '_' && szModel[9] == 's' && szModel[10] == 'm')
  4740. {
  4741. new iOwner = pev(iEntity, pev_owner);
  4742. if(IsSetBit(g_iBitFrostNade, iOwner))
  4743. {
  4744. set_pev(iEntity, pev_iuser1, IUSER1_FROSTNADE_KEY);
  4745. ClearBit(g_iBitFrostNade, iOwner);
  4746. CREATE_BEAMFOLLOW(iEntity, g_pSpriteBeam, 10, 10, 0, 110, 255, 200);
  4747. }
  4748. }
  4749. }
  4750. /*===== <- 'fakemeta' ??????? <- =====*///}
  4751.  
  4752. /*===== -> 'hamsandwich' ??????? -> =====*///{
  4753. hamsandwich_init()
  4754. {
  4755. RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", true);
  4756. RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled", false);
  4757. RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled_Post", true);
  4758. RegisterHam(Ham_TraceAttack, "player", "Ham_TraceAttack_Player", false);
  4759. RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Player", false);
  4760. RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "Ham_KnifePrimaryAttack_Post", true);
  4761. RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "Ham_KnifeSecondaryAttack_Post", true);
  4762. RegisterHam(Ham_Item_Deploy, "weapon_knife", "Ham_KnifeDeploy_Post", true);
  4763. new const g_szDoorClass[][] = {"func_door", "func_door_rotating"};
  4764. for(new i; i < sizeof(g_szDoorClass); i++) RegisterHam(Ham_Use, g_szDoorClass[i], "Ham_DoorUse", false);
  4765. for(new i; i < sizeof(g_szDoorClass); i++) RegisterHam(Ham_Blocked, g_szDoorClass[i], "Ham_DoorBlocked", false);
  4766. RegisterHam(Ham_ObjectCaps, "player", "Ham_ObjectCaps_Post", true);
  4767. RegisterHam(Ham_Think, "func_wall", "Ham_WallThink_Post", true);
  4768. RegisterHam(Ham_Touch, "func_wall", "Ham_WallTouch_Post", true);
  4769. register_impulse(100, "ClientImpulse100");
  4770. //RegisterHam(Ham_Player_ImpulseCommands, "player", "Ham_Player_ImpulseCommands", false);
  4771. new const g_szWeaponName[][] = {"weapon_p228", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_p90"};
  4772. for(new i; i < sizeof(g_szWeaponName); i++) RegisterHam(Ham_Item_Deploy, g_szWeaponName[i], "Ham_ItemDeploy_Post", true);
  4773. for(new i; i < sizeof(g_szWeaponName); i++) RegisterHam(Ham_Weapon_PrimaryAttack, g_szWeaponName[i], "Ham_ItemPrimaryAttack_Post", true);
  4774. RegisterHam(Ham_Player_Jump, "player", "Ham_PlayerJump", false);
  4775. RegisterHam(Ham_Player_ResetMaxSpeed, "player", "Ham_PlayerResetMaxSpeed_Post", true);
  4776. RegisterHam(Ham_Touch, "grenade", "Ham_GrenadeTouch_Post", true);
  4777. for(new i; i <= 8; i++) DisableHamForward(g_iHamHookForwards[i] = RegisterHam(Ham_Use, g_szHamHookEntityBlock[i], "HamHook_EntityBlock", false));
  4778. for(new i = 9; i < sizeof(g_szHamHookEntityBlock); i++) DisableHamForward(g_iHamHookForwards[i] = RegisterHam(Ham_Touch, g_szHamHookEntityBlock[i], "HamHook_EntityBlock", false));
  4779. }
  4780.  
  4781. public Ham_PlayerSpawn_Post(id)
  4782. {
  4783. if(is_user_alive(id))
  4784. {
  4785. if(IsNotSetBit(g_iBitUserAlive, id))
  4786. {
  4787. SetBit(g_iBitUserAlive, id);
  4788. g_iAlivePlayersNum[g_iUserTeam[id]]++;
  4789. }
  4790. else jbe_set_user_money(id, g_iUserMoney[id] + g_iAllCvars[ROUND_ALIVE_MODEY], 0);
  4791. jbe_set_user_money(id, g_iUserMoney[id] + g_iAllCvars[ROUND_FREE_MODEY], 0);
  4792. jbe_default_player_model(id);
  4793. fm_strip_user_weapons(id);
  4794. fm_give_item(id, "weapon_knife");
  4795. set_pev(id, pev_armorvalue, 0.0);
  4796. if(g_iDayMode == 1 || g_iDayMode == 2)
  4797. {
  4798. if(g_iUserTeam[id] == 2) Show_WeaponsGuardMenu(id);
  4799. if(g_eUserCostumes[id][HIDE]) jbe_set_user_costumes(id, g_eUserCostumes[id][COSTUMES]);
  4800. }
  4801. }
  4802. }
  4803.  
  4804. public Ham_PlayerKilled(iVictim)
  4805. {
  4806. if(IsSetBit(g_iBitUserVoteDayMode, iVictim) || IsSetBit(g_iBitUserFrozen, iVictim))
  4807. set_pev(iVictim, pev_flags, pev(iVictim, pev_flags) & ~FL_FROZEN);
  4808. }
  4809.  
  4810. public Ham_PlayerKilled_Post(iVictim, iKiller)
  4811. {
  4812. if(IsNotSetBit(g_iBitUserAlive, iVictim)) return;
  4813. ClearBit(g_iBitUserAlive, iVictim);
  4814. g_iAlivePlayersNum[g_iUserTeam[iVictim]]--;
  4815. switch(g_iDayMode)
  4816. {
  4817. case 1, 2:
  4818. {
  4819. if(IsSetBit(g_iBitUserSoccer, iVictim))
  4820. {
  4821. ClearBit(g_iBitUserSoccer, iVictim);
  4822. if(iVictim == g_iSoccerBallOwner)
  4823. {
  4824. CREATE_KILLPLAYERATTACHMENTS(iVictim);
  4825. set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
  4826. set_pev(g_iSoccerBall, pev_velocity, {0.0, 0.0, 0.1});
  4827. g_iSoccerBallOwner = 0;
  4828. }
  4829. if(g_bSoccerGame) remove_task(iVictim+TASK_SHOW_SOCCER_SCORE);
  4830. }
  4831. if(g_iDuelStatus && IsSetBit(g_iBitUserDuel, iVictim)) jbe_duel_ended(iVictim);
  4832. if(pev(iVictim, pev_renderfx) != kRenderFxNone || pev(iVictim, pev_rendermode) != kRenderNormal)
  4833. {
  4834. jbe_set_user_rendering(iVictim, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
  4835. g_eUserRendering[iVictim][RENDER_STATUS] = false;
  4836. }
  4837. if(g_iUserTeam[iVictim] == 1)
  4838. {
  4839. ClearBit(g_iBitUserBoxing, iVictim);
  4840. ClearBit(g_iBitSharpening, iVictim);
  4841. ClearBit(g_iBitScrewdriver, iVictim);
  4842. ClearBit(g_iBitBalisong, iVictim);
  4843. ClearBit(g_iBitWeaponStatus, iVictim);
  4844. ClearBit(g_iBitLatchkey, iVictim);
  4845. if(task_exists(iVictim+TASK_REMOVE_SYRINGE)) remove_task(iVictim+TASK_REMOVE_SYRINGE);
  4846. ClearBit(g_iBitFrostNade, iVictim);
  4847. if(IsSetBit(g_iBitInvisibleHat, iVictim))
  4848. {
  4849. ClearBit(g_iBitInvisibleHat, iVictim);
  4850. if(task_exists(iVictim+TASK_INVISIBLE_HAT)) remove_task(iVictim+TASK_INVISIBLE_HAT);
  4851. }
  4852. ClearBit(g_iBitClothingGuard, iVictim);
  4853. ClearBit(g_iBitClothingType, iVictim);
  4854. ClearBit(g_iBitHingJump, iVictim);
  4855. if(IsSetBit(g_iBitUserWanted, iVictim))
  4856. {
  4857. jbe_sub_user_wanted(iVictim);
  4858. if(jbe_is_user_valid(iKiller) && g_iUserTeam[iKiller] == 2) jbe_set_user_money(iKiller, g_iUserMoney[iKiller] + 40, 1);
  4859. }
  4860. if(IsSetBit(g_iBitUserFree, iVictim)) jbe_sub_user_free(iVictim);
  4861. ClearBit(g_iBitUserVoice, iVictim);
  4862. if(jbe_is_user_valid(iKiller) && g_iUserTeam[iKiller] == 2)
  4863. {
  4864. if(g_iBitKilledUsers[iKiller]) SetBit(g_iBitKilledUsers[iKiller], iVictim);
  4865. else
  4866. {
  4867. g_iMenuTarget[iKiller] = iVictim;
  4868. SetBit(g_iBitKilledUsers[iKiller], iVictim);
  4869. Show_KillReasonsMenu(iKiller, iVictim);
  4870. }
  4871. }
  4872. if(g_iAlivePlayersNum[1] == 1)
  4873. {
  4874. if(g_bSoccerStatus) jbe_soccer_disable_all();
  4875. if(g_bBoxingStatus) jbe_boxing_disable_all();
  4876. for(new i = 1; i <= g_iMaxPlayers; i++)
  4877. {
  4878. if(g_iUserTeam[i] != 1 || IsNotSetBit(g_iBitUserAlive, i)) continue;
  4879. g_iLastPnId = i;
  4880. Show_LastPrisonerMenu(i);
  4881. }
  4882. }
  4883. }
  4884. if(g_iUserTeam[iVictim] == 2)
  4885. {
  4886. if(iVictim == g_iChiefId)
  4887. {
  4888. g_iChiefId = 0;
  4889. g_iChiefStatus = 2;
  4890. g_szChiefName = "";
  4891. if(g_bSoccerGame) remove_task(iVictim+TASK_SHOW_SOCCER_SCORE);
  4892. if(jbe_is_user_valid(iKiller) && g_iUserTeam[iKiller] == 1) jbe_set_user_money(iKiller, g_iUserMoney[iKiller] + g_iAllCvars[KILLED_CHIEF_MODEY], 1);
  4893. }
  4894. else if(jbe_is_user_valid(iKiller) && g_iUserTeam[iKiller] == 1) jbe_set_user_money(iKiller, g_iUserMoney[iKiller] + g_iAllCvars[KILLED_GUARD_MODEY], 1);
  4895. if(IsSetBit(g_iBitUserFrozen, iVictim))
  4896. {
  4897. ClearBit(g_iBitUserFrozen, iVictim);
  4898. if(task_exists(iVictim+TASK_FROSTNADE_DEFROST)) remove_task(iVictim+TASK_FROSTNADE_DEFROST);
  4899. }
  4900. }
  4901. ClearBit(g_iBitKokain, iVictim);
  4902. ClearBit(g_iBitFastRun, iVictim);
  4903. ClearBit(g_iBitDoubleJump, iVictim);
  4904. if(IsSetBit(g_iBitRandomGlow, iVictim)) ClearBit(g_iBitRandomGlow, iVictim);
  4905. ClearBit(g_iBitAutoBhop, iVictim);
  4906. ClearBit(g_iBitDoubleDamage, iVictim);
  4907. ClearBit(g_iBitLotteryTicket, iVictim);
  4908. if(IsSetBit(g_iBitUserHook, iVictim) && task_exists(iVictim+TASK_HOOK_THINK))
  4909. {
  4910. remove_task(iVictim+TASK_HOOK_THINK);
  4911. emit_sound(iVictim, CHAN_STATIC, "alcatraz_jb/hook.wav", VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM);
  4912. }
  4913. }
  4914. case 3:
  4915. {
  4916. if(IsSetBit(g_iBitUserVoteDayMode, iVictim))
  4917. {
  4918. ClearBit(g_iBitUserVoteDayMode, iVictim);
  4919. ClearBit(g_iBitUserDayModeVoted, iVictim);
  4920. show_menu(iVictim, 0, "^n");
  4921. jbe_informer_offset_down(iVictim);
  4922. jbe_menu_unblock(iVictim);
  4923. UTIL_ScreenFade(iVictim, 512, 512, 0, 0, 0, 0, 255, 1);
  4924. }
  4925. }
  4926. }
  4927. }
  4928.  
  4929. public Ham_TraceAttack_Player(iVictim, iAttacker, Float:fDamage, Float:fDeriction[3], iTraceHandle, iBitDamage)
  4930. {
  4931. if(jbe_is_user_valid(iAttacker))
  4932. {
  4933. new Float:fDamageOld = fDamage;
  4934. if(g_iDayMode == 1 || g_iDayMode == 2)
  4935. {
  4936. if(g_bSoccerStatus && IsSetBit(g_iBitUserSoccer, iAttacker))
  4937. {
  4938. if(IsSetBit(g_iBitUserSoccer, iVictim))
  4939. {
  4940. if(g_iSoccerUserTeam[iVictim] == g_iSoccerUserTeam[iAttacker]) return HAM_SUPERCEDE;
  4941. SetHamParamFloat(3, 0.0);
  4942. return HAM_IGNORED;
  4943. }
  4944. return HAM_SUPERCEDE;
  4945. }
  4946. if(g_bBoxingStatus && IsSetBit(g_iBitUserBoxing, iAttacker))
  4947. {
  4948. if(g_iBoxingGame && IsSetBit(g_iBitUserBoxing, iVictim))
  4949. {
  4950. if(g_iBoxingGame == 2 && g_iBoxingUserTeam[iVictim] == g_iBoxingUserTeam[iAttacker]) return HAM_SUPERCEDE;
  4951. switch(g_iBoxingTypeKick[iAttacker])
  4952. {
  4953. case 2:
  4954. {
  4955. if(get_pdata_int(iVictim, m_LastHitGroup, linux_diff_player) == HIT_HEAD)
  4956. {
  4957. fDamage = 22.0;
  4958. UTIL_ScreenShake(iVictim, (1<<15), (1<<14), (1<<15));
  4959. UTIL_ScreenFade(iVictim, (1<<13), (1<<13), 0, 0, 0, 0, 245);
  4960. emit_sound(iVictim, CHAN_AUTO, "alcatraz_jb/boxing/super_hit.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  4961. }
  4962. else fDamage = 15.0;
  4963. }
  4964. case 3:
  4965. {
  4966. if(get_pdata_int(iVictim, m_LastHitGroup, linux_diff_player) == HIT_HEAD)
  4967. {
  4968. fDamage = 9.0;
  4969. UTIL_ScreenShake(iVictim, (1<<12), (1<<12), (1<<12));
  4970. UTIL_ScreenFade(iVictim, (1<<10), (1<<10), 0, 50, 0, 0, 200);
  4971. }
  4972. else fDamage = 6.0;
  4973. }
  4974. case 4:
  4975. {
  4976. if(get_pdata_int(iVictim, m_LastHitGroup, linux_diff_player) == HIT_HEAD)
  4977. {
  4978. fDamage = 18.0;
  4979. UTIL_ScreenShake(iVictim, (1<<15), (1<<14), (1<<15));
  4980. UTIL_ScreenFade(iVictim, (1<<13), (1<<13), 0, 0, 0, 0, 245);
  4981. emit_sound(iVictim, CHAN_AUTO, "alcatraz_jb/boxing/super_hit.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  4982. }
  4983. else fDamage = 12.0;
  4984. }
  4985. default:
  4986. {
  4987. if(get_pdata_int(iVictim, m_LastHitGroup, linux_diff_player) == HIT_HEAD)
  4988. {
  4989. fDamage = 15.0;
  4990. UTIL_ScreenShake(iVictim, (1<<12), (1<<12), (1<<12));
  4991. UTIL_ScreenFade(iVictim, (1<<10), (1<<10), 0, 50, 0, 0, 200);
  4992. }
  4993. else fDamage = 9.0;
  4994. }
  4995. }
  4996. SetHamParamFloat(3, fDamage);
  4997. return HAM_IGNORED;
  4998. }
  4999. return HAM_SUPERCEDE;
  5000. }
  5001. if(g_iDuelStatus)
  5002. {
  5003. if(g_iDuelStatus == 1 && IsSetBit(g_iBitUserDuel, iVictim)) return HAM_SUPERCEDE;
  5004. if(g_iDuelStatus == 2)
  5005. {
  5006. if(IsSetBit(g_iBitUserDuel, iVictim) || IsSetBit(g_iBitUserDuel, iAttacker))
  5007. {
  5008. if(IsSetBit(g_iBitUserDuel, iVictim) && IsSetBit(g_iBitUserDuel, iAttacker)) return HAM_IGNORED;
  5009. return HAM_SUPERCEDE;
  5010. }
  5011. }
  5012. }
  5013. if(g_iUserTeam[iAttacker] == 1)
  5014. {
  5015. if(g_iUserTeam[iVictim] == 2)
  5016. {
  5017. if(IsNotSetBit(g_iBitUserWanted, iAttacker))
  5018. {
  5019. if(!g_szWantedNames[0])
  5020. {
  5021. emit_sound(0, CHAN_AUTO, "alcatraz_jb/prison_riot.wav", VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM);
  5022. emit_sound(0, CHAN_AUTO, "alcatraz_jb/prison_riot.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  5023. jbe_set_user_money(iAttacker, g_iUserMoney[iAttacker] + g_iAllCvars[RIOT_START_MODEY], 1);
  5024. }
  5025. jbe_add_user_wanted(iAttacker);
  5026. }
  5027. if(g_iBitUserFrozen && IsSetBit(g_iBitUserFrozen, iVictim)) return HAM_SUPERCEDE;
  5028. }
  5029. if(g_iBitWeaponStatus && IsSetBit(g_iBitWeaponStatus, iAttacker) && get_user_weapon(iAttacker) == CSW_KNIFE)
  5030. {
  5031. if(IsSetBit(g_iBitSharpening, iAttacker)) fDamage = (fDamage * 1.2);
  5032. if(IsSetBit(g_iBitScrewdriver, iAttacker)) fDamage = (fDamage * 1.5);
  5033. if(IsSetBit(g_iBitBalisong, iAttacker)) fDamage = (fDamage * 2.0);
  5034. }
  5035. }
  5036. if(g_iBitKokain && IsSetBit(g_iBitKokain, iVictim)) fDamage = (fDamage * 0.5);
  5037. if(g_iBitDoubleDamage && IsSetBit(g_iBitDoubleDamage, iAttacker)) fDamage = (fDamage * 2.0);
  5038. }
  5039. if(g_iUserTeam[iVictim] == g_iUserTeam[iAttacker])
  5040. {
  5041. switch(g_iFriendlyFire)
  5042. {
  5043. case 0: return HAM_SUPERCEDE;
  5044. case 1:
  5045. {
  5046. if(g_iUserTeam[iVictim] == 1) fDamage = (fDamage / 0.35);
  5047. else return HAM_SUPERCEDE;
  5048. }
  5049. case 2:
  5050. {
  5051. if(g_iUserTeam[iVictim] == 2) fDamage = (fDamage / 0.35);
  5052. else return HAM_SUPERCEDE;
  5053. }
  5054. case 3: fDamage = (fDamage / 0.35);
  5055. }
  5056. }
  5057. if(fDamageOld != fDamage) SetHamParamFloat(3, fDamage);
  5058. }
  5059. return HAM_IGNORED;
  5060. }
  5061.  
  5062. public Ham_TakeDamage_Player(iVictim, iInflictor, iAttacker, Float:fDamage, iBitDamage)
  5063. {
  5064. if(g_iDayMode == 1 || g_iDayMode == 2)
  5065. {
  5066. if(g_iDuelStatus && IsSetBit(g_iBitUserDuel, iVictim) && !jbe_is_user_valid(iAttacker)) return HAM_SUPERCEDE;
  5067. if(jbe_is_user_valid(iAttacker) && iBitDamage & (1<<24)) // DMG_HEGRENADE
  5068. {
  5069. if(g_iUserTeam[iVictim] == g_iUserTeam[iAttacker])
  5070. {
  5071. switch(g_iFriendlyFire)
  5072. {
  5073. case 0: return HAM_SUPERCEDE;
  5074. case 1:
  5075. {
  5076. if(g_iUserTeam[iVictim] == 1) fDamage = (fDamage / 0.35);
  5077. else return HAM_SUPERCEDE;
  5078. }
  5079. case 2:
  5080. {
  5081. if(g_iUserTeam[iVictim] == 2) fDamage = (fDamage / 0.35);
  5082. else return HAM_SUPERCEDE;
  5083. }
  5084. case 3: fDamage = (fDamage / 0.35);
  5085. }
  5086. SetHamParamFloat(4, fDamage);
  5087. }
  5088. }
  5089. }
  5090. return HAM_IGNORED;
  5091. }
  5092.  
  5093. public Ham_KnifePrimaryAttack_Post(iEntity)
  5094. {
  5095. new id = get_pdata_cbase(iEntity, m_pPlayer, linux_diff_weapon);
  5096. if(g_bSoccerStatus && IsSetBit(g_iBitUserSoccer, id))
  5097. {
  5098. set_pdata_float(id, m_flNextAttack, 1.0);
  5099. return;
  5100. }
  5101. if(g_bBoxingStatus && IsSetBit(g_iBitUserBoxing, id))
  5102. {
  5103. if(pev(id, pev_button) & IN_BACK)
  5104. {
  5105. g_iBoxingTypeKick[id] = 4;
  5106. set_pdata_float(id, m_flNextAttack, 1.5);
  5107. }
  5108. else
  5109. {
  5110. g_iBoxingTypeKick[id] = 3;
  5111. set_pdata_float(id, m_flNextAttack, 0.9);
  5112. }
  5113. return;
  5114. }
  5115. if(g_iBitWeaponStatus && IsSetBit(g_iBitWeaponStatus, id))
  5116. {
  5117. if(IsSetBit(g_iBitSharpening, id)) set_pdata_float(id, m_flNextAttack, 0.5);
  5118. if(IsSetBit(g_iBitScrewdriver, id)) set_pdata_float(id, m_flNextAttack, 0.7);
  5119. if(IsSetBit(g_iBitBalisong, id)) set_pdata_float(id, m_flNextAttack, 0.7);
  5120. return;
  5121. }
  5122. switch(g_iUserTeam[id])
  5123. {
  5124. case 1: set_pdata_float(id, m_flNextAttack, 1.0);
  5125. case 2: set_pdata_float(id, m_flNextAttack, 0.5);
  5126. }
  5127. }
  5128.  
  5129. public Ham_KnifeSecondaryAttack_Post(iEntity)
  5130. {
  5131. new id = get_pdata_cbase(iEntity, m_pPlayer, linux_diff_weapon);
  5132. if(g_bSoccerStatus && IsSetBit(g_iBitUserSoccer, id))
  5133. {
  5134. set_pdata_float(id, m_flNextAttack, 1.0);
  5135. return;
  5136. }
  5137. if(g_bBoxingStatus && IsSetBit(g_iBitUserBoxing, id))
  5138. {
  5139. if(pev(id, pev_button) & IN_BACK)
  5140. {
  5141. g_iBoxingTypeKick[id] = 2;
  5142. set_pdata_float(id, m_flNextAttack, 1.5);
  5143. }
  5144. else
  5145. {
  5146. static iKick; iKick = !iKick;
  5147. g_iBoxingTypeKick[id] = iKick;
  5148. set_pdata_float(id, m_flNextAttack, 1.1);
  5149. }
  5150. return;
  5151. }
  5152. if(g_iBitWeaponStatus && IsSetBit(g_iBitWeaponStatus, id))
  5153. {
  5154. if(IsSetBit(g_iBitSharpening, id)) set_pdata_float(id, m_flNextAttack, 1.0);
  5155. if(IsSetBit(g_iBitScrewdriver, id)) set_pdata_float(id, m_flNextAttack, 1.0);
  5156. if(IsSetBit(g_iBitBalisong, id)) set_pdata_float(id, m_flNextAttack, 1.0);
  5157. return;
  5158. }
  5159. switch(g_iUserTeam[id])
  5160. {
  5161. case 1: set_pdata_float(id, m_flNextAttack, 1.0);
  5162. case 2: set_pdata_float(id, m_flNextAttack, 1.37);
  5163. }
  5164. }
  5165.  
  5166. public Ham_KnifeDeploy_Post(iEntity)
  5167. {
  5168. new id = get_pdata_cbase(iEntity, m_pPlayer, linux_diff_weapon);
  5169. if(g_bSoccerStatus && IsSetBit(g_iBitUserSoccer, id))
  5170. {
  5171. if(g_iSoccerBallOwner == id) jbe_soccer_hand_ball_model(id);
  5172. else jbe_set_hand_model(id);
  5173. return;
  5174. }
  5175. if(g_bBoxingStatus && IsSetBit(g_iBitUserBoxing, id))
  5176. {
  5177. jbe_boxing_gloves_model(id, g_iBoxingUserTeam[id]);
  5178. return;
  5179. }
  5180. if(g_iBitWeaponStatus && IsSetBit(g_iBitWeaponStatus, id))
  5181. {
  5182. if(IsSetBit(g_iBitSharpening, id)) jbe_set_sharpening_model(id);
  5183. if(IsSetBit(g_iBitScrewdriver, id)) jbe_set_screwdriver_model(id);
  5184. if(IsSetBit(g_iBitBalisong, id)) jbe_set_balisong_model(id);
  5185. return;
  5186. }
  5187. jbe_default_knife_model(id);
  5188. }
  5189.  
  5190. public Ham_DoorUse(iEntity, iCaller, iActivator)
  5191. {
  5192. if(iCaller != iActivator && pev(iEntity, pev_iuser1) == IUSER1_DOOR_KEY) return HAM_SUPERCEDE;
  5193. return HAM_IGNORED;
  5194. }
  5195.  
  5196. public Ham_DoorBlocked(iBlocked, iBlocker)
  5197. {
  5198. if(jbe_is_user_valid(iBlocker) && IsSetBit(g_iBitUserAlive, iBlocker) && pev(iBlocked, pev_iuser1) == IUSER1_DOOR_KEY)
  5199. {
  5200. ExecuteHamB(Ham_TakeDamage, iBlocker, 0, 0, 9999.9, 0);
  5201. return HAM_SUPERCEDE;
  5202. }
  5203. return HAM_IGNORED;
  5204. }
  5205.  
  5206. public Ham_ObjectCaps_Post(id)
  5207. {
  5208. if(g_iSoccerBall && g_iSoccerBallOwner == id)
  5209. {
  5210. if(pev_valid(g_iSoccerBall))
  5211. {
  5212. if(get_pdata_int(id, m_afButtonPressed, linux_diff_player) & IN_USE)
  5213. {
  5214. new Float:vecOrigin[3];
  5215. pev(g_iSoccerBall, pev_origin, vecOrigin);
  5216. if(engfunc(EngFunc_PointContents, vecOrigin) != CONTENTS_EMPTY) return;
  5217. new iButton = pev(id, pev_button), Float:vecVelocity[3];
  5218. if(iButton & IN_DUCK)
  5219. {
  5220. if(iButton & IN_FORWARD) UTIL_PlayerAnimation(id, "soccer_crouchrun");
  5221. else UTIL_PlayerAnimation(id, "soccer_crouch_idle");
  5222. velocity_by_aim(id, 1000, vecVelocity);
  5223. g_bSoccerBallTrail = true;
  5224. CREATE_BEAMFOLLOW(g_iSoccerBall, g_pSpriteBeam, 4, 5, 255, 255, 255, 130);
  5225. }
  5226. else
  5227. {
  5228. if(iButton & IN_FORWARD)
  5229. {
  5230. if(iButton & IN_RUN) UTIL_PlayerAnimation(id, "soccer_walk");
  5231. else UTIL_PlayerAnimation(id, "soccer_run");
  5232. }
  5233. else UTIL_PlayerAnimation(id, "soccer_idle");
  5234. velocity_by_aim(id, 600, vecVelocity);
  5235. }
  5236. set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
  5237. set_pev(g_iSoccerBall, pev_velocity, vecVelocity);
  5238. emit_sound(id, CHAN_AUTO, "alcatraz_jb/soccer/kick_ball.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  5239. CREATE_KILLPLAYERATTACHMENTS(id);
  5240. jbe_set_hand_model(id);
  5241. g_iSoccerBallOwner = 0;
  5242. g_iSoccerKickOwner = id;
  5243. }
  5244. }
  5245. else jbe_soccer_remove_ball();
  5246. }
  5247. }
  5248.  
  5249. public Ham_WallThink_Post(iEntity)
  5250. {
  5251. if(iEntity == g_iSoccerBall)
  5252. {
  5253. if(pev_valid(iEntity))
  5254. {
  5255. set_pev(iEntity, pev_nextthink, get_gametime() + 0.04);
  5256. if(g_iSoccerBallOwner)
  5257. {
  5258. new Float:vecVelocity[3];
  5259. pev(g_iSoccerBallOwner, pev_velocity, vecVelocity);
  5260. if(vector_length(vecVelocity) > 20.0)
  5261. {
  5262. new Float:fAngles[3];
  5263. vector_to_angle(vecVelocity, fAngles);
  5264. fAngles[0] = 0.0;
  5265. set_pev(iEntity, pev_angles, fAngles);
  5266. set_pev(iEntity, pev_sequence, 1);
  5267. }
  5268. else set_pev(iEntity, pev_sequence, 0);
  5269. velocity_by_aim(g_iSoccerBallOwner, 15, vecVelocity);
  5270. new Float:vecOrigin[3];
  5271. pev(g_iSoccerBallOwner, pev_origin, vecOrigin);
  5272. vecOrigin[0] += vecVelocity[0];
  5273. vecOrigin[1] += vecVelocity[1];
  5274. if(pev(g_iSoccerBallOwner, pev_flags) & FL_DUCKING) vecOrigin[2] -= 18.0;
  5275. else vecOrigin[2] -= 36.0;
  5276. engfunc(EngFunc_SetOrigin, g_iSoccerBall, vecOrigin);
  5277. }
  5278. else
  5279. {
  5280. new Float:vecVelocity[3], Float:fVectorLength;
  5281. pev(iEntity, pev_velocity, vecVelocity);
  5282. fVectorLength = vector_length(vecVelocity);
  5283. if(g_bSoccerBallTrail && fVectorLength < 600.0)
  5284. {
  5285. g_bSoccerBallTrail = false;
  5286. CREATE_KILLBEAM(iEntity);
  5287. }
  5288. if(fVectorLength > 20.0)
  5289. {
  5290. new Float:fAngles[3];
  5291. vector_to_angle(vecVelocity, fAngles);
  5292. fAngles[0] = 0.0;
  5293. set_pev(iEntity, pev_angles, fAngles);
  5294. set_pev(iEntity, pev_sequence, 1);
  5295. }
  5296. else set_pev(iEntity, pev_sequence, 0);
  5297. if(g_iSoccerKickOwner)
  5298. {
  5299. new Float:fBallOrigin[3], Float:fOwnerOrigin[3], Float:fDistance;
  5300. pev(g_iSoccerBall, pev_origin, fBallOrigin);
  5301. pev(g_iSoccerKickOwner, pev_origin, fOwnerOrigin);
  5302. fBallOrigin[2] = 0.0;
  5303. fOwnerOrigin[2] = 0.0;
  5304. fDistance = get_distance_f(fBallOrigin, fOwnerOrigin);
  5305. if(fDistance > 24.0) g_iSoccerKickOwner = 0;
  5306. }
  5307. }
  5308. }
  5309. else jbe_soccer_remove_ball();
  5310. }
  5311. }
  5312.  
  5313. public Ham_WallTouch_Post(iTouched, iToucher)
  5314. {
  5315. if(g_iSoccerBall && iTouched == g_iSoccerBall)
  5316. {
  5317. if(pev_valid(iTouched))
  5318. {
  5319. if(g_bSoccerBallTouch && !g_iSoccerBallOwner && jbe_is_user_valid(iToucher) && IsSetBit(g_iBitUserSoccer, iToucher))
  5320. {
  5321. if(g_iSoccerKickOwner == iToucher) return;
  5322. g_iSoccerBallOwner = iToucher;
  5323. set_pev(iTouched, pev_solid, SOLID_NOT);
  5324. set_pev(iTouched, pev_velocity, Float:{0.0, 0.0, 0.0});
  5325. emit_sound(iToucher, CHAN_AUTO, "alcatraz_jb/soccer/grab_ball.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  5326. if(g_bSoccerBallTrail)
  5327. {
  5328. g_bSoccerBallTrail = false;
  5329. CREATE_KILLBEAM(iTouched);
  5330. }
  5331. CREATE_PLAYERATTACHMENT(iToucher, _, g_pSpriteBall, 3000);
  5332. jbe_soccer_hand_ball_model(iToucher);
  5333. }
  5334. else
  5335. {
  5336. new Float:iDelay = get_gametime();
  5337. static Float:iDelayOld;
  5338. if((iDelayOld + 0.15) <= iDelay)
  5339. {
  5340. new Float:vecVelocity[3];
  5341. pev(iTouched, pev_velocity, vecVelocity);
  5342. if(vector_length(vecVelocity) > 20.0)
  5343. {
  5344. vecVelocity[0] *= 0.85;
  5345. vecVelocity[1] *= 0.85;
  5346. vecVelocity[2] *= 0.75;
  5347. set_pev(iTouched, pev_velocity, vecVelocity);
  5348. if((iDelayOld + 0.22) <= iDelay) emit_sound(iTouched, CHAN_AUTO, "alcatraz_jb/soccer/bounce_ball.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  5349. iDelayOld = iDelay;
  5350. }
  5351. }
  5352. }
  5353. }
  5354. else jbe_soccer_remove_ball();
  5355. }
  5356. }
  5357.  
  5358. public ClientImpulse100(id)
  5359. {
  5360. if(g_bSoccerStatus && g_iSoccerBall)
  5361. {
  5362. if(IsSetBit(g_iBitUserSoccer, id))
  5363. {
  5364. if(g_iSoccerBallOwner && g_iSoccerBallOwner != id && g_iSoccerUserTeam[g_iSoccerBallOwner] != g_iSoccerUserTeam[id])
  5365. {
  5366. new Float:fEntityOrigin[3], Float:fPlayerOrigin[3], Float:fDistance;
  5367. pev(g_iSoccerBall, pev_origin, fEntityOrigin);
  5368. pev(id, pev_origin, fPlayerOrigin);
  5369. fDistance = get_distance_f(fEntityOrigin, fPlayerOrigin);
  5370. if(fDistance < 60.0)
  5371. {
  5372. CREATE_KILLPLAYERATTACHMENTS(g_iSoccerBallOwner);
  5373. jbe_set_hand_model(g_iSoccerBallOwner);
  5374. g_iSoccerBallOwner = id;
  5375. emit_sound(id, CHAN_AUTO, "alcatraz_jb/soccer/grab_ball.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  5376. CREATE_PLAYERATTACHMENT(id, _, g_pSpriteBall, 3000);
  5377. jbe_soccer_hand_ball_model(id);
  5378. }
  5379. }
  5380. return PLUGIN_HANDLED;
  5381. }
  5382. }
  5383. return PLUGIN_CONTINUE;
  5384. }
  5385.  
  5386. /*public Ham_Player_ImpulseCommands(id)
  5387. {
  5388. if(g_bSoccerStatus && g_iSoccerBall)
  5389. {
  5390. if(IsSetBit(g_iBitUserSoccer, id) && pev(id, pev_impulse) == 100)
  5391. {
  5392. if(g_iSoccerBallOwner && g_iSoccerBallOwner != id && g_iSoccerUserTeam[g_iSoccerBallOwner] != g_iSoccerUserTeam[id])
  5393. {
  5394. new Float:fEntityOrigin[3], Float:fPlayerOrigin[3], Float:fDistance;
  5395. pev(g_iSoccerBall, pev_origin, fEntityOrigin);
  5396. pev(id, pev_origin, fPlayerOrigin);
  5397. fDistance = get_distance_f(fEntityOrigin, fPlayerOrigin);
  5398. if(fDistance < 60.0)
  5399. {
  5400. CREATE_KILLPLAYERATTACHMENTS(g_iSoccerBallOwner);
  5401. jbe_set_hand_model(g_iSoccerBallOwner);
  5402. g_iSoccerBallOwner = id;
  5403. emit_sound(id, CHAN_AUTO, "alcatraz_jb/soccer/grab_ball.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  5404. CREATE_PLAYERATTACHMENT(id, _, g_pSpriteBall, 3000);
  5405. jbe_soccer_hand_ball_model(id);
  5406. }
  5407. }
  5408. set_pev(id, pev_impulse, 0);
  5409. }
  5410. }
  5411. }*/
  5412.  
  5413. public Ham_ItemDeploy_Post(iEntity)
  5414. {
  5415. if(g_bSoccerStatus || g_bBoxingStatus)
  5416. {
  5417. new id = get_pdata_cbase(iEntity, m_pPlayer, linux_diff_weapon);
  5418. if(IsSetBit(g_iBitUserSoccer, id) || IsSetBit(g_iBitUserBoxing, id)) engclient_cmd(id, "weapon_knife");
  5419. }
  5420. }
  5421.  
  5422. public Ham_ItemPrimaryAttack_Post(iEntity)
  5423. {
  5424. if(g_iDuelStatus)
  5425. {
  5426. new id = get_pdata_cbase(iEntity, m_pPlayer, linux_diff_weapon);
  5427. if(IsSetBit(g_iBitUserDuel, id))
  5428. {
  5429. switch(g_iDuelType)
  5430. {
  5431. case 1:
  5432. {
  5433. set_pdata_float(id, m_flNextAttack, 11.0);
  5434. if(task_exists(id+TASK_DUEL_TIMER_ATTACK)) remove_task(id+TASK_DUEL_TIMER_ATTACK);
  5435. id = g_iDuelUsersId[0] != id ? g_iDuelUsersId[0] : g_iDuelUsersId[1];
  5436. set_pdata_float(id, m_flNextAttack, 0.0);
  5437. set_task(1.0, "jbe_duel_timer_attack", id+TASK_DUEL_TIMER_ATTACK, _, _, "a", g_iDuelTimerAttack = 11);
  5438. }
  5439. case 2, 5:
  5440. {
  5441. set_pdata_float(id, m_flNextAttack, 11.0);
  5442. if(task_exists(id+TASK_DUEL_TIMER_ATTACK)) remove_task(id+TASK_DUEL_TIMER_ATTACK);
  5443. id = g_iDuelUsersId[0] != id ? g_iDuelUsersId[0] : g_iDuelUsersId[1];
  5444. set_pdata_float(id, m_flNextAttack, 0.0);
  5445. set_pdata_float(get_pdata_cbase(id, m_pActiveItem), m_flNextSecondaryAttack, get_gametime() + 11.0, linux_diff_weapon);
  5446. set_task(1.0, "jbe_duel_timer_attack", id+TASK_DUEL_TIMER_ATTACK, _, _, "a", g_iDuelTimerAttack = 11);
  5447. }
  5448. }
  5449. }
  5450. }
  5451. }
  5452.  
  5453. public Ham_PlayerJump(id)
  5454. {
  5455. static iBitUserJump;
  5456. if((g_iDayMode == 1 || g_iDayMode == 2) && IsNotSetBit(g_iBitUserDuel, id) && (IsSetBit(g_iBitHingJump, id) || IsSetBit(g_iBitDoubleJump, id) || IsSetBit(g_iBitAutoBhop, id)))
  5457. {
  5458. if(~pev(id, pev_oldbuttons) & IN_JUMP)
  5459. {
  5460. new iFlags = pev(id, pev_flags);
  5461. if(iFlags & (FL_ONGROUND|FL_CONVEYOR))
  5462. {
  5463. if(IsSetBit(g_iBitHingJump, id))
  5464. {
  5465. new Float:vecVelocity[3];
  5466. pev(id, pev_velocity, vecVelocity);
  5467. vecVelocity[2] = 500.0;
  5468. set_pev(id, pev_velocity, vecVelocity);
  5469. }
  5470. SetBit(iBitUserJump, id);
  5471. return;
  5472. }
  5473. if(IsSetBit(iBitUserJump, id) && IsSetBit(g_iBitDoubleJump, id) && ~iFlags & (FL_ONGROUND|FL_CONVEYOR|FL_INWATER))
  5474. {
  5475. new Float:vecVelocity[3];
  5476. pev(id, pev_velocity, vecVelocity);
  5477. vecVelocity[2] = 450.0;
  5478. set_pev(id, pev_velocity, vecVelocity);
  5479. ClearBit(iBitUserJump, id);
  5480. }
  5481. }
  5482. else if(IsSetBit(g_iBitAutoBhop, id) && pev(id, pev_flags) & (FL_ONGROUND|FL_CONVEYOR))
  5483. {
  5484. new Float:vecVelocity[3];
  5485. pev(id, pev_velocity, vecVelocity);
  5486. vecVelocity[2] = 250.0;
  5487. set_pev(id, pev_velocity, vecVelocity);
  5488. set_pev(id, pev_gaitsequence, 6);
  5489. }
  5490. }
  5491. }
  5492.  
  5493. public Ham_PlayerResetMaxSpeed_Post(id)
  5494. {
  5495. if((g_iDayMode == 1 || g_iDayMode == 2) && IsNotSetBit(g_iBitUserDuel, id) && IsSetBit(g_iBitFastRun, id))
  5496. set_pev(id, pev_maxspeed, 400.0);
  5497. }
  5498.  
  5499. public Ham_GrenadeTouch_Post(iTouched)
  5500. {
  5501. if((g_iDayMode == 1 || g_iDayMode == 2) && pev(iTouched, pev_iuser1) == IUSER1_FROSTNADE_KEY)
  5502. {
  5503. new Float:vecOrigin[3], id;
  5504. pev(iTouched, pev_origin, vecOrigin);
  5505. CREATE_BEAMCYLINDER(vecOrigin, 150, g_pSpriteWave, _, _, 4, 60, _, 0, 110, 255, 255, _);
  5506. while((id = engfunc(EngFunc_FindEntityInSphere, id, vecOrigin, 150.0)))
  5507. {
  5508. if(jbe_is_user_valid(id) && g_iUserTeam[id] == 2)
  5509. {
  5510. set_pev(id, pev_flags, pev(id, pev_flags) | FL_FROZEN);
  5511. set_pdata_float(id, m_flNextAttack, 6.0, linux_diff_player);
  5512. jbe_set_user_rendering(id, kRenderFxGlowShell, 0, 110, 255, kRenderNormal, 0);
  5513. emit_sound(iTouched, CHAN_AUTO, "alcatraz_jb/shop/freeze_player.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  5514. SetBit(g_iBitUserFrozen, id);
  5515. if(task_exists(id+TASK_FROSTNADE_DEFROST)) change_task(id+TASK_FROSTNADE_DEFROST, 6.0);
  5516. else set_task(6.0, "jbe_user_defrost", id+TASK_FROSTNADE_DEFROST);
  5517. }
  5518. }
  5519. emit_sound(iTouched, CHAN_AUTO, "alcatraz_jb/shop/grenade_frost_explosion.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  5520. engfunc(EngFunc_RemoveEntity, iTouched);
  5521. }
  5522. }
  5523.  
  5524. public HamHook_EntityBlock(iEntity, id)
  5525. {
  5526. if(g_bRoundEnd) return HAM_SUPERCEDE;
  5527. if(g_iDuelStatus && IsSetBit(g_iBitUserDuel, id)) return HAM_SUPERCEDE;
  5528. return HAM_IGNORED;
  5529. }
  5530. /*===== <- 'hamsandwich' ??????? <- =====*///}
  5531.  
  5532. /*===== -> ?????? ???? -> =====*///{
  5533. game_mode_init()
  5534. {
  5535. g_aDataDayMode = ArrayCreate(DATA_DAY_MODE);
  5536. g_iHookDayModeStart = CreateMultiForward("jbe_day_mode_start", ET_IGNORE, FP_CELL, FP_CELL);
  5537. g_iHookDayModeEnded = CreateMultiForward("jbe_day_mode_ended", ET_IGNORE, FP_CELL, FP_CELL);
  5538. }
  5539.  
  5540. public jbe_day_mode_start(iDayMode, iAdmin)
  5541. {
  5542. new aDataDayMode[DATA_DAY_MODE];
  5543. ArrayGetArray(g_aDataDayMode, iDayMode, aDataDayMode);
  5544. formatex(g_szDayMode, charsmax(g_szDayMode), aDataDayMode[LANG_MODE]);
  5545. if(aDataDayMode[MODE_TIMER])
  5546. {
  5547. g_iDayModeTimer = aDataDayMode[MODE_TIMER] + 1;
  5548. set_task(1.0, "jbe_day_mode_timer", TASK_DAY_MODE_TIMER, _, _, "a", g_iDayModeTimer);
  5549. }
  5550. if(iAdmin)
  5551. {
  5552. g_iFriendlyFire = 0;
  5553. if(g_iDayMode == 2) jbe_free_day_ended();
  5554. else
  5555. {
  5556. g_iBitUserFree = 0;
  5557. g_szFreeNames = "";
  5558. g_iFreeLang = 0;
  5559. }
  5560. g_iDayMode = 3;
  5561. if(task_exists(TASK_CHIEF_CHOICE_TIME)) remove_task(TASK_CHIEF_CHOICE_TIME);
  5562. g_iChiefId = 0;
  5563. g_szChiefName = "";
  5564. g_iChiefStatus = 0;
  5565. g_iBitUserWanted = 0;
  5566. g_szWantedNames = "";
  5567. g_iWantedLang = 0;
  5568. g_iBitSharpening = 0;
  5569. g_iBitScrewdriver = 0;
  5570. g_iBitBalisong = 0;
  5571. g_iBitLatchkey = 0;
  5572. g_iBitKokain = 0;
  5573. g_iBitFrostNade = 0;
  5574. g_iBitClothingGuard = 0;
  5575. g_iBitHingJump = 0;
  5576. g_iBitDoubleJump = 0;
  5577. g_iBitAutoBhop = 0;
  5578. g_iBitDoubleDamage = 0;
  5579. g_iBitUserVoice = 0;
  5580. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  5581. {
  5582. if(IsNotSetBit(g_iBitUserAlive, iPlayer)) continue;
  5583. g_iBitKilledUsers[iPlayer] = 0;
  5584. show_menu(iPlayer, 0, "^n");
  5585. if(g_iBitWeaponStatus && IsSetBit(g_iBitWeaponStatus, iPlayer))
  5586. {
  5587. ClearBit(g_iBitWeaponStatus, iPlayer);
  5588. if(get_user_weapon(iPlayer) == CSW_KNIFE)
  5589. {
  5590. new iActiveItem = get_pdata_cbase(iPlayer, m_pActiveItem, linux_diff_player);
  5591. if(iActiveItem > 0) ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  5592. }
  5593. }
  5594. if(task_exists(iPlayer+TASK_REMOVE_SYRINGE))
  5595. {
  5596. remove_task(iPlayer+TASK_REMOVE_SYRINGE);
  5597. if(get_user_weapon(iPlayer))
  5598. {
  5599. new iActiveItem = get_pdata_cbase(iPlayer, m_pActiveItem, linux_diff_player);
  5600. if(iActiveItem > 0) ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  5601. }
  5602. }
  5603. if(pev(iPlayer, pev_renderfx) != kRenderFxNone || pev(iPlayer, pev_rendermode) != kRenderNormal)
  5604. {
  5605. jbe_set_user_rendering(iPlayer, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
  5606. g_eUserRendering[iPlayer][RENDER_STATUS] = false;
  5607. }
  5608. if(g_iBitUserFrozen && IsSetBit(g_iBitUserFrozen, iPlayer))
  5609. {
  5610. ClearBit(g_iBitUserFrozen, iPlayer);
  5611. if(task_exists(iPlayer+TASK_FROSTNADE_DEFROST)) remove_task(iPlayer+TASK_FROSTNADE_DEFROST);
  5612. set_pev(iPlayer, pev_flags, pev(iPlayer, pev_flags) & ~FL_FROZEN);
  5613. set_pdata_float(iPlayer, m_flNextAttack, 0.0, linux_diff_player);
  5614. emit_sound(iPlayer, CHAN_AUTO, "alcatraz_jb/shop/defrost_player.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  5615. new Float:vecOrigin[3]; pev(iPlayer, pev_origin, vecOrigin);
  5616. CREATE_BREAKMODEL(vecOrigin, _, _, 10, g_pModelGlass, 10, 25, 0x01);
  5617. }
  5618. if(g_iBitInvisibleHat && IsSetBit(g_iBitInvisibleHat, iPlayer))
  5619. {
  5620. ClearBit(g_iBitInvisibleHat, iPlayer);
  5621. if(task_exists(iPlayer+TASK_INVISIBLE_HAT)) remove_task(iPlayer+TASK_INVISIBLE_HAT);
  5622. }
  5623. if(g_iBitClothingType && IsSetBit(g_iBitClothingType, iPlayer)) jbe_default_player_model(iPlayer);
  5624. if(g_iBitFastRun && IsSetBit(g_iBitFastRun, iPlayer))
  5625. {
  5626. ClearBit(g_iBitFastRun, iPlayer);
  5627. ExecuteHamB(Ham_Player_ResetMaxSpeed, iPlayer);
  5628. }
  5629. if(g_iBitRandomGlow && IsSetBit(g_iBitRandomGlow, iPlayer)) ClearBit(g_iBitRandomGlow, iPlayer);
  5630. if(IsSetBit(g_iBitUserHook, iPlayer) && task_exists(iPlayer+TASK_HOOK_THINK))
  5631. {
  5632. remove_task(iPlayer+TASK_HOOK_THINK);
  5633. emit_sound(iPlayer, CHAN_STATIC, "alcatraz_jb/hook.wav", VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM);
  5634. }
  5635. }
  5636. if(g_bSoccerStatus) jbe_soccer_disable_all();
  5637. if(g_bBoxingStatus) jbe_boxing_disable_all();
  5638. }
  5639. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++) jbe_hide_user_costumes(iPlayer);
  5640. jbe_open_doors();
  5641. }
  5642.  
  5643. public jbe_day_mode_timer()
  5644. {
  5645. if(--g_iDayModeTimer) formatex(g_szDayModeTimer, charsmax(g_szDayModeTimer), "[%i]", g_iDayModeTimer);
  5646. else
  5647. {
  5648. g_szDayModeTimer = "";
  5649. ExecuteForward(g_iHookDayModeEnded, g_iReturnDayMode, g_iVoteDayMode, 0);
  5650. g_iVoteDayMode = -1;
  5651. }
  5652. }
  5653.  
  5654. public jbe_vote_day_mode_start()
  5655. {
  5656. g_iDayModeVoteTime = g_iAllCvars[DAY_MODE_VOTE_TIME] + 1;
  5657. new aDataDayMode[DATA_DAY_MODE];
  5658. for(new i; i < g_iDayModeListSize; i++)
  5659. {
  5660. ArrayGetArray(g_aDataDayMode, i, aDataDayMode);
  5661. if(aDataDayMode[MODE_BLOCKED]) aDataDayMode[MODE_BLOCKED]--;
  5662. aDataDayMode[VOTES_NUM] = 0;
  5663. ArraySetArray(g_aDataDayMode, i, aDataDayMode);
  5664. }
  5665. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  5666. {
  5667. if(IsNotSetBit(g_iBitUserAlive, iPlayer)) continue;
  5668. SetBit(g_iBitUserVoteDayMode, iPlayer);
  5669. g_iBitKilledUsers[iPlayer] = 0;
  5670. g_iMenuPosition[iPlayer] = 0;
  5671. jbe_menu_block(iPlayer);
  5672. set_pev(iPlayer, pev_flags, pev(iPlayer, pev_flags) | FL_FROZEN);
  5673. set_pdata_float(iPlayer, m_flNextAttack, float(g_iDayModeVoteTime), linux_diff_player);
  5674. UTIL_ScreenFade(iPlayer, 0, 0, 4, 0, 0, 0, 255);
  5675. }
  5676. set_task(1.0, "jbe_vote_day_mode_timer", TASK_VOTE_DAY_MODE_TIMER, _, _, "a", g_iDayModeVoteTime);
  5677. }
  5678.  
  5679. public jbe_vote_day_mode_timer()
  5680. {
  5681. if(!--g_iDayModeVoteTime) jbe_vote_day_mode_ended();
  5682. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  5683. {
  5684. if(IsNotSetBit(g_iBitUserVoteDayMode, iPlayer)) continue;
  5685. Show_DayModeMenu(iPlayer, g_iMenuPosition[iPlayer]);
  5686. }
  5687. }
  5688.  
  5689. public jbe_vote_day_mode_ended()
  5690. {
  5691. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  5692. {
  5693. if(IsNotSetBit(g_iBitUserVoteDayMode, iPlayer)) continue;
  5694. ClearBit(g_iBitUserVoteDayMode, iPlayer);
  5695. ClearBit(g_iBitUserDayModeVoted, iPlayer);
  5696. show_menu(iPlayer, 0, "^n");
  5697. jbe_informer_offset_down(iPlayer);
  5698. jbe_menu_unblock(iPlayer);
  5699. set_pev(iPlayer, pev_flags, pev(iPlayer, pev_flags) & ~FL_FROZEN);
  5700. set_pdata_float(iPlayer, m_flNextAttack, 0.0, linux_diff_player);
  5701. UTIL_ScreenFade(iPlayer, 512, 512, 0, 0, 0, 0, 255, 1);
  5702. }
  5703. new aDataDayMode[DATA_DAY_MODE], iVotesNum;
  5704. for(new iPlayer; iPlayer < g_iDayModeListSize; iPlayer++)
  5705. {
  5706. ArrayGetArray(g_aDataDayMode, iPlayer, aDataDayMode);
  5707. if(aDataDayMode[VOTES_NUM] >= iVotesNum)
  5708. {
  5709. iVotesNum = aDataDayMode[VOTES_NUM];
  5710. g_iVoteDayMode = iPlayer;
  5711. }
  5712. }
  5713. ArrayGetArray(g_aDataDayMode, g_iVoteDayMode, aDataDayMode);
  5714. aDataDayMode[MODE_BLOCKED] = aDataDayMode[MODE_BLOCK_DAYS];
  5715. ArraySetArray(g_aDataDayMode, g_iVoteDayMode, aDataDayMode);
  5716. ExecuteForward(g_iHookDayModeStart, g_iReturnDayMode, g_iVoteDayMode, 0);
  5717. }
  5718. /*===== <- ?????? ???? <- =====*///}
  5719.  
  5720. /*===== -> ????????? ???? -> =====*///{
  5721. jbe_create_buyzone()
  5722. {
  5723. new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_buyzone"));
  5724. set_pev(iEntity, pev_iuser1, IUSER1_BUYZONE_KEY);
  5725. }
  5726.  
  5727. public jbe_main_informer(pPlayer)
  5728. {
  5729. pPlayer -= TASK_SHOW_INFORMER;
  5730. set_hudmessage(102, 69, 0, g_fMainInformerPosX[pPlayer], g_fMainInformerPosY[pPlayer], 0, 0.0, 0.8, 0.2, 0.2, -1);
  5731. ShowSyncHudMsg(pPlayer, g_iSyncMainInformer, "%L %L^n%L^n%L^n%L^n%L%L%s%L%s", pPlayer, "JBE_HUD_DAY",
  5732. g_iDay, pPlayer, g_szDaysWeek[g_iDayWeek], pPlayer, "JBE_HUD_GAME_MODE", pPlayer, g_szDayMode, g_szDayModeTimer, pPlayer, "JBE_HUD_CHIEF",
  5733. pPlayer, g_szChiefStatus[g_iChiefStatus], g_szChiefName, pPlayer, "JBE_HUD_PRISONERS", g_iAlivePlayersNum[1], g_iPlayersNum[1],
  5734. pPlayer, "JBE_HUD_GUARD", g_iAlivePlayersNum[2], g_iPlayersNum[2], pPlayer, g_szFreeLang[g_iFreeLang], g_szFreeNames, pPlayer,
  5735. g_szWantedLang[g_iWantedLang], g_szWantedNames);
  5736. }
  5737.  
  5738. jbe_set_user_discount(pPlayer)
  5739. {
  5740. new iHour; time(iHour);
  5741. if(iHour >= 23 || iHour <= 8) g_iUserDiscount[pPlayer] = 20;
  5742. else g_iUserDiscount[pPlayer] = 0;
  5743. if(IsSetBit(g_iBitUserSuperAdmin, pPlayer)) g_iUserDiscount[pPlayer] += g_iAllCvars[ADMIN_DISCOUNT_SHOP];
  5744. else if(IsSetBit(g_iBitUserVip, pPlayer)) g_iUserDiscount[pPlayer] += g_iAllCvars[VIP_DISCOUNT_SHOP];
  5745. }
  5746.  
  5747. jbe_get_price_discount(pPlayer, iCost)
  5748. {
  5749. if(!g_iUserDiscount[pPlayer]) return iCost;
  5750. iCost -= floatround(iCost / 100.0 * g_iUserDiscount[pPlayer]);
  5751. return iCost;
  5752. }
  5753.  
  5754. public jbe_remove_invisible_hat(pPlayer)
  5755. {
  5756. pPlayer -= TASK_INVISIBLE_HAT;
  5757. if(IsNotSetBit(g_iBitInvisibleHat, pPlayer)) return;
  5758. UTIL_SayText(pPlayer, "!g[AlcatraZ-JailBreak] %L", pPlayer, "JBE_MENU_ID_INVISIBLE_HAT_REMOVE");
  5759. if(g_eUserRendering[pPlayer][RENDER_STATUS]) jbe_set_user_rendering(pPlayer, g_eUserRendering[pPlayer][RENDER_FX], g_eUserRendering[pPlayer][RENDER_RED], g_eUserRendering[pPlayer][RENDER_GREEN], g_eUserRendering[pPlayer][RENDER_BLUE], g_eUserRendering[pPlayer][RENDER_MODE], g_eUserRendering[pPlayer][RENDER_AMT]);
  5760. else jbe_set_user_rendering(pPlayer, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
  5761. if(g_eUserCostumes[pPlayer][HIDE]) jbe_set_user_costumes(pPlayer, g_eUserCostumes[pPlayer][COSTUMES]);
  5762. }
  5763.  
  5764. public jbe_user_defrost(pPlayer)
  5765. {
  5766. pPlayer -= TASK_FROSTNADE_DEFROST;
  5767. if(IsNotSetBit(g_iBitUserFrozen, pPlayer)) return;
  5768. ClearBit(g_iBitUserFrozen, pPlayer);
  5769. set_pev(pPlayer, pev_flags, pev(pPlayer, pev_flags) & ~FL_FROZEN);
  5770. set_pdata_float(pPlayer, m_flNextAttack, 0.0, linux_diff_player);
  5771. if(g_eUserRendering[pPlayer][RENDER_STATUS]) jbe_set_user_rendering(pPlayer, g_eUserRendering[pPlayer][RENDER_FX], g_eUserRendering[pPlayer][RENDER_RED], g_eUserRendering[pPlayer][RENDER_GREEN], g_eUserRendering[pPlayer][RENDER_BLUE], g_eUserRendering[pPlayer][RENDER_MODE], g_eUserRendering[pPlayer][RENDER_AMT]);
  5772. else jbe_set_user_rendering(pPlayer, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
  5773. emit_sound(pPlayer, CHAN_AUTO, "alcatraz_jb/shop/defrost_player.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  5774. new Float:vecOrigin[3]; pev(pPlayer, pev_origin, vecOrigin);
  5775. CREATE_BREAKMODEL(vecOrigin, _, _, 10, g_pModelGlass, 10, 25, 0x01);
  5776. }
  5777.  
  5778. jbe_default_player_model(pPlayer)
  5779. {
  5780. switch(g_iUserTeam[pPlayer])
  5781. {
  5782. case 1:
  5783. {
  5784. jbe_set_user_model(pPlayer, g_szPlayerModel[PRISONER]);
  5785. set_pev(pPlayer, pev_skin, g_iUserSkin[pPlayer]);
  5786. }
  5787. case 2: jbe_set_user_model(pPlayer, g_szPlayerModel[GUARD]);
  5788. }
  5789. }
  5790.  
  5791. jbe_default_knife_model(pPlayer)
  5792. {
  5793. switch(g_iUserTeam[pPlayer])
  5794. {
  5795. case 1: jbe_set_hand_model(pPlayer);
  5796. case 2: jbe_set_baton_model(pPlayer);
  5797. }
  5798. }
  5799.  
  5800. jbe_set_hand_model(pPlayer)
  5801. {
  5802. static iszViewModel, iszWeaponModel;
  5803. if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/weapons/v_hand.mdl"))) set_pev_string(pPlayer, pev_viewmodel2, iszViewModel);
  5804. if(iszWeaponModel || (iszWeaponModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/weapons/p_hand.mdl"))) set_pev_string(pPlayer, pev_weaponmodel2, iszWeaponModel);
  5805. set_pdata_float(pPlayer, m_flNextAttack, 0.75);
  5806. }
  5807.  
  5808. jbe_set_baton_model(pPlayer)
  5809. {
  5810. static iszViewModel, iszWeaponModel;
  5811. if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/weapons/v_baton.mdl"))) set_pev_string(pPlayer, pev_viewmodel2, iszViewModel);
  5812. if(iszWeaponModel || (iszWeaponModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/weapons/p_baton.mdl"))) set_pev_string(pPlayer, pev_weaponmodel2, iszWeaponModel);
  5813. set_pdata_float(pPlayer, m_flNextAttack, 0.75);
  5814. }
  5815.  
  5816. jbe_set_sharpening_model(pPlayer)
  5817. {
  5818. static iszViewModel, iszWeaponModel;
  5819. if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/shop/v_sharpening.mdl"))) set_pev_string(pPlayer, pev_viewmodel2, iszViewModel);
  5820. if(iszWeaponModel || (iszWeaponModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/shop/p_sharpening.mdl"))) set_pev_string(pPlayer, pev_weaponmodel2, iszWeaponModel);
  5821. set_pdata_float(pPlayer, m_flNextAttack, 0.9);
  5822. }
  5823.  
  5824. jbe_set_screwdriver_model(pPlayer)
  5825. {
  5826. static iszViewModel, iszWeaponModel;
  5827. if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/shop/v_screwdriver.mdl"))) set_pev_string(pPlayer, pev_viewmodel2, iszViewModel);
  5828. if(iszWeaponModel || (iszWeaponModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/shop/p_screwdriver.mdl"))) set_pev_string(pPlayer, pev_weaponmodel2, iszWeaponModel);
  5829. set_pdata_float(pPlayer, m_flNextAttack, 0.9);
  5830. }
  5831.  
  5832. jbe_set_balisong_model(pPlayer)
  5833. {
  5834. static iszViewModel, iszWeaponModel;
  5835. if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/shop/v_balisong.mdl"))) set_pev_string(pPlayer, pev_viewmodel2, iszViewModel);
  5836. if(iszWeaponModel || (iszWeaponModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/shop/p_balisong.mdl"))) set_pev_string(pPlayer, pev_weaponmodel2, iszWeaponModel);
  5837. set_pdata_float(pPlayer, m_flNextAttack, 0.95);
  5838. }
  5839.  
  5840. jbe_set_syringe_model(pPlayer)
  5841. {
  5842. static iszViewModel;
  5843. if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/shop/v_syringe.mdl"))) set_pev_string(pPlayer, pev_viewmodel2, iszViewModel);
  5844. UTIL_WeaponAnimation(pPlayer, 1);
  5845. set_pdata_float(pPlayer, m_flNextAttack, 3.0);
  5846. }
  5847.  
  5848. public jbe_set_syringe_health(pPlayer)
  5849. {
  5850. pPlayer -= TASK_REMOVE_SYRINGE;
  5851. set_pev(pPlayer, pev_health, 200.0);
  5852. }
  5853.  
  5854. public jbe_remove_syringe_model(pPlayer)
  5855. {
  5856. pPlayer -= TASK_REMOVE_SYRINGE;
  5857. new iActiveItem = get_pdata_cbase(pPlayer, m_pActiveItem);
  5858. if(iActiveItem > 0) ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  5859. }
  5860.  
  5861. public jbe_hook_think(pPlayer)
  5862. {
  5863. pPlayer -= TASK_HOOK_THINK;
  5864. new Float:vecOrigin[3];
  5865. pev(pPlayer, pev_origin, vecOrigin);
  5866. new Float:vecVelocity[3];
  5867. vecVelocity[0] = (g_vecHookOrigin[pPlayer][0] - vecOrigin[0]) * 3.0;
  5868. vecVelocity[1] = (g_vecHookOrigin[pPlayer][1] - vecOrigin[1]) * 3.0;
  5869. vecVelocity[2] = (g_vecHookOrigin[pPlayer][2] - vecOrigin[2]) * 3.0;
  5870. new Float:flY = vecVelocity[0] * vecVelocity[0] + vecVelocity[1] * vecVelocity[1] + vecVelocity[2] * vecVelocity[2];
  5871. new Float:flX = (5 * 120.0) / floatsqroot(flY);
  5872. vecVelocity[0] *= flX;
  5873. vecVelocity[1] *= flX;
  5874. vecVelocity[2] *= flX;
  5875. set_pev(pPlayer, pev_velocity, vecVelocity);
  5876. CREATE_BEAMENTPOINT(pPlayer, g_vecHookOrigin[pPlayer], g_pSpriteLgtning, 0, 1, 1, 60, 30, 255, 255, 255, 200, _);
  5877. }
  5878. /*===== <- ????????? ???? <- =====*///}
  5879.  
  5880. /*===== -> ????? -> =====*///{
  5881. jbe_duel_start_ready(pPlayer, pTarget)
  5882. {
  5883. g_iDuelStatus = 1;
  5884. fm_strip_user_weapons(pPlayer, 1);
  5885. fm_strip_user_weapons(pTarget, 1);
  5886. g_iDuelUsersId[0] = pPlayer;
  5887. g_iDuelUsersId[1] = pTarget;
  5888. SetBit(g_iBitUserDuel, pPlayer);
  5889. SetBit(g_iBitUserDuel, pTarget);
  5890. ExecuteHamB(Ham_Player_ResetMaxSpeed, pPlayer);
  5891. ExecuteHamB(Ham_Player_ResetMaxSpeed, pTarget);
  5892. set_pev(pPlayer, pev_gravity, 1.0);
  5893. set_pev(pTarget, pev_gravity, 1.0);
  5894. if(get_user_godmode(pTarget)) set_user_godmode(pTarget, 0);
  5895. get_user_name(pPlayer, g_iDuelNames[0], charsmax(g_iDuelNames[]));
  5896. get_user_name(pTarget, g_iDuelNames[1], charsmax(g_iDuelNames[]));
  5897. client_cmd(0, "mp3 play sound/alcatraz_jb/duel/duel_ready.mp3");
  5898. for(new i; i < charsmax(g_iHamHookForwards); i++) EnableHamForward(g_iHamHookForwards[i]);
  5899. set_task(1.0, "jbe_duel_count_down", TASK_DUEL_COUNT_DOWN, _, _, "a", g_iDuelCountDown = 20 + 1);
  5900. jbe_set_user_rendering(pPlayer, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 0);
  5901. jbe_get_user_rendering(pPlayer, g_eUserRendering[pPlayer][RENDER_FX], g_eUserRendering[pPlayer][RENDER_RED], g_eUserRendering[pPlayer][RENDER_GREEN], g_eUserRendering[pPlayer][RENDER_BLUE], g_eUserRendering[pPlayer][RENDER_MODE], g_eUserRendering[pPlayer][RENDER_AMT]);
  5902. g_eUserRendering[pPlayer][RENDER_STATUS] = true;
  5903. jbe_set_user_rendering(pTarget, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 0);
  5904. jbe_get_user_rendering(pTarget, g_eUserRendering[pTarget][RENDER_FX], g_eUserRendering[pTarget][RENDER_RED], g_eUserRendering[pTarget][RENDER_GREEN], g_eUserRendering[pTarget][RENDER_BLUE], g_eUserRendering[pTarget][RENDER_MODE], g_eUserRendering[pTarget][RENDER_AMT]);
  5905. g_eUserRendering[pTarget][RENDER_STATUS] = true;
  5906. CREATE_PLAYERATTACHMENT(pPlayer, _, g_pSpriteDuelRed, 3000);
  5907. CREATE_PLAYERATTACHMENT(pTarget, _, g_pSpriteDuelBlue, 3000);
  5908. set_task(1.0, "jbe_duel_bream_cylinder", TASK_DUEL_BEAMCYLINDER, _, _, "b");
  5909. }
  5910.  
  5911. public jbe_duel_count_down()
  5912. {
  5913. if(--g_iDuelCountDown)
  5914. {
  5915. set_hudmessage(102, 69, 0, -1.0, 0.16, 0, 0.0, 0.9, 0.1, 0.1, -1);
  5916. ShowSyncHudMsg(0, g_iSyncDuelInformer, "%L", LANG_PLAYER, "JBE_ALL_HUD_DUEL_START_READY", LANG_PLAYER, g_iDuelLang[g_iDuelType], g_iDuelNames[0], g_iDuelNames[1], g_iDuelCountDown);
  5917. }
  5918. else jbe_duel_start();
  5919. }
  5920.  
  5921. jbe_duel_start()
  5922. {
  5923. g_iDuelStatus = 2;
  5924. switch(g_iDuelType)
  5925. {
  5926. case 1:
  5927. {
  5928. fm_give_item(g_iDuelUsersId[0], "weapon_deagle");
  5929. fm_set_user_bpammo(g_iDuelUsersId[0], CSW_DEAGLE, 100);
  5930. set_pev(g_iDuelUsersId[0], pev_health, 100.0);
  5931. fm_give_item(g_iDuelUsersId[0], "item_assaultsuit");
  5932. set_task(1.0, "jbe_duel_timer_attack", g_iDuelUsersId[0]+TASK_DUEL_TIMER_ATTACK, _, _, "a", g_iDuelTimerAttack = 11);
  5933. fm_give_item(g_iDuelUsersId[1], "weapon_deagle");
  5934. fm_set_user_bpammo(g_iDuelUsersId[1], CSW_DEAGLE, 100);
  5935. set_pev(g_iDuelUsersId[1], pev_health, 100.0);
  5936. fm_give_item(g_iDuelUsersId[1], "item_assaultsuit");
  5937. set_pdata_float(g_iDuelUsersId[1], m_flNextAttack, 11.0, linux_diff_player);
  5938. }
  5939. case 2:
  5940. {
  5941. fm_give_item(g_iDuelUsersId[0], "weapon_m3");
  5942. fm_set_user_bpammo(g_iDuelUsersId[0], CSW_M3, 100);
  5943. set_pev(g_iDuelUsersId[0], pev_health, 100.0);
  5944. fm_give_item(g_iDuelUsersId[0], "item_assaultsuit");
  5945. set_pdata_float(get_pdata_cbase(g_iDuelUsersId[0], m_pActiveItem), m_flNextSecondaryAttack, get_gametime() + 11.0, linux_diff_weapon);
  5946. set_task(1.0, "jbe_duel_timer_attack", g_iDuelUsersId[0]+TASK_DUEL_TIMER_ATTACK, _, _, "a", g_iDuelTimerAttack = 11);
  5947. fm_give_item(g_iDuelUsersId[1], "weapon_m3");
  5948. fm_set_user_bpammo(g_iDuelUsersId[1], CSW_M3, 100);
  5949. set_pev(g_iDuelUsersId[1], pev_health, 100.0);
  5950. fm_give_item(g_iDuelUsersId[1], "item_assaultsuit");
  5951. set_pdata_float(g_iDuelUsersId[1], m_flNextAttack, 11.0, linux_diff_player);
  5952. }
  5953. case 3:
  5954. {
  5955. fm_give_item(g_iDuelUsersId[0], "weapon_hegrenade");
  5956. fm_set_user_bpammo(g_iDuelUsersId[0], CSW_HEGRENADE, 100);
  5957. set_pev(g_iDuelUsersId[0], pev_health, 100.0);
  5958. fm_give_item(g_iDuelUsersId[0], "item_assaultsuit");
  5959. fm_give_item(g_iDuelUsersId[1], "weapon_hegrenade");
  5960. fm_set_user_bpammo(g_iDuelUsersId[1], CSW_HEGRENADE, 100);
  5961. set_pev(g_iDuelUsersId[1], pev_health, 100.0);
  5962. fm_give_item(g_iDuelUsersId[1], "item_assaultsuit");
  5963. }
  5964. case 4:
  5965. {
  5966. fm_give_item(g_iDuelUsersId[0], "weapon_m249");
  5967. fm_set_user_bpammo(g_iDuelUsersId[0], CSW_M249, 200);
  5968. set_pev(g_iDuelUsersId[0], pev_health, 506.0);
  5969. fm_give_item(g_iDuelUsersId[0], "item_assaultsuit");
  5970. fm_give_item(g_iDuelUsersId[1], "weapon_m249");
  5971. fm_set_user_bpammo(g_iDuelUsersId[1], CSW_M249, 200);
  5972. set_pev(g_iDuelUsersId[1], pev_health, 506.0);
  5973. fm_give_item(g_iDuelUsersId[1], "item_assaultsuit");
  5974. }
  5975. case 5:
  5976. {
  5977. fm_give_item(g_iDuelUsersId[0], "weapon_awp");
  5978. fm_set_user_bpammo(g_iDuelUsersId[0], CSW_AWP, 100);
  5979. set_pev(g_iDuelUsersId[0], pev_health, 100.0);
  5980. fm_give_item(g_iDuelUsersId[0], "item_assaultsuit");
  5981. set_pdata_float(get_pdata_cbase(g_iDuelUsersId[0], m_pActiveItem), m_flNextSecondaryAttack, get_gametime() + 11.0, linux_diff_weapon);
  5982. set_task(1.0, "jbe_duel_timer_attack", g_iDuelUsersId[0]+TASK_DUEL_TIMER_ATTACK, _, _, "a", g_iDuelTimerAttack = 11);
  5983. fm_give_item(g_iDuelUsersId[1], "weapon_awp");
  5984. fm_set_user_bpammo(g_iDuelUsersId[1], CSW_AWP, 100);
  5985. set_pev(g_iDuelUsersId[1], pev_health, 100.0);
  5986. fm_give_item(g_iDuelUsersId[1], "item_assaultsuit");
  5987. set_pdata_float(g_iDuelUsersId[1], m_flNextAttack, 11.0, linux_diff_player);
  5988. }
  5989. case 6:
  5990. {
  5991. fm_give_item(g_iDuelUsersId[0], "weapon_knife");
  5992. set_pev(g_iDuelUsersId[0], pev_health, 150.0);
  5993. fm_give_item(g_iDuelUsersId[0], "item_assaultsuit");
  5994. fm_give_item(g_iDuelUsersId[1], "weapon_knife");
  5995. set_pev(g_iDuelUsersId[1], pev_health, 150.0);
  5996. fm_give_item(g_iDuelUsersId[1], "item_assaultsuit");
  5997. }
  5998. }
  5999. }
  6000.  
  6001. public jbe_duel_timer_attack(pPlayer)
  6002. {
  6003. if(--g_iDuelTimerAttack)
  6004. {
  6005. pPlayer -= TASK_DUEL_TIMER_ATTACK;
  6006. set_hudmessage(102, 69, 0, -1.0, 0.16, 0, 0.0, 0.9, 0.1, 0.1, -1);
  6007. ShowSyncHudMsg(0, g_iSyncDuelInformer, "%L", LANG_PLAYER, "JBE_ALL_HUD_DUEL_TIMER_ATTACK", pPlayer == g_iDuelUsersId[0] ? g_iDuelNames[0] : g_iDuelNames[1],g_iDuelTimerAttack);
  6008. }
  6009. else
  6010. {
  6011. pPlayer -= TASK_DUEL_TIMER_ATTACK;
  6012. new iActiveItem = get_pdata_cbase(pPlayer, m_pActiveItem, linux_diff_player);
  6013. if(iActiveItem > 0) ExecuteHamB(Ham_Weapon_PrimaryAttack, iActiveItem);
  6014. }
  6015. }
  6016.  
  6017. public jbe_duel_bream_cylinder()
  6018. {
  6019. new Float:vecOrigin[3];
  6020. pev(g_iDuelUsersId[0], pev_origin, vecOrigin);
  6021. if(pev(g_iDuelUsersId[0], pev_flags) & FL_DUCKING) vecOrigin[2] -= 15.0;
  6022. else vecOrigin[2] -= 33.0;
  6023. CREATE_BEAMCYLINDER(vecOrigin, 150, g_pSpriteWave, _, _, 5, 3, _, 255, 0, 0, 255, _);
  6024. pev(g_iDuelUsersId[1], pev_origin, vecOrigin);
  6025. if(pev(g_iDuelUsersId[1], pev_flags) & FL_DUCKING) vecOrigin[2] -= 15.0;
  6026. else vecOrigin[2] -= 33.0;
  6027. CREATE_BEAMCYLINDER(vecOrigin, 150, g_pSpriteWave, _, _, 5, 3, _, 0, 0, 255, 255, _);
  6028. }
  6029.  
  6030. jbe_duel_ended(pPlayer)
  6031. {
  6032. for(new i; i < charsmax(g_iHamHookForwards); i++) DisableHamForward(g_iHamHookForwards[i]);
  6033. g_iBitUserDuel = 0;
  6034. jbe_set_user_rendering(g_iDuelUsersId[0], kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
  6035. jbe_set_user_rendering(g_iDuelUsersId[1], kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
  6036. CREATE_KILLPLAYERATTACHMENTS(g_iDuelUsersId[0]);
  6037. CREATE_KILLPLAYERATTACHMENTS(g_iDuelUsersId[1]);
  6038. remove_task(TASK_DUEL_BEAMCYLINDER);
  6039. if(task_exists(g_iDuelUsersId[0]+TASK_DUEL_TIMER_ATTACK)) remove_task(g_iDuelUsersId[0]+TASK_DUEL_TIMER_ATTACK);
  6040. if(task_exists(g_iDuelUsersId[1]+TASK_DUEL_TIMER_ATTACK)) remove_task(g_iDuelUsersId[1]+TASK_DUEL_TIMER_ATTACK);
  6041. new iPlayer = g_iDuelUsersId[0] != pPlayer ? g_iDuelUsersId[0] : g_iDuelUsersId[1];
  6042. ExecuteHamB(Ham_Player_ResetMaxSpeed, iPlayer);
  6043. fm_strip_user_weapons(iPlayer);
  6044. fm_give_item(iPlayer, "weapon_knife");
  6045. switch(g_iDuelStatus)
  6046. {
  6047. case 1:
  6048. {
  6049. if(task_exists(TASK_DUEL_COUNT_DOWN))
  6050. {
  6051. remove_task(TASK_DUEL_COUNT_DOWN);
  6052. client_cmd(0, "mp3 stop");
  6053. }
  6054. }
  6055. case 2: jbe_set_user_money(iPlayer, g_iUserMoney[iPlayer] + 200, 1);
  6056. }
  6057. g_iDuelStatus = 0;
  6058. }
  6059. /*===== -> ????? -> =====*///}
  6060.  
  6061. /*===== -> ?????? -> =====*///{
  6062. jbe_soccer_disable_all()
  6063. {
  6064. jbe_soccer_remove_ball();
  6065. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  6066. {
  6067. if(IsSetBit(g_iBitUserSoccer, iPlayer))
  6068. {
  6069. ClearBit(g_iBitUserSoccer, iPlayer);
  6070. if(IsSetBit(g_iBitClothingGuard, iPlayer) && IsSetBit(g_iBitClothingType, iPlayer)) jbe_set_user_model(iPlayer, g_szPlayerModel[GUARD]);
  6071. else jbe_default_player_model(iPlayer);
  6072. set_pdata_int(iPlayer, m_bloodColor, 247);
  6073. new iActiveItem = get_pdata_cbase(iPlayer, m_pActiveItem);
  6074. if(iActiveItem > 0)
  6075. {
  6076. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  6077. UTIL_WeaponAnimation(iPlayer, 3);
  6078. }
  6079. if(g_bSoccerGame) remove_task(iPlayer+TASK_SHOW_SOCCER_SCORE);
  6080. }
  6081. }
  6082. if(g_bSoccerGame)
  6083. {
  6084. emit_sound(0, CHAN_STATIC, "alcatraz_jb/soccer/crowd.wav", VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM);
  6085. if(g_iChiefStatus == 1) remove_task(g_iChiefId+TASK_SHOW_SOCCER_SCORE);
  6086. }
  6087. g_iSoccerScore = {0, 0};
  6088. g_bSoccerGame = false;
  6089. g_bSoccerStatus = false;
  6090. }
  6091.  
  6092. jbe_soccer_create_ball(pPlayer)
  6093. {
  6094. if(g_iSoccerBall) return g_iSoccerBall;
  6095. static iszFuncWall = 0;
  6096. if(iszFuncWall || (iszFuncWall = engfunc(EngFunc_AllocString, "func_wall"))) g_iSoccerBall = engfunc(EngFunc_CreateNamedEntity, iszFuncWall);
  6097. if(pev_valid(g_iSoccerBall))
  6098. {
  6099. set_pev(g_iSoccerBall, pev_classname, "ball");
  6100. set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
  6101. set_pev(g_iSoccerBall, pev_movetype, MOVETYPE_BOUNCE);
  6102. engfunc(EngFunc_SetModel, g_iSoccerBall, "models/alcatraz_jb/soccer/ball.mdl");
  6103. engfunc(EngFunc_SetSize, g_iSoccerBall, Float:{-4.0, -4.0, -4.0}, Float:{4.0, 4.0, 4.0});
  6104. set_pev(g_iSoccerBall, pev_framerate, 1.0);
  6105. set_pev(g_iSoccerBall, pev_sequence, 0);
  6106. set_pev(g_iSoccerBall, pev_nextthink, get_gametime() + 0.04);
  6107. fm_get_aiming_position(pPlayer, g_flSoccerBallOrigin);
  6108. engfunc(EngFunc_SetOrigin, g_iSoccerBall, g_flSoccerBallOrigin);
  6109. engfunc(EngFunc_DropToFloor, g_iSoccerBall);
  6110. return g_iSoccerBall;
  6111. }
  6112. jbe_soccer_remove_ball();
  6113. return 0;
  6114. }
  6115.  
  6116. jbe_soccer_remove_ball()
  6117. {
  6118. if(g_iSoccerBall)
  6119. {
  6120. if(g_bSoccerBallTrail)
  6121. {
  6122. g_bSoccerBallTrail = false;
  6123. CREATE_KILLBEAM(g_iSoccerBall);
  6124. }
  6125. if(g_iSoccerBallOwner)
  6126. {
  6127. CREATE_KILLPLAYERATTACHMENTS(g_iSoccerBallOwner);
  6128. jbe_set_hand_model(g_iSoccerBallOwner);
  6129. }
  6130. if(pev_valid(g_iSoccerBall)) engfunc(EngFunc_RemoveEntity, g_iSoccerBall);
  6131. g_iSoccerBall = 0;
  6132. g_iSoccerBallOwner = 0;
  6133. g_iSoccerKickOwner = 0;
  6134. g_bSoccerBallTouch = false;
  6135. }
  6136. }
  6137.  
  6138. jbe_soccer_update_ball()
  6139. {
  6140. if(g_iSoccerBall)
  6141. {
  6142. if(pev_valid(g_iSoccerBall))
  6143. {
  6144. if(g_bSoccerBallTrail)
  6145. {
  6146. g_bSoccerBallTrail = false;
  6147. CREATE_KILLBEAM(g_iSoccerBall);
  6148. }
  6149. if(g_iSoccerBallOwner)
  6150. {
  6151. CREATE_KILLPLAYERATTACHMENTS(g_iSoccerBallOwner);
  6152. jbe_set_hand_model(g_iSoccerBallOwner);
  6153. }
  6154. set_pev(g_iSoccerBall, pev_velocity, {0.0, 0.0, 0.0});
  6155. set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
  6156. engfunc(EngFunc_SetModel, g_iSoccerBall, "models/alcatraz_jb/soccer/ball.mdl");
  6157. engfunc(EngFunc_SetSize, g_iSoccerBall, Float:{-4.0, -4.0, -4.0}, Float:{4.0, 4.0, 4.0});
  6158. engfunc(EngFunc_SetOrigin, g_iSoccerBall, g_flSoccerBallOrigin);
  6159. engfunc(EngFunc_DropToFloor, g_iSoccerBall);
  6160. g_iSoccerBallOwner = 0;
  6161. g_iSoccerKickOwner = 0;
  6162. g_bSoccerBallTouch = false;
  6163. }
  6164. else jbe_soccer_remove_ball();
  6165. }
  6166. }
  6167.  
  6168. jbe_soccer_game_start(pPlayer)
  6169. {
  6170. new iPlayers;
  6171. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++) if(IsSetBit(g_iBitUserSoccer, iPlayer)) iPlayers++;
  6172. if(iPlayers < 2) UTIL_SayText(pPlayer, "!g[AlcatraZ-JailBreak] %L", pPlayer, "JBE_CHAT_ID_SOCCER_INSUFFICIENTLY_PLAYERS");
  6173. else
  6174. {
  6175. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++) if(IsSetBit(g_iBitUserSoccer, iPlayer) || iPlayer == g_iChiefId) set_task(1.0, "jbe_soccer_score_informer", iPlayer+TASK_SHOW_SOCCER_SCORE, _, _, "b");
  6176. emit_sound(pPlayer, CHAN_AUTO, "alcatraz_jb/soccer/whitle_start.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  6177. emit_sound(0, CHAN_STATIC, "alcatraz_jb/soccer/crowd.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  6178. g_bSoccerBallTouch = true;
  6179. g_bSoccerGame = true;
  6180. }
  6181. }
  6182.  
  6183. jbe_soccer_game_end(pPlayer)
  6184. {
  6185. jbe_soccer_remove_ball();
  6186. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  6187. {
  6188. if(IsSetBit(g_iBitUserSoccer, iPlayer))
  6189. {
  6190. ClearBit(g_iBitUserSoccer, iPlayer);
  6191. if(IsSetBit(g_iBitClothingGuard, iPlayer) && IsSetBit(g_iBitClothingType, iPlayer)) jbe_set_user_model(iPlayer, g_szPlayerModel[GUARD]);
  6192. else jbe_default_player_model(iPlayer);
  6193. set_pdata_int(iPlayer, m_bloodColor, 247);
  6194. new iActiveItem = get_pdata_cbase(iPlayer, m_pActiveItem);
  6195. if(iActiveItem > 0)
  6196. {
  6197. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  6198. UTIL_WeaponAnimation(iPlayer, 3);
  6199. }
  6200. remove_task(iPlayer+TASK_SHOW_SOCCER_SCORE);
  6201. }
  6202. }
  6203. remove_task(pPlayer+TASK_SHOW_SOCCER_SCORE);
  6204. emit_sound(0, CHAN_STATIC, "alcatraz_jb/soccer/crowd.wav", VOL_NORM, ATTN_NORM, SND_STOP, PITCH_NORM);
  6205. emit_sound(pPlayer, CHAN_AUTO, "alcatraz_jb/soccer/whitle_end.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  6206. g_iSoccerScore = {0, 0};
  6207. g_bSoccerGame = false;
  6208. }
  6209.  
  6210. jbe_soccer_divide_team(iType)
  6211. {
  6212. new const szLangPlayer[][] = {"JBE_HUD_ID_YOU_TEAM_RED", "JBE_HUD_ID_YOU_TEAM_BLUE"};
  6213. for(new iPlayer = 1, iTeam; iPlayer <= g_iMaxPlayers; iPlayer++)
  6214. {
  6215. if(IsSetBit(g_iBitUserAlive, iPlayer) && IsNotSetBit(g_iBitUserSoccer, iPlayer) && IsNotSetBit(g_iBitUserDuel, iPlayer)
  6216. && (g_iUserTeam[iPlayer] == 1 && IsNotSetBit(g_iBitUserFree, iPlayer) && IsNotSetBit(g_iBitUserWanted, iPlayer)
  6217. && IsNotSetBit(g_iBitUserBoxing, iPlayer) || !iType && g_iUserTeam[iPlayer] == 2 && iPlayer != g_iChiefId))
  6218. {
  6219. SetBit(g_iBitUserSoccer, iPlayer);
  6220. jbe_set_user_model(iPlayer, g_szPlayerModel[FOOTBALLER]);
  6221. set_pev(iPlayer, pev_skin, iTeam);
  6222. set_pdata_int(iPlayer, m_bloodColor, -1);
  6223. UTIL_SayText(iPlayer, "!g[AlcatraZ-JailBreak] %L", iPlayer, szLangPlayer[iTeam]);
  6224. g_iSoccerUserTeam[iPlayer] = iTeam;
  6225. if(get_user_weapon(iPlayer) != CSW_KNIFE) engclient_cmd(iPlayer, "weapon_knife");
  6226. else
  6227. {
  6228. new iActiveItem = get_pdata_cbase(iPlayer, m_pActiveItem);
  6229. if(iActiveItem > 0)
  6230. {
  6231. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  6232. UTIL_WeaponAnimation(iPlayer, 3);
  6233. }
  6234. }
  6235. iTeam = !iTeam;
  6236. }
  6237. }
  6238. }
  6239.  
  6240. public jbe_soccer_score_informer(pPlayer)
  6241. {
  6242. pPlayer -= TASK_SHOW_SOCCER_SCORE;
  6243. set_hudmessage(102, 69, 0, -1.0, 0.01, 0, 0.0, 0.9, 0.1, 0.1, -1);
  6244. ShowSyncHudMsg(pPlayer, g_iSyncSoccerScore, "%L %d | %d %L", pPlayer, "JBE_HUD_ID_SOCCER_SCORE_RED",
  6245. g_iSoccerScore[0], g_iSoccerScore[1], pPlayer, "JBE_HUD_ID_SOCCER_SCORE_BLUE");
  6246. }
  6247.  
  6248. jbe_soccer_hand_ball_model(pPlayer)
  6249. {
  6250. static iszViewModel, iszWeaponModel;
  6251. if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/soccer/v_hand_ball.mdl"))) set_pev_string(pPlayer, pev_viewmodel2, iszViewModel);
  6252. if(iszWeaponModel || (iszWeaponModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/weapons/p_hand.mdl"))) set_pev_string(pPlayer, pev_weaponmodel2, iszWeaponModel);
  6253. }
  6254. /*===== <- ?????? <- =====*///}
  6255.  
  6256. /*===== -> ???? -> =====*///{
  6257. jbe_boxing_disable_all()
  6258. {
  6259. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  6260. {
  6261. if(IsSetBit(g_iBitUserBoxing, iPlayer))
  6262. {
  6263. ClearBit(g_iBitUserBoxing, iPlayer);
  6264. set_pdata_int(iPlayer, m_bloodColor, 247);
  6265. new iActiveItem = get_pdata_cbase(iPlayer, m_pActiveItem);
  6266. if(iActiveItem > 0)
  6267. {
  6268. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  6269. UTIL_WeaponAnimation(iPlayer, 3);
  6270. }
  6271. }
  6272. }
  6273. g_iBoxingGame = 0;
  6274. g_bBoxingStatus = false;
  6275. unregister_forward(FM_UpdateClientData, g_iFakeMetaUpdateClientData, 1);
  6276. }
  6277.  
  6278. jbe_boxing_game_start(pPlayer)
  6279. {
  6280. new iPlayers;
  6281. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++) if(IsSetBit(g_iBitUserBoxing, iPlayer)) iPlayers++;
  6282. if(iPlayers < 2) UTIL_SayText(pPlayer, "!g[AlcatraZ-JailBreak] %L", pPlayer, "JBE_CHAT_ID_BOXING_INSUFFICIENTLY_PLAYERS");
  6283. else
  6284. {
  6285. g_iBoxingGame = 1;
  6286. emit_sound(pPlayer, CHAN_AUTO, "alcatraz_jb/boxing/gong.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  6287. }
  6288. }
  6289.  
  6290. jbe_boxing_game_team_start(pPlayer)
  6291. {
  6292. new iPlayersRed, iPlayersBlue;
  6293. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  6294. {
  6295. if(IsSetBit(g_iBitUserBoxing, iPlayer))
  6296. {
  6297. switch(g_iBoxingUserTeam[iPlayer])
  6298. {
  6299. case 0: iPlayersRed++;
  6300. case 1: iPlayersBlue++;
  6301. }
  6302. }
  6303. }
  6304. if(iPlayersRed < 2 || iPlayersBlue < 2) UTIL_SayText(pPlayer, "!g[AlcatraZ-JailBreak] %L", pPlayer, "JBE_CHAT_ID_BOXING_INSUFFICIENTLY_PLAYERS");
  6305. else
  6306. {
  6307. g_iBoxingGame = 2;
  6308. emit_sound(pPlayer, CHAN_AUTO, "alcatraz_jb/boxing/gong.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  6309. }
  6310. }
  6311.  
  6312. jbe_boxing_game_end()
  6313. {
  6314. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  6315. {
  6316. if(IsSetBit(g_iBitUserBoxing, iPlayer))
  6317. {
  6318. ClearBit(g_iBitUserBoxing, iPlayer);
  6319. set_pdata_int(iPlayer, m_bloodColor, 247);
  6320. new iActiveItem = get_pdata_cbase(iPlayer, m_pActiveItem, linux_diff_player);
  6321. if(iActiveItem > 0)
  6322. {
  6323. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  6324. UTIL_WeaponAnimation(iPlayer, 3);
  6325. }
  6326. }
  6327. }
  6328. g_iBoxingGame = 0;
  6329. }
  6330.  
  6331. jbe_boxing_divide_team()
  6332. {
  6333. for(new iPlayer = 1, iTeam; iPlayer <= g_iMaxPlayers; iPlayer++)
  6334. {
  6335. if(g_iUserTeam[iPlayer] == 1 && IsSetBit(g_iBitUserAlive, iPlayer) && IsNotSetBit(g_iBitUserFree, iPlayer)
  6336. && IsNotSetBit(g_iBitUserWanted, iPlayer) && IsNotSetBit(g_iBitUserSoccer, iPlayer)
  6337. && IsNotSetBit(g_iBitUserBoxing, iPlayer) && IsNotSetBit(g_iBitUserDuel, iPlayer))
  6338. {
  6339. SetBit(g_iBitUserBoxing, iPlayer);
  6340. set_pev(iPlayer, pev_health, 100.0);
  6341. set_pdata_int(iPlayer, m_bloodColor, -1);
  6342. g_iBoxingUserTeam[iPlayer] = iTeam;
  6343. if(get_user_weapon(iPlayer) != CSW_KNIFE) engclient_cmd(iPlayer, "weapon_knife");
  6344. else
  6345. {
  6346. new iActiveItem = get_pdata_cbase(iPlayer, m_pActiveItem, linux_diff_player);
  6347. if(iActiveItem > 0)
  6348. {
  6349. ExecuteHamB(Ham_Item_Deploy, iActiveItem);
  6350. UTIL_WeaponAnimation(iPlayer, 3);
  6351. }
  6352. }
  6353. iTeam = !iTeam;
  6354. }
  6355. }
  6356. }
  6357.  
  6358. jbe_boxing_gloves_model(pPlayer, iTeam)
  6359. {
  6360. switch(iTeam)
  6361. {
  6362. case 0:
  6363. {
  6364. static iszViewModel, iszWeaponModel;
  6365. if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/boxing/v_boxing_gloves_red.mdl"))) set_pev_string(pPlayer, pev_viewmodel2, iszViewModel);
  6366. if(iszWeaponModel || (iszWeaponModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/boxing/p_boxing_gloves_red.mdl"))) set_pev_string(pPlayer, pev_weaponmodel2, iszWeaponModel);
  6367. }
  6368. case 1:
  6369. {
  6370. static iszViewModel, iszWeaponModel;
  6371. if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/boxing/v_boxing_gloves_blue.mdl"))) set_pev_string(pPlayer, pev_viewmodel2, iszViewModel);
  6372. if(iszWeaponModel || (iszWeaponModel = engfunc(EngFunc_AllocString, "models/alcatraz_jb/boxing/p_boxing_gloves_blue.mdl"))) set_pev_string(pPlayer, pev_weaponmodel2, iszWeaponModel);
  6373. }
  6374. }
  6375. }
  6376. /*===== <- ???? <- =====*///}
  6377.  
  6378. /*===== -> ?????? -> =====*///{
  6379. public plugin_natives()
  6380. {
  6381. register_native("jbe_get_day", "jbe_get_day", 1);
  6382. register_native("jbe_set_day", "jbe_set_day", 1);
  6383. register_native("jbe_get_day_week", "jbe_get_day_week", 1);
  6384. register_native("jbe_set_day_week", "jbe_set_day_week", 1);
  6385. register_native("jbe_get_day_mode", "jbe_get_day_mode", 1);
  6386. register_native("jbe_set_day_mode", "jbe_set_day_mode", 1);
  6387. register_native("jbe_open_doors", "jbe_open_doors", 1);
  6388. register_native("jbe_close_doors", "jbe_close_doors", 1);
  6389. register_native("jbe_get_user_money", "jbe_get_user_money", 1);
  6390. register_native("jbe_set_user_money", "jbe_set_user_money", 1);
  6391. register_native("jbe_get_user_team", "jbe_get_user_team", 1);
  6392. register_native("jbe_set_user_team", "jbe_set_user_team", 1);
  6393. register_native("jbe_get_user_model", "_jbe_get_user_model", 1);
  6394. register_native("jbe_set_user_model", "_jbe_set_user_model", 1);
  6395. register_native("jbe_informer_offset_up", "jbe_informer_offset_up", 1);
  6396. register_native("jbe_informer_offset_down", "jbe_informer_offset_down", 1);
  6397. register_native("jbe_menu_block", "jbe_menu_block", 1);
  6398. register_native("jbe_menu_unblock", "jbe_menu_unblock", 1);
  6399. register_native("jbe_menu_blocked", "jbe_menu_blocked", 1);
  6400. register_native("jbe_is_user_free", "jbe_is_user_free", 1);
  6401. register_native("jbe_add_user_free", "jbe_add_user_free", 1);
  6402. register_native("jbe_add_user_free_next_round", "jbe_add_user_free_next_round", 1);
  6403. register_native("jbe_sub_user_free", "jbe_sub_user_free", 1);
  6404. register_native("jbe_free_day_start", "jbe_free_day_start", 1);
  6405. register_native("jbe_free_day_ended", "jbe_free_day_ended", 1);
  6406. register_native("jbe_is_user_wanted", "jbe_is_user_wanted", 1);
  6407. register_native("jbe_add_user_wanted", "jbe_add_user_wanted", 1);
  6408. register_native("jbe_sub_user_wanted", "jbe_sub_user_wanted", 1);
  6409. register_native("jbe_is_user_chief", "jbe_is_user_chief", 1);
  6410. register_native("jbe_set_user_chief", "jbe_set_user_chief", 1);
  6411. register_native("jbe_get_chief_status", "jbe_get_chief_status", 1);
  6412. register_native("jbe_get_chief_id", "jbe_get_chief_id", 1);
  6413. register_native("jbe_set_user_costumes", "jbe_set_user_costumes", 1);
  6414. register_native("jbe_hide_user_costumes", "jbe_hide_user_costumes", 1);
  6415. register_native("jbe_prisoners_divide_color", "jbe_prisoners_divide_color", 1);
  6416. register_native("jbe_register_day_mode", "jbe_register_day_mode", 1);
  6417. register_native("jbe_get_user_voice", "jbe_get_user_voice", 1);
  6418. register_native("jbe_set_user_voice", "jbe_set_user_voice", 1);
  6419. register_native("jbe_set_user_voice_next_round", "jbe_set_user_voice_next_round", 1);
  6420. register_native("jbe_get_user_rendering", "_jbe_get_user_rendering", 1);
  6421. register_native("jbe_set_user_rendering", "jbe_set_user_rendering", 1);
  6422. }
  6423.  
  6424. public jbe_get_day() return g_iDay;
  6425. public jbe_set_day(iDay) g_iDay = iDay;
  6426.  
  6427. public jbe_get_day_week() return g_iDayWeek;
  6428. public jbe_set_day_week(iWeek) g_iDayWeek = (g_iDayWeek > 7) ? 1 : iWeek;
  6429.  
  6430. public jbe_get_day_mode() return g_iDayMode;
  6431. public jbe_set_day_mode(iMode)
  6432. {
  6433. g_iDayMode = iMode;
  6434. formatex(g_szDayMode, charsmax(g_szDayMode), "JBE_HUD_GAME_MODE_%d", g_iDayMode);
  6435. }
  6436.  
  6437. public jbe_open_doors()
  6438. {
  6439. for(new i, iDoor; i < g_iDoorListSize; i++)
  6440. {
  6441. iDoor = ArrayGetCell(g_aDoorList, i);
  6442. dllfunc(DLLFunc_Use, iDoor, 0);
  6443. }
  6444. g_bDoorStatus = true;
  6445. }
  6446. public jbe_close_doors()
  6447. {
  6448. for(new i, iDoor; i < g_iDoorListSize; i++)
  6449. {
  6450. iDoor = ArrayGetCell(g_aDoorList, i);
  6451. dllfunc(DLLFunc_Think, iDoor);
  6452. }
  6453. g_bDoorStatus = false;
  6454. }
  6455.  
  6456. public jbe_get_user_money(pPlayer) return g_iUserMoney[pPlayer];
  6457. public jbe_set_user_money(pPlayer, iNum, iFlash)
  6458. {
  6459. g_iUserMoney[pPlayer] = iNum;
  6460. engfunc(EngFunc_MessageBegin, MSG_ONE, MsgId_Money, {0.0, 0.0, 0.0}, pPlayer);
  6461. write_long(iNum);
  6462. write_byte(iFlash);
  6463. message_end();
  6464. }
  6465.  
  6466. public jbe_get_user_team(pPlayer) return g_iUserTeam[pPlayer];
  6467. public jbe_set_user_team(pPlayer, iTeam)
  6468. {
  6469. if(IsNotSetBit(g_iBitUserConnected, pPlayer)) return 0;
  6470. switch(iTeam)
  6471. {
  6472. case 1:
  6473. {
  6474. set_pdata_int(pPlayer, m_bHasChangeTeamThisRound, false, linux_diff_player);
  6475. set_pdata_int(pPlayer, m_iSpawnCount, 1);
  6476. if(IsSetBit(g_iBitUserAlive, pPlayer)) ExecuteHamB(Ham_Killed, pPlayer, pPlayer, 0);
  6477. engclient_cmd(pPlayer, "jointeam", "1");
  6478. if(get_pdata_int(pPlayer, m_iPlayerTeam, linux_diff_player) != 1) return 0;
  6479. g_iPlayersNum[g_iUserTeam[pPlayer]]--;
  6480. g_iUserTeam[pPlayer] = 1;
  6481. g_iPlayersNum[g_iUserTeam[pPlayer]]++;
  6482. Show_SkinMenu(pPlayer);
  6483. }
  6484. case 2:
  6485. {
  6486. set_pdata_int(pPlayer, m_bHasChangeTeamThisRound, false, linux_diff_player);
  6487. set_pdata_int(pPlayer, m_iSpawnCount, 1);
  6488. if(IsSetBit(g_iBitUserAlive, pPlayer)) ExecuteHamB(Ham_Killed, pPlayer, pPlayer, 0);
  6489. engclient_cmd(pPlayer, "jointeam", "2");
  6490. if(get_pdata_int(pPlayer, m_iPlayerTeam, linux_diff_player) != 2) return 0;
  6491. g_iPlayersNum[g_iUserTeam[pPlayer]]--;
  6492. g_iUserTeam[pPlayer] = 2;
  6493. g_iPlayersNum[g_iUserTeam[pPlayer]]++;
  6494. engclient_cmd(pPlayer, "joinclass", "1");
  6495. }
  6496. case 3:
  6497. {
  6498. if(IsSetBit(g_iBitUserAlive, pPlayer)) ExecuteHamB(Ham_Killed, pPlayer, pPlayer, 0);
  6499. engclient_cmd(pPlayer, "jointeam", "6");
  6500. if(get_pdata_int(pPlayer, m_iPlayerTeam, linux_diff_player) != 3) return 0;
  6501. g_iPlayersNum[g_iUserTeam[pPlayer]]--;
  6502. g_iUserTeam[pPlayer] = 3;
  6503. g_iPlayersNum[g_iUserTeam[pPlayer]]++;
  6504. }
  6505. }
  6506. return iTeam;
  6507. }
  6508.  
  6509. public _jbe_get_user_model(pPlayer, const szModel[], iLen)
  6510. {
  6511. param_convert(2);
  6512. return jbe_get_user_model(pPlayer, szModel, iLen);
  6513. }
  6514. public jbe_get_user_model(pPlayer, const szModel[], iLen) return engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, pPlayer), "model", szModel, iLen);
  6515. public _jbe_set_user_model(pPlayer, const szModel[])
  6516. {
  6517. param_convert(2);
  6518. jbe_set_user_model(pPlayer, szModel);
  6519. }
  6520. public jbe_set_user_model(pPlayer, const szModel[])
  6521. {
  6522. copy(g_szUserModel[pPlayer], charsmax(g_szUserModel[]), szModel);
  6523. static Float:fGameTime, Float:fChangeTime; fGameTime = get_gametime();
  6524. if(fGameTime - fChangeTime > 0.1)
  6525. {
  6526. jbe_set_user_model_fix(pPlayer+TASK_CHANGE_MODEL);
  6527. fChangeTime = fGameTime;
  6528. }
  6529. else
  6530. {
  6531. set_task((fChangeTime + 0.1) - fGameTime, "jbe_set_user_model_fix", pPlayer+TASK_CHANGE_MODEL);
  6532. fChangeTime = fChangeTime + 0.1;
  6533. }
  6534. }
  6535. public jbe_set_user_model_fix(pPlayer)
  6536. {
  6537. pPlayer -= TASK_CHANGE_MODEL;
  6538. engfunc(EngFunc_SetClientKeyValue, pPlayer, engfunc(EngFunc_GetInfoKeyBuffer, pPlayer), "model", g_szUserModel[pPlayer]);
  6539. new szBuffer[64]; formatex(szBuffer, charsmax(szBuffer), "models/player/%s/%s.mdl", g_szUserModel[pPlayer], g_szUserModel[pPlayer]);
  6540. set_pdata_int(pPlayer, g_szModelIndexPlayer, engfunc(EngFunc_ModelIndex, szBuffer), linux_diff_player);
  6541. SetBit(g_iBitUserModel, pPlayer);
  6542. }
  6543.  
  6544. public jbe_informer_offset_up(pPlayer)
  6545. {
  6546. g_fMainInformerPosX[pPlayer] = 0.21;
  6547. g_fMainInformerPosY[pPlayer] = 0.01;
  6548. }
  6549. public jbe_informer_offset_down(pPlayer)
  6550. {
  6551. g_fMainInformerPosX[pPlayer] = 0.01;
  6552. g_fMainInformerPosY[pPlayer] = 0.27;
  6553. }
  6554.  
  6555. public jbe_menu_block(pPlayer) SetBit(g_iBitBlockMenu, pPlayer);
  6556. public jbe_menu_unblock(pPlayer) ClearBit(g_iBitBlockMenu, pPlayer);
  6557. public jbe_menu_blocked(pPlayer) return IsSetBit(g_iBitBlockMenu, pPlayer);
  6558.  
  6559. public jbe_is_user_free(pPlayer) return IsSetBit(g_iBitUserFree, pPlayer);
  6560. public jbe_add_user_free(pPlayer)
  6561. {
  6562. if(g_iDayMode != 1 || g_iUserTeam[pPlayer] != 1 || IsNotSetBit(g_iBitUserAlive, pPlayer)
  6563. || IsSetBit(g_iBitUserFree, pPlayer) || IsSetBit(g_iBitUserWanted, pPlayer)) return 0;
  6564. SetBit(g_iBitUserFree, pPlayer);
  6565. new szName[32]; get_user_name(pPlayer, szName, charsmax(szName));
  6566. formatex(g_szFreeNames, charsmax(g_szFreeNames), "%s^n%s", g_szFreeNames, szName);
  6567. g_iFreeLang = 1;
  6568. if(g_bSoccerStatus && IsSetBit(g_iBitUserSoccer, pPlayer))
  6569. {
  6570. ClearBit(g_iBitUserSoccer, pPlayer);
  6571. jbe_set_user_model(pPlayer, g_szPlayerModel[PRISONER]);
  6572. jbe_default_knife_model(pPlayer);
  6573. UTIL_WeaponAnimation(pPlayer, 3);
  6574. set_pdata_int(pPlayer, m_bloodColor, 247);
  6575. if(pPlayer == g_iSoccerBallOwner)
  6576. {
  6577. CREATE_KILLPLAYERATTACHMENTS(pPlayer);
  6578. set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
  6579. set_pev(g_iSoccerBall, pev_velocity, {0.0, 0.0, 0.1});
  6580. g_iSoccerBallOwner = 0;
  6581. }
  6582. if(g_bSoccerGame) remove_task(pPlayer+TASK_SHOW_SOCCER_SCORE);
  6583. }
  6584. if(g_bBoxingStatus && IsSetBit(g_iBitUserBoxing, pPlayer))
  6585. {
  6586. ClearBit(g_iBitUserBoxing, pPlayer);
  6587. jbe_set_hand_model(pPlayer);
  6588. UTIL_WeaponAnimation(pPlayer, 3);
  6589. set_pev(pPlayer, pev_health, 100.0);
  6590. set_pdata_int(pPlayer, m_bloodColor, 247);
  6591. }
  6592. set_pev(pPlayer, pev_skin, 5);
  6593. set_task(float(g_iAllCvars[FREE_DAY_ID]), "jbe_sub_user_free", pPlayer+TASK_FREE_DAY_ENDED);
  6594. return 1;
  6595. }
  6596. public jbe_add_user_free_next_round(pPlayer)
  6597. {
  6598. if(g_iUserTeam[pPlayer] != 1) return 0;
  6599. SetBit(g_iBitUserFreeNextRound, pPlayer);
  6600. return 1;
  6601. }
  6602. public jbe_sub_user_free(pPlayer)
  6603. {
  6604. if(pPlayer > TASK_FREE_DAY_ENDED) pPlayer -= TASK_FREE_DAY_ENDED;
  6605. if(IsNotSetBit(g_iBitUserFree, pPlayer)) return 0;
  6606. ClearBit(g_iBitUserFree, pPlayer);
  6607. if(g_szFreeNames[0] != 0)
  6608. {
  6609. new szName[34];
  6610. get_user_name(pPlayer, szName, charsmax(szName));
  6611. format(szName, charsmax(szName), "^n%s", szName);
  6612. replace(g_szFreeNames, charsmax(g_szFreeNames), szName, "");
  6613. g_iFreeLang = (g_szFreeNames[0] != 0);
  6614. }
  6615. if(task_exists(pPlayer+TASK_FREE_DAY_ENDED)) remove_task(pPlayer+TASK_FREE_DAY_ENDED);
  6616. if(IsSetBit(g_iBitUserAlive, pPlayer)) set_pev(pPlayer, pev_skin, g_iUserSkin[pPlayer]);
  6617. return 1;
  6618. }
  6619.  
  6620. public jbe_free_day_start()
  6621. {
  6622. if(g_iDayMode != 1) return 0;
  6623. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  6624. {
  6625. if(g_iUserTeam[iPlayer] == 1 && IsSetBit(g_iBitUserAlive, iPlayer) && IsNotSetBit(g_iBitUserWanted, iPlayer))
  6626. {
  6627. if(IsSetBit(g_iBitUserFree, iPlayer)) remove_task(iPlayer+TASK_FREE_DAY_ENDED);
  6628. else
  6629. {
  6630. SetBit(g_iBitUserFree, iPlayer);
  6631. if(g_bSoccerStatus && IsSetBit(g_iBitUserSoccer, iPlayer))
  6632. {
  6633. ClearBit(g_iBitUserSoccer, iPlayer);
  6634. jbe_set_user_model(iPlayer, g_szPlayerModel[PRISONER]);
  6635. jbe_default_knife_model(iPlayer);
  6636. UTIL_WeaponAnimation(iPlayer, 3);
  6637. set_pdata_int(iPlayer, m_bloodColor, 247);
  6638. if(iPlayer == g_iSoccerBallOwner)
  6639. {
  6640. CREATE_KILLPLAYERATTACHMENTS(iPlayer);
  6641. set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
  6642. set_pev(g_iSoccerBall, pev_velocity, {0.0, 0.0, 0.1});
  6643. g_iSoccerBallOwner = 0;
  6644. }
  6645. if(g_bSoccerGame) remove_task(iPlayer+TASK_SHOW_SOCCER_SCORE);
  6646. }
  6647. if(g_bBoxingStatus && IsSetBit(g_iBitUserBoxing, iPlayer))
  6648. {
  6649. ClearBit(g_iBitUserBoxing, iPlayer);
  6650. jbe_set_hand_model(iPlayer);
  6651. UTIL_WeaponAnimation(iPlayer, 3);
  6652. set_pev(iPlayer, pev_health, 100.0);
  6653. set_pdata_int(iPlayer, m_bloodColor, 247);
  6654. }
  6655. set_pev(iPlayer, pev_skin, 5);
  6656. }
  6657. }
  6658. }
  6659. g_szFreeNames = "";
  6660. g_iFreeLang = 0;
  6661. jbe_open_doors();
  6662. jbe_set_day_mode(2);
  6663. g_iDayModeTimer = g_iAllCvars[FREE_DAY_ALL] + 1;
  6664. set_task(1.0, "jbe_free_day_ended_task", TASK_FREE_DAY_ENDED, _, _, "a", g_iDayModeTimer);
  6665. return 1;
  6666. }
  6667. public jbe_free_day_ended_task()
  6668. {
  6669. if(--g_iDayModeTimer) formatex(g_szDayModeTimer, charsmax(g_szDayModeTimer), "[%i]", g_iDayModeTimer);
  6670. else jbe_free_day_ended();
  6671. }
  6672. public jbe_free_day_ended()
  6673. {
  6674. if(g_iDayMode != 2) return 0;
  6675. g_szDayModeTimer = "";
  6676. if(task_exists(TASK_FREE_DAY_ENDED)) remove_task(TASK_FREE_DAY_ENDED);
  6677. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  6678. {
  6679. if(IsSetBit(g_iBitUserFree, iPlayer))
  6680. {
  6681. ClearBit(g_iBitUserFree, iPlayer);
  6682. set_pev(iPlayer, pev_skin, g_iUserSkin[iPlayer]);
  6683. }
  6684. }
  6685. jbe_set_day_mode(1);
  6686. return 1;
  6687. }
  6688.  
  6689. public jbe_is_user_wanted(pPlayer) return IsSetBit(g_iBitUserWanted, pPlayer);
  6690. public jbe_add_user_wanted(pPlayer)
  6691. {
  6692. if(g_iDayMode != 1 && g_iDayMode != 2 || g_iUserTeam[pPlayer] != 1 || IsNotSetBit(g_iBitUserAlive, pPlayer)
  6693. || IsSetBit(g_iBitUserWanted, pPlayer)) return 0;
  6694. SetBit(g_iBitUserWanted, pPlayer);
  6695. new szName[34];
  6696. get_user_name(pPlayer, szName, charsmax(szName));
  6697. formatex(g_szWantedNames, charsmax(g_szWantedNames), "%s^n%s", g_szWantedNames, szName);
  6698. g_iWantedLang = 1;
  6699. if(IsSetBit(g_iBitUserFree, pPlayer))
  6700. {
  6701. ClearBit(g_iBitUserFree, pPlayer);
  6702. if(g_szFreeNames[0] != 0)
  6703. {
  6704. format(szName, charsmax(szName), "^n%s", szName);
  6705. replace(g_szFreeNames, charsmax(g_szFreeNames), szName, "");
  6706. g_iFreeLang = (g_szFreeNames[0] != 0);
  6707. }
  6708. if(g_iDayMode == 1 && task_exists(pPlayer+TASK_FREE_DAY_ENDED)) remove_task(pPlayer+TASK_FREE_DAY_ENDED);
  6709. }
  6710. if(IsSetBit(g_iBitUserSoccer, pPlayer))
  6711. {
  6712. ClearBit(g_iBitUserSoccer, pPlayer);
  6713. jbe_set_user_model(pPlayer, g_szPlayerModel[PRISONER]);
  6714. jbe_default_knife_model(pPlayer);
  6715. UTIL_WeaponAnimation(pPlayer, 3);
  6716. set_pdata_int(pPlayer, m_bloodColor, 247);
  6717. if(pPlayer == g_iSoccerBallOwner)
  6718. {
  6719. CREATE_KILLPLAYERATTACHMENTS(pPlayer);
  6720. set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
  6721. set_pev(g_iSoccerBall, pev_velocity, {0.0, 0.0, 0.1});
  6722. g_iSoccerBallOwner = 0;
  6723. }
  6724. if(g_bSoccerGame) remove_task(pPlayer+TASK_SHOW_SOCCER_SCORE);
  6725. }
  6726. if(IsSetBit(g_iBitUserBoxing, pPlayer))
  6727. {
  6728. ClearBit(g_iBitUserBoxing, pPlayer);
  6729. jbe_set_hand_model(pPlayer);
  6730. UTIL_WeaponAnimation(pPlayer, 3);
  6731. set_pev(pPlayer, pev_health, 100.0);
  6732. set_pdata_int(pPlayer, m_bloodColor, 247);
  6733. }
  6734. set_pev(pPlayer, pev_skin, 6);
  6735. return 1;
  6736. }
  6737. public jbe_sub_user_wanted(pPlayer)
  6738. {
  6739. if(IsNotSetBit(g_iBitUserWanted, pPlayer)) return 0;
  6740. ClearBit(g_iBitUserWanted, pPlayer);
  6741. if(g_szWantedNames[0] != 0)
  6742. {
  6743. new szName[34];
  6744. get_user_name(pPlayer, szName, charsmax(szName));
  6745. format(szName, charsmax(szName), "^n%s", szName);
  6746. replace(g_szWantedNames, charsmax(g_szWantedNames), szName, "");
  6747. g_iWantedLang = (g_szWantedNames[0] != 0);
  6748. }
  6749. if(IsSetBit(g_iBitUserAlive, pPlayer))
  6750. {
  6751. if(g_iDayMode == 2)
  6752. {
  6753. SetBit(g_iBitUserFree, pPlayer);
  6754. set_pev(pPlayer, pev_skin, 5);
  6755. }
  6756. else set_pev(pPlayer, pev_skin, g_iUserSkin[pPlayer]);
  6757. }
  6758. return 1;
  6759. }
  6760.  
  6761. public jbe_is_user_chief(pPlayer) return (pPlayer == g_iChiefId);
  6762. public jbe_set_user_chief(pPlayer)
  6763. {
  6764. if(g_iDayMode != 1 && g_iDayMode != 2 || g_iUserTeam[pPlayer] != 2 || IsNotSetBit(g_iBitUserAlive, pPlayer)) return 0;
  6765. if(g_iChiefStatus == 1)
  6766. {
  6767. jbe_set_user_model(g_iChiefId, g_szPlayerModel[GUARD]);
  6768. if(g_bSoccerGame) remove_task(g_iChiefId+TASK_SHOW_SOCCER_SCORE);
  6769. if(get_user_godmode(g_iChiefId)) set_user_godmode(g_iChiefId, 0);
  6770. }
  6771. if(task_exists(TASK_CHIEF_CHOICE_TIME)) remove_task(TASK_CHIEF_CHOICE_TIME);
  6772. get_user_name(pPlayer, g_szChiefName, charsmax(g_szChiefName));
  6773. g_iChiefStatus = 1;
  6774. g_iChiefId = pPlayer;
  6775. jbe_set_user_model(pPlayer, g_szPlayerModel[CHIEF]);
  6776. if(g_bSoccerStatus)
  6777. {
  6778. if(IsSetBit(g_iBitUserSoccer, pPlayer))
  6779. {
  6780. ClearBit(g_iBitUserSoccer, pPlayer);
  6781. jbe_set_baton_model(pPlayer);
  6782. UTIL_WeaponAnimation(pPlayer, 3);
  6783. set_pdata_int(pPlayer, m_bloodColor, 247);
  6784. if(pPlayer == g_iSoccerBallOwner)
  6785. {
  6786. CREATE_KILLPLAYERATTACHMENTS(pPlayer);
  6787. set_pev(g_iSoccerBall, pev_solid, SOLID_TRIGGER);
  6788. set_pev(g_iSoccerBall, pev_velocity, {0.0, 0.0, 0.1});
  6789. g_iSoccerBallOwner = 0;
  6790. }
  6791. }
  6792. else if(g_bSoccerGame) set_task(1.0, "jbe_soccer_score_informer", pPlayer+TASK_SHOW_SOCCER_SCORE, _, _, "b");
  6793. }
  6794. return 1;
  6795. }
  6796. public jbe_get_chief_status() return g_iChiefStatus;
  6797. public jbe_get_chief_id() return g_iChiefId;
  6798.  
  6799. public jbe_set_user_costumes(pPlayer, iCostumes)
  6800. {
  6801. if(!g_iCostumesListSize || g_iDayMode != 1 && g_iDayMode != 2 || iCostumes > g_iCostumesListSize) return 0;
  6802. if(iCostumes)
  6803. {
  6804. new szBuffer[64];
  6805. if(!g_eUserCostumes[pPlayer][ENTITY])
  6806. {
  6807. static iszFuncWall = 0;
  6808. if(iszFuncWall || (iszFuncWall = engfunc(EngFunc_AllocString, "func_wall"))) g_eUserCostumes[pPlayer][ENTITY] = engfunc(EngFunc_CreateNamedEntity, iszFuncWall);
  6809. set_pev(g_eUserCostumes[pPlayer][ENTITY], pev_movetype, MOVETYPE_FOLLOW);
  6810. set_pev(g_eUserCostumes[pPlayer][ENTITY], pev_aiment, pPlayer);
  6811. ArrayGetString(g_aCostumesList, iCostumes - 1, szBuffer, charsmax(szBuffer));
  6812. engfunc(EngFunc_SetModel, g_eUserCostumes[pPlayer][ENTITY], szBuffer);
  6813. set_pev(g_eUserCostumes[pPlayer][ENTITY], pev_sequence, 0);
  6814. set_pev(g_eUserCostumes[pPlayer][ENTITY], pev_animtime, get_gametime());
  6815. set_pev(g_eUserCostumes[pPlayer][ENTITY], pev_framerate, 1.0);
  6816. }
  6817. else
  6818. {
  6819. ArrayGetString(g_aCostumesList, iCostumes - 1, szBuffer, charsmax(szBuffer));
  6820. engfunc(EngFunc_SetModel, g_eUserCostumes[pPlayer][ENTITY], szBuffer);
  6821. }
  6822. g_eUserCostumes[pPlayer][HIDE] = false;
  6823. g_eUserCostumes[pPlayer][COSTUMES] = iCostumes;
  6824. return 1;
  6825. }
  6826. else if(g_eUserCostumes[pPlayer][COSTUMES])
  6827. {
  6828. if(g_eUserCostumes[pPlayer][ENTITY]) engfunc(EngFunc_RemoveEntity, g_eUserCostumes[pPlayer][ENTITY]);
  6829. g_eUserCostumes[pPlayer][ENTITY] = 0;
  6830. g_eUserCostumes[pPlayer][HIDE] = false;
  6831. g_eUserCostumes[pPlayer][COSTUMES] = 0;
  6832. return 1;
  6833. }
  6834. return 0;
  6835. }
  6836. public jbe_hide_user_costumes(pPlayer)
  6837. {
  6838. if(g_eUserCostumes[pPlayer][ENTITY])
  6839. {
  6840. engfunc(EngFunc_RemoveEntity, g_eUserCostumes[pPlayer][ENTITY]);
  6841. g_eUserCostumes[pPlayer][ENTITY] = 0;
  6842. g_eUserCostumes[pPlayer][HIDE] = true;
  6843. return 1;
  6844. }
  6845. return 0;
  6846. }
  6847.  
  6848. public jbe_prisoners_divide_color(iTeam)
  6849. {
  6850. if(g_iDayMode != 1 || g_iAlivePlayersNum[1] < 2 || iTeam < 2 || iTeam > 4) return 0;
  6851. new const szLangPlayer[][] = {"JBE_HUD_ID_YOU_TEAM_ORANGE", "JBE_HUD_ID_YOU_TEAM_GRAY", "JBE_HUD_ID_YOU_TEAM_YELLOW", "JBE_HUD_ID_YOU_TEAM_BLUE"};
  6852. for(new iPlayer = 1, iColor; iPlayer <= g_iMaxPlayers; iPlayer++)
  6853. {
  6854. if(g_iUserTeam[iPlayer] != 1 || IsNotSetBit(g_iBitUserAlive, iPlayer) || IsSetBit(g_iBitUserFree, iPlayer)
  6855. || IsSetBit(g_iBitUserWanted, iPlayer) || IsSetBit(g_iBitUserSoccer, iPlayer) || IsSetBit(g_iBitUserBoxing, iPlayer)
  6856. || IsSetBit(g_iBitUserDuel, iPlayer)) continue;
  6857. UTIL_SayText(iPlayer, "!g[AlcatraZ-JailBreak] %L", iPlayer, szLangPlayer[iColor]);
  6858. set_pev(iPlayer, pev_skin, iColor);
  6859. if(++iColor >= iTeam) iColor = 0;
  6860. }
  6861. return 1;
  6862. }
  6863.  
  6864. public jbe_register_day_mode(szLang[32], iBlock, iTime)
  6865. {
  6866. param_convert(1);
  6867. new aDataDayMode[DATA_DAY_MODE];
  6868. copy(aDataDayMode[LANG_MODE], charsmax(aDataDayMode[LANG_MODE]), szLang);
  6869. aDataDayMode[MODE_BLOCK_DAYS] = iBlock;
  6870. aDataDayMode[MODE_TIMER] = iTime;
  6871. ArrayPushArray(g_aDataDayMode, aDataDayMode);
  6872. g_iDayModeListSize++;
  6873. return g_iDayModeListSize - 1;
  6874. }
  6875.  
  6876. public jbe_get_user_voice(pPlayer) return IsSetBit(g_iBitUserVoice, pPlayer);
  6877. public jbe_set_user_voice(pPlayer)
  6878. {
  6879. if(g_iDayMode != 1 && g_iDayMode != 2 || g_iUserTeam[pPlayer] != 1 || IsNotSetBit(g_iBitUserAlive, pPlayer)) return 0;
  6880. SetBit(g_iBitUserVoice, pPlayer);
  6881. return 1;
  6882. }
  6883. public jbe_set_user_voice_next_round(pPlayer)
  6884. {
  6885. if(g_iUserTeam[pPlayer] != 1) return 0;
  6886. SetBit(g_iBitUserVoiceNextRound, pPlayer);
  6887. return 1;
  6888. }
  6889.  
  6890. public _jbe_get_user_rendering(pPlayer, &iRenderFx, &iRed, &iGreen, &iBlue, &iRenderMode, &iRenderAmt)
  6891. {
  6892. for(new i = 2; i <= 7; i++) param_convert(i);
  6893. jbe_get_user_rendering(pPlayer, iRenderFx, iRed, iGreen, iBlue, iRenderMode, iRenderAmt);
  6894. }
  6895. public jbe_get_user_rendering(pPlayer, &iRenderFx, &iRed, &iGreen, &iBlue, &iRenderMode, &iRenderAmt)
  6896. {
  6897. new Float:fRenderColor[3];
  6898. iRenderFx = pev(pPlayer, pev_renderfx);
  6899. pev(pPlayer, pev_rendercolor, fRenderColor);
  6900. iRed = floatround(fRenderColor[0]);
  6901. iGreen = floatround(fRenderColor[1]);
  6902. iBlue = floatround(fRenderColor[2]);
  6903. iRenderMode = pev(pPlayer, pev_rendermode);
  6904. new Float:fRenderAmt;
  6905. pev(pPlayer, pev_renderamt, fRenderAmt);
  6906. iRenderAmt = floatround(fRenderAmt);
  6907. }
  6908. public jbe_set_user_rendering(pPlayer, iRenderFx, iRed, iGreen, iBlue, iRenderMode, iRenderAmt)
  6909. {
  6910. new Float:flRenderColor[3];
  6911. flRenderColor[0] = float(iRed);
  6912. flRenderColor[1] = float(iGreen);
  6913. flRenderColor[2] = float(iBlue);
  6914. set_pev(pPlayer, pev_renderfx, iRenderFx);
  6915. set_pev(pPlayer, pev_rendercolor, flRenderColor);
  6916. set_pev(pPlayer, pev_rendermode, iRenderMode);
  6917. set_pev(pPlayer, pev_renderamt, float(iRenderAmt));
  6918. }
  6919. /*===== <- ?????? <- =====*///}
  6920.  
  6921. /*===== -> ????? -> =====*///{
  6922. stock fm_give_item(pPlayer, const szItem[])
  6923. {
  6924. new iEntity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szItem));
  6925. if(!pev_valid(iEntity)) return 0;
  6926. new Float:vecOrigin[3];
  6927. pev(pPlayer, pev_origin, vecOrigin);
  6928. set_pev(iEntity, pev_origin, vecOrigin);
  6929. set_pev(iEntity, pev_spawnflags, pev(iEntity, pev_spawnflags) | SF_NORESPAWN);
  6930. dllfunc(DLLFunc_Spawn, iEntity);
  6931. dllfunc(DLLFunc_Touch, iEntity, pPlayer);
  6932. if(pev(iEntity, pev_solid) != SOLID_NOT)
  6933. {
  6934. engfunc(EngFunc_RemoveEntity, iEntity);
  6935. return -1;
  6936. }
  6937. return iEntity;
  6938. }
  6939.  
  6940. stock fm_strip_user_weapons(pPlayer, iType = 0)
  6941. {
  6942. static iEntity, iszWeaponStrip = 0;
  6943. if(iszWeaponStrip || (iszWeaponStrip = engfunc(EngFunc_AllocString, "player_weaponstrip"))) iEntity = engfunc(EngFunc_CreateNamedEntity, iszWeaponStrip);
  6944. if(!pev_valid(iEntity)) return 0;
  6945. if(iType && get_user_weapon(pPlayer) != CSW_KNIFE)
  6946. {
  6947. engclient_cmd(pPlayer, "weapon_knife");
  6948. engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, MsgId_CurWeapon, {0.0, 0.0, 0.0}, pPlayer);
  6949. write_byte(1);
  6950. write_byte(CSW_KNIFE);
  6951. write_byte(0);
  6952. message_end();
  6953. }
  6954. dllfunc(DLLFunc_Spawn, iEntity);
  6955. dllfunc(DLLFunc_Use, iEntity, pPlayer);
  6956. engfunc(EngFunc_RemoveEntity, iEntity);
  6957. set_pdata_int(pPlayer, m_fHasPrimary, 0, linux_diff_player);
  6958. return 1;
  6959. }
  6960.  
  6961. stock fm_get_aiming_position(pPlayer, Float:vecReturn[3])
  6962. {
  6963. new Float:vecOrigin[3], Float:vecViewOfs[3], Float:vecAngle[3], Float:vecForward[3];
  6964. pev(pPlayer, pev_origin, vecOrigin);
  6965. pev(pPlayer, pev_view_ofs, vecViewOfs);
  6966. xs_vec_add(vecOrigin, vecViewOfs, vecOrigin);
  6967. pev(pPlayer, pev_v_angle, vecAngle);
  6968. engfunc(EngFunc_MakeVectors, vecAngle);
  6969. global_get(glb_v_forward, vecForward);
  6970. xs_vec_mul_scalar(vecForward, 8192.0, vecForward);
  6971. xs_vec_add(vecOrigin, vecForward, vecForward);
  6972. engfunc(EngFunc_TraceLine, vecOrigin, vecForward, DONT_IGNORE_MONSTERS, pPlayer, 0);
  6973. get_tr2(0, TR_vecEndPos, vecReturn);
  6974. }
  6975.  
  6976. stock fm_set_kvd(pEntity, const szClassName[], const szKeyName[], const szValue[])
  6977. {
  6978. set_kvd(0, KV_ClassName, szClassName);
  6979. set_kvd(0, KV_KeyName, szKeyName);
  6980. set_kvd(0, KV_Value, szValue);
  6981. set_kvd(0, KV_fHandled, 0);
  6982. return dllfunc(DLLFunc_KeyValue, pEntity, 0);
  6983. }
  6984.  
  6985. stock fm_get_user_bpammo(pPlayer, iWeaponId)
  6986. {
  6987. new iOffset;
  6988. switch(iWeaponId)
  6989. {
  6990. case CSW_AWP: iOffset = 377; // ammo_338magnum
  6991. case CSW_SCOUT, CSW_AK47, CSW_G3SG1: iOffset = 378; // ammo_762nato
  6992. case CSW_M249: iOffset = 379; // ammo_556natobox
  6993. case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: iOffset = 380; // ammo_556nato
  6994. case CSW_M3, CSW_XM1014: iOffset = 381; // ammo_buckshot
  6995. case CSW_USP, CSW_UMP45, CSW_MAC10: iOffset = 382; // ammo_45acp
  6996. case CSW_FIVESEVEN, CSW_P90: iOffset = 383; // ammo_57mm
  6997. case CSW_DEAGLE: iOffset = 384; // ammo_50ae
  6998. case CSW_P228: iOffset = 385; // ammo_357sig
  6999. case CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP, CSW_ELITE: iOffset = 386; // ammo_9mm
  7000. case CSW_FLASHBANG: iOffset = 387;
  7001. case CSW_HEGRENADE: iOffset = 388;
  7002. case CSW_SMOKEGRENADE: iOffset = 389;
  7003. case CSW_C4: iOffset = 390;
  7004. default: return 0;
  7005. }
  7006. return get_pdata_int(pPlayer, iOffset, linux_diff_player);
  7007. }
  7008.  
  7009. stock fm_set_user_bpammo(pPlayer, iWeaponId, iAmount)
  7010. {
  7011. new iOffset;
  7012. switch(iWeaponId)
  7013. {
  7014. case CSW_AWP: iOffset = 377; // ammo_338magnum
  7015. case CSW_SCOUT, CSW_AK47, CSW_G3SG1: iOffset = 378; // ammo_762nato
  7016. case CSW_M249: iOffset = 379; // ammo_556natobox
  7017. case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: iOffset = 380; // ammo_556nato
  7018. case CSW_M3, CSW_XM1014: iOffset = 381; // ammo_buckshot
  7019. case CSW_USP, CSW_UMP45, CSW_MAC10: iOffset = 382; // ammo_45acp
  7020. case CSW_FIVESEVEN, CSW_P90: iOffset = 383; // ammo_57mm
  7021. case CSW_DEAGLE: iOffset = 384; // ammo_50ae
  7022. case CSW_P228: iOffset = 385; // ammo_357sig
  7023. case CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP, CSW_ELITE: iOffset = 386; // ammo_9mm
  7024. case CSW_FLASHBANG: iOffset = 387;
  7025. case CSW_HEGRENADE: iOffset = 388;
  7026. case CSW_SMOKEGRENADE: iOffset = 389;
  7027. case CSW_C4: iOffset = 390;
  7028. default: return;
  7029. }
  7030. set_pdata_int(pPlayer, iOffset, iAmount, linux_diff_player);
  7031. }
  7032.  
  7033. stock xs_vec_add(const Float:vec1[], const Float:vec2[], Float:out[])
  7034. {
  7035. out[0] = vec1[0] + vec2[0];
  7036. out[1] = vec1[1] + vec2[1];
  7037. out[2] = vec1[2] + vec2[2];
  7038. }
  7039.  
  7040. stock xs_vec_mul_scalar(const Float:vec[], Float:scalar, Float:out[])
  7041. {
  7042. out[0] = vec[0] * scalar;
  7043. out[1] = vec[1] * scalar;
  7044. out[2] = vec[2] * scalar;
  7045. }
  7046.  
  7047. stock drop_user_weapons(pPlayer, iType)
  7048. {
  7049. new iWeaponsId[32], iNum;
  7050. get_user_weapons(pPlayer, iWeaponsId, iNum);
  7051. if(iType) iType = (1<<CSW_GLOCK18|1<<CSW_USP|1<<CSW_P228|1<<CSW_DEAGLE|1<<CSW_ELITE|1<<CSW_FIVESEVEN);
  7052. else iType = (1<<CSW_M3|1<<CSW_XM1014|1<<CSW_MAC10|1<<CSW_TMP|1<<CSW_MP5NAVY|1<<CSW_UMP45|1<<CSW_P90|1<<CSW_GALIL|1<<CSW_FAMAS|1<<CSW_AK47|1<<CSW_M4A1|1<<CSW_SCOUT|1<<CSW_SG552|1<<CSW_AUG|1<<CSW_AWP|1<<CSW_G3SG1|1<<CSW_SG550|1<<CSW_M249);
  7053. for(new i; i < iNum; i++)
  7054. {
  7055. if(iType & (1<<iWeaponsId[i]))
  7056. {
  7057. new szWeaponName[24];
  7058. get_weaponname(iWeaponsId[i], szWeaponName, charsmax(szWeaponName));
  7059. engclient_cmd(pPlayer, "drop", szWeaponName);
  7060. }
  7061. }
  7062. }
  7063.  
  7064. stock ham_strip_weapon_name(pPlayer, const szWeaponName[])
  7065. {
  7066. new iEntity;
  7067. while((iEntity = engfunc(EngFunc_FindEntityByString, iEntity, "classname", szWeaponName)) && pev(iEntity, pev_owner) != pPlayer) {}
  7068. if(!iEntity) return 0;
  7069. new iWeaponId = get_weaponid(szWeaponName);
  7070. if(get_user_weapon(pPlayer) == iWeaponId) ExecuteHamB(Ham_Weapon_RetireWeapon, iEntity);
  7071. if(!ExecuteHamB(Ham_RemovePlayerItem, pPlayer, iEntity)) return 0;
  7072. ExecuteHamB(Ham_Item_Kill, iEntity);
  7073. set_pev(pPlayer, pev_weapons, pev(pPlayer, pev_weapons) & ~(1<<iWeaponId));
  7074. return 1;
  7075. }
  7076.  
  7077. stock UTIL_SendAudio(pPlayer, iPitch = 100, const szPathSound[], any:...)
  7078. {
  7079. new szBuffer[128];
  7080. if(numargs() > 3) vformat(szBuffer, charsmax(szBuffer), szPathSound, 4);
  7081. else copy(szBuffer, charsmax(szBuffer), szPathSound);
  7082. switch(pPlayer)
  7083. {
  7084. case 0:
  7085. {
  7086. message_begin(MSG_BROADCAST, MsgId_SendAudio);
  7087. write_byte(pPlayer);
  7088. write_string(szBuffer);
  7089. write_short(iPitch);
  7090. message_end();
  7091. }
  7092. default:
  7093. {
  7094. engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, MsgId_SendAudio, {0.0, 0.0, 0.0}, pPlayer);
  7095. write_byte(pPlayer);
  7096. write_string(szBuffer);
  7097. write_short(iPitch);
  7098. message_end();
  7099. }
  7100. }
  7101. }
  7102.  
  7103. stock UTIL_ScreenFade(pPlayer, iDuration, iHoldTime, iFlags, iRed, iGreen, iBlue, iAlpha, iReliable = 0)
  7104. {
  7105. switch(pPlayer)
  7106. {
  7107. case 0:
  7108. {
  7109. message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, MsgId_ScreenFade);
  7110. write_short(iDuration);
  7111. write_short(iHoldTime);
  7112. write_short(iFlags);
  7113. write_byte(iRed);
  7114. write_byte(iGreen);
  7115. write_byte(iBlue);
  7116. write_byte(iAlpha);
  7117. message_end();
  7118. }
  7119. default:
  7120. {
  7121. engfunc(EngFunc_MessageBegin, iReliable ? MSG_ONE : MSG_ONE_UNRELIABLE, MsgId_ScreenFade, {0.0, 0.0, 0.0}, pPlayer);
  7122. write_short(iDuration);
  7123. write_short(iHoldTime);
  7124. write_short(iFlags);
  7125. write_byte(iRed);
  7126. write_byte(iGreen);
  7127. write_byte(iBlue);
  7128. write_byte(iAlpha);
  7129. message_end();
  7130. }
  7131. }
  7132. }
  7133.  
  7134. stock UTIL_ScreenShake(pPlayer, iAmplitude, iDuration, iFrequency, iReliable = 0)
  7135. {
  7136. engfunc(EngFunc_MessageBegin, iReliable ? MSG_ONE : MSG_ONE_UNRELIABLE, MsgId_ScreenShake, {0.0, 0.0, 0.0}, pPlayer);
  7137. write_short(iAmplitude);
  7138. write_short(iDuration);
  7139. write_short(iFrequency);
  7140. message_end();
  7141. }
  7142.  
  7143. stock UTIL_SayText(pPlayer, const szMessage[], any:...)
  7144. {
  7145. new szBuffer[190];
  7146. if(numargs() > 2) vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
  7147. else copy(szBuffer, charsmax(szBuffer), szMessage);
  7148. while(replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
  7149. while(replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
  7150. while(replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
  7151. switch(pPlayer)
  7152. {
  7153. case 0:
  7154. {
  7155. for(new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
  7156. {
  7157. if(IsNotSetBit(g_iBitUserConnected, iPlayer)) continue;
  7158. engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, MsgId_SayText, {0.0, 0.0, 0.0}, iPlayer);
  7159. write_byte(iPlayer);
  7160. write_string(szBuffer);
  7161. message_end();
  7162. }
  7163. }
  7164. default:
  7165. {
  7166. engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, MsgId_SayText, {0.0, 0.0, 0.0}, pPlayer);
  7167. write_byte(pPlayer);
  7168. write_string(szBuffer);
  7169. message_end();
  7170. }
  7171. }
  7172. }
  7173.  
  7174. stock UTIL_WeaponAnimation(pPlayer, iAnimation)
  7175. {
  7176. set_pev(pPlayer, pev_weaponanim, iAnimation);
  7177. engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0.0, 0.0, 0.0}, pPlayer);
  7178. write_byte(iAnimation);
  7179. write_byte(0);
  7180. message_end();
  7181. }
  7182.  
  7183. stock UTIL_PlayerAnimation(pPlayer, const szAnimation[]) // ??????? ??????? KORD_12.7
  7184. {
  7185. new iAnimDesired, Float:flFrameRate, Float:flGroundSpeed, bool:bLoops;
  7186. if((iAnimDesired = lookup_sequence(pPlayer, szAnimation, flFrameRate, bLoops, flGroundSpeed)) == -1) iAnimDesired = 0;
  7187. new Float:flGametime = get_gametime();
  7188. set_pev(pPlayer, pev_frame, 0.0);
  7189. set_pev(pPlayer, pev_framerate, 1.0);
  7190. set_pev(pPlayer, pev_animtime, flGametime);
  7191. set_pev(pPlayer, pev_sequence, iAnimDesired);
  7192. set_pdata_int(pPlayer, m_fSequenceLoops, bLoops, linux_diff_animating);
  7193. set_pdata_int(pPlayer, m_fSequenceFinished, 0, linux_diff_animating);
  7194. set_pdata_float(pPlayer, m_flFrameRate, flFrameRate, linux_diff_animating);
  7195. set_pdata_float(pPlayer, m_flGroundSpeed, flGroundSpeed, linux_diff_animating);
  7196. set_pdata_float(pPlayer, m_flLastEventCheck, flGametime, linux_diff_animating);
  7197. set_pdata_int(pPlayer, m_Activity, ACT_RANGE_ATTACK1, linux_diff_player);
  7198. set_pdata_int(pPlayer, m_IdealActivity, ACT_RANGE_ATTACK1, linux_diff_player);
  7199. set_pdata_float(pPlayer, m_flLastAttackTime, flGametime, linux_diff_player);
  7200. }
  7201.  
  7202. stock CREATE_BEAMCYLINDER(Float:vecOrigin[3], iRadius, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0)
  7203. {
  7204. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0);
  7205. write_byte(TE_BEAMCYLINDER);
  7206. engfunc(EngFunc_WriteCoord, vecOrigin[0]);
  7207. engfunc(EngFunc_WriteCoord, vecOrigin[1]);
  7208. engfunc(EngFunc_WriteCoord, vecOrigin[2]);
  7209. engfunc(EngFunc_WriteCoord, vecOrigin[0]);
  7210. engfunc(EngFunc_WriteCoord, vecOrigin[1]);
  7211. engfunc(EngFunc_WriteCoord, vecOrigin[2] + 32.0 + iRadius * 2);
  7212. write_short(pSprite);
  7213. write_byte(iStartFrame);
  7214. write_byte(iFrameRate); // 0.1's
  7215. write_byte(iLife); // 0.1's
  7216. write_byte(iWidth);
  7217. write_byte(iAmplitude); // 0.01's
  7218. write_byte(iRed);
  7219. write_byte(iGreen);
  7220. write_byte(iBlue);
  7221. write_byte(iBrightness);
  7222. write_byte(iScrollSpeed); // 0.1's
  7223. message_end();
  7224. }
  7225.  
  7226. stock CREATE_BREAKMODEL(Float:vecOrigin[3], Float:vecSize[3] = {16.0, 16.0, 16.0}, Float:vecVelocity[3] = {25.0, 25.0, 25.0}, iRandomVelocity, pModel, iCount, iLife, iFlags)
  7227. {
  7228. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0);
  7229. write_byte(TE_BREAKMODEL);
  7230. engfunc(EngFunc_WriteCoord, vecOrigin[0]);
  7231. engfunc(EngFunc_WriteCoord, vecOrigin[1]);
  7232. engfunc(EngFunc_WriteCoord, vecOrigin[2] + 24);
  7233. engfunc(EngFunc_WriteCoord, vecSize[0]);
  7234. engfunc(EngFunc_WriteCoord, vecSize[1]);
  7235. engfunc(EngFunc_WriteCoord, vecSize[2]);
  7236. engfunc(EngFunc_WriteCoord, vecVelocity[0]);
  7237. engfunc(EngFunc_WriteCoord, vecVelocity[1]);
  7238. engfunc(EngFunc_WriteCoord, vecVelocity[2]);
  7239. write_byte(iRandomVelocity);
  7240. write_short(pModel);
  7241. write_byte(iCount); // 0.1's
  7242. write_byte(iLife); // 0.1's
  7243. write_byte(iFlags); // BREAK_GLASS 0x01, BREAK_METAL 0x02, BREAK_FLESH 0x04, BREAK_WOOD 0x08
  7244. message_end();
  7245. }
  7246.  
  7247. stock CREATE_BEAMFOLLOW(pEntity, pSptite, iLife, iWidth, iRed, iGreen, iBlue, iAlpha)
  7248. {
  7249. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  7250. write_byte(TE_BEAMFOLLOW);
  7251. write_short(pEntity);
  7252. write_short(pSptite);
  7253. write_byte(iLife); // 0.1's
  7254. write_byte(iWidth);
  7255. write_byte(iRed);
  7256. write_byte(iGreen);
  7257. write_byte(iBlue);
  7258. write_byte(iAlpha);
  7259. message_end();
  7260. }
  7261.  
  7262. stock CREATE_SPRITE(Float:vecOrigin[3], pSptite, iWidth, iAlpha)
  7263. {
  7264. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0);
  7265. write_byte(TE_SPRITE);
  7266. engfunc(EngFunc_WriteCoord, vecOrigin[0]);
  7267. engfunc(EngFunc_WriteCoord, vecOrigin[1]);
  7268. engfunc(EngFunc_WriteCoord, vecOrigin[2]);
  7269. write_short(pSptite);
  7270. write_byte(iWidth);
  7271. write_byte(iAlpha);
  7272. message_end();
  7273. }
  7274.  
  7275. stock CREATE_PLAYERATTACHMENT(pPlayer, iHeight = 50, pSprite, iLife)
  7276. {
  7277. message_begin(MSG_ALL, SVC_TEMPENTITY);
  7278. write_byte(TE_PLAYERATTACHMENT);
  7279. write_byte(pPlayer);
  7280. write_coord(iHeight);
  7281. write_short(pSprite);
  7282. write_short(iLife); // 0.1's
  7283. message_end();
  7284. }
  7285.  
  7286. stock CREATE_KILLPLAYERATTACHMENTS(pPlayer)
  7287. {
  7288. message_begin(MSG_ALL, SVC_TEMPENTITY);
  7289. write_byte(TE_KILLPLAYERATTACHMENTS);
  7290. write_byte(pPlayer);
  7291. message_end();
  7292. }
  7293.  
  7294. stock CREATE_SPRITETRAIL(Float:vecOrigin[3], pSprite, iCount, iLife, iScale, iVelocityAlongVector, iRandomVelocity)
  7295. {
  7296. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0);
  7297. write_byte(TE_SPRITETRAIL);
  7298. engfunc(EngFunc_WriteCoord, vecOrigin[0]); // start
  7299. engfunc(EngFunc_WriteCoord, vecOrigin[1]);
  7300. engfunc(EngFunc_WriteCoord, vecOrigin[2]);
  7301. engfunc(EngFunc_WriteCoord, vecOrigin[0]); // end
  7302. engfunc(EngFunc_WriteCoord, vecOrigin[1]);
  7303. engfunc(EngFunc_WriteCoord, vecOrigin[2]);
  7304. write_short(pSprite);
  7305. write_byte(iCount);
  7306. write_byte(iLife); // 0.1's
  7307. write_byte(iScale);
  7308. write_byte(iVelocityAlongVector);
  7309. write_byte(iRandomVelocity);
  7310. message_end();
  7311. }
  7312.  
  7313. stock CREATE_BEAMENTPOINT(pEntity, Float:vecOrigin[3], pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0)
  7314. {
  7315. message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  7316. write_byte(TE_BEAMENTPOINT);
  7317. write_short(pEntity);
  7318. engfunc(EngFunc_WriteCoord, vecOrigin[0]);
  7319. engfunc(EngFunc_WriteCoord, vecOrigin[1]);
  7320. engfunc(EngFunc_WriteCoord, vecOrigin[2]);
  7321. write_short(pSprite);
  7322. write_byte(iStartFrame);
  7323. write_byte(iFrameRate); // 0.1's
  7324. write_byte(iLife); // 0.1's
  7325. write_byte(iWidth);
  7326. write_byte(iAmplitude); // 0.01's
  7327. write_byte(iRed);
  7328. write_byte(iGreen);
  7329. write_byte(iBlue);
  7330. write_byte(iBrightness);
  7331. write_byte(iScrollSpeed); // 0.1's
  7332. message_end();
  7333. }
  7334.  
  7335. stock CREATE_KILLBEAM(pEntity)
  7336. {
  7337. message_begin(MSG_ALL, SVC_TEMPENTITY);
  7338. write_byte(TE_KILLBEAM);
  7339. write_short(pEntity);
  7340. message_end();
  7341. }
  7342. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  7343. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
  7344. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement