HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*----------------------------------------------------------------------------------------------------
  2.  
  3. CZ Bot Menu 2.2 by vato loco [GE-S]
  4.  
  5.  
  6. Commands:
  7. amx_czbmenu -> Displays The CZ Bot Main Menu
  8. amx_czbmenu_enable < 1 | on / 0 | off > -> Turns Plugin on/off
  9.  
  10. Cvars:
  11. bot_enabled <0/1> -> [Default: 1 ] Turns Plugin on/off
  12. bot_autokill <0/1> -> [Default: 1 ] Turns Bot Autokill on/off
  13. bot_balance <0/1> -> [Default: 1 ] Turns Bot Balance on/off
  14. bot_autoadd <Num> -> [Default: 10 ] How Many Bot Will Join Automatic The Server
  15.  
  16. Credits:
  17. EKS
  18. DokTor
  19.  
  20. FAQ:
  21. Do Not Change Cvar "bot_maxslots" !!!
  22. Cvar Will Be Set Automatic By The Number Of Server Slots !!!
  23.  
  24. Fordította: BBk - Death of Legend
  25. ------------------------------------------------------------------------------------------------------*/
  26.  
  27. #include <amxmodx>
  28. #include <amxmisc>
  29.  
  30. #define TASK_CZBOT_MODE 13371
  31. #define TASK_CZBOT_SLOTS 14471
  32.  
  33. #define MENU_KEYS_CZBOT MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_0
  34. #define MENU_KEYS_WEAPON MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
  35. #define MENU_KEYS_CONTROL MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_9|MENU_KEY_0
  36. #define MENU_KEYS_SPECI MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_9|MENU_KEY_0
  37.  
  38. new g_bot_mp_autoteambalance
  39. new g_bot_mp_limitteams
  40.  
  41. new g_bot_enabled
  42. new g_bot_diff
  43. new g_bot_balance
  44. new g_bot_autokill
  45. new g_bot_jap
  46. new g_bot_quota
  47. new g_bot_max
  48. new g_bot_maxslots
  49.  
  50. new g_bot_pistols
  51. new g_bot_shotguns
  52. new g_bot_machine_guns
  53. new g_bot_sub_mguns
  54. new g_bot_rifles
  55. new g_bot_snipers
  56. new g_bot_shield
  57. new g_bot_grenades
  58.  
  59. new bool:g_bBotAddT
  60. new bool:g_bBotAddCt
  61.  
  62. new g_SyncCzBot
  63.  
  64. new g_iPlayerCounter
  65. new g_iMaxPlayers
  66.  
  67. public plugin_init() {
  68.  
  69. register_plugin("CZ Bot Menu vl", "2.2", "vato loco [GE-S]")
  70.  
  71. register_menu("CZ Bot Menu",MENU_KEYS_CZBOT,"menu_handler_czbot")
  72. register_menu("CZ Bot Fegyver Menu",MENU_KEYS_WEAPON,"menu_handler_weapon")
  73. register_menu("CZ Bot Vezerlo Menu",MENU_KEYS_CONTROL,"menu_handler_control")
  74. register_menu("CZ Bot Hozzadas Menu",MENU_KEYS_SPECI,"menu_handler_speci")
  75.  
  76. register_concmd("amx_czbmenu","czbot_menu_show",ADMIN_KICK)
  77. register_concmd("amx_czbmenu_enable","enable_czbotmenu",ADMIN_KICK,"amx_czbmenu_enable < 1 | on / 0 | off >")
  78.  
  79. register_event("DeathMsg","event_death","a")
  80.  
  81. g_bot_enabled = register_cvar("bot_enabled","1")
  82. g_bot_autokill = register_cvar("bot_autokill","1")
  83. g_bot_balance = register_cvar("bot_balance","1")
  84. g_bot_max = register_cvar("bot_autoadd","10")
  85.  
  86. //Do Not Change Cvar"bot_maxslots" !!! Read FAQ !!!
  87. g_bot_maxslots = register_cvar("bot_maxslots","32")
  88.  
  89. g_bot_pistols = get_cvar_pointer("bot_allow_pistols")
  90. g_bot_shotguns = get_cvar_pointer("bot_allow_shotguns")
  91. g_bot_machine_guns = get_cvar_pointer("bot_allow_machine_guns")
  92. g_bot_sub_mguns = get_cvar_pointer("bot_allow_sub_machine_guns")
  93. g_bot_rifles = get_cvar_pointer("bot_allow_rifles")
  94. g_bot_snipers = get_cvar_pointer("bot_allow_snipers")
  95. g_bot_shield = get_cvar_pointer("bot_allow_shield")
  96. g_bot_grenades = get_cvar_pointer("bot_allow_grenades")
  97.  
  98. g_bot_quota = get_cvar_pointer("bot_quota")
  99. g_bot_diff = get_cvar_pointer("bot_difficulty")
  100. g_bot_jap = get_cvar_pointer("bot_join_after_player")
  101.  
  102. g_bot_mp_autoteambalance = get_cvar_pointer("mp_autoteambalance")
  103. g_bot_mp_limitteams = get_cvar_pointer("mp_limitteams")
  104.  
  105. set_pcvar_num(g_bot_mp_autoteambalance, 0)
  106. set_pcvar_num(g_bot_mp_limitteams, 0)
  107.  
  108. set_cvar_string("bot_join_team", "any")
  109.  
  110. g_SyncCzBot = CreateHudSyncObj()
  111.  
  112. g_iMaxPlayers = get_maxplayers()
  113. }
  114.  
  115. public plugin_cfg() {
  116.  
  117. if(!get_pcvar_num(g_bot_enabled))
  118. return PLUGIN_HANDLED
  119.  
  120. set_task(1.0, "check_players", TASK_CZBOT_MODE, _, _, "b")
  121. set_task(3.0, "map_loaded", TASK_CZBOT_SLOTS)
  122.  
  123. return PLUGIN_CONTINUE
  124. }
  125.  
  126. public client_putinserver(id) {
  127.  
  128. if(!is_user_bot(id)) {
  129.  
  130. g_iPlayerCounter++
  131. }
  132. else {
  133. if(g_bBotAddT) {
  134. g_bBotAddT = false
  135. }
  136. if(g_bBotAddCt) {
  137. g_bBotAddCt = false
  138. }
  139. }
  140. }
  141.  
  142. public client_disconnect(id) {
  143.  
  144. if(!is_user_bot(id)) {
  145.  
  146. g_iPlayerCounter--
  147. }
  148. }
  149.  
  150. public enable_czbotmenu(id, lvl, cid) {
  151.  
  152. if(!cmd_access(id, lvl, cid, 2))
  153. return PLUGIN_HANDLED
  154.  
  155. new szarg[8]
  156. read_argv(1,szarg,7)
  157.  
  158. if(equal(szarg,"1") || equal(szarg,"on")) {
  159.  
  160. set_pcvar_num(g_bot_enabled, 1)
  161. client_print(id,print_chat,"[CZ-BOT] Plugin Engedelyezve !!!")
  162.  
  163. if(!task_exists(TASK_CZBOT_MODE)) {
  164.  
  165. set_task(1.0, "check_players", TASK_CZBOT_MODE, _, _, "b")
  166. set_task(3.0, "map_loaded", TASK_CZBOT_SLOTS)
  167. }
  168. }
  169. else if(equal(szarg,"0") || equal(szarg,"off")) {
  170.  
  171. set_pcvar_num(g_bot_enabled, 0)
  172. client_print(id,print_chat,"[CZ-BOT] Plugin Letiltva !!!")
  173. }
  174. return PLUGIN_HANDLED
  175. }
  176.  
  177. public map_loaded() {
  178.  
  179. setBotSlots(g_iMaxPlayers)
  180. }
  181.  
  182. public check_players() {
  183.  
  184. if(get_pcvar_num(g_bot_enabled)) {
  185.  
  186. if(get_pcvar_num(g_bot_balance)) {
  187.  
  188. new iPlayerNum
  189.  
  190. for(new i = 1 ; i <= g_iMaxPlayers ; i++) {
  191.  
  192. if(!is_user_bot(i)) {
  193.  
  194. new team = get_user_team(i)
  195. if(team == 1 || team == 2)
  196. ++iPlayerNum
  197. }
  198. }
  199. if(iPlayerNum <= get_pcvar_num(g_bot_max)) {
  200.  
  201. set_pcvar_num(g_bot_quota, get_pcvar_num(g_bot_max) - iPlayerNum)
  202. }
  203. else if(iPlayerNum > get_pcvar_num(g_bot_max)) {
  204.  
  205. if(get_pcvar_num(g_bot_quota) != 0) {
  206.  
  207. set_pcvar_num(g_bot_quota, 0)
  208.  
  209. for(new bi = 1 ; bi <= g_iMaxPlayers ; bi++) {
  210.  
  211. if(is_user_bot(bi)){
  212.  
  213. new userid = get_user_userid(bi)
  214. server_cmd("kick #%d", userid)
  215. }
  216. }
  217. return PLUGIN_HANDLED
  218. }
  219. return PLUGIN_HANDLED
  220. }
  221. check_balance()
  222. }
  223. else {
  224. if(get_pcvar_num(g_bot_max) < get_pcvar_num(g_bot_maxslots)) {
  225.  
  226. set_pcvar_num(g_bot_quota, get_pcvar_num(g_bot_max))
  227.  
  228. return PLUGIN_HANDLED
  229. }
  230. }
  231. }
  232. else {
  233. if(task_exists(TASK_CZBOT_MODE)) {
  234.  
  235. remove_task(TASK_CZBOT_MODE)
  236. }
  237. set_pcvar_num(g_bot_quota, 0)
  238.  
  239. for(new bi = 1 ; bi <= g_iMaxPlayers ; bi++) {
  240.  
  241. if(is_user_bot(bi)){
  242.  
  243. new userid = get_user_userid(bi)
  244. server_cmd("kick #%d", userid)
  245. }
  246. }
  247. }
  248. return PLUGIN_CONTINUE
  249. }
  250.  
  251. public event_death() {
  252.  
  253. if(!get_pcvar_num(g_bot_enabled))
  254. return PLUGIN_HANDLED
  255.  
  256. new id = read_data(2)
  257.  
  258. if(is_user_bot(id))
  259. return PLUGIN_HANDLED
  260.  
  261. if(!human_alive()) {
  262.  
  263. if(get_pcvar_num(g_bot_autokill)) {
  264.  
  265. kill_bots()
  266. }
  267. }
  268. return PLUGIN_HANDLED
  269. }
  270.  
  271. /*---------------------------------------------------------------------------------------*/
  272. /*------------------------------------- CZ Bot Menu -------------------------------------*/
  273. /*---------------------------------------------------------------------------------------*/
  274.  
  275. public czbot_menu_show(id,lvl,cid)
  276. {
  277. if(cmd_access( id, lvl, cid, 1) && get_pcvar_num(g_bot_enabled)) {
  278.  
  279. czb_menu_czbot(id)
  280. }
  281. return PLUGIN_HANDLED
  282. }
  283.  
  284. public czb_menu_czbot(id) {
  285. new menu[512], szfillserver[32],szspecific[32],szkillbotall[32],sznewround[32],szkickbot[32],szkickbotall[32],szweapons[32],szcontrol[32]
  286.  
  287. formatex(szfillserver,31,"\w1. Szerver Betoltese \w")
  288.  
  289. formatex(szspecific,31,"\w2. Bot Hozzadasa \w")
  290.  
  291. formatex(szkillbotall,31,"\w3. Osszes Bot Megolese \w")
  292.  
  293. formatex(sznewround,31,"\w4. Uj Kor \w")
  294.  
  295. formatex(szkickbot,31,"\w5. Bot Kirugasa \w")
  296.  
  297. formatex(szkickbotall,31,"\w6. Osszes Bot Kirugasa \w")
  298.  
  299. formatex(szweapons,31,"\w7. Fegyver Mod \w")
  300.  
  301. formatex(szcontrol,31,"\w8. Vezerlo Menu \w")
  302.  
  303.  
  304. formatex(menu,511,"^n^n^n\yCZ Bot Menu ^n^n%s^n%s^n%s^n%s^n%s^n%s^n%s^n%s^n^n0. close",szfillserver,szspecific,szkillbotall,sznewround,szkickbot,szkickbotall,szweapons,szcontrol)
  305. show_menu(id,MENU_KEYS_CZBOT,menu)
  306. }
  307.  
  308. public menu_handler_czbot(id,key) {
  309. switch(key) {
  310. case 0:{
  311. fillserver()
  312. CzBotPrintHudMsg(id, 0, 255, 0, "[CZ-BOT] A szerverhez [%d] Bot lett hozzaadva !!!", get_pcvar_num(g_bot_maxslots) - g_iPlayerCounter)
  313.  
  314. czb_menu_czbot(id)
  315. }
  316. case 1:{
  317. czb_menu_speci(id)
  318. }
  319. case 2:{
  320. kill_bots()
  321. CzBotPrintHudMsg(id, 255, 48, 48, "[CZ-BOT] Osszes BOT Megolve...")
  322.  
  323. czb_menu_czbot(id)
  324. }
  325. case 3:{
  326. for(new i = 1 ; i <= g_iMaxPlayers ; i++) {
  327.  
  328. if(is_user_alive(i)) {
  329.  
  330. user_kill(i, 1)
  331. }
  332. }
  333. CzBotPrintHudMsg(id, 255, 155, 50, "[CZ-BOT] Uj Kor Kezdodik...")
  334.  
  335. czb_menu_czbot(id)
  336. }
  337. case 4:{
  338. if (get_pcvar_num(g_bot_max) > 0) {
  339. kickbot()
  340.  
  341. g_bBotAddT = false
  342. g_bBotAddCt = false
  343.  
  344. if(!get_pcvar_num(g_bot_balance)) {
  345. CzBotPrintHudMsg(id, 255, 20, 147, "[CZ-BOT] Mind2 csapatbol [%d] Bot ki lett rugva. Hatralevo ...", get_pcvar_num(g_bot_max) -1)
  346. }
  347. else {
  348. CzBotPrintHudMsg(id, 255, 20, 147, "[CZ-BOT] Mind2 csapatbol [%d] Bot ki lett rugva. Hatralevo ...", get_pcvar_num(g_bot_max) -2)
  349. }
  350. }
  351. czb_menu_czbot(id)
  352. }
  353. case 5:{
  354. new czbcmdkickall[50]
  355. formatex(czbcmdkickall, 49, "bot_autoadd 0")
  356. CzBotPrintHudMsg(id, 255, 20, 147, "[CZ-BOT] Osszes BOT Kirugva...")
  357. server_cmd(czbcmdkickall)
  358.  
  359. czb_menu_czbot(id)
  360. }
  361. case 6:{
  362. czb_menu_weapon(id)
  363. }
  364. case 7:{
  365. czb_menu_control(id)
  366. }
  367. case 9:{
  368. show_menu(id,0,"")
  369. }
  370. }
  371. }
  372.  
  373. /*---------------------------------------------------------------------------------------*/
  374. /*------------------------------- Specific Bot Add Menu ---------------------------------*/
  375. /*---------------------------------------------------------------------------------------*/
  376.  
  377. public czb_menu_speci(id) {
  378. new menu[512], szbotaddt[64],szbotaddct[64],szbotadd[32],szback[32]
  379.  
  380. new g_balance = get_pcvar_num(g_bot_balance)
  381.  
  382. switch(g_balance) {
  383.  
  384. case 0: formatex(szbotaddt,63,"\w1. Terrorist\w")
  385.  
  386. case 1: formatex(szbotaddt,63,"\r1. [Tiltva] [OK] Botok Engedelyezve\w")
  387.  
  388. }
  389. switch(g_balance) {
  390.  
  391. case 0: formatex(szbotaddct,63,"\w2. Counter-Terrorist\w")
  392.  
  393. case 1: formatex(szbotaddct,63,"\r2. [Tiltva] [OK] Botok Engedelyezve\w")
  394.  
  395. }
  396. formatex(szbotadd,31,"\w3. Veletlen Bot\w")
  397.  
  398. formatex(szback,31,"\w9. vissza\w")
  399.  
  400. formatex(menu,511,"^n^n^n\yCZ Bot Hozzadas Menu ^n^n%s^n%s^n%s^n^n%s^n0. kilepes",szbotaddt,szbotaddct,szbotadd,szback)
  401. show_menu(id,MENU_KEYS_SPECI,menu)
  402. }
  403.  
  404. public menu_handler_speci(id,key) {
  405. switch(key) {
  406. case 0:{
  407. if(!get_pcvar_num(g_bot_balance)) {
  408.  
  409. new g_botjointeam[4]
  410.  
  411. if (get_pcvar_num(g_bot_max) + g_iPlayerCounter < get_pcvar_num(g_bot_maxslots)) {
  412.  
  413. if(!g_bBotAddCt) {
  414. botadd()
  415. CzBotPrintHudMsg(id, 200, 0, 0, "[CZ-BOT] Hozzaadva [%d] Terrorist...", get_pcvar_num(g_bot_max) +1)
  416. get_cvar_string("bot_join_team", g_botjointeam, 3)
  417.  
  418. if(!equal(g_botjointeam,"T")) {
  419. set_cvar_string("bot_join_team","T")
  420. }
  421. g_bBotAddT = true
  422. }
  423. }
  424. else {
  425. client_print(id,print_chat,"[CZ-BOT] Elerte a Max. Bot letszamot")
  426. }
  427. }
  428. czb_menu_speci(id)
  429. }
  430. case 1:{
  431. if(!get_pcvar_num(g_bot_balance)) {
  432.  
  433. new g_botjointeam[4]
  434.  
  435. if (get_pcvar_num(g_bot_max) + g_iPlayerCounter < get_pcvar_num(g_bot_maxslots)) {
  436.  
  437. if(!g_bBotAddT) {
  438. botadd()
  439. CzBotPrintHudMsg(id, 0, 0, 255, "[CZ-BOT] Hozzaadva [%d] Counter-Terrorist...", get_pcvar_num(g_bot_max) +1)
  440. get_cvar_string("bot_join_team", g_botjointeam, 3)
  441.  
  442. if(!equal(g_botjointeam,"CT")) {
  443. set_cvar_string("bot_join_team","CT")
  444. }
  445. g_bBotAddCt = true
  446. }
  447. }
  448. else {
  449. client_print(id,print_chat,"[CZ-BOT] Elerte a Max. Bot letszamot")
  450. }
  451. }
  452. czb_menu_speci(id)
  453. }
  454. case 2:{
  455. new g_botjointeam[4]
  456.  
  457. if(!get_pcvar_num(g_bot_balance)) {
  458.  
  459. if (get_pcvar_num(g_bot_max) + g_iPlayerCounter < get_pcvar_num(g_bot_maxslots)) {
  460.  
  461. if(!g_bBotAddT && !g_bBotAddCt) {
  462. botadd()
  463. CzBotPrintHudMsg(id, 0, 255, 0, "[CZ-BOT] Veletlen szamu, [%d] Bot hozzaadva...", get_pcvar_num(g_bot_max) +1)
  464. }
  465. get_cvar_string("bot_join_team", g_botjointeam, 3)
  466.  
  467. if(!equal(g_botjointeam,"any")) {
  468. set_cvar_string("bot_join_team","any")
  469. }
  470. }
  471. else {
  472. client_print(id,print_chat,"[CZ-BOT] Elerte a Max. Bot letszamot")
  473. }
  474. }
  475. else {
  476. if (get_pcvar_num(g_bot_max) < get_pcvar_num(g_bot_maxslots) -2) {
  477.  
  478. if(!g_bBotAddT && !g_bBotAddCt) {
  479. botadd()
  480. CzBotPrintHudMsg(id, 0, 255, 0, "[CZ-BOT] Mind2 csapathoz [%d] Bot hozzaadva...", get_pcvar_num(g_bot_max) +2)
  481. }
  482. get_cvar_string("bot_join_team", g_botjointeam, 3)
  483.  
  484. if(!equal(g_botjointeam,"any")) {
  485. set_cvar_string("bot_join_team","any")
  486. }
  487. }
  488. else {
  489. client_print(id,print_chat,"[CZ-BOT] Elerte a Max. Bot letszamot")
  490. }
  491. }
  492. czb_menu_speci(id)
  493. }
  494. case 8:{
  495. czb_menu_czbot(id)
  496. }
  497. case 9:{
  498. show_menu(id,0,"")
  499. }
  500. }
  501. }
  502.  
  503. /*---------------------------------------------------------------------------------------*/
  504. /*--------------------------------- Bot Control Menu ------------------------------------*/
  505. /*---------------------------------------------------------------------------------------*/
  506.  
  507. public czb_menu_control(id) {
  508. new menu[512], szsbotdiff[32],szbotchatar[32],szbotautokill[32],szbotbalance[32],szbotjap[32],szback[32]
  509.  
  510. new g_diff = get_pcvar_num(g_bot_diff)
  511.  
  512. switch(g_diff) {
  513.  
  514. case 0: formatex(szsbotdiff,31,"\w1. Nehezseg: \yeasy\w")
  515.  
  516. case 1: formatex(szsbotdiff,31,"\w1. Nehezseg: \ynormal\w")
  517.  
  518. case 2: formatex(szsbotdiff,31,"\w1. Nehezseg: \yhard\w")
  519.  
  520. case 3: formatex(szsbotdiff,31,"\w1. Nehezseg: \yexpert\w")
  521.  
  522. }
  523. new g_chatar[8]
  524. get_cvar_string("bot_chatter",g_chatar,7)
  525.  
  526. if(equal(g_chatar,"normal")) {
  527.  
  528. formatex(szbotchatar,31,"\w2. Beszed: \ynormal\w")
  529. }
  530. if(equal(g_chatar,"off")) {
  531.  
  532. formatex(szbotchatar,31,"\w2. Beszed: \yki\w")
  533. }
  534. if(equal(g_chatar,"minimal")) {
  535.  
  536. formatex(szbotchatar,31,"\w2. Beszed: \yminimal\w")
  537. }
  538. if(equal(g_chatar,"radio")) {
  539.  
  540. formatex(szbotchatar,31,"\w2. Beszed: \yradio\w")
  541. }
  542. new g_autokill = get_pcvar_num(g_bot_autokill)
  543.  
  544. switch(g_autokill) {
  545.  
  546. case 0: formatex(szbotautokill,31,"\w3. Auto-oles: \rtiltva\w")
  547.  
  548. case 1: formatex(szbotautokill,31,"\w3. Auto-oles: \yengedelyezve\w")
  549.  
  550. }
  551. new g_balance = get_pcvar_num(g_bot_balance)
  552.  
  553. switch(g_balance) {
  554.  
  555. case 0: formatex(szbotbalance,31,"\w4. Egyensuly: \rtiltva\w")
  556.  
  557. case 1: formatex(szbotbalance,31,"\w4. Egyensuly: \yengedelyezve\w")
  558.  
  559. }
  560. new g_joinafterplayer = get_pcvar_num(g_bot_jap)
  561.  
  562. switch(g_joinafterplayer) {
  563.  
  564. case 0: formatex(szbotjap,31,"\w5. Csatlakozas utan: \rPlayer\w")
  565.  
  566. case 1: formatex(szbotjap,31,"\w5. Csatlakozas utan: \yPlayer\w")
  567.  
  568. }
  569. formatex(szback,31,"\w9. vissza\w")
  570.  
  571. formatex(menu,511,"^n^n^n\yCZ Bot Vezerlo Menu ^n^n%s^n%s^n%s^n%s^n%s^n^n%s^n0. kilepes",szsbotdiff,szbotchatar,szbotautokill,szbotbalance,szbotjap,szback)
  572. show_menu(id,MENU_KEYS_CONTROL,menu)
  573. }
  574.  
  575. public menu_handler_control(id,key) {
  576. switch(key) {
  577. case 0:{
  578. new g_diff = get_pcvar_num(g_bot_diff)
  579.  
  580. switch(g_diff) {
  581.  
  582. case 0: {
  583. set_pcvar_num(g_bot_diff, 1)
  584. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Nehezseg Normal...")
  585. }
  586. case 1: {
  587. set_pcvar_num(g_bot_diff, 2)
  588. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Nehezseg Hard...")
  589. }
  590. case 2: {
  591. set_pcvar_num(g_bot_diff, 3)
  592. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Nehezseg Expert...")
  593. }
  594. case 3: {
  595. set_pcvar_num(g_bot_diff, 0)
  596. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Nehezseg Easy...")
  597. }
  598. }
  599. czb_menu_control(id)
  600. }
  601. case 1:{
  602. new g_chatar[8]
  603. get_cvar_string("bot_chatter",g_chatar,7)
  604.  
  605. if(equal(g_chatar,"normal")) {
  606. set_cvar_string("bot_chatter","off")
  607. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Beszed Ki...")
  608. }
  609. if(equal(g_chatar,"off")) {
  610. set_cvar_string("bot_chatter","minimal")
  611. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Beszed Minimal...")
  612. }
  613. if(equal(g_chatar,"minimal")) {
  614. set_cvar_string("bot_chatter","radio")
  615. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Beszed Radio...")
  616. }
  617. if(equal(g_chatar,"radio")) {
  618. set_cvar_string("bot_chatter","normal")
  619. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Beszed Normal...")
  620. }
  621. czb_menu_control(id)
  622. }
  623. case 2:{
  624. new g_autokill = get_pcvar_num(g_bot_autokill)
  625.  
  626. switch(g_autokill) {
  627.  
  628. case 0: {
  629. set_pcvar_num(g_bot_autokill, 1)
  630. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Auto-oles Engedelyezve...")
  631. }
  632. case 1: {
  633. set_pcvar_num(g_bot_autokill, 0)
  634. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Auto-oles Letiltva...")
  635. }
  636. }
  637. czb_menu_control(id)
  638. }
  639. case 3:{
  640. new g_balance = get_pcvar_num(g_bot_balance)
  641.  
  642. switch(g_balance) {
  643.  
  644. case 0: {
  645. set_pcvar_num(g_bot_balance, 1)
  646. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Egyensuly Engedelyezve...")
  647. }
  648. case 1: {
  649. set_pcvar_num(g_bot_balance, 0)
  650. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Egyensuly Letiltva...")
  651. }
  652. }
  653. czb_menu_control(id)
  654. }
  655. case 4:{
  656. new g_joinafterplayer = get_pcvar_num(g_bot_jap)
  657.  
  658. switch(g_joinafterplayer) {
  659.  
  660. case 0: {
  661. set_pcvar_num(g_bot_jap, 1)
  662. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Csatlakozas utan Player Engedelyezve...")
  663. }
  664. case 1:{
  665. set_pcvar_num(g_bot_jap, 0)
  666. CzBotPrintHudMsg(id, 0, 255, 255, "[CZ-BOT] Csatlakozas utan Player Letiltva...")
  667. }
  668. }
  669. czb_menu_control(id)
  670. }
  671. case 8:{
  672. czb_menu_czbot(id)
  673. }
  674. case 9:{
  675. show_menu(id,0,"")
  676. }
  677. }
  678. }
  679.  
  680. /*---------------------------------------------------------------------------------------*/
  681. /*----------------------------------- Bot Weapon Menu -----------------------------------*/
  682. /*---------------------------------------------------------------------------------------*/
  683.  
  684. public czb_menu_weapon(id) {
  685. new menu[512], szpistols[32],szshotguns[32], szmachineguns[32], szsubmguns[32], szrifles[32], szsnipers[32], szshield[32], szgrenades[32],szback[32]
  686.  
  687. new g_pistols = get_pcvar_num(g_bot_pistols)
  688.  
  689. switch(g_pistols) {
  690.  
  691. case 0: formatex(szpistols,31,"\w1. Pisztolyok: \rki\w")
  692.  
  693. case 1: formatex(szpistols,31,"\w1. Pisztolyok: \ybe\w")
  694.  
  695. }
  696. new g_shotguns = get_pcvar_num(g_bot_shotguns)
  697.  
  698. switch(g_shotguns) {
  699.  
  700. case 0: formatex(szshotguns,31,"\w2. Shotgunok: \rki\w")
  701.  
  702. case 1: formatex(szshotguns,31,"\w2. Shotgunok: \ybe\w")
  703.  
  704. }
  705. new g_machineguns = get_pcvar_num(g_bot_machine_guns)
  706.  
  707. switch(g_machineguns) {
  708.  
  709. case 0: formatex(szmachineguns,31,"\w3. MachineGuns: \rki\w")
  710.  
  711. case 1: formatex(szmachineguns,31,"\w3. MachineGuns: \ybe\w")
  712.  
  713. }
  714. new g_submguns = get_pcvar_num(g_bot_sub_mguns)
  715.  
  716. switch(g_submguns) {
  717.  
  718. case 0: formatex(szsubmguns,31,"\w4. SubMachineGuns: \rki\w")
  719.  
  720. case 1: formatex(szsubmguns,31,"\w4. SubMachineGuns: \ybe\w")
  721.  
  722. }
  723. new g_rifles = get_pcvar_num(g_bot_rifles)
  724.  
  725. switch(g_rifles) {
  726.  
  727. case 0: formatex(szrifles,31,"\w5. Gepfegyverek: \rki\w")
  728.  
  729. case 1: formatex(szrifles,31,"\w5. Gepfegyverek: \ybe\w")
  730.  
  731. }
  732. new g_snipers = get_pcvar_num(g_bot_snipers)
  733.  
  734. switch(g_snipers) {
  735.  
  736. case 0: formatex(szsnipers,31,"\w6. Sniperek: \rki\w")
  737.  
  738. case 1: formatex(szsnipers,31,"\w6. Sniperek: \ybe\w")
  739.  
  740. }
  741. new g_shield = get_pcvar_num(g_bot_shield)
  742.  
  743. switch(g_shield) {
  744.  
  745. case 0: formatex(szshield,31,"\w7. Pajzs: \rki\w")
  746.  
  747. case 1: formatex(szshield,31,"\w7. Pajzs: \ybe\w")
  748.  
  749. }
  750. new g_grenades = get_pcvar_num(g_bot_grenades)
  751.  
  752. switch(g_grenades) {
  753.  
  754. case 0: formatex(szgrenades,31,"\w8. Granatok: \roff\w")
  755.  
  756. case 1: formatex(szgrenades,31,"\w8. Granatok: \yon\w")
  757.  
  758. }
  759. formatex(szback,31,"\w9. back\w")
  760.  
  761. formatex(menu,511,"^n^n^n\yCZ Bot Fegyver Menu ^n^n%s^n%s^n%s^n%s^n%s^n%s^n%s^n%s^n^n%s^n0. kilepes",szpistols,szshotguns,szmachineguns,szsubmguns,szrifles,szsnipers,szshield,szgrenades,szback)
  762. show_menu(id,MENU_KEYS_WEAPON,menu)
  763. }
  764.  
  765. public menu_handler_weapon(id,key) {
  766. switch(key) {
  767. case 0:{
  768. new g_pistols = get_pcvar_num(g_bot_pistols)
  769.  
  770. switch(g_pistols) {
  771.  
  772. case 0: {
  773. set_pcvar_num(g_bot_pistols, 1)
  774. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Pisztolyok Be...")
  775. }
  776. case 1: {
  777. set_pcvar_num(g_bot_pistols, 0)
  778. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Pisztolyok Ki...")
  779. }
  780. }
  781. czb_menu_weapon(id)
  782. }
  783. case 1:{
  784. new g_shotguns = get_pcvar_num(g_bot_shotguns)
  785.  
  786. switch(g_shotguns) {
  787.  
  788. case 0: {
  789. set_pcvar_num(g_bot_shotguns, 1)
  790. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Shotgunok Be...")
  791. }
  792. case 1: {
  793. set_pcvar_num(g_bot_shotguns, 0)
  794. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Shotgunok Ki...")
  795. }
  796. }
  797. czb_menu_weapon(id)
  798. }
  799. case 2:{
  800. new g_machineguns = get_pcvar_num(g_bot_machine_guns)
  801.  
  802. switch(g_machineguns) {
  803.  
  804. case 0: {
  805. set_pcvar_num(g_bot_machine_guns, 1)
  806. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] MachineGuns Be...")
  807. }
  808. case 1: {
  809. set_pcvar_num(g_bot_machine_guns, 0)
  810. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] MachineGuns Ki...")
  811. }
  812. }
  813. czb_menu_weapon(id)
  814. }
  815. case 3:{
  816. new g_submguns = get_pcvar_num(g_bot_sub_mguns)
  817.  
  818. switch(g_submguns) {
  819.  
  820. case 0: {
  821. set_pcvar_num(g_bot_sub_mguns, 1)
  822. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] SubMachineGuns Be...")
  823. }
  824. case 1: {
  825. set_pcvar_num(g_bot_sub_mguns, 0)
  826. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] SubMachineGuns Ki...")
  827. }
  828. }
  829. czb_menu_weapon(id)
  830. }
  831. case 4:{
  832. new g_rifles = get_pcvar_num(g_bot_rifles)
  833.  
  834. switch(g_rifles) {
  835.  
  836. case 0: {
  837. set_pcvar_num(g_bot_rifles, 1)
  838. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Gepfegyverek Be...")
  839. }
  840. case 1: {
  841. set_pcvar_num(g_bot_rifles, 0)
  842. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Gepfegyverek Ki...")
  843. }
  844. }
  845. czb_menu_weapon(id)
  846. }
  847. case 5:{
  848. new g_snipers = get_pcvar_num(g_bot_snipers)
  849.  
  850. switch(g_snipers) {
  851.  
  852. case 0: {
  853. set_pcvar_num(g_bot_snipers, 1)
  854. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Sniperek Be...")
  855. }
  856. case 1: {
  857. set_pcvar_num(g_bot_snipers, 0)
  858. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Sniperek Ki...")
  859. }
  860. }
  861. czb_menu_weapon(id)
  862. }
  863. case 6:{
  864. new g_shield = get_pcvar_num(g_bot_shield)
  865.  
  866. switch(g_shield) {
  867.  
  868. case 0: {
  869. set_pcvar_num(g_bot_shield, 1)
  870. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Pajzsok Be...")
  871. }
  872. case 1: {
  873. set_pcvar_num(g_bot_shield, 0)
  874. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Pajzsok Ki...")
  875. }
  876. }
  877. czb_menu_weapon(id)
  878. }
  879. case 7:{
  880. new g_grenades = get_pcvar_num(g_bot_grenades)
  881.  
  882. switch(g_grenades) {
  883.  
  884. case 0: {
  885. set_pcvar_num(g_bot_grenades, 1)
  886. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Granatok Be...")
  887. }
  888. case 1: {
  889. set_pcvar_num(g_bot_grenades, 0)
  890. CzBotPrintHudMsg(id, 255, 255, 255, "[CZ-BOT] Granatok Ki...")
  891. }
  892. }
  893. czb_menu_weapon(id)
  894. }
  895. case 8:{
  896. czb_menu_czbot(id)
  897. }
  898. case 9:{
  899. show_menu(id,0,"")
  900. }
  901. }
  902. }
  903.  
  904. /*---------------------------------------------------------------------------------------*/
  905. /*--------------------------------- CZ Bot STOCKS ---------------------------------------*/
  906. /*---------------------------------------------------------------------------------------*/
  907.  
  908. stock human_alive() {
  909.  
  910. new HumansAlive
  911.  
  912. for(new i = 1 ; i <= g_iMaxPlayers ; i++) {
  913.  
  914. if(!is_user_bot(i)
  915. && !is_user_hltv(i)
  916. && is_user_alive(i))
  917. HumansAlive++
  918. }
  919. return HumansAlive
  920. }
  921.  
  922. stock kill_bots() {
  923.  
  924. for(new i = 1 ; i <= g_iMaxPlayers ; i++) {
  925.  
  926. if(is_user_bot(i)) {
  927.  
  928. user_kill(i,1)
  929. }
  930. }
  931. }
  932.  
  933. stock kickbot() {
  934.  
  935. new czbcmdkickbot[50]
  936.  
  937. if(!get_pcvar_num(g_bot_balance)) {
  938.  
  939. formatex(czbcmdkickbot, 49, "bot_autoadd %d", get_pcvar_num(g_bot_max) -1)
  940. server_cmd(czbcmdkickbot)
  941. }
  942. else {
  943. formatex(czbcmdkickbot, 49, "bot_autoadd %d", get_pcvar_num(g_bot_max) -2)
  944. server_cmd(czbcmdkickbot)
  945. }
  946. }
  947.  
  948. stock botadd() {
  949.  
  950. new czbcmdaddbot[50]
  951.  
  952. if(!get_pcvar_num(g_bot_balance)) {
  953.  
  954. formatex(czbcmdaddbot, 49, "bot_autoadd %d", get_pcvar_num(g_bot_max) +1)
  955. server_cmd(czbcmdaddbot)
  956. }
  957. else {
  958. formatex(czbcmdaddbot, 49, "bot_autoadd %d", get_pcvar_num(g_bot_max) +2)
  959. server_cmd(czbcmdaddbot)
  960. }
  961. }
  962.  
  963. stock fillserver() {
  964.  
  965. new g_botjointeam[4], czbcmdfill[50]
  966.  
  967. get_cvar_string("bot_join_team", g_botjointeam, 3)
  968.  
  969. if(!equal(g_botjointeam,"any")) {
  970.  
  971. set_cvar_string("bot_join_team","any")
  972. }
  973. if (get_pcvar_num(g_bot_max) + g_iPlayerCounter < get_pcvar_num(g_bot_maxslots)) {
  974.  
  975. formatex(czbcmdfill, 49, "bot_autoadd %d", get_pcvar_num(g_bot_maxslots) - g_iPlayerCounter)
  976. server_cmd(czbcmdfill)
  977. }
  978. }
  979.  
  980. CzBotPrintHudMsg(id, r, g, b, const msg[], {Float,Sql,Result,_}:...) {
  981.  
  982. static message[192]
  983. vformat(message, 191, msg, 6)
  984.  
  985. static index
  986.  
  987. if(id)
  988. {
  989. index = id
  990. }
  991. else
  992. {
  993. index = 0
  994. }
  995. set_hudmessage(r, g, b, 0.02, 0.3, _, _, 5.0, _, _, 4)
  996. ShowSyncHudMsg(index, g_SyncCzBot, "%s", message)
  997. }
  998.  
  999. setBotSlots(g_iMaxPlayers) {
  1000.  
  1001. new num = g_iMaxPlayers
  1002. set_pcvar_num(g_bot_maxslots, num)
  1003. }
  1004.  
  1005. check_balance() {
  1006.  
  1007. new iPlayerCtNum, iPlayerTrroNum
  1008.  
  1009. for(new i = 1 ; i <= g_iMaxPlayers ; i++) {
  1010.  
  1011. new team = get_user_team(i)
  1012.  
  1013. switch(team) {
  1014.  
  1015. case 1: ++iPlayerTrroNum
  1016.  
  1017. case 2: ++iPlayerCtNum
  1018.  
  1019. }
  1020. }
  1021. if(iPlayerCtNum - iPlayerTrroNum > 1) {
  1022.  
  1023. for(new i ; i < iPlayerCtNum ; ++i) {
  1024.  
  1025. if(is_user_bot(i) && get_user_team(i) == 2) {
  1026.  
  1027. server_cmd("kick #%d", get_user_userid(i))
  1028. break
  1029. }
  1030. }
  1031. }
  1032. else if(iPlayerTrroNum - iPlayerCtNum > 1) {
  1033.  
  1034. for(new i ; i < iPlayerTrroNum ; ++i) {
  1035.  
  1036. if(is_user_bot(i) && get_user_team(i) == 1) {
  1037.  
  1038. server_cmd("kick #%d", get_user_userid(i))
  1039. break
  1040. }
  1041. }
  1042. }
  1043. check_cvar()
  1044. return PLUGIN_CONTINUE
  1045. }
  1046.  
  1047. check_cvar() {
  1048.  
  1049. new g_botjointeam[4], czbcmdfix[50]
  1050.  
  1051. get_cvar_string("bot_join_team", g_botjointeam, 3)
  1052.  
  1053. if(!equal(g_botjointeam,"any")) {
  1054.  
  1055. set_cvar_string("bot_join_team","any")
  1056. }
  1057. if(get_pcvar_num(g_bot_max) % 2) {
  1058.  
  1059. formatex(czbcmdfix, 49, "bot_autoadd %d", get_pcvar_num(g_bot_max) +1)
  1060. server_cmd(czbcmdfix)
  1061. }
  1062. if (get_pcvar_num(g_bot_max) > get_pcvar_num(g_bot_maxslots) -2) {
  1063.  
  1064. kickbot()
  1065. }
  1066. return PLUGIN_CONTINUE
  1067. }
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.