HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2.  
  3. #define MAX_CHATTERS 6
  4. #define MAX_CHATROOMS 32
  5. #define CHAT_PREFIX '!'
  6.  
  7. new g_chatrooms[MAX_CHATROOMS][33] //ChatSzoba ID/nev
  8. new g_player_chatroom[33][33] //Jatekos ID/nev
  9.  
  10. new g_chatroom_votelock[33] //ChatSzoba ID/Jatekos ID
  11. new g_chatroom_voteopen[33] //ChatSzoba ID/Jatekos ID
  12.  
  13. new bool:g_chatroom_locked[33] //ChatSzoba ID
  14. new bool:g_voted4lock[33] //ChatSzoba ID/Jatekos ID
  15. new bool:g_voted4open[33] //ChatSzoba ID/Jatekos ID
  16.  
  17. new c_onoff,c_dead_chat,c_green_text,c_min_to_open
  18.  
  19. new msg_say
  20.  
  21. public plugin_init() {
  22. register_plugin("Chat Rooms","1.0","Sh!nE")
  23.  
  24. register_clcmd("say","hookit")
  25.  
  26. c_onoff = register_cvar("amx_g_chatrooms","1")
  27. c_dead_chat = register_cvar("amx_cr_deadchat","1")
  28. c_min_to_open = register_cvar("amx_cr_min_open","2")
  29. c_green_text = register_cvar("amx_cr_greentext","1")
  30.  
  31. msg_say = get_user_msgid("SayText")
  32. }
  33.  
  34. public client_putinserver(id) if(get_pcvar_num(c_onoff)) set_task(5.0,"check_room",id)
  35.  
  36. public check_room(id) {
  37. static info[33],temp[192]
  38. get_user_info(id,"my_room",info,32);
  39.  
  40. format(temp,191,"^x03[Chat]^x01 Csatlakoztal a ChatSzobahoz ^x04/ide csatalakoztal^x01, leave - ^x04/elment a szobabol^x01, create - ^x04/szobanyitas^x01, tagok -^x04 /tagok^x01.")
  41. color_print(id,temp)
  42.  
  43. format(temp,191,"^x03[Chat]^x01 Sajat celu szoba - ^x04/szoba^x01,szavazunk hogy be zarjon-e a szoba- ^x04/szobazaras^x01, Szavazunk hogy legyen-e chat szoba - ^x04/szobanyitas^x01.")
  44. color_print(id,temp)
  45.  
  46. if(strlen(info)) {
  47.  
  48. for(new i=0;i < MAX_CHATROOMS;i++) {
  49. if(equali(g_chatrooms[i],info)) {
  50. join_room(id,g_chatrooms[i])
  51.  
  52. return PLUGIN_HANDLED
  53. }
  54. }
  55. open_room(id,info)
  56. }
  57. return PLUGIN_HANDLED
  58. }
  59.  
  60. public hookit(id) {
  61. if(!get_pcvar_num(c_onoff)) return PLUGIN_CONTINUE
  62.  
  63. new args[192],parsed[33],temp[192],i
  64.  
  65. read_args(args,191)
  66. remove_quotes(args)
  67. parse(args,parsed,32)
  68.  
  69. new chatroom=get_user_chatroom_id(id)
  70.  
  71. switch(args[1]) {
  72. case 'r':{
  73. if(equali(parsed,"/szoba")) {
  74. if(strlen(g_player_chatroom[id])) {
  75. format(temp,191,"^x03[Chat]^x01 Chat szoba:'^x04%s^x01'.",g_player_chatroom[id])
  76. color_print(id,temp)
  77. }
  78.  
  79. else {
  80. format(temp,191,"^x03[Chat]^x01 Neked nincs chat szobad.")
  81. color_print(id,temp)
  82. }
  83. return PLUGIN_HANDLED
  84. }
  85. }
  86.  
  87. case 'o':{
  88. if(equali(parsed,"/szobanyitas")) {
  89. if(!g_chatroom_locked[chatroom]) {
  90. format(temp,191,"^x03[Chat]^x01 Chatszoba be zarva!")
  91. color_print(id,temp)
  92.  
  93. return PLUGIN_HANDLED
  94. }
  95. new name[33]
  96. get_user_name(id,name,32)
  97.  
  98. if((g_chatroom_voteopen[chatroom]+1==get_pcvar_num(c_min_to_open)) || (g_chatroom_voteopen[chatroom]+1==get_chatroom_players(chatroom))) {
  99. new players[32],num
  100. get_players(players,num)
  101.  
  102. for(i=0;i < num;i++) {
  103. g_voted4lock[players[i]]=false
  104. g_voted4open[players[i]]=false
  105. }
  106.  
  107. format(temp,191,"^x03[Chat]^x01 '^x04%s^x01' Szoba megnyitva!",name)
  108. color_print(id,temp);print_to_cr(id,temp)
  109.  
  110. g_chatroom_locked[chatroom]=false
  111. g_chatroom_voteopen[chatroom]=0
  112.  
  113. return PLUGIN_HANDLED
  114. }
  115. else {
  116. g_chatroom_voteopen[chatroom]++
  117.  
  118. format(temp,191,"^x03[Chat]^x01 '^x04%s^x01' Szavazas IGEN lett! %d/%d",name,g_chatroom_voteopen[chatroom],get_chatroom_players(chatroom))
  119. color_print(id,temp)
  120. print_to_cr(id,temp)
  121.  
  122. return PLUGIN_HANDLED
  123. }
  124. }
  125. }
  126.  
  127. case 'c':{
  128. if(equali(parsed,"/szobazaras")) {
  129. new name[33]
  130. get_user_name(id,name,32)
  131.  
  132. if(g_chatroom_votelock[chatroom]+1==get_chatroom_players(chatroom)) {
  133. format(temp,191,"^x03[Chat]^x01 '^x04%s^x01' A szoba be zart!",name)
  134. color_print(id,temp)
  135. print_to_cr(id,temp)
  136.  
  137. g_chatroom_locked[chatroom]=true
  138. g_chatroom_votelock[chatroom]=0
  139. }
  140. else {
  141. g_chatroom_votelock[chatroom]++
  142.  
  143. format(temp,191,"^x03[Chat]^x01 '^x04%s^x01' A szavazas bezárja a szobat! Votes: %d/%d",name,g_chatroom_votelock[chatroom],get_chatroom_players(chatroom))
  144. color_print(id,temp)
  145. print_to_cr(id,temp)
  146. }
  147. return PLUGIN_HANDLED
  148. }
  149. }
  150.  
  151. case 'l':if(equali(parsed,"/leaveroom")) {
  152. leave_room(id)
  153. return PLUGIN_HANDLED
  154. }
  155.  
  156. case 'j':{
  157. new t_parse[2][33]
  158.  
  159. if(equali(parsed,"/szobacsat")) {
  160. new players[32],num,chatters
  161. get_players(players,num)
  162.  
  163. for(i=0;i < num;i++) if(strlen(g_player_chatroom[players[i]])) chatters++
  164.  
  165. if(chatters==MAX_CHATTERS) {
  166. format(temp,191,"^x03[Chat]^x01 A Chat szoba fullon van!")
  167. color_print(id,temp)
  168.  
  169. return PLUGIN_HANDLED
  170. }
  171.  
  172. parse(args,parsed,32,t_parse[0],32,t_parse[1],32)
  173.  
  174. if(!strlen(t_parse[0])) {
  175. format(temp,191,"^x03[Chat]^x01 Kerlek valtoztas nevet!")
  176. color_print(id,temp)
  177.  
  178. return PLUGIN_HANDLED
  179. }
  180. else if(strlen(t_parse[1])) {
  181. format(temp,191,"^x03[Chat]^x01 Ne rakj SPACET a neved be!")
  182. color_print(id,temp)
  183.  
  184. return PLUGIN_HANDLED
  185. }
  186.  
  187. new cr_id=find_crid_by_name(t_parse[0])
  188.  
  189. if(!strlen(g_chatrooms[cr_id])) {
  190. format(temp,191,"^x03[Chat]^x01 Nem talat szobat!")
  191. color_print(id,temp)
  192.  
  193. return PLUGIN_HANDLED
  194. }
  195.  
  196. if(g_chatroom_locked[cr_id]) {
  197. format(temp,191,"^x03[Chat]^x01 A szoba e zarva!")
  198. color_print(id,temp)
  199.  
  200. return PLUGIN_HANDLED
  201. }
  202.  
  203. join_room(id,t_parse[0])
  204.  
  205. return PLUGIN_HANDLED
  206. }
  207. }
  208.  
  209. case 'm':{
  210. if(equali(parsed,"/makeroom")) {
  211. new t_parse[2][33]
  212. parse(args,parsed,32,t_parse[0],32,t_parse[1],32)
  213.  
  214. if(!strlen(t_parse[0])) {
  215. format(temp,191,"^x03[Chat]^x01 Kerlek valtoztas nevet!")
  216. color_print(id,temp)
  217.  
  218. return PLUGIN_CONTINUE
  219. }
  220.  
  221. else if(strlen(t_parse[1])) {
  222. format(temp,191,"^x03[Chat]^x01 Ne rakj SPACET a neved be!")
  223. color_print(id,temp)
  224.  
  225. return PLUGIN_CONTINUE
  226. }
  227.  
  228. if(equali(t_parse[0],g_chatrooms[chatroom])) {
  229. format(temp,191,"^x03[Chat]^x01 Lepjki es lepj ba ujra a neved ert!")
  230. color_print(id,temp)
  231.  
  232. return PLUGIN_CONTINUE
  233. }
  234.  
  235. open_room(id,t_parse[0])
  236.  
  237. return PLUGIN_HANDLED
  238. }
  239. else if(equali(parsed,"/members")) {
  240. if(!strlen(g_player_chatroom[id])) {
  241. format(temp,191,"^x03[Chat]^x01 Nem vagy CHat szobaba. Te csatlakozhatsz igy hogy ha beirdo /szobacsat!")
  242. color_print(id,temp)
  243.  
  244. return PLUGIN_HANDLED
  245. }
  246. new players[32],temp_string[MAX_CHATTERS*32],num,pname[33]
  247. get_players(players,num)
  248.  
  249. for(i=0;i < num;i++) {
  250. if(equal(g_player_chatroom[players[i]],g_player_chatroom[id])) {
  251. get_user_name(players[i],pname,32)
  252.  
  253. if(num==i+1) format(temp_string,(MAX_CHATTERS*32)-1,"%s%s^x01.",temp_string,pname)
  254.  
  255. else format(temp_string,(MAX_CHATTERS*32)-1,"%s%s^x01,^x04 ",temp_string,pname)
  256. }
  257. }
  258.  
  259. format(temp_string,(MAX_CHATTERS*32)-1,"^x03[Chat]^x01 Online:^x04 %s",temp_string)
  260. color_print(id,temp_string)
  261.  
  262. return PLUGIN_HANDLED
  263. }
  264. }
  265. }
  266. if(strlen(g_player_chatroom[id]) && args[0]==CHAT_PREFIX) {
  267. copy(args,191,args[1])
  268.  
  269. if(!strlen(args)) return PLUGIN_CONTINUE
  270.  
  271. new players[32],num,pname[33]
  272.  
  273. get_players(players,num)
  274. get_user_name(id,pname,32)
  275.  
  276. for(i=0;i < num;i++) {
  277. if((get_pcvar_num(c_dead_chat) && (is_user_alive(id)==is_user_alive(players[i]))) || !get_pcvar_num(c_dead_chat)) {
  278. if(equal(g_player_chatroom[players[i]],g_player_chatroom[id])) {
  279. new status[7]
  280.  
  281. if(!is_user_alive(id)) copy(status,6,"*DEAD*")
  282.  
  283. if(!get_user_team(id)) copy(status,6,"*SPEC*")
  284.  
  285. format(temp,191,"^x03(%s)%s %s^x01 : %s%s",g_player_chatroom[id],status,pname,get_pcvar_num(c_green_text) ? "^x04" : "",args)
  286. color_print(players[i],temp)
  287. }
  288. }
  289. }
  290. return PLUGIN_HANDLED
  291. }
  292. return PLUGIN_CONTINUE
  293. }
  294.  
  295. public open_room(id,name[]) {
  296. new temp[192]
  297. if(strlen(g_player_chatroom[id])) {
  298. format(temp,191,"^x03[Chat]^x01 Te mar benn vagy 1 szobaba!('^x04%s^x01')! Valasz Chatszobat! ^x04/leaveroom^x01!",g_player_chatroom[id])
  299. color_print(id,temp)
  300.  
  301. return PLUGIN_CONTINUE
  302. }
  303.  
  304. format(temp,191,"^x03[Chat]^x01 Te csinbaltal Chatszobat(Name:'^x04%s^x01')!",name)
  305. color_print(id,temp)
  306.  
  307. copy(g_chatrooms[get_user_chatroom_id(id)],32,name)
  308.  
  309. join_room(id,name)
  310.  
  311. return PLUGIN_HANDLED
  312. }
  313.  
  314. public join_room(id,name[]) {
  315. new temp[192]
  316.  
  317. if(strlen(g_player_chatroom[id])) {
  318. format(temp,191,"^x03[Chat]^x01 Te mar benn vagy 1 szobaba!('^x04%s^x01')! Valasz Chatszobat ^x04/leaveroom^x01!",g_player_chatroom[id])
  319. color_print(id,temp)
  320.  
  321. return PLUGIN_CONTINUE
  322. }
  323.  
  324. format(temp,191,"^x03[Chat]^x01 Te csatalkoztal '^x04%s^x01'!",name)
  325. color_print(id,temp)
  326.  
  327. new namep[33]
  328. get_user_name(id,namep,32)
  329.  
  330. copy(g_player_chatroom[id],32,name)
  331.  
  332. format(temp,191,"^x03[Chat]^x01 '^x04%s^x01' Te csatakoztal!",namep)
  333. print_to_cr(id,temp)
  334.  
  335. return PLUGIN_HANDLED
  336. }
  337.  
  338. public leave_room(id) {
  339. new temp[192]
  340.  
  341. if(!strlen(g_player_chatroom[id])) {
  342. format(temp,191,"^x03[Chat]^x01 Te nem vagy Chatszobaba! Igy tudsz csatlakozni: ^x04/szobacsat^x01!")
  343. color_print(id,temp)
  344.  
  345. return PLUGIN_CONTINUE
  346. }
  347.  
  348. format(temp,191,"^x03[Chat]^x01 Te lecsatlakoztal '^x04%s^x01'!",g_player_chatroom[id])
  349. color_print(id,temp)
  350.  
  351. new namep[33]
  352. get_user_name(id,namep,32)
  353.  
  354. new players[32],num
  355. get_players(players,num)
  356.  
  357. new number,chatroom=get_user_chatroom_id(id)
  358.  
  359. format(temp,191,"^x03[Chat]^x01 '^x04%s^x01' elment a szobabol",namep)
  360. print_to_cr(id,temp)
  361.  
  362. g_player_chatroom[id][0]=0
  363.  
  364. number=get_chatroom_players(chatroom)
  365.  
  366. if(!number) {
  367. g_player_chatroom[id][0]=0
  368. g_chatroom_locked[chatroom]=false
  369. }
  370.  
  371. g_voted4lock[id]=false
  372.  
  373. return PLUGIN_HANDLED
  374. }
  375.  
  376. public client_disconnect(id) {
  377. if(get_pcvar_num(c_onoff)) {
  378. g_voted4lock[id]=false
  379. g_voted4open[id]=false
  380.  
  381. g_player_chatroom[id][0]=0
  382.  
  383. remove_task(id)
  384.  
  385. leave_room(id)
  386. }
  387. }
  388.  
  389. get_user_chatroom_id(id) {
  390. for(new i=0;i < MAX_CHATROOMS;i++) if(equal(g_player_chatroom[id],g_chatrooms[i])) return i
  391.  
  392. return 0
  393. }
  394.  
  395. get_chatroom_players(roomid) {
  396. new players[32],num,count
  397. get_players(players,num)
  398.  
  399. for(new i=0;i < num;i++) if(equal(g_player_chatroom[players[i]],g_chatrooms[roomid])) count++
  400.  
  401. return count
  402. }
  403.  
  404. print_to_cr(id,text[]) {
  405. new players[32],num,temp[192]
  406. get_players(players,num)
  407.  
  408. for(new i=0;i < num;i++) {
  409. if(equal(g_player_chatroom[players[i]],g_chatrooms[get_user_chatroom_id(id)]) && players[i]!=id) {
  410. format(temp,191,text)
  411. color_print(players[i],temp)
  412. }
  413. }
  414. }
  415.  
  416. find_crid_by_name(name[]) {
  417. for(new i=0;i < MAX_CHATROOMS;i++) if(equal(name,g_chatrooms[i])) return i
  418.  
  419. return 0
  420. }
  421.  
  422. color_print(id,text[]) {
  423. message_begin(MSG_ONE_UNRELIABLE,msg_say,_,id)
  424. write_byte(id)
  425. write_string(text)
  426. message_end()
  427. }
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.