hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.12. 05:36



Jelenlévő felhasználók

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

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 4 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Voteban
HozzászólásElküldve: 2013.09.17. 21:58 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4286
Megköszönt másnak: 218 alkalommal
Megköszönték neki: 287 alkalommal
Hali! Valaki le fordítaná? :)
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3.  
  4. #define PLUGIN "Vote Ban"
  5. #define VERSION "1.0"
  6. #define AUTHOR "Alka"
  7.  
  8. #define MAX_PLAYERS 33
  9.  
  10. #define MENU_KEYS (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<8 | 1<<9)
  11. #define MENU_SLOTS 8
  12.  
  13. new g_iMenuPage[MAX_PLAYERS];
  14. new g_iVotedPlayers[MAX_PLAYERS];
  15. new g_iVotes[MAX_PLAYERS];
  16. new g_szVoteReason[MAX_PLAYERS][64];
  17.  
  18. new g_iPlayers[MAX_PLAYERS - 1];
  19. new g_iNum;
  20.  
  21. new g_iMsgidSayText;
  22.  
  23. enum {
  24. CVAR_PERCENT = 0,
  25. CVAR_BANTYPE,
  26. CVAR_BANTIME
  27. };
  28. new g_szCvarName[][] = {
  29. "voteban_percent",
  30. "voteban_type",
  31. "voteban_time"
  32. };
  33. new g_szCvarValue[][] = {
  34. "80",
  35. "1",
  36. "100"
  37. };
  38. new g_iPcvar[3];
  39. new g_szLogFile[64];
  40.  
  41. public plugin_init() {
  42.  
  43. register_plugin(PLUGIN, VERSION, AUTHOR);
  44.  
  45. register_saycmd("voteban", "Cmd_VoteBan", -1, "");
  46. register_clcmd("_voteban_reason", "Cmd_VoteBanReason", -1, "");
  47.  
  48. register_menucmd(register_menuid("\rVOTEBAN \yMenu:"), MENU_KEYS, "Menu_VoteBan");
  49.  
  50. for(new i = 0 ; i < 3 ; i++)
  51. {
  52. g_iPcvar[i] = register_cvar(g_szCvarName[i], g_szCvarValue[i]);
  53. }
  54. g_iMsgidSayText = get_user_msgid("SayText");
  55.  
  56. new szLogInfo[] = "amx_logdir";
  57. get_localinfo(szLogInfo, g_szLogFile, charsmax(g_szLogFile));
  58. add(g_szLogFile, charsmax(g_szLogFile), "/voteban");
  59.  
  60. if(!dir_exists(g_szLogFile))
  61. mkdir(g_szLogFile);
  62.  
  63. new szTime[32];
  64. get_time("%d-%m-%Y", szTime, charsmax(szTime));
  65. format(g_szLogFile, charsmax(g_szLogFile), "%s/%s.log", g_szLogFile, szTime);
  66. }
  67.  
  68. public client_disconnect(id)
  69. {
  70. if(g_iVotedPlayers[id])
  71. {
  72. get_players(g_iPlayers, g_iNum, "h");
  73.  
  74. for(new i = 0 ; i < g_iNum ; i++)
  75. {
  76. if(g_iVotedPlayers[id] & (1 << g_iPlayers[i]))
  77. {
  78. g_iVotes[g_iPlayers[i]]--;
  79. }
  80. }
  81. g_iVotedPlayers[id] = 0;
  82. }
  83. }
  84.  
  85. public Cmd_VoteBan(id)
  86. {
  87. get_players(g_iPlayers, g_iNum, "h");
  88.  
  89. if(g_iNum < 3)
  90. {
  91. client_printc(id, "\g> \dThis command is unavailable! Need at least 3 players.");
  92. return PLUGIN_HANDLED;
  93. }
  94. ShowBanMenu(id, g_iMenuPage[id] = 0);
  95. return PLUGIN_CONTINUE;
  96. }
  97.  
  98. public ShowBanMenu(id, iPos)
  99. {
  100. static i, iPlayer, szName[32];
  101. static szMenu[256], iCurrPos; iCurrPos = 0;
  102. static iStart, iEnd; iStart = iPos * MENU_SLOTS;
  103. static iKeys;
  104.  
  105. get_players(g_iPlayers, g_iNum, "h");
  106.  
  107. if(iStart >= g_iNum)
  108. {
  109. iStart = iPos = g_iMenuPage[id] = 0;
  110. }
  111.  
  112. static iLen;
  113. iLen = formatex(szMenu, charsmax(szMenu), "\rVOTEBAN \yMenu:^n^n");
  114.  
  115. iEnd = iStart + MENU_SLOTS;
  116. iKeys = MENU_KEY_0;
  117.  
  118. if(iEnd > g_iNum)
  119. {
  120. iEnd = g_iNum;
  121. }
  122.  
  123. for(i = iStart ; i < iEnd ; i++)
  124. {
  125. iPlayer = g_iPlayers[i];
  126. get_user_name(iPlayer, szName, charsmax(szName));
  127.  
  128. iKeys |= (1 << iCurrPos++);
  129. iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r%d\w.%s \d(\r%d%%\d)^n", iCurrPos, szName, get_percent(g_iVotes[iPlayer], g_iNum));
  130. }
  131.  
  132. if(iEnd != g_iNum)
  133. {
  134. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r9\w.Next ^n\r0\w.%s", iPos ? "Back" : "Exit");
  135. iKeys |= MENU_KEY_9;
  136. }
  137. else
  138. {
  139. formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r0\w.%s", iPos ? "Back" : "Exit");
  140. }
  141. show_menu(id, iKeys, szMenu, -1, "");
  142. return PLUGIN_HANDLED;
  143. }
  144.  
  145. public Menu_VoteBan(id, key)
  146. {
  147. switch(key)
  148. {
  149. case 8:
  150. {
  151. ShowBanMenu(id, ++g_iMenuPage[id]);
  152. }
  153. case 9:
  154. {
  155. if(!g_iMenuPage[id])
  156. return PLUGIN_HANDLED;
  157.  
  158. ShowBanMenu(id, --g_iMenuPage[id]);
  159. }
  160. default: {
  161. static iPlayer;
  162. iPlayer = g_iPlayers[g_iMenuPage[id] * MENU_SLOTS + key];
  163.  
  164. if(!is_user_connected(iPlayer))
  165. {
  166. ShowBanMenu(id, g_iMenuPage[id]);
  167. return PLUGIN_HANDLED;
  168. }
  169. if(iPlayer == id)
  170. {
  171. client_print(id, print_center, "*You cannot voteban yourself!*");
  172. ShowBanMenu(id, g_iMenuPage[id]);
  173.  
  174. return PLUGIN_HANDLED;
  175. }
  176. if(g_iVotedPlayers[id] & (1 << iPlayer))
  177. {
  178. client_print(id, print_center, "*You already votebanned this player!*");
  179. ShowBanMenu(id, g_iMenuPage[id]);
  180.  
  181. return PLUGIN_HANDLED;
  182. }
  183. g_iVotes[iPlayer]++;
  184. g_iVotedPlayers[id] |= (1 << iPlayer);
  185.  
  186. static szName[2][32];
  187. get_user_name(id, szName[0], charsmax(szName[]));
  188. get_user_name(iPlayer, szName[1], charsmax(szName[]));
  189.  
  190. client_printc(0, "\g> \dPlayer \t%s \dvotebanned \t%s\d!", szName[0], szName[1]);
  191.  
  192. CheckVotes(iPlayer, id);
  193. client_cmd(id, "messagemode _voteban_reason");
  194.  
  195. ShowBanMenu(id, g_iMenuPage[id]);
  196. }
  197. }
  198. return PLUGIN_HANDLED;
  199. }
  200.  
  201. public Cmd_VoteBanReason(id)
  202. {
  203. if(!g_iVotedPlayers[id])
  204. return PLUGIN_HANDLED;
  205.  
  206. new szArgs[64];
  207. read_argv(1, szArgs, charsmax(szArgs));
  208.  
  209. if(szArgs[0])
  210. {
  211. formatex(g_szVoteReason[id], charsmax(g_szVoteReason[]), szArgs);
  212. }
  213. return PLUGIN_HANDLED;
  214. }
  215.  
  216. public CheckVotes(id, voter)
  217. {
  218. get_players(g_iPlayers, g_iNum, "h");
  219. new iPercent = get_percent(g_iVotes[id], g_iNum);
  220.  
  221. if(iPercent >= get_pcvar_num(g_iPcvar[CVAR_PERCENT]))
  222. {
  223. switch(get_pcvar_num(g_iPcvar[CVAR_BANTYPE]))
  224. {
  225. case 1:
  226. {
  227. new szAuthid[32];
  228. get_user_authid(id, szAuthid, charsmax(szAuthid));
  229. server_cmd("kick #%d;wait;wait;wait;banid %d ^"%s^";wait;wait;wait;writeid", get_user_userid(id), get_pcvar_num(g_iPcvar[CVAR_BANTIME]), szAuthid);
  230. }
  231. case 2:
  232. {
  233. new szIp[32];
  234. get_user_ip(id, szIp, charsmax(szIp), 1);
  235. server_cmd("kick #%d;wait;wait;wait;addip %d ^"%s^";wait;wait;wait;writeip", get_user_userid(id), get_pcvar_num(g_iPcvar[CVAR_BANTIME]), szIp);
  236. }
  237. }
  238. g_iVotes[id] = 0;
  239.  
  240. new szName[2][32];
  241. get_user_name(id, szName[0], charsmax(szName[]));
  242. get_user_name(id, szName[1], charsmax(szName[]));
  243. client_printc(0, "\g> \dPlayer \t%s \dhas been banned for \g%d\dmin. due voteban!", szName[0], get_pcvar_num(g_iPcvar[CVAR_BANTIME]));
  244.  
  245. log_to_file(g_szLogFile, "Player '%s' voted for banning '%s' for: %s", szName[1], szName[0], g_szVoteReason[voter]);
  246. }
  247. }
  248.  
  249. stock get_percent(value, tvalue)
  250. {
  251. return floatround(floatmul(float(value) / float(tvalue) , 100.0));
  252. }
  253.  
  254. stock register_saycmd(saycommand[], function[], flags = -1, info[])
  255. {
  256. static szTemp[64];
  257. formatex(szTemp, charsmax(szTemp), "say %s", saycommand);
  258. register_clcmd(szTemp, function, flags, info);
  259. formatex(szTemp, charsmax(szTemp), "say_team %s", saycommand);
  260. register_clcmd(szTemp, function, flags, info);
  261. formatex(szTemp, charsmax(szTemp), "say /%s", saycommand);
  262. register_clcmd(szTemp, function, flags, info);
  263. formatex(szTemp, charsmax(szTemp), "say .%s", saycommand);
  264. register_clcmd(szTemp, function, flags, info);
  265. formatex(szTemp, charsmax(szTemp), "say_team /%s", saycommand);
  266. register_clcmd(szTemp, function, flags, info);
  267. formatex(szTemp, charsmax(szTemp), "say_team .%s", saycommand);
  268. register_clcmd(szTemp, function, flags, info);
  269. }
  270.  
  271. stock client_printc(id, const text[], any:...)
  272. {
  273.  
  274. new szMsg[191], iPlayers[32], iCount = 1;
  275. vformat(szMsg, charsmax(szMsg), text, 3);
  276.  
  277. replace_all(szMsg, charsmax(szMsg), "\g","^x04");
  278. replace_all(szMsg, charsmax(szMsg), "\d","^x01");
  279. replace_all(szMsg, charsmax(szMsg), "\t","^x03");
  280.  
  281. if(id)
  282. iPlayers[0] = id;
  283. else
  284. get_players(iPlayers, iCount, "ch");
  285.  
  286. for(new i = 0 ; i < iCount ; i++)
  287. {
  288. if(!is_user_connected(iPlayers[i]))
  289. continue;
  290.  
  291. message_begin(MSG_ONE_UNRELIABLE, g_iMsgidSayText, _, iPlayers[i]);
  292. write_byte(iPlayers[i]);
  293. write_string(szMsg);
  294. message_end();
  295. }
  296. }
  297.  

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Voteban
HozzászólásElküldve: 2013.09.18. 20:07 
Offline
Senior Tag

Csatlakozott: 2012.07.09. 11:57
Hozzászólások: 234
Megköszönt másnak: 20 alkalommal
Megköszönték neki: 12 alkalommal
ha egybe kimásolgatod az angol részeket lefordítom neked

_________________
[mozgo]Bogdan for President[/mozgo]
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Voteban
HozzászólásElküldve: 2013.09.18. 20:24 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4286
Megköszönt másnak: 218 alkalommal
Megköszönték neki: 287 alkalommal
JAck írta:
ha egybe kimásolgatod az angol részeket lefordítom neked

SMA Forráskód: [ Mindet kijelol ]
  1. 1 = This command is unavailable! Need at least 3 players.
  2. 2 = *You cannot voteban yourself!*
  3. 3 = *You already votebanned this player!*
  4. 4 = Player %s votebanned
  5. 5 = Player %s has been banned for % admin. due voteban!
  6. 6 = Player '%s' voted for banning '%s' for: %s

Tess

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Voteban
HozzászólásElküldve: 2013.09.18. 20:32 
Offline
Senior Tag

Csatlakozott: 2012.07.09. 11:57
Hozzászólások: 234
Megköszönt másnak: 20 alkalommal
Megköszönték neki: 12 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. 1 = Nemhasználhatod ezt a parancsot. Minimum 3 ember kell hozzá.
  2. 2 = *Nem votebannolhatod magadat*
  3. 3 = *Már votebannoltad ezt a játékost*
  4. 4 = %s votebannolva lett
  5. 5 =%s bannolva lett %d percre.
  6. 6 = '%s' megszavaztatta '%s' banját. Oka: %s
  7.  

_________________
[mozgo]Bogdan for President[/mozgo]
Kép

Ők köszönték meg JAck nek ezt a hozzászólást: norbee.16 (2013.09.18. 22:07)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 4 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 3 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole