HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <amxmisc>
  3.  
  4. #define PLUGIN_VERSION "2.1.1"
  5. #define MAX_MENUS 20
  6.  
  7. enum
  8. {
  9. SECTION_DEFAULTS = 0,
  10. SECTION_SETTINGS,
  11. SECTION_MENUITEMS
  12. }
  13.  
  14. enum _:Settings
  15. {
  16. MENU_TITLE[128],
  17. MENU_TITLE_PAGE[128],
  18. MENU_PREFIX[32],
  19. MENU_BACKK[32],
  20. MENU_NEXT[32],
  21. MENU_EXITT[32],
  22. MENU_FLAG,
  23. MENU_TEAM,
  24. MENU_ALIVEONLY,
  25. MENU_ITEMS_PER_PAGE,
  26. MENU_REOPEN,
  27. MENU_ITEM_FORMAT[64],
  28. MENU_NOACCESS[160],
  29. MENU_NOTEAM[160],
  30. MENU_ALIVE[160],
  31. MENU_DEAD[160],
  32. MENU_SOUND[128]
  33. }
  34.  
  35. enum _:Items
  36. {
  37. Name[64],
  38. Command[64],
  39. Flag[5],
  40. Team,
  41. bool:UseFunc,
  42. Plugin[64],
  43. Function[64]
  44. }
  45.  
  46. new g_eDefaults[Settings],
  47. g_eSettings[MAX_MENUS][Settings],
  48. g_iTotalItems[MAX_MENUS],
  49. g_szMap[32],
  50. g_msgSayText
  51.  
  52. new Trie:g_tCommands,
  53. Array:g_aMenuItems[MAX_MENUS]
  54.  
  55. new const g_szAll[] = "#all"
  56. new const g_szItemField[] = "%item%"
  57. new const g_szNameField[] = "%name%"
  58. new const g_szUserIdField[] = "%userid%"
  59. new const g_szBlankField[] = "#blank"
  60. new const g_szTextField[] = "#text"
  61. new const g_szPlayersField[] = "#addplayers"
  62. new const g_szFunc[] = "do.func"
  63. new const g_szAMXX[] = ".amxx"
  64. new const g_szNewLine[2][] = { "%newline%", "^n" }
  65. new const g_szSayStuff[2][] = { "say ", "say_team " }
  66.  
  67. public plugin_init()
  68. {
  69. register_plugin("Simple Menu", PLUGIN_VERSION, "OciXCrom")
  70. register_cvar("SimpleMenu", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
  71. g_msgSayText = get_user_msgid("SayText")
  72. }
  73.  
  74. public plugin_precache()
  75. {
  76. for(new i; i < MAX_MENUS; i++)
  77. g_aMenuItems[i] = ArrayCreate(Items)
  78.  
  79. get_mapname(g_szMap, charsmax(g_szMap))
  80. g_tCommands = TrieCreate()
  81. fileRead()
  82. }
  83.  
  84. public plugin_end()
  85. {
  86. for(new i; i < MAX_MENUS; i++)
  87. ArrayDestroy(g_aMenuItems[i])
  88.  
  89. TrieDestroy(g_tCommands)
  90. }
  91.  
  92. fileRead()
  93. {
  94. new szConfigsName[256], szFilename[256]
  95. get_configsdir(szConfigsName, charsmax(szConfigsName))
  96. formatex(szFilename, charsmax(szFilename), "%s/SimpleMenu.ini", szConfigsName)
  97. new iFilePointer = fopen(szFilename, "rt")
  98.  
  99. if(iFilePointer)
  100. {
  101. new szData[256], szKey[128], szValue[128], szTeam[2], iSection, iSize
  102. new eItem[Items], iMenuId = -1, bool:blRead = true
  103.  
  104. while(!feof(iFilePointer))
  105. {
  106. fgets(iFilePointer, szData, charsmax(szData))
  107. trim(szData)
  108.  
  109. switch(szData[0])
  110. {
  111. case EOS, ';': continue
  112. case '-':
  113. {
  114. iSize = strlen(szData)
  115.  
  116. if(szData[iSize - 1] == '-')
  117. {
  118. szData[0] = ' '
  119. szData[iSize - 1] = ' '
  120. trim(szData)
  121.  
  122. if(contain(szData, "*") != -1)
  123. {
  124. strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '*')
  125. copy(szValue, strlen(szKey), g_szMap)
  126. blRead = equal(szValue, szKey) ? true : false
  127. }
  128. else
  129. blRead = equal(szData, g_szAll) || equali(szData, g_szMap)
  130. }
  131. else continue
  132. }
  133. case '[':
  134. {
  135. if(szData[strlen(szData) - 1] == ']')
  136. {
  137. if(containi(szData, "default settings") != -1)
  138. iSection = SECTION_DEFAULTS
  139. else if(containi(szData, "new menu") != -1)
  140. {
  141. iMenuId++
  142.  
  143. for(new i; i < sizeof(g_eDefaults); i++)
  144. g_eSettings[iMenuId][i] = g_eDefaults[i]
  145. }
  146. else if(containi(szData, "menu settings") != -1)
  147. {
  148. if(iMenuId < 0)
  149. iMenuId = 0
  150.  
  151. iSection = SECTION_SETTINGS
  152. }
  153. else if(containi(szData, "menu items") != -1)
  154. {
  155. if(iMenuId < 0)
  156. iMenuId = 0
  157.  
  158. iSection = SECTION_MENUITEMS
  159. }
  160. }
  161. else continue
  162. }
  163. default:
  164. {
  165. if(!blRead)
  166. continue
  167.  
  168. switch(iSection)
  169. {
  170. case SECTION_DEFAULTS:
  171. {
  172. strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
  173. trim(szKey); trim(szValue)
  174.  
  175. if(szValue[0] == EOS)
  176. continue
  177.  
  178. if(equal(szKey, "MENU_TITLE"))
  179. {
  180. if(contain(szValue, g_szNewLine[0]) != -1)
  181. replace_all(szValue, charsmax(szValue), g_szNewLine[0], g_szNewLine[1])
  182.  
  183. copy(g_eDefaults[MENU_TITLE], charsmax(g_eDefaults[MENU_TITLE]), szValue)
  184. }
  185. if(equal(szKey, "MENU_TITLE_PAGE"))
  186. {
  187. if(contain(szValue, g_szNewLine[0]) != -1)
  188. replace_all(szValue, charsmax(szValue), g_szNewLine[0], g_szNewLine[1])
  189.  
  190. copy(g_eDefaults[MENU_TITLE_PAGE], charsmax(g_eDefaults[MENU_TITLE_PAGE]), szValue)
  191. }
  192. else if(equal(szKey, "MENU_PREFIX"))
  193. copy(g_eDefaults[MENU_PREFIX], charsmax(g_eDefaults[MENU_PREFIX]), szValue)
  194. else if(equal(szKey, "MENU_BACK"))
  195. copy(g_eDefaults[MENU_BACKK], charsmax(g_eDefaults[MENU_BACKK]), szValue)
  196. else if(equal(szKey, "MENU_NEXT"))
  197. copy(g_eDefaults[MENU_NEXT], charsmax(g_eDefaults[MENU_NEXT]), szValue)
  198. else if(equal(szKey, "MENU_EXIT"))
  199. copy(g_eDefaults[MENU_EXITT], charsmax(g_eDefaults[MENU_EXITT]), szValue)
  200. else if(equal(szKey, "MENU_FLAG"))
  201. g_eDefaults[MENU_FLAG] = szValue[0] == '0' ? 0 : read_flags(szValue)
  202. else if(equal(szKey, "MENU_TEAM"))
  203. g_eDefaults[MENU_TEAM] = clamp(str_to_num(szValue), 0, 3)
  204. else if(equal(szKey, "MENU_ALIVEONLY"))
  205. g_eDefaults[MENU_ALIVEONLY] = str_to_num(szValue)
  206. else if(equal(szKey, "MENU_ITEMS_PER_PAGE"))
  207. g_eDefaults[MENU_ITEMS_PER_PAGE] = str_to_num(szValue)
  208. else if(equal(szKey, "MENU_REOPEN"))
  209. g_eDefaults[MENU_REOPEN] = str_to_num(szValue)
  210. else if(equal(szKey, "MENU_ITEM_FORMAT"))
  211. copy(g_eDefaults[MENU_ITEM_FORMAT], charsmax(g_eDefaults[MENU_ITEM_FORMAT]), szValue)
  212. else if(equal(szKey, "MENU_NOACCESS"))
  213. copy(g_eDefaults[MENU_NOACCESS], charsmax(g_eDefaults[MENU_NOACCESS]), szValue)
  214. else if(equal(szKey, "MENU_NOTEAM"))
  215. copy(g_eDefaults[MENU_NOTEAM], charsmax(g_eDefaults[MENU_NOTEAM]), szValue)
  216. else if(equal(szKey, "MENU_ALIVE"))
  217. copy(g_eDefaults[MENU_ALIVE], charsmax(g_eDefaults[MENU_ALIVE]), szValue)
  218. else if(equal(szKey, "MENU_DEAD"))
  219. copy(g_eDefaults[MENU_DEAD], charsmax(g_eDefaults[MENU_DEAD]), szValue)
  220. else if(equal(szKey, "MENU_SOUND"))
  221. {
  222. copy(g_eDefaults[MENU_SOUND], charsmax(g_eDefaults[MENU_SOUND]), szValue)
  223. precache_sound(szValue)
  224. }
  225. }
  226. case SECTION_SETTINGS:
  227. {
  228. strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
  229. trim(szKey); trim(szValue)
  230.  
  231. if(szValue[0] == EOS)
  232. continue
  233.  
  234. if(equal(szKey, "MENU_TITLE"))
  235. {
  236. if(contain(szValue, g_szNewLine[0]) != -1)
  237. replace_all(szValue, charsmax(szValue), g_szNewLine[0], g_szNewLine[1])
  238.  
  239. copy(g_eSettings[iMenuId][MENU_TITLE], charsmax(g_eSettings[][MENU_TITLE]), szValue)
  240. }
  241. if(equal(szKey, "MENU_TITLE_PAGE"))
  242. {
  243. if(contain(szValue, g_szNewLine[0]) != -1)
  244. replace_all(szValue, charsmax(szValue), g_szNewLine[0], g_szNewLine[1])
  245.  
  246. copy(g_eSettings[iMenuId][MENU_TITLE_PAGE], charsmax(g_eSettings[][MENU_TITLE_PAGE]), szValue)
  247. }
  248. else if(equal(szKey, "MENU_PREFIX"))
  249. copy(g_eSettings[iMenuId][MENU_PREFIX], charsmax(g_eSettings[][MENU_PREFIX]), szValue)
  250. else if(equal(szKey, "MENU_BACK"))
  251. copy(g_eSettings[iMenuId][MENU_BACKK], charsmax(g_eSettings[][MENU_BACKK]), szValue)
  252. else if(equal(szKey, "MENU_NEXT"))
  253. copy(g_eSettings[iMenuId][MENU_NEXT], charsmax(g_eSettings[][MENU_NEXT]), szValue)
  254. else if(equal(szKey, "MENU_EXIT"))
  255. copy(g_eSettings[iMenuId][MENU_EXITT], charsmax(g_eSettings[][MENU_EXITT]), szValue)
  256. else if(equal(szKey, "MENU_FLAG"))
  257. g_eSettings[iMenuId][MENU_FLAG] = szValue[0] == '0' ? 0 : read_flags(szValue)
  258. else if(equal(szKey, "MENU_TEAM"))
  259. g_eSettings[iMenuId][MENU_TEAM] = clamp(str_to_num(szValue), 0, 3)
  260. else if(equal(szKey, "MENU_ALIVEONLY"))
  261. g_eSettings[iMenuId][MENU_ALIVEONLY] = str_to_num(szValue)
  262. else if(equal(szKey, "MENU_ITEMS_PER_PAGE"))
  263. g_eSettings[iMenuId][MENU_ITEMS_PER_PAGE] = str_to_num(szValue)
  264. else if(equal(szKey, "MENU_REOPEN"))
  265. g_eSettings[iMenuId][MENU_REOPEN] = str_to_num(szValue)
  266. else if(equal(szKey, "MENU_OPEN"))
  267. {
  268. while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
  269. {
  270. trim(szKey); trim(szValue)
  271. register_clcmd(szKey, "cmdMenu")
  272. TrieSetCell(g_tCommands, szKey, iMenuId)
  273. }
  274. }
  275. else if(equal(szKey, "MENU_ITEM_FORMAT"))
  276. copy(g_eSettings[iMenuId][MENU_ITEM_FORMAT], charsmax(g_eSettings[][MENU_ITEM_FORMAT]), szValue)
  277. else if(equal(szKey, "MENU_NOACCESS"))
  278. copy(g_eSettings[iMenuId][MENU_NOACCESS], charsmax(g_eSettings[][MENU_NOACCESS]), szValue)
  279. else if(equal(szKey, "MENU_NOTEAM"))
  280. copy(g_eSettings[iMenuId][MENU_NOTEAM], charsmax(g_eSettings[][MENU_NOTEAM]), szValue)
  281. else if(equal(szKey, "MENU_ALIVE"))
  282. copy(g_eSettings[iMenuId][MENU_ALIVE], charsmax(g_eSettings[][MENU_ALIVE]), szValue)
  283. else if(equal(szKey, "MENU_DEAD"))
  284. copy(g_eSettings[iMenuId][MENU_DEAD], charsmax(g_eSettings[][MENU_DEAD]), szValue)
  285. else if(equal(szKey, "MENU_SOUND"))
  286. {
  287. copy(g_eSettings[iMenuId][MENU_SOUND], charsmax(g_eSettings[][MENU_SOUND]), szValue)
  288. precache_sound(szValue)
  289. }
  290. }
  291. case SECTION_MENUITEMS:
  292. {
  293. parse(szData, eItem[Name], charsmax(eItem[Name]), eItem[Command], charsmax(eItem[Command]), eItem[Flag], charsmax(eItem[Flag]), szTeam, charsmax(szTeam))
  294. eItem[UseFunc] = bool:(equal(eItem[Command], g_szFunc, charsmax(g_szFunc)))
  295. eItem[Team] = str_to_num(szTeam)
  296.  
  297. if(eItem[UseFunc])
  298. {
  299. replace(eItem[Command], charsmax(eItem[Command]), g_szFunc, "")
  300. replace(eItem[Command], charsmax(eItem[Command]), "(", "")
  301. replace(eItem[Command], charsmax(eItem[Command]), ")", "")
  302. strtok(eItem[Command], eItem[Plugin], charsmax(eItem[Plugin]), eItem[Function], charsmax(eItem[Function]), ',')
  303. trim(eItem[Plugin]); trim(eItem[Function])
  304.  
  305. if(contain(eItem[Plugin], g_szAMXX) == -1)
  306. add(eItem[Plugin], charsmax(eItem[Plugin]), g_szAMXX)
  307. }
  308.  
  309. ArrayPushArray(g_aMenuItems[iMenuId], eItem)
  310. eItem[Flag][0] = EOS
  311. szTeam[0] = EOS
  312. g_iTotalItems[iMenuId]++
  313. }
  314. }
  315. }
  316. }
  317. }
  318.  
  319. fclose(iFilePointer)
  320. }
  321. }
  322.  
  323. public cmdMenu(id)
  324. {
  325. new szCommand[64], szArgs[32], iMenuId
  326. read_argv(0, szCommand, charsmax(szCommand))
  327.  
  328. if(equal(szCommand[0], g_szSayStuff[0], 3) || equal(szCommand[0], g_szSayStuff[1], 8))
  329. {
  330. read_argv(1, szArgs, charsmax(szArgs))
  331. remove_quotes(szArgs)
  332. format(szCommand, charsmax(szCommand), "%s %s", szCommand, szArgs)
  333. }
  334.  
  335. if(TrieGetCell(g_tCommands, szCommand, iMenuId))
  336. menuMain(id, iMenuId)
  337. else
  338. return PLUGIN_CONTINUE
  339.  
  340. return PLUGIN_HANDLED
  341. }
  342.  
  343. menuMain(id, iMenuId, iPage = 0)
  344. {
  345. if(g_eSettings[iMenuId][MENU_FLAG] && !(get_user_flags(id) & g_eSettings[iMenuId][MENU_FLAG]))
  346. {
  347. ColorChat(id, "%s %s", g_eSettings[iMenuId][MENU_PREFIX], g_eSettings[iMenuId][MENU_NOACCESS])
  348. return PLUGIN_HANDLED
  349. }
  350.  
  351. if(!get_team_access(id, iMenuId))
  352. {
  353. ColorChat(id, "%s %s", g_eSettings[iMenuId][MENU_PREFIX], g_eSettings[iMenuId][MENU_NOTEAM])
  354. return PLUGIN_HANDLED
  355. }
  356.  
  357. if(!get_alive_access(id, iMenuId))
  358. {
  359. ColorChat(id, "%s %s", g_eSettings[iMenuId][MENU_PREFIX], g_eSettings[iMenuId][MENU_ALIVEONLY] == 1 ? g_eSettings[iMenuId][MENU_ALIVE] : g_eSettings[iMenuId][MENU_DEAD])
  360. return PLUGIN_HANDLED
  361. }
  362.  
  363. if(g_eSettings[iMenuId][MENU_SOUND][0] != EOS)
  364. client_cmd(id, "spk %s", g_eSettings[iMenuId][MENU_SOUND])
  365.  
  366. new szItem[128], szData[20]
  367. new eItem[Items], iMenu = menu_create(g_eSettings[iMenuId][MENU_TITLE], "handlerMain")
  368.  
  369. for(new i, iTeam = get_user_team(id); i < g_iTotalItems[iMenuId]; i++)
  370. {
  371. ArrayGetArray(g_aMenuItems[iMenuId], i, eItem)
  372.  
  373. if(eItem[Team] && eItem[Team] != iTeam)
  374. continue
  375. else if(equal(eItem[Name], g_szBlankField))
  376. menu_addblank(iMenu, str_to_num(eItem[Command]))
  377. else if(equal(eItem[Name], g_szTextField))
  378. menu_addtext(iMenu, eItem[Command], str_to_num(eItem[Flag]))
  379. else if(equal(eItem[Name], g_szPlayersField))
  380. {
  381. new szName[32], iPlayers[32], iPnum
  382. get_players(iPlayers, iPnum, get_flag(eItem[Flag], "c") ? "a" : "")
  383.  
  384. for(new j, iPlayer; j < iPnum; j++)
  385. {
  386. iPlayer = iPlayers[j]
  387.  
  388. if(iPlayer == id)
  389. {
  390. if(!get_flag(eItem[Flag], "b"))
  391. continue
  392. }
  393. else if(get_user_flags(iPlayer) & ADMIN_IMMUNITY)
  394. {
  395. if(get_flag(eItem[Flag], "a"))
  396. continue
  397. }
  398.  
  399. get_user_name(iPlayer, szName, charsmax(szName))
  400. copy(szItem, charsmax(szItem), g_eSettings[iMenuId][MENU_ITEM_FORMAT])
  401. replace_all(szItem, charsmax(szItem), g_szItemField, szName)
  402. formatex(szData, charsmax(szData), "%i %i %i p", iMenuId, i, get_user_userid(iPlayer))
  403. menu_additem(iMenu, szItem, szData)
  404. }
  405. }
  406. else
  407. {
  408. copy(szItem, charsmax(szItem), g_eSettings[iMenuId][MENU_ITEM_FORMAT])
  409. replace_all(szItem, charsmax(szItem), g_szItemField, eItem[Name])
  410. formatex(szData, charsmax(szData), "%i %i", iMenuId, i)
  411. menu_additem(iMenu, szItem, szData, read_flags(eItem[Flag]))
  412. }
  413. }
  414.  
  415. if(menu_pages(iMenu) > 1)
  416. {
  417. new szTitle[256]
  418. formatex(szTitle, charsmax(szTitle), "%s %s", g_eSettings[iMenuId][MENU_TITLE], g_eSettings[iMenuId][MENU_TITLE_PAGE])
  419. menu_setprop(iMenu, MPROP_TITLE, szTitle)
  420. }
  421.  
  422. menu_setprop(iMenu, MPROP_BACKNAME, g_eSettings[iMenuId][MENU_BACKK])
  423. menu_setprop(iMenu, MPROP_NEXTNAME, g_eSettings[iMenuId][MENU_NEXT])
  424. menu_setprop(iMenu, MPROP_EXITNAME, g_eSettings[iMenuId][MENU_EXITT])
  425. menu_setprop(iMenu, MPROP_PERPAGE, g_eSettings[iMenuId][MENU_ITEMS_PER_PAGE])
  426. menu_display(id, iMenu, iPage)
  427. return PLUGIN_HANDLED
  428. }
  429.  
  430. public handlerMain(id, iMenu, iItem)
  431. {
  432. if(iItem == MENU_EXIT)
  433. goto @DESTROY
  434.  
  435. new szData[20], szMenuId[3], szKey[3], szUserId[5], iMenuId, iKey, iUserId, iAccess, iCallback
  436. menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), .callback = iCallback)
  437. parse(szData, szMenuId, charsmax(szMenuId), szKey, charsmax(szKey), szUserId, charsmax(szUserId))
  438.  
  439. iMenuId = str_to_num(szMenuId)
  440. iKey = str_to_num(szKey)
  441. iUserId = str_to_num(szUserId)
  442.  
  443. if(get_alive_access(id, iMenuId) && get_team_access(id, iMenuId))
  444. {
  445. new eItem[Items]
  446. ArrayGetArray(g_aMenuItems[iMenuId], iKey, eItem)
  447.  
  448. if(szData[strlen(szData) - 1] == 'p')
  449. {
  450. new szCommand[64]
  451. copy(szCommand, charsmax(szCommand), eItem[Command])
  452.  
  453. if(get_flag(szCommand, g_szNameField))
  454. {
  455. new szName[32]
  456. get_user_name(find_player("k", iUserId), szName, charsmax(szName))
  457. replace_all(szCommand, charsmax(szCommand), g_szNameField, szName)
  458. }
  459.  
  460. if(get_flag(szCommand, g_szUserIdField))
  461. replace_all(szCommand, charsmax(szCommand), g_szUserIdField, szUserId)
  462.  
  463. client_cmd(id, szCommand)
  464. }
  465. else
  466. {
  467. if(eItem[UseFunc])
  468. {
  469. callfunc_begin(eItem[Function], eItem[Plugin])
  470. callfunc_push_int(id)
  471. callfunc_end()
  472. }
  473. else
  474. client_cmd(id, eItem[Command])
  475. }
  476. }
  477.  
  478. if(g_eSettings[iMenuId][MENU_REOPEN])
  479. {
  480. new iMenu2, iPage
  481. player_menu_info(id, iMenu2, iMenu2, iPage)
  482. menu_destroy(iMenu)
  483. menuMain(id, iMenuId, iPage)
  484. return PLUGIN_HANDLED
  485. }
  486.  
  487. @DESTROY:
  488. menu_destroy(iMenu)
  489. return PLUGIN_HANDLED
  490. }
  491.  
  492. ColorChat(const id, const szInput[], any:...)
  493. {
  494. new iPlayers[32], iCount = 1
  495. static szMessage[191]
  496. vformat(szMessage, charsmax(szMessage), szInput, 3)
  497.  
  498. replace_all(szMessage, charsmax(szMessage), "!g", "^4")
  499. replace_all(szMessage, charsmax(szMessage), "!n", "^1")
  500. replace_all(szMessage, charsmax(szMessage), "!t", "^3")
  501.  
  502. if(id)
  503. iPlayers[0] = id
  504. else
  505. get_players(iPlayers, iCount, "ch")
  506.  
  507. for(new i; i < iCount; i++)
  508. {
  509. if(is_user_connected(iPlayers[i]))
  510. {
  511. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayers[i])
  512. write_byte(iPlayers[i])
  513. write_string(szMessage)
  514. message_end()
  515. }
  516. }
  517. }
  518.  
  519. bool:get_flag(szString[], const szFlag[])
  520. return (contain(szString, szFlag) != -1) ? true : false
  521.  
  522. bool:get_alive_access(id, iMenuId)
  523. return ((g_eSettings[iMenuId][MENU_ALIVEONLY] == 1 && !is_user_alive(id)) || (g_eSettings[iMenuId][MENU_ALIVEONLY] == 2 && is_user_alive(id))) ? false : true
  524.  
  525. bool:get_team_access(id, iMenuId)
  526. return (!g_eSettings[iMenuId][MENU_TEAM] || g_eSettings[iMenuId][MENU_TEAM] == get_user_team(id))