hlmod.hu

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



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Bing [Bot], Google [Bot] 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  [ 3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: helyezés
HozzászólásElküldve: 2013.04.08. 18:27 
Offline
Beavatott
Avatar

Csatlakozott: 2013.03.04. 02:42
Hozzászólások: 69
Megköszönt másnak: 16 alkalommal
Megköszönték neki: 4 alkalommal
Sziasztok!

Ezt kijavítanátok:

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <colorchat>
  4.  
  5. //#define HTML_IN_MOTD
  6. #define SAVE_RANKS_AFTER_SORT
  7. #define SORT_INTERVAL 15.0
  8.  
  9. enum RankData
  10. {
  11. Data_SteamID[32],
  12. Data_Name[32],
  13. Data_Kills,
  14. Data_Deaths
  15. };
  16.  
  17. new g_File[64];
  18. new Array:g_SteamID;
  19. new Trie:g_Name, Trie:g_Kills, Trie:g_Deaths;
  20. new g_Top15[2048];
  21. new bool:g_Sort = true;
  22. new g_Data[33][RankData], bool:g_Authorized[33];
  23.  
  24. public plugin_init()
  25. {
  26. register_plugin("Rank", "3.0", "hleV");
  27.  
  28. get_datadir(g_File, 63);
  29. add(g_File, 63, "/ranks.ini");
  30.  
  31. g_SteamID = ArrayCreate(32, 1);
  32. g_Name = TrieCreate();
  33. g_Kills = TrieCreate();
  34. g_Deaths = TrieCreate();
  35.  
  36. LoadRanks();
  37. ArraySort(g_SteamID, "SortRanks");
  38. WriteTop15();
  39.  
  40. set_task(SORT_INTERVAL, "SortTask", _, _, _, "b");
  41.  
  42. register_clcmd("say /rank", "SayRank");
  43. register_clcmd("say /top15", "SayTop15");
  44.  
  45. register_event("DeathMsg", "DeathMsg", "a");
  46. }
  47.  
  48. public plugin_end()
  49. {
  50. ArraySort(g_SteamID, "SortRanks");
  51. SaveRanks();
  52.  
  53. ArrayDestroy(g_SteamID);
  54. }
  55.  
  56. public client_putinserver(Client)
  57. {
  58. get_user_authid(Client, g_Data[Client][Data_SteamID], 31);
  59.  
  60. if (!str_to_num(g_Data[Client][Data_SteamID][10]))
  61. return;
  62.  
  63. get_user_name(Client, g_Data[Client][Data_Name], 31);
  64.  
  65. if (!TrieKeyExists(g_Name, g_Data[Client][Data_SteamID]))
  66. AddRank(Client);
  67. else
  68. LoadData(Client);
  69.  
  70. UpdateRank(Client, true);
  71.  
  72. g_Authorized[Client] = true;
  73. }
  74.  
  75. public client_disconnect(Client)
  76. g_Authorized[Client] = false;
  77.  
  78. public client_infochanged(Client)
  79. {
  80. if (!g_Authorized[Client])
  81. return;
  82.  
  83. static Name[32];
  84. get_user_info(Client, "name", Name, 31);
  85.  
  86. if (equal(Name, g_Data[Client][Data_Name]))
  87. return;
  88.  
  89. copy(g_Data[Client][Data_Name], 31, Name);
  90. UpdateRank(Client, true);
  91. }
  92.  
  93. public SayRank(Client)
  94. {
  95. new Position = GetPosition(Client);
  96.  
  97. if (!g_Authorized[Client] || !Position)
  98. {
  99. ColorChat(id, GREEN, "* Neked nincs helyezesed.");
  100.  
  101. return;
  102. }
  103.  
  104. ColorChat
  105. (
  106.  
  107. ColorChat(id, GREEN, "* A te helyezesed ^3%d ^4a ^3%d ^4-bol ^3%d ^4olessel es ^3%d ^4halal.",
  108. Position,
  109. ArraySize(g_SteamID),
  110. g_Data[Client][Data_Kills],
  111. g_Data[Client][Data_Deaths]
  112. );
  113. }
  114.  
  115. public SayTop15(Client)
  116. show_motd(Client, g_Top15, "Top 15");
  117.  
  118. public DeathMsg()
  119. {
  120. new Killer = read_data(1);
  121. new Victim = read_data(2);
  122.  
  123. if (g_Authorized[Victim])
  124. {
  125. g_Data[Victim][Data_Deaths]++;
  126. g_Sort = true;
  127.  
  128. UpdateRank(Victim, false);
  129. }
  130.  
  131. if (g_Authorized[Killer] && Killer != Victim)
  132. {
  133. g_Data[Killer][Data_Kills]++;
  134. g_Sort = true;
  135.  
  136. UpdateRank(Killer, false);
  137. }
  138. }
  139.  
  140. public SortTask()
  141. {
  142. if (!g_Sort)
  143. return;
  144.  
  145. ArraySort(g_SteamID, "SortRanks");
  146. WriteTop15();
  147.  
  148. #if defined SAVE_RANKS_AFTER_SORT
  149. SaveRanks();
  150. #endif
  151. }
  152.  
  153. public SortRanks(Array:SteamID, Position1, Position2)
  154. {
  155. static SteamID1[32];
  156. ArrayGetString(SteamID, Position1, SteamID1, 31);
  157.  
  158. static SteamID2[32];
  159. ArrayGetString(SteamID, Position2, SteamID2, 31);
  160.  
  161. static Kills1;
  162. TrieGetCell(g_Kills, SteamID1, Kills1);
  163.  
  164. static Kills2;
  165. TrieGetCell(g_Kills, SteamID2, Kills2);
  166.  
  167. static Deaths1;
  168. TrieGetCell(g_Deaths, SteamID1, Deaths1);
  169.  
  170. static Deaths2;
  171. TrieGetCell(g_Deaths, SteamID2, Deaths2);
  172.  
  173. if (Kills1 - Deaths1 < Kills2 - Deaths2)
  174. return 1;
  175. else if (Kills1 - Deaths1 > Kills2 - Deaths2)
  176. return -1;
  177.  
  178. return 0;
  179. }
  180.  
  181. LoadRanks()
  182. {
  183. new File = fopen(g_File, "r");
  184.  
  185. if (!File)
  186. return;
  187.  
  188. new Data[96], SteamID[32], Name[32], Kills[16], Deaths[16];
  189.  
  190. while (!feof(File))
  191. {
  192. fgets(File, Data, 96);
  193.  
  194. if (!strlen(Data))
  195. continue;
  196.  
  197. parse(Data, SteamID, 31, Name, 31, Kills, 15, Deaths, 15);
  198.  
  199. ArrayPushString(g_SteamID, SteamID);
  200. TrieSetString(g_Name, SteamID, Name);
  201. TrieSetCell(g_Kills, SteamID, str_to_num(Kills));
  202. TrieSetCell(g_Deaths, SteamID, str_to_num(Deaths));
  203. }
  204.  
  205. fclose(File);
  206. }
  207.  
  208. SaveRanks()
  209. {
  210. new File = fopen(g_File, "w+");
  211.  
  212. if (!File)
  213. return;
  214.  
  215. for (new Position, Size = ArraySize(g_SteamID), SteamID[32], Name[32], Kills, Deaths; Position < Size; Position++)
  216. {
  217. ArrayGetString(g_SteamID, Position, SteamID, 31);
  218. TrieGetString(g_Name, SteamID, Name, 31);
  219. TrieGetCell(g_Kills, SteamID, Kills);
  220. TrieGetCell(g_Deaths, SteamID, Deaths);
  221.  
  222. fprintf(File, "%s ^"%s^" %d %d^n", SteamID, Name, Kills, Deaths);
  223. }
  224.  
  225. fclose(File);
  226. }
  227.  
  228. AddRank(Client)
  229. {
  230. g_Data[Client][Data_Kills] = 0;
  231. g_Data[Client][Data_Deaths] = 0;
  232.  
  233. ArrayPushString(g_SteamID, g_Data[Client][Data_SteamID]);
  234. TrieSetString(g_Name, g_Data[Client][Data_SteamID], g_Data[Client][Data_Name]);
  235. }
  236.  
  237. LoadData(Client)
  238. {
  239. TrieGetCell(g_Kills, g_Data[Client][Data_SteamID], g_Data[Client][Data_Kills]);
  240. TrieGetCell(g_Deaths, g_Data[Client][Data_SteamID], g_Data[Client][Data_Deaths]);
  241. }
  242.  
  243. UpdateRank(Client, bool:Name)
  244. {
  245. if (Name)
  246. TrieSetString(g_Name, g_Data[Client][Data_SteamID], g_Data[Client][Data_Name]);
  247.  
  248. TrieSetCell(g_Kills, g_Data[Client][Data_SteamID], g_Data[Client][Data_Kills]);
  249. TrieSetCell(g_Deaths, g_Data[Client][Data_SteamID], g_Data[Client][Data_Deaths]);
  250. }
  251.  
  252. GetPosition(Client)
  253. {
  254. static Position, Size, SteamID[32];
  255.  
  256. for (Position = 0, Size = ArraySize(g_SteamID); Position < Size; Position++)
  257. {
  258. ArrayGetString(g_SteamID, Position, SteamID, 31);
  259.  
  260. if (equal(SteamID, g_Data[Client][Data_SteamID]))
  261. return Position + 1;
  262. }
  263.  
  264. return 0;
  265. }
  266.  
  267. WriteTop15()
  268. {
  269. #if defined HTML_IN_MOTD
  270. static const Header[] = "<body bgcolor=#000000><font color=#FFB000><pre>%5s %22s %5s %5s^n^n";
  271. static const Buffer[] = "%4d %22s %5d %6d^n";
  272. #else
  273. static const Header[] = "%5s %22s %5s %5s^n^n";
  274. static const Buffer[] = "%5d %22s %5d %5d^n";
  275. #endif
  276.  
  277. static Length, Position, Size, SteamID[32], Name[32], Kills, Deaths;
  278. Length = formatex(g_Top15[Length], 2047 - Length, Header, "Helyezes", "Nev", "Olesek", "Halalok");
  279.  
  280. for (Position = 0, Size = min(ArraySize(g_SteamID), 15); Position < Size; Position++)
  281. {
  282. ArrayGetString(g_SteamID, Position, SteamID, 31);
  283. TrieGetString(g_Name, SteamID, Name, 31);
  284. TrieGetCell(g_Kills, SteamID, Kills);
  285. TrieGetCell(g_Deaths, SteamID, Deaths);
  286.  
  287. Length += formatex(g_Top15[Length], 2047 - Length, Buffer, Position + 1, Name, Kills, Deaths);
  288. }
  289. }


error:
SMA Forráskód: [ Mindet kijelol ]
  1. Welcome to the AMX Mod X 1.8.1-300 Compiler.
  2. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team
  3.  
  4. Error: Undefined symbol "id" on line 99
  5. Warning: Expression has no effect on line 99
  6. Warning: Expression has no effect on line 99
  7. Error: Expected token: ";", but found ")" on line 99
  8. Error: Invalid expression, assumed zero on line 99
  9. Error: Too many error messages on one line on line 99
  10.  
  11. Compilation aborted.
  12. 4 Errors.
  13. Could not locate output file C:\alakito\Amx Mod X\AMX Studio & Compiler\Compile\compiled\Untitled.amx (compile failed).
  14.  

_________________
COD:MW3 szerver hamarosan...
Egyedi mód
: 85%

Kész konfig: 90%
Több kaszt: 100%
Szint limit: 100%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: helyezés
HozzászólásElküldve: 2013.04.08. 18:37 
Offline
Veterán
Avatar

Csatlakozott: 2012.09.01. 22:19
Hozzászólások: 1697
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 302 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <colorchat>
  4.  
  5. //#define HTML_IN_MOTD
  6. #define SAVE_RANKS_AFTER_SORT
  7. #define SORT_INTERVAL 15.0
  8.  
  9. enum RankData
  10. {
  11. Data_SteamID[32],
  12. Data_Name[32],
  13. Data_Kills,
  14. Data_Deaths
  15. };
  16.  
  17. new g_File[64];
  18. new Array:g_SteamID;
  19. new Trie:g_Name, Trie:g_Kills, Trie:g_Deaths;
  20. new g_Top15[2048];
  21. new bool:g_Sort = true;
  22. new g_Data[33][RankData], bool:g_Authorized[33];
  23.  
  24. public plugin_init()
  25. {
  26. register_plugin("Rank", "3.0", "hleV");
  27.  
  28. get_datadir(g_File, 63);
  29. add(g_File, 63, "/ranks.ini");
  30.  
  31. g_SteamID = ArrayCreate(32, 1);
  32. g_Name = TrieCreate();
  33. g_Kills = TrieCreate();
  34. g_Deaths = TrieCreate();
  35.  
  36. LoadRanks();
  37. ArraySort(g_SteamID, "SortRanks");
  38. WriteTop15();
  39.  
  40. set_task(SORT_INTERVAL, "SortTask", _, _, _, "b");
  41.  
  42. register_clcmd("say /rank", "SayRank");
  43. register_clcmd("say /top15", "SayTop15");
  44.  
  45. register_event("DeathMsg", "DeathMsg", "a");
  46. }
  47.  
  48. public plugin_end()
  49. {
  50. ArraySort(g_SteamID, "SortRanks");
  51. SaveRanks();
  52.  
  53. ArrayDestroy(g_SteamID);
  54. }
  55.  
  56. public client_putinserver(Client)
  57. {
  58. get_user_authid(Client, g_Data[Client][Data_SteamID], 31);
  59.  
  60. if (!str_to_num(g_Data[Client][Data_SteamID][10]))
  61. return;
  62.  
  63. get_user_name(Client, g_Data[Client][Data_Name], 31);
  64.  
  65. if (!TrieKeyExists(g_Name, g_Data[Client][Data_SteamID]))
  66. AddRank(Client);
  67. else
  68. LoadData(Client);
  69.  
  70. UpdateRank(Client, true);
  71.  
  72. g_Authorized[Client] = true;
  73. }
  74.  
  75. public client_disconnect(Client)
  76. g_Authorized[Client] = false;
  77.  
  78. public client_infochanged(Client)
  79. {
  80. if (!g_Authorized[Client])
  81. return;
  82.  
  83. static Name[32];
  84. get_user_info(Client, "name", Name, 31);
  85.  
  86. if (equal(Name, g_Data[Client][Data_Name]))
  87. return;
  88.  
  89. copy(g_Data[Client][Data_Name], 31, Name);
  90. UpdateRank(Client, true);
  91. }
  92.  
  93. public SayRank(Client)
  94. {
  95. new Position = GetPosition(Client);
  96.  
  97. if (!g_Authorized[Client] || !Position)
  98. {
  99. ColorChat(Client, GREEN, "Neked nincs helyezesed.")
  100.  
  101. return;
  102. }
  103.  
  104. ColorChat(Client, GREEN, "* A te helyezesed ^3%d ^4a ^3%d ^4-bol ^3%d ^4olessel es ^3%d ^4halal.",
  105. Position,
  106. ArraySize(g_SteamID),
  107. g_Data[Client][Data_Kills],
  108. g_Data[Client][Data_Deaths]
  109. );
  110. }
  111.  
  112. public SayTop15(Client)
  113. show_motd(Client, g_Top15, "Top 15");
  114.  
  115. public DeathMsg()
  116. {
  117. new Killer = read_data(1);
  118. new Victim = read_data(2);
  119.  
  120. if (g_Authorized[Victim])
  121. {
  122. g_Data[Victim][Data_Deaths]++;
  123. g_Sort = true;
  124.  
  125. UpdateRank(Victim, false);
  126. }
  127.  
  128. if (g_Authorized[Killer] && Killer != Victim)
  129. {
  130. g_Data[Killer][Data_Kills]++;
  131. g_Sort = true;
  132.  
  133. UpdateRank(Killer, false);
  134. }
  135. }
  136.  
  137. public SortTask()
  138. {
  139. if (!g_Sort)
  140. return;
  141.  
  142. ArraySort(g_SteamID, "SortRanks");
  143. WriteTop15();
  144.  
  145. #if defined SAVE_RANKS_AFTER_SORT
  146. SaveRanks();
  147. #endif
  148. }
  149.  
  150. public SortRanks(Array:SteamID, Position1, Position2)
  151. {
  152. static SteamID1[32];
  153. ArrayGetString(SteamID, Position1, SteamID1, 31);
  154.  
  155. static SteamID2[32];
  156. ArrayGetString(SteamID, Position2, SteamID2, 31);
  157.  
  158. static Kills1;
  159. TrieGetCell(g_Kills, SteamID1, Kills1);
  160.  
  161. static Kills2;
  162. TrieGetCell(g_Kills, SteamID2, Kills2);
  163.  
  164. static Deaths1;
  165. TrieGetCell(g_Deaths, SteamID1, Deaths1);
  166.  
  167. static Deaths2;
  168. TrieGetCell(g_Deaths, SteamID2, Deaths2);
  169.  
  170. if (Kills1 - Deaths1 < Kills2 - Deaths2)
  171. return 1;
  172. else if (Kills1 - Deaths1 > Kills2 - Deaths2)
  173. return -1;
  174.  
  175. return 0;
  176. }
  177.  
  178. LoadRanks()
  179. {
  180. new File = fopen(g_File, "r");
  181.  
  182. if (!File)
  183. return;
  184.  
  185. new Data[96], SteamID[32], Name[32], Kills[16], Deaths[16];
  186.  
  187. while (!feof(File))
  188. {
  189. fgets(File, Data, 96);
  190.  
  191. if (!strlen(Data))
  192. continue;
  193.  
  194. parse(Data, SteamID, 31, Name, 31, Kills, 15, Deaths, 15);
  195.  
  196. ArrayPushString(g_SteamID, SteamID);
  197. TrieSetString(g_Name, SteamID, Name);
  198. TrieSetCell(g_Kills, SteamID, str_to_num(Kills));
  199. TrieSetCell(g_Deaths, SteamID, str_to_num(Deaths));
  200. }
  201.  
  202. fclose(File);
  203. }
  204.  
  205. SaveRanks()
  206. {
  207. new File = fopen(g_File, "w+");
  208.  
  209. if (!File)
  210. return;
  211.  
  212. for (new Position, Size = ArraySize(g_SteamID), SteamID[32], Name[32], Kills, Deaths; Position < Size; Position++)
  213. {
  214. ArrayGetString(g_SteamID, Position, SteamID, 31);
  215. TrieGetString(g_Name, SteamID, Name, 31);
  216. TrieGetCell(g_Kills, SteamID, Kills);
  217. TrieGetCell(g_Deaths, SteamID, Deaths);
  218.  
  219. fprintf(File, "%s ^"%s^" %d %d^n", SteamID, Name, Kills, Deaths);
  220. }
  221.  
  222. fclose(File);
  223. }
  224.  
  225. AddRank(Client)
  226. {
  227. g_Data[Client][Data_Kills] = 0;
  228. g_Data[Client][Data_Deaths] = 0;
  229.  
  230. ArrayPushString(g_SteamID, g_Data[Client][Data_SteamID]);
  231. TrieSetString(g_Name, g_Data[Client][Data_SteamID], g_Data[Client][Data_Name]);
  232. }
  233.  
  234. LoadData(Client)
  235. {
  236. TrieGetCell(g_Kills, g_Data[Client][Data_SteamID], g_Data[Client][Data_Kills]);
  237. TrieGetCell(g_Deaths, g_Data[Client][Data_SteamID], g_Data[Client][Data_Deaths]);
  238. }
  239.  
  240. UpdateRank(Client, bool:Name)
  241. {
  242. if (Name)
  243. TrieSetString(g_Name, g_Data[Client][Data_SteamID], g_Data[Client][Data_Name]);
  244.  
  245. TrieSetCell(g_Kills, g_Data[Client][Data_SteamID], g_Data[Client][Data_Kills]);
  246. TrieSetCell(g_Deaths, g_Data[Client][Data_SteamID], g_Data[Client][Data_Deaths]);
  247. }
  248.  
  249. GetPosition(Client)
  250. {
  251. static Position, Size, SteamID[32];
  252.  
  253. for (Position = 0, Size = ArraySize(g_SteamID); Position < Size; Position++)
  254. {
  255. ArrayGetString(g_SteamID, Position, SteamID, 31);
  256.  
  257. if (equal(SteamID, g_Data[Client][Data_SteamID]))
  258. return Position + 1;
  259. }
  260.  
  261. return 0;
  262. }
  263.  
  264. WriteTop15()
  265. {
  266. #if defined HTML_IN_MOTD
  267. static const Header[] = "<body bgcolor=#000000><font color=#FFB000><pre>%5s %22s %5s %5s^n^n";
  268. static const Buffer[] = "%4d %22s %5d %6d^n";
  269. #else
  270. static const Header[] = "%5s %22s %5s %5s^n^n";
  271. static const Buffer[] = "%5d %22s %5d %5d^n";
  272. #endif
  273.  
  274. static Length, Position, Size, SteamID[32], Name[32], Kills, Deaths;
  275. Length = formatex(g_Top15[Length], 2047 - Length, Header, "Helyezes", "Nev", "Olesek", "Halalok");
  276.  
  277. for (Position = 0, Size = min(ArraySize(g_SteamID), 15); Position < Size; Position++)
  278. {
  279. ArrayGetString(g_SteamID, Position, SteamID, 31);
  280. TrieGetString(g_Name, SteamID, Name, 31);
  281. TrieGetCell(g_Kills, SteamID, Kills);
  282. TrieGetCell(g_Deaths, SteamID, Deaths);
  283.  
  284. Length += formatex(g_Top15[Length], 2047 - Length, Buffer, Position + 1, Name, Kills, Deaths);
  285. }
  286. }

_________________
Valami új kezdete...
Kép
Egyedi pluginok készítése pénzért (Banki átutalás, PayPal) -> Privát üzenet

Ők köszönték meg crazy` nek ezt a hozzászólást: bryan112.cfg (2013.04.08. 18:41)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: helyezés
HozzászólásElküldve: 2013.04.08. 18:42 
Offline
Beavatott
Avatar

Csatlakozott: 2013.03.04. 02:42
Hozzászólások: 69
Megköszönt másnak: 16 alkalommal
Megköszönték neki: 4 alkalommal
crazy` írta:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <colorchat>
  4.  
  5. //#define HTML_IN_MOTD
  6. #define SAVE_RANKS_AFTER_SORT
  7. #define SORT_INTERVAL 15.0
  8.  
  9. enum RankData
  10. {
  11. Data_SteamID[32],
  12. Data_Name[32],
  13. Data_Kills,
  14. Data_Deaths
  15. };
  16.  
  17. new g_File[64];
  18. new Array:g_SteamID;
  19. new Trie:g_Name, Trie:g_Kills, Trie:g_Deaths;
  20. new g_Top15[2048];
  21. new bool:g_Sort = true;
  22. new g_Data[33][RankData], bool:g_Authorized[33];
  23.  
  24. public plugin_init()
  25. {
  26. register_plugin("Rank", "3.0", "hleV");
  27.  
  28. get_datadir(g_File, 63);
  29. add(g_File, 63, "/ranks.ini");
  30.  
  31. g_SteamID = ArrayCreate(32, 1);
  32. g_Name = TrieCreate();
  33. g_Kills = TrieCreate();
  34. g_Deaths = TrieCreate();
  35.  
  36. LoadRanks();
  37. ArraySort(g_SteamID, "SortRanks");
  38. WriteTop15();
  39.  
  40. set_task(SORT_INTERVAL, "SortTask", _, _, _, "b");
  41.  
  42. register_clcmd("say /rank", "SayRank");
  43. register_clcmd("say /top15", "SayTop15");
  44.  
  45. register_event("DeathMsg", "DeathMsg", "a");
  46. }
  47.  
  48. public plugin_end()
  49. {
  50. ArraySort(g_SteamID, "SortRanks");
  51. SaveRanks();
  52.  
  53. ArrayDestroy(g_SteamID);
  54. }
  55.  
  56. public client_putinserver(Client)
  57. {
  58. get_user_authid(Client, g_Data[Client][Data_SteamID], 31);
  59.  
  60. if (!str_to_num(g_Data[Client][Data_SteamID][10]))
  61. return;
  62.  
  63. get_user_name(Client, g_Data[Client][Data_Name], 31);
  64.  
  65. if (!TrieKeyExists(g_Name, g_Data[Client][Data_SteamID]))
  66. AddRank(Client);
  67. else
  68. LoadData(Client);
  69.  
  70. UpdateRank(Client, true);
  71.  
  72. g_Authorized[Client] = true;
  73. }
  74.  
  75. public client_disconnect(Client)
  76. g_Authorized[Client] = false;
  77.  
  78. public client_infochanged(Client)
  79. {
  80. if (!g_Authorized[Client])
  81. return;
  82.  
  83. static Name[32];
  84. get_user_info(Client, "name", Name, 31);
  85.  
  86. if (equal(Name, g_Data[Client][Data_Name]))
  87. return;
  88.  
  89. copy(g_Data[Client][Data_Name], 31, Name);
  90. UpdateRank(Client, true);
  91. }
  92.  
  93. public SayRank(Client)
  94. {
  95. new Position = GetPosition(Client);
  96.  
  97. if (!g_Authorized[Client] || !Position)
  98. {
  99. ColorChat(Client, GREEN, "Neked nincs helyezesed.")
  100.  
  101. return;
  102. }
  103.  
  104. ColorChat(Client, GREEN, "* A te helyezesed ^3%d ^4a ^3%d ^4-bol ^3%d ^4olessel es ^3%d ^4halal.",
  105. Position,
  106. ArraySize(g_SteamID),
  107. g_Data[Client][Data_Kills],
  108. g_Data[Client][Data_Deaths]
  109. );
  110. }
  111.  
  112. public SayTop15(Client)
  113. show_motd(Client, g_Top15, "Top 15");
  114.  
  115. public DeathMsg()
  116. {
  117. new Killer = read_data(1);
  118. new Victim = read_data(2);
  119.  
  120. if (g_Authorized[Victim])
  121. {
  122. g_Data[Victim][Data_Deaths]++;
  123. g_Sort = true;
  124.  
  125. UpdateRank(Victim, false);
  126. }
  127.  
  128. if (g_Authorized[Killer] && Killer != Victim)
  129. {
  130. g_Data[Killer][Data_Kills]++;
  131. g_Sort = true;
  132.  
  133. UpdateRank(Killer, false);
  134. }
  135. }
  136.  
  137. public SortTask()
  138. {
  139. if (!g_Sort)
  140. return;
  141.  
  142. ArraySort(g_SteamID, "SortRanks");
  143. WriteTop15();
  144.  
  145. #if defined SAVE_RANKS_AFTER_SORT
  146. SaveRanks();
  147. #endif
  148. }
  149.  
  150. public SortRanks(Array:SteamID, Position1, Position2)
  151. {
  152. static SteamID1[32];
  153. ArrayGetString(SteamID, Position1, SteamID1, 31);
  154.  
  155. static SteamID2[32];
  156. ArrayGetString(SteamID, Position2, SteamID2, 31);
  157.  
  158. static Kills1;
  159. TrieGetCell(g_Kills, SteamID1, Kills1);
  160.  
  161. static Kills2;
  162. TrieGetCell(g_Kills, SteamID2, Kills2);
  163.  
  164. static Deaths1;
  165. TrieGetCell(g_Deaths, SteamID1, Deaths1);
  166.  
  167. static Deaths2;
  168. TrieGetCell(g_Deaths, SteamID2, Deaths2);
  169.  
  170. if (Kills1 - Deaths1 < Kills2 - Deaths2)
  171. return 1;
  172. else if (Kills1 - Deaths1 > Kills2 - Deaths2)
  173. return -1;
  174.  
  175. return 0;
  176. }
  177.  
  178. LoadRanks()
  179. {
  180. new File = fopen(g_File, "r");
  181.  
  182. if (!File)
  183. return;
  184.  
  185. new Data[96], SteamID[32], Name[32], Kills[16], Deaths[16];
  186.  
  187. while (!feof(File))
  188. {
  189. fgets(File, Data, 96);
  190.  
  191. if (!strlen(Data))
  192. continue;
  193.  
  194. parse(Data, SteamID, 31, Name, 31, Kills, 15, Deaths, 15);
  195.  
  196. ArrayPushString(g_SteamID, SteamID);
  197. TrieSetString(g_Name, SteamID, Name);
  198. TrieSetCell(g_Kills, SteamID, str_to_num(Kills));
  199. TrieSetCell(g_Deaths, SteamID, str_to_num(Deaths));
  200. }
  201.  
  202. fclose(File);
  203. }
  204.  
  205. SaveRanks()
  206. {
  207. new File = fopen(g_File, "w+");
  208.  
  209. if (!File)
  210. return;
  211.  
  212. for (new Position, Size = ArraySize(g_SteamID), SteamID[32], Name[32], Kills, Deaths; Position < Size; Position++)
  213. {
  214. ArrayGetString(g_SteamID, Position, SteamID, 31);
  215. TrieGetString(g_Name, SteamID, Name, 31);
  216. TrieGetCell(g_Kills, SteamID, Kills);
  217. TrieGetCell(g_Deaths, SteamID, Deaths);
  218.  
  219. fprintf(File, "%s ^"%s^" %d %d^n", SteamID, Name, Kills, Deaths);
  220. }
  221.  
  222. fclose(File);
  223. }
  224.  
  225. AddRank(Client)
  226. {
  227. g_Data[Client][Data_Kills] = 0;
  228. g_Data[Client][Data_Deaths] = 0;
  229.  
  230. ArrayPushString(g_SteamID, g_Data[Client][Data_SteamID]);
  231. TrieSetString(g_Name, g_Data[Client][Data_SteamID], g_Data[Client][Data_Name]);
  232. }
  233.  
  234. LoadData(Client)
  235. {
  236. TrieGetCell(g_Kills, g_Data[Client][Data_SteamID], g_Data[Client][Data_Kills]);
  237. TrieGetCell(g_Deaths, g_Data[Client][Data_SteamID], g_Data[Client][Data_Deaths]);
  238. }
  239.  
  240. UpdateRank(Client, bool:Name)
  241. {
  242. if (Name)
  243. TrieSetString(g_Name, g_Data[Client][Data_SteamID], g_Data[Client][Data_Name]);
  244.  
  245. TrieSetCell(g_Kills, g_Data[Client][Data_SteamID], g_Data[Client][Data_Kills]);
  246. TrieSetCell(g_Deaths, g_Data[Client][Data_SteamID], g_Data[Client][Data_Deaths]);
  247. }
  248.  
  249. GetPosition(Client)
  250. {
  251. static Position, Size, SteamID[32];
  252.  
  253. for (Position = 0, Size = ArraySize(g_SteamID); Position < Size; Position++)
  254. {
  255. ArrayGetString(g_SteamID, Position, SteamID, 31);
  256.  
  257. if (equal(SteamID, g_Data[Client][Data_SteamID]))
  258. return Position + 1;
  259. }
  260.  
  261. return 0;
  262. }
  263.  
  264. WriteTop15()
  265. {
  266. #if defined HTML_IN_MOTD
  267. static const Header[] = "<body bgcolor=#000000><font color=#FFB000><pre>%5s %22s %5s %5s^n^n";
  268. static const Buffer[] = "%4d %22s %5d %6d^n";
  269. #else
  270. static const Header[] = "%5s %22s %5s %5s^n^n";
  271. static const Buffer[] = "%5d %22s %5d %5d^n";
  272. #endif
  273.  
  274. static Length, Position, Size, SteamID[32], Name[32], Kills, Deaths;
  275. Length = formatex(g_Top15[Length], 2047 - Length, Header, "Helyezes", "Nev", "Olesek", "Halalok");
  276.  
  277. for (Position = 0, Size = min(ArraySize(g_SteamID), 15); Position < Size; Position++)
  278. {
  279. ArrayGetString(g_SteamID, Position, SteamID, 31);
  280. TrieGetString(g_Name, SteamID, Name, 31);
  281. TrieGetCell(g_Kills, SteamID, Kills);
  282. TrieGetCell(g_Deaths, SteamID, Deaths);
  283.  
  284. Length += formatex(g_Top15[Length], 2047 - Length, Buffer, Position + 1, Name, Kills, Deaths);
  285. }
  286. }


ty.

_________________
COD:MW3 szerver hamarosan...
Egyedi mód
: 85%

Kész konfig: 90%
Több kaszt: 100%
Szint limit: 100%


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  [ 3 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 51 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