hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.27. 19:51



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: 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  [ 52 hozzászólás ]  Oldal Előző 1 2 3 4 5 6 Következő
Szerző Üzenet
 Hozzászólás témája: Re: Publikus CS:GO Mod
HozzászólásElküldve: 2016.05.21. 15:12 
Offline
Senior Tag

Csatlakozott: 2015.08.11. 14:21
Hozzászólások: 215
Megköszönt másnak: 50 alkalommal
Megköszönték neki: 6 alkalommal
Nem ír semmit... De a szerver fut.. Meg a mysql táblát is létrehozza


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Publikus CS:GO Mod
HozzászólásElküldve: 2016.05.22. 10:07 
Offline
Beavatott

Csatlakozott: 2016.05.11. 23:09
Hozzászólások: 67
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 3 alkalommal
Fura egy kicsit hogy mindenkinek nem jó de én ezt használtam 1 hétig és jó volt


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Publikus CS:GO Mod
HozzászólásElküldve: 2016.05.22. 19:40 
Offline
Senior Tag

Csatlakozott: 2015.12.14. 18:19
Hozzászólások: 216
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 5 alkalommal
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0")' at line 1
ez mit jelent? elo rank nal irja

_________________
.::#0n3.Sh00T[Clan] Only AWP#Update[DEAGELE PÁRBAJ & RTD & Statrak*
Kép
Go,Go,Go Nagyon jó szerver :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Publikus CS:GO Mod
HozzászólásElküldve: 2016.05.23. 19:21 
Offline
Nagyúr
Avatar

Csatlakozott: 2014.08.24. 18:28
Hozzászólások: 584
Megköszönt másnak: 122 alkalommal
Megköszönték neki: 120 alkalommal
Azért SQL, mert SQL... FVaultba beledöglene a szerver...
Az ELO bugos sajna, még nem volt időm javítani, de nemsokára fogom. Holnap biztos, hogy nem, de Szerdán látok rá esélyt, hogy nekiállok.

Gyors belenéztem, erre jutottam:
  1. /*Köszönet  Mike-nak és R_Hehl-nek az ELO Rankrendszerért: https://forums.alliedmods.net/showpost. ... ostcount=1
  2. mforce-nak és Akosch:.-nak a segítségért. :)*/
  3.  
  4. /*
  5. v1.2.0 - Rankból olvas [csstats]
  6. v1.1.0 - sql.cfg-ből olvas SQL adatokat, chat rendszer bekerült.
  7. v1.0.0 - Alap rendszer elkészítése.
  8. */
  9.  
  10. #include <amxmodx>
  11. #include <amxmisc>
  12. #include <csstats>
  13. #include <colorchat>
  14. #include <sqlx>
  15.  
  16. enum _:DATA
  17. {
  18.     Cht_Prefix[32],
  19.     Name[32],
  20.     Min_ELO,
  21.     Max_ELO
  22. }
  23.  
  24. new const g_Ranks[19][DATA] = {
  25.     {"Unranked", "Unranked", -1, 0},
  26.     {"Silver I", "Silver I", 0, 199},
  27.     {"Silver II", "Silver II", 200, 399},
  28.     {"Silver III", "Silver III", 400, 799},
  29.     {"Silver IV", "Silver IV", 800, 1199},
  30.     {"SE", "Silver Elite", 1200, 1599},
  31.     {"SEM", "Silver Elite Master", 1600, 1999},
  32.     {"Nova I", "Gold Nova I", 2000, 2399},
  33.     {"Nova II", "Gold Nova II", 2400, 2799},
  34.     {"Nova III", "Gold Nova III", 2800, 3199},
  35.     {"Nova Master", "Gold Nova Master", 3200, 3599},
  36.     {"Kala", "Master Guardian I", 3600, 3999},
  37.     {"Kala II", "Master Guardian II", 4000, 4499},
  38.     {"Kereszt Kala", "Master Guardian Elite", 4500, 4999},
  39.     {"Sheriff", "Distinguished Master Guardian", 5000, 5999},
  40.     {"Sas", "Legendary Eagle", 6000, 6999},
  41.     {"Sas II", "Legendary Eagle Master", 7000, 7999},
  42.     {"Supreme", "Supreme Master First Class", 8000, 9999},
  43.     {"Global", "The Global Elite", 10000, 0}
  44. }
  45.  
  46. #define GetBit(%1,%2)       (%1 & (1 << (%2 & 31)))
  47. #define SetBit(%1,%2)       %1 |= (1 << (%2 & 31))
  48. #define ResetBit(%1,%2)     %1 &= ~(1 << (%2 & 31))
  49.  
  50. new bitadmin, bitelo
  51.  
  52. new SQL_INFO[4][32]
  53. new Handle:g_SqlTuple
  54.  
  55. new const Prefix[] = {"ELO"}
  56.  
  57. new cvar_kValue, cvar_Advert
  58.  
  59. enum _:P_DATA
  60. {
  61.     Rank,
  62.     Rating,
  63.     Kills,
  64.     Deaths,
  65.     SessionRating,
  66.     SessionKills,
  67.     SessionDeaths,
  68.     Name[64],
  69.     AuthId[32],
  70.     bool:Notify
  71. }
  72. new g_PlayerDatas[33][P_DATA]
  73. new bool:roundend
  74.  
  75. enum _:TOP
  76. {
  77.     Name[32],
  78.     Kills,
  79.     Deaths,
  80.     Rating
  81. }
  82. new const g_Top10[10][TOP]
  83.  
  84. public plugin_init() {
  85.     register_plugin("ELO Stats", "1.1.0", "LyleChriss")
  86.    
  87.     cvar_kValue = register_cvar("amx_elo_k", "16.0")
  88.     cvar_Advert = register_cvar("amx_elo_ads", "60.0")
  89.    
  90.     // Rank
  91.     register_clcmd("say elo", "SQL_Rank")
  92.     register_clcmd("say .elo", "SQL_Rank")
  93.     register_clcmd("say !elo", "SQL_Rank")
  94.     register_clcmd("say /elo", "SQL_Rank")
  95.     // Top10
  96.     register_clcmd("say top10", "SQL_Top10")
  97.     register_clcmd("say .top10", "SQL_Top10")
  98.     register_clcmd("say !top10", "SQL_Top10")
  99.     register_clcmd("say /top10", "SQL_Top10")
  100.     // Session Stats
  101.     register_clcmd("say session", "SessionStats")
  102.     register_clcmd("say .session", "SessionStats")
  103.     register_clcmd("say !session", "SessionStats")
  104.     register_clcmd("say /session", "SessionStats")
  105.     // ELO Notify
  106.     register_clcmd("say notify", "Notification")
  107.     register_clcmd("say .notify", "Notification")
  108.     register_clcmd("say !notify", "Notification")
  109.     register_clcmd("say /notify", "Notification")
  110.  
  111.     register_event("DeathMsg", "eDeathMsg", "a")
  112.     register_logevent("logevent_round_start", 2, "1=Round_Start")
  113.     register_logevent("logevent_round_end", 2, "1=Round_End")
  114.    
  115.     //Chat cuccok
  116.     register_clcmd("say", "HandlerSay");
  117.     register_clcmd("say_team", "HandlerSayTeam");
  118.     register_event("ResetHUD", "eResetHUD", "be");
  119.    
  120.     if(get_pcvar_float(cvar_Advert) > 0.0)
  121.         set_task(get_pcvar_float(cvar_Advert), "Advertise", _, _, _, "b")
  122.        
  123.     get_cvar_string("amx_sql_host", SQL_INFO[0], charsmax(SQL_INFO[]))
  124.     get_cvar_string("amx_sql_user", SQL_INFO[1], charsmax(SQL_INFO[]))
  125.     get_cvar_string("amx_sql_pass", SQL_INFO[2], charsmax(SQL_INFO[]))
  126.     get_cvar_string("amx_sql_db", SQL_INFO[3], charsmax(SQL_INFO[]))
  127. }
  128.  
  129. public eDeathMsg()
  130. {
  131.     ResetBit(bitelo, read_data(2))
  132.     if(!roundend)
  133.     {
  134.         new attacker = read_data(1)
  135.         new victim = read_data(2)
  136.        
  137.         if(attacker != victim)
  138.         {
  139.             new Float:rating = float(g_PlayerDatas[victim][Rating]-g_PlayerDatas[attacker][Rating])
  140.             new Float:prob = 1.0/(power(floatround(rating)/400, 10)+1)
  141.             new diff = floatround(get_pcvar_float(cvar_kValue)*(1.0-prob))
  142.            
  143.             g_PlayerDatas[victim][Rating] -= diff
  144.             g_PlayerDatas[attacker][Rating] += diff
  145.             g_PlayerDatas[victim][SessionRating] -= diff
  146.             g_PlayerDatas[attacker][SessionRating] += diff
  147.             g_PlayerDatas[victim][SessionDeaths]++
  148.             g_PlayerDatas[attacker][SessionKills]++
  149.             Update_SQL(victim)
  150.             Update_SQL(attacker)
  151.            
  152.             new victName[32]; get_user_name(victim, victName, charsmax(victName))
  153.             new attaName[32]; get_user_name(attacker, attaName, charsmax(attaName))
  154.            
  155.             if(g_PlayerDatas[attacker][Notify])
  156.             {
  157.                 ColorChat(attacker, NORMAL, "^4[%s]^1 Megölted (^4%i^1) ^3%s^1-t (^4%i^1), ezért kaptál ^4%i ^1pontot.", Prefix, g_PlayerDatas[attacker][Rating], victName, g_PlayerDatas[victim][Rating], diff)
  158.             }
  159.             if(g_PlayerDatas[victim][Notify])
  160.             {
  161.                 ColorChat(victim, NORMAL, "^4[%s]^1 Megölt téged (^4%i^1) ^3%s^1 (^4%i^1), ezért vesztettél ^4%i ^1pontot.", Prefix, g_PlayerDatas[victim][Rating], victName, g_PlayerDatas[attacker][Rating], diff)
  162.             }
  163.         }
  164.     }
  165. }
  166.  
  167. public logevent_round_start()   roundend=false
  168.  
  169. public logevent_round_end() roundend=true
  170.  
  171. public eResetHUD(id, level, cid) SetBit(bitelo, id)
  172.  
  173. public plugin_cfg()
  174. {
  175.     g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3])
  176.    
  177.     SQL_ThreadQuery(g_SqlTuple,"createTableThread", "CREATE TABLE IF NOT EXISTS `elo_ranking` (`authid` varchar(32) NOT NULL, `name` varchar(64) NOT NULL, `rating` INT(8), `kills` INT(8), `deaths` INT(8), `notify` INT(2), `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
  178. }
  179.  
  180. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  181. {
  182.     if(FailState == TQUERY_CONNECT_FAILED)
  183.         set_fail_state("Nem lehet csatlakozni az adatbazishoz.")
  184.     else if(FailState == TQUERY_QUERY_FAILED)
  185.         set_fail_state("Query Error")
  186.     if(Errcode)
  187.         log_amx("Hiba: %s",Error)
  188. }
  189.  
  190. public client_putinserver(id)
  191. {
  192.     arrayset(g_PlayerDatas[id], 0, 7)
  193.     g_PlayerDatas[id][SessionRating] = 1600
  194.     g_PlayerDatas[id][Rating] = -1
  195.     g_PlayerDatas[id][Name][0] = EOS
  196.     g_PlayerDatas[id][AuthId][0] = EOS
  197.     g_PlayerDatas[id][Notify] = true
  198.    
  199.     if(get_user_flags(id) & ADMIN_CHAT) SetBit(bitadmin, id)
  200.     else ResetBit(bitadmin, id)
  201.    
  202.     if(!is_user_bot(id) && !is_user_hltv(id))
  203.     {
  204.         get_user_name(id, g_PlayerDatas[id][Name], charsmax(g_PlayerDatas[][Name]))
  205.         get_user_authid(id, g_PlayerDatas[id][AuthId], charsmax(g_PlayerDatas[][AuthId]))
  206.         if(contain(g_PlayerDatas[id][AuthId], "_ID_LAN") != -1) get_user_ip(id, g_PlayerDatas[id][AuthId], charsmax(g_PlayerDatas[][AuthId]), 1)
  207.         Load_SQL(id)
  208.     }
  209. }
  210.  
  211. public client_infochanged(id)
  212. {
  213.     if(!is_user_connected(id))
  214.         return PLUGIN_HANDLED
  215.    
  216.     get_user_info(id, "name", g_PlayerDatas[id][Name], charsmax(g_PlayerDatas[][Name]))
  217.    
  218.     return PLUGIN_CONTINUE
  219. }
  220.  
  221. public client_disconnect(id)
  222. {
  223.     ResetBit(bitelo, id)
  224.    
  225.     new szStats[8], szBHits[8]
  226.     get_user_stats(id, szStats, szBHits)
  227.     g_PlayerDatas[id][Kills] = szStats[0]
  228.     g_PlayerDatas[id][Deaths] = szStats[1]
  229.    
  230.     if(!is_user_bot(id) && !is_user_hltv(id)) Update_SQL(id)
  231.    
  232.     arrayset(g_PlayerDatas[id], 0, 7)
  233.     g_PlayerDatas[id][SessionRating] = 1600
  234.     g_PlayerDatas[id][Rating] = -1
  235.     g_PlayerDatas[id][Name][0] = EOS
  236.     g_PlayerDatas[id][AuthId][0] = EOS
  237.     g_PlayerDatas[id][Notify] = true
  238. }
  239.  
  240. public Load_SQL(id)
  241. {
  242.     static Query[512]
  243.     new Data[1]; Data[0] = id
  244.    
  245.     formatex(Query, charsmax(Query), "SELECT * FROM `elo_ranking` WHERE authid = '%s';", g_PlayerDatas[id][AuthId])
  246.     SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1)
  247. }
  248.  
  249. public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  250. {
  251.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  252.     {
  253.         log_amx("%s", Error)
  254.         return
  255.     }
  256.     else
  257.     {
  258.         new id = Data[0];
  259.  
  260.         if(SQL_NumRows(Query) > 0)
  261.         {
  262.             g_PlayerDatas[id][Rating] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "rating"))
  263.             g_PlayerDatas[id][Notify] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "notify"))
  264.         }
  265.         else
  266.         {
  267.             Save_SQL(id)
  268.         }
  269.     }
  270. }
  271.  
  272. public Save_SQL(id)
  273. {
  274.     static Query[512]
  275.     formatex(Query, charsmax(Query), "INSERT INTO `elo_ranking` (`authid`, `name`, `rating`, `kills`, `deaths`, `notify`) VALUES ('%s', '%s', 1600, 0, 0, 0);", g_PlayerDatas[id][AuthId], g_PlayerDatas[id][Name])
  276.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
  277. }
  278.  
  279. public Update_SQL(id)
  280. {
  281.     static Query[512]
  282.     formatex(Query, charsmax(Query), "UPDATE `elo_ranking` SET `name` = '%s', `rating` = %d, `kills` = %d, `deaths` = %d, `notify` = %d WHERE `authid` = '%s';", g_PlayerDatas[id][Name], g_PlayerDatas[id][Rating], g_PlayerDatas[id][Kills], g_PlayerDatas[id][Deaths], g_PlayerDatas[id][Notify], g_PlayerDatas[id][AuthId])
  283.    
  284.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
  285. }
  286.  
  287. public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  288. {
  289.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  290.     {
  291.         log_amx("%s", Error)
  292.         return
  293.     }
  294. }
  295.  
  296. public SQL_Rank(id)
  297. {
  298.     static Query[512]
  299.     new Data[1]; Data[0] = id
  300.     formatex(Query, charsmax(Query), "SELECT COUNT(*) FROM `elo_ranking` WHERE `rating`>%i", g_PlayerDatas[id][Rating])
  301.     SQL_ThreadQuery(g_SqlTuple, "QueryRank", Query, Data, 1)
  302. }
  303.  
  304. public QueryRank(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  305. {
  306.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  307.     {
  308.         log_amx("%s", Error)
  309.         return
  310.     }
  311.     else
  312.     {
  313.         g_PlayerDatas[Data[0]][Rank] = SQL_ReadResult(Query, P_DATA)
  314.         g_PlayerDatas[Data[0]][Rank] ++
  315.     }
  316.     SQL_ThreadQuery(Query, "QueryCount", "SELECT COUNT(*) FROM `elo_ranking`", Data, 1)
  317. }
  318.  
  319. public QueryCount(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  320. {
  321.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  322.     {
  323.         log_amx("%s", Error)
  324.         return
  325.     }
  326.     else
  327.     {
  328.         new id = Data[0]
  329.         new szStats[8], szBHits[8]
  330.         get_user_stats(id, szStats, szBHits)
  331.         new Float:kpd = szStats[1]==0?1.0:float(szStats[0]/szStats[1])
  332.         ColorChat(id, NORMAL, "^4[%s] ^1ELO pontjaid: ^4%i ^1| Rangod: ^4%s ^1| Rankod: ^4%i ^1| KPD: ^4%.2f", Prefix, g_PlayerDatas[id][Rating], get_user_rang(g_PlayerDatas[id][Rating], 0, 0), g_PlayerDatas[id][Rank], kpd)
  333.     }
  334. }
  335.  
  336. public SQL_Top10(id)
  337. {
  338.     new Data[1]; Data[0] = id
  339.     SQL_ThreadQuery(g_SqlTuple, "QueryTop10", "SELECT `name`, `rating` FROM `elo_ranking` ORDER BY `rating` DESC LIMIT 10", Data, 1)
  340. }
  341.  
  342. public QueryTop10(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  343. {
  344.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  345.     {
  346.         log_amx("%s", Error)
  347.         return
  348.     }
  349.     else
  350.     {
  351.         new i
  352.         while(SQL_MoreResults(Query))
  353.         {
  354.             SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "name"), g_Top10[i][Name], charsmax(g_Top10[][Name]))
  355.             g_Top10[i][Kills] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "kills"))
  356.             g_Top10[i][Deaths] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "deaths"))
  357.             g_Top10[i][Rating] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "rating"))
  358.             i++
  359.         }
  360.         ShowTopMOTD(Data[0])
  361.     }
  362. }
  363.  
  364. public ShowTopMOTD(id)
  365. {
  366.     static Menu[1024]
  367.     new Len
  368.    
  369.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "<center><table border=^"1^">")
  370.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "<body bgcolor=#000000><table style=^"color: #00FFFF^">")
  371.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "<td>Név</td><td>Rang</td><td>Ölések</td><td>Halálok</td><td>Pontszám</td>")
  372.     for(new i; i< 10; i++)
  373.         Len += formatex(Menu[Len], charsmax(Menu) - Len, "<tr><td>%s</td><td>%s</td><td>%i</td><td>%i</td><td>%i</td></tr>", g_Top10[i][Name], get_user_rang(g_Top10[i][Rating], 0, 0), g_Top10[i][Kills], g_Top10[i][Deaths], g_Top10[i][Rating])
  374.    
  375.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "</table></center>")
  376.     show_motd(id, Menu, "ELO Rankrendszer | TOP10")
  377. }
  378.  
  379. public SessionStats(id) ColorChat(id, NORMAL, "^4[%s]^3(Részeredmények) ^1ELO pontjaid: ^4%i ^1| Rangod: ^4%s ^1| Ölések: ^4%i ^1| Halálok: ^4%i", Prefix, g_PlayerDatas[id][SessionRating], get_user_rang(g_PlayerDatas[id][SessionRating], 0, 0), g_PlayerDatas[id][SessionKills], g_PlayerDatas[id][SessionDeaths])
  380.  
  381. public Notification(id)
  382. {
  383.     if(g_PlayerDatas[id][Notify])
  384.     {
  385.         ColorChat(id, NORMAL, "^4[%s] ^3Kikapcsoltad ^1az értesítéseket! Bekapcsolásukhoz újra írd be a parancsot.", Prefix)
  386.         g_PlayerDatas[id][Notify] = false
  387.     }
  388.     else
  389.     {
  390.         ColorChat(id, NORMAL, "^4[%s] ^3Bekapcsoltad ^1az értesítéseket! Kikapcsolásukhoz újra írd be a parancsot.", Prefix)
  391.         g_PlayerDatas[id][Notify] = true
  392.     }
  393. }
  394.  
  395. public Advertise()
  396. {
  397.     switch(random_num(0, 3))
  398.     {
  399.         case 0: ColorChat(0, NORMAL, "^4[%s] ^1Rankod megnézéséhez írd be: ^4/elo", Prefix)
  400.         case 1: ColorChat(0, NORMAL, "^4[%s] ^1Szeretnéd tudni, kik a legjobbak? Írd be: ^4/top10", Prefix)
  401.         case 2: ColorChat(0, NORMAL, "^4[%s] ^1Tudd meg, hogyan teljesítesz a mapon! Írd be: ^4/session", Prefix)
  402.         case 3: ColorChat(0, NORMAL, "^4[%s] ^1Ki szeretnéd kapcsolni az értesítéseket? Írd be: ^4/notify", Prefix)
  403.     }
  404. }
  405.  
  406. public HandlerSay(id) return uzenetformazas(id, false)
  407. public HandlerSayTeam(id) return uzenetformazas(id, true)
  408.  
  409. uzenetformazas(id, bool:csapat)
  410. {
  411. #define MAX_BIT 180
  412.     static uzenet[MAX_BIT], stringkonvertalas[charsmax(uzenet) * 2 + 1];
  413.     read_args(uzenet, charsmax(uzenet));
  414.     remove_quotes(uzenet);
  415.  
  416.     if(uzenet[0] == EOS || uzenet[0] == '/' || equal(uzenet, " "))
  417.         return PLUGIN_HANDLED_MAIN;
  418.  
  419.     static fullos, tagek[MAX_BIT], team_lekeres, sTeam[16];
  420.     team_lekeres  = get_user_team(id, sTeam, charsmax(sTeam));
  421.  
  422.     switch(team_lekeres)
  423.     {
  424.         case 1: fullos = formatex(tagek, charsmax(tagek), "%s%s", GetBit(bitelo, id) ? "^1" : "^1*Halott* ", csapat ? "^1[T] " : "");
  425.         case 2: fullos = formatex(tagek, charsmax(tagek), "%s%s", GetBit(bitelo, id) ? "^1" : "^1*Halott* ", csapat ? "^1[CT] " : "");
  426.         default:fullos = formatex(tagek, charsmax(tagek), "^1*Spec* ");
  427.     }
  428.    
  429.     if(get_user_flags(id)&ADMIN_IMMUNITY)
  430.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[Tulaj]")
  431.     else if(get_user_flags(id)&ADMIN_LEVEL_G)
  432.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[FĹ‘admin]")
  433.     else if((get_user_flags(id)&ADMIN_BAN) && (get_user_flags(id)&ADMIN_LEVEL_F))
  434.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[Admin+VIP]")
  435.     else if(get_user_flags(id)&ADMIN_BAN)
  436.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[Admin]")
  437.     else if(get_user_flags(id)&ADMIN_LEVEL_F)
  438.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[VIP]")
  439.    
  440.     fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[%s]", get_user_rang(g_PlayerDatas[id][Rating], 0, 0))
  441.    
  442.     if(is_user_admin(id))   fullos += formatex(tagek[fullos], charsmax(tagek) - fullos, "^3%%s1^1 :  ^4%%s2");
  443.     else    formatex(tagek[fullos], charsmax(tagek) - fullos, "^3%%s1^1 :  %%s2");
  444.    
  445.     stringkonvertalas = uzenet;
  446.     replace_all( stringkonvertalas, charsmax( stringkonvertalas ), "", " " );
  447.     replace_all( stringkonvertalas, charsmax( stringkonvertalas ), "", " " );
  448.  
  449.     static bitlimit; bitlimit = MAX_BIT;
  450.     while(fullos + strlen(stringkonvertalas) > MAX_BIT) stringkonvertalas[bitlimit -= 10] = 0;
  451.  
  452.     static players[32], pcount; get_players(players, pcount, "c");
  453.     switch(csapat)
  454.     {
  455.         case true:
  456.         {
  457.             for(new i; i < pcount; i++)
  458.             {              
  459.                 if(GetBit(bitadmin, players[i]) || (GetBit(bitelo, id) == GetBit(bitelo, players[i]) && team_lekeres == get_user_team(players[i])))
  460.                     PrintChat(players[i], id, tagek, stringkonvertalas);
  461.             }                              
  462.         }
  463.         case false:
  464.         {  
  465.             for(new i; i < pcount; i++)
  466.                 PrintChat(players[i], id, tagek, stringkonvertalas);
  467.         }
  468.     }
  469.     static sAuthId[25], sName[32];
  470.     get_user_name(id, sName, charsmax(sName));
  471.     get_user_authid(id, sAuthId, charsmax(sAuthId));
  472.     log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", sName, get_user_userid(id), sAuthId, sTeam, csapat ? "say_team" : "say" , stringkonvertalas);  
  473.     return PLUGIN_HANDLED;
  474. }
  475.  
  476. PrintChat(iReceiver, iSender, const tagek[], const uzenet[])
  477. {
  478.     message_begin(MSG_ONE, 76, .player=iReceiver);
  479.     write_byte(iSender);
  480.     write_string(tagek);
  481.     write_string("");
  482.     write_string(uzenet);
  483.     message_end();
  484. }
  485.  
  486. public plugin_end() SQL_FreeHandle(g_SqlTuple)
  487.  
  488. stock get_user_rang(Usr_Rating, diff, minus)
  489. {
  490.     for(new i; i<sizeof(g_Ranks); i++)
  491.     {
  492.         if(i == charsmax(g_Ranks))
  493.         {
  494.             if(minus == 1)  return g_Ranks[i-diff][Cht_Prefix]
  495.             else    return g_Ranks[i+diff][Cht_Prefix]
  496.         }
  497.         if(g_Ranks[i][Min_ELO] < Usr_Rating && g_Ranks[i][Max_ELO] > Usr_Rating)
  498.         {
  499.             if(minus == 1)  return g_Ranks[i-diff][Cht_Prefix]
  500.             else    return g_Ranks[i+diff][Cht_Prefix]
  501.         }
  502.     }
  503.     return 0;
  504. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Publikus CS:GO Mod
HozzászólásElküldve: 2016.06.02. 16:36 
Offline
Fanatikus

Csatlakozott: 2015.07.05. 12:18
Hozzászólások: 172
Megköszönt másnak: 41 alkalommal
Megköszönték neki: 1 alkalommal
LyleChriss írta:
Azért SQL, mert SQL... FVaultba beledöglene a szerver...
Az ELO bugos sajna, még nem volt időm javítani, de nemsokára fogom. Holnap biztos, hogy nem, de Szerdán látok rá esélyt, hogy nekiállok.

Gyors belenéztem, erre jutottam:
  1. /*Köszönet  Mike-nak és R_Hehl-nek az ELO Rankrendszerért: https://forums.alliedmods.net/showpost. ... ostcount=1
  2. mforce-nak és Akosch:.-nak a segítségért. :)*/
  3.  
  4. /*
  5. v1.2.0 - Rankból olvas [csstats]
  6. v1.1.0 - sql.cfg-ből olvas SQL adatokat, chat rendszer bekerült.
  7. v1.0.0 - Alap rendszer elkészítése.
  8. */
  9.  
  10. #include <amxmodx>
  11. #include <amxmisc>
  12. #include <csstats>
  13. #include <colorchat>
  14. #include <sqlx>
  15.  
  16. enum _:DATA
  17. {
  18.     Cht_Prefix[32],
  19.     Name[32],
  20.     Min_ELO,
  21.     Max_ELO
  22. }
  23.  
  24. new const g_Ranks[19][DATA] = {
  25.     {"Unranked", "Unranked", -1, 0},
  26.     {"Silver I", "Silver I", 0, 199},
  27.     {"Silver II", "Silver II", 200, 399},
  28.     {"Silver III", "Silver III", 400, 799},
  29.     {"Silver IV", "Silver IV", 800, 1199},
  30.     {"SE", "Silver Elite", 1200, 1599},
  31.     {"SEM", "Silver Elite Master", 1600, 1999},
  32.     {"Nova I", "Gold Nova I", 2000, 2399},
  33.     {"Nova II", "Gold Nova II", 2400, 2799},
  34.     {"Nova III", "Gold Nova III", 2800, 3199},
  35.     {"Nova Master", "Gold Nova Master", 3200, 3599},
  36.     {"Kala", "Master Guardian I", 3600, 3999},
  37.     {"Kala II", "Master Guardian II", 4000, 4499},
  38.     {"Kereszt Kala", "Master Guardian Elite", 4500, 4999},
  39.     {"Sheriff", "Distinguished Master Guardian", 5000, 5999},
  40.     {"Sas", "Legendary Eagle", 6000, 6999},
  41.     {"Sas II", "Legendary Eagle Master", 7000, 7999},
  42.     {"Supreme", "Supreme Master First Class", 8000, 9999},
  43.     {"Global", "The Global Elite", 10000, 0}
  44. }
  45.  
  46. #define GetBit(%1,%2)       (%1 & (1 << (%2 & 31)))
  47. #define SetBit(%1,%2)       %1 |= (1 << (%2 & 31))
  48. #define ResetBit(%1,%2)     %1 &= ~(1 << (%2 & 31))
  49.  
  50. new bitadmin, bitelo
  51.  
  52. new SQL_INFO[4][32]
  53. new Handle:g_SqlTuple
  54.  
  55. new const Prefix[] = {"ELO"}
  56.  
  57. new cvar_kValue, cvar_Advert
  58.  
  59. enum _:P_DATA
  60. {
  61.     Rank,
  62.     Rating,
  63.     Kills,
  64.     Deaths,
  65.     SessionRating,
  66.     SessionKills,
  67.     SessionDeaths,
  68.     Name[64],
  69.     AuthId[32],
  70.     bool:Notify
  71. }
  72. new g_PlayerDatas[33][P_DATA]
  73. new bool:roundend
  74.  
  75. enum _:TOP
  76. {
  77.     Name[32],
  78.     Kills,
  79.     Deaths,
  80.     Rating
  81. }
  82. new const g_Top10[10][TOP]
  83.  
  84. public plugin_init() {
  85.     register_plugin("ELO Stats", "1.1.0", "LyleChriss")
  86.    
  87.     cvar_kValue = register_cvar("amx_elo_k", "16.0")
  88.     cvar_Advert = register_cvar("amx_elo_ads", "60.0")
  89.    
  90.     // Rank
  91.     register_clcmd("say elo", "SQL_Rank")
  92.     register_clcmd("say .elo", "SQL_Rank")
  93.     register_clcmd("say !elo", "SQL_Rank")
  94.     register_clcmd("say /elo", "SQL_Rank")
  95.     // Top10
  96.     register_clcmd("say top10", "SQL_Top10")
  97.     register_clcmd("say .top10", "SQL_Top10")
  98.     register_clcmd("say !top10", "SQL_Top10")
  99.     register_clcmd("say /top10", "SQL_Top10")
  100.     // Session Stats
  101.     register_clcmd("say session", "SessionStats")
  102.     register_clcmd("say .session", "SessionStats")
  103.     register_clcmd("say !session", "SessionStats")
  104.     register_clcmd("say /session", "SessionStats")
  105.     // ELO Notify
  106.     register_clcmd("say notify", "Notification")
  107.     register_clcmd("say .notify", "Notification")
  108.     register_clcmd("say !notify", "Notification")
  109.     register_clcmd("say /notify", "Notification")
  110.  
  111.     register_event("DeathMsg", "eDeathMsg", "a")
  112.     register_logevent("logevent_round_start", 2, "1=Round_Start")
  113.     register_logevent("logevent_round_end", 2, "1=Round_End")
  114.    
  115.     //Chat cuccok
  116.     register_clcmd("say", "HandlerSay");
  117.     register_clcmd("say_team", "HandlerSayTeam");
  118.     register_event("ResetHUD", "eResetHUD", "be");
  119.    
  120.     if(get_pcvar_float(cvar_Advert) > 0.0)
  121.         set_task(get_pcvar_float(cvar_Advert), "Advertise", _, _, _, "b")
  122.        
  123.     get_cvar_string("amx_sql_host", SQL_INFO[0], charsmax(SQL_INFO[]))
  124.     get_cvar_string("amx_sql_user", SQL_INFO[1], charsmax(SQL_INFO[]))
  125.     get_cvar_string("amx_sql_pass", SQL_INFO[2], charsmax(SQL_INFO[]))
  126.     get_cvar_string("amx_sql_db", SQL_INFO[3], charsmax(SQL_INFO[]))
  127. }
  128.  
  129. public eDeathMsg()
  130. {
  131.     ResetBit(bitelo, read_data(2))
  132.     if(!roundend)
  133.     {
  134.         new attacker = read_data(1)
  135.         new victim = read_data(2)
  136.        
  137.         if(attacker != victim)
  138.         {
  139.             new Float:rating = float(g_PlayerDatas[victim][Rating]-g_PlayerDatas[attacker][Rating])
  140.             new Float:prob = 1.0/(power(floatround(rating)/400, 10)+1)
  141.             new diff = floatround(get_pcvar_float(cvar_kValue)*(1.0-prob))
  142.            
  143.             g_PlayerDatas[victim][Rating] -= diff
  144.             g_PlayerDatas[attacker][Rating] += diff
  145.             g_PlayerDatas[victim][SessionRating] -= diff
  146.             g_PlayerDatas[attacker][SessionRating] += diff
  147.             g_PlayerDatas[victim][SessionDeaths]++
  148.             g_PlayerDatas[attacker][SessionKills]++
  149.             Update_SQL(victim)
  150.             Update_SQL(attacker)
  151.            
  152.             new victName[32]; get_user_name(victim, victName, charsmax(victName))
  153.             new attaName[32]; get_user_name(attacker, attaName, charsmax(attaName))
  154.            
  155.             if(g_PlayerDatas[attacker][Notify])
  156.             {
  157.                 ColorChat(attacker, NORMAL, "^4[%s]^1 Megölted (^4%i^1) ^3%s^1-t (^4%i^1), ezért kaptál ^4%i ^1pontot.", Prefix, g_PlayerDatas[attacker][Rating], victName, g_PlayerDatas[victim][Rating], diff)
  158.             }
  159.             if(g_PlayerDatas[victim][Notify])
  160.             {
  161.                 ColorChat(victim, NORMAL, "^4[%s]^1 Megölt téged (^4%i^1) ^3%s^1 (^4%i^1), ezért vesztettél ^4%i ^1pontot.", Prefix, g_PlayerDatas[victim][Rating], victName, g_PlayerDatas[attacker][Rating], diff)
  162.             }
  163.         }
  164.     }
  165. }
  166.  
  167. public logevent_round_start()   roundend=false
  168.  
  169. public logevent_round_end() roundend=true
  170.  
  171. public eResetHUD(id, level, cid) SetBit(bitelo, id)
  172.  
  173. public plugin_cfg()
  174. {
  175.     g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3])
  176.    
  177.     SQL_ThreadQuery(g_SqlTuple,"createTableThread", "CREATE TABLE IF NOT EXISTS `elo_ranking` (`authid` varchar(32) NOT NULL, `name` varchar(64) NOT NULL, `rating` INT(8), `kills` INT(8), `deaths` INT(8), `notify` INT(2), `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
  178. }
  179.  
  180. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  181. {
  182.     if(FailState == TQUERY_CONNECT_FAILED)
  183.         set_fail_state("Nem lehet csatlakozni az adatbazishoz.")
  184.     else if(FailState == TQUERY_QUERY_FAILED)
  185.         set_fail_state("Query Error")
  186.     if(Errcode)
  187.         log_amx("Hiba: %s",Error)
  188. }
  189.  
  190. public client_putinserver(id)
  191. {
  192.     arrayset(g_PlayerDatas[id], 0, 7)
  193.     g_PlayerDatas[id][SessionRating] = 1600
  194.     g_PlayerDatas[id][Rating] = -1
  195.     g_PlayerDatas[id][Name][0] = EOS
  196.     g_PlayerDatas[id][AuthId][0] = EOS
  197.     g_PlayerDatas[id][Notify] = true
  198.    
  199.     if(get_user_flags(id) & ADMIN_CHAT) SetBit(bitadmin, id)
  200.     else ResetBit(bitadmin, id)
  201.    
  202.     if(!is_user_bot(id) && !is_user_hltv(id))
  203.     {
  204.         get_user_name(id, g_PlayerDatas[id][Name], charsmax(g_PlayerDatas[][Name]))
  205.         get_user_authid(id, g_PlayerDatas[id][AuthId], charsmax(g_PlayerDatas[][AuthId]))
  206.         if(contain(g_PlayerDatas[id][AuthId], "_ID_LAN") != -1) get_user_ip(id, g_PlayerDatas[id][AuthId], charsmax(g_PlayerDatas[][AuthId]), 1)
  207.         Load_SQL(id)
  208.     }
  209. }
  210.  
  211. public client_infochanged(id)
  212. {
  213.     if(!is_user_connected(id))
  214.         return PLUGIN_HANDLED
  215.    
  216.     get_user_info(id, "name", g_PlayerDatas[id][Name], charsmax(g_PlayerDatas[][Name]))
  217.    
  218.     return PLUGIN_CONTINUE
  219. }
  220.  
  221. public client_disconnect(id)
  222. {
  223.     ResetBit(bitelo, id)
  224.    
  225.     new szStats[8], szBHits[8]
  226.     get_user_stats(id, szStats, szBHits)
  227.     g_PlayerDatas[id][Kills] = szStats[0]
  228.     g_PlayerDatas[id][Deaths] = szStats[1]
  229.    
  230.     if(!is_user_bot(id) && !is_user_hltv(id)) Update_SQL(id)
  231.    
  232.     arrayset(g_PlayerDatas[id], 0, 7)
  233.     g_PlayerDatas[id][SessionRating] = 1600
  234.     g_PlayerDatas[id][Rating] = -1
  235.     g_PlayerDatas[id][Name][0] = EOS
  236.     g_PlayerDatas[id][AuthId][0] = EOS
  237.     g_PlayerDatas[id][Notify] = true
  238. }
  239.  
  240. public Load_SQL(id)
  241. {
  242.     static Query[512]
  243.     new Data[1]; Data[0] = id
  244.    
  245.     formatex(Query, charsmax(Query), "SELECT * FROM `elo_ranking` WHERE authid = '%s';", g_PlayerDatas[id][AuthId])
  246.     SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1)
  247. }
  248.  
  249. public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  250. {
  251.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  252.     {
  253.         log_amx("%s", Error)
  254.         return
  255.     }
  256.     else
  257.     {
  258.         new id = Data[0];
  259.  
  260.         if(SQL_NumRows(Query) > 0)
  261.         {
  262.             g_PlayerDatas[id][Rating] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "rating"))
  263.             g_PlayerDatas[id][Notify] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "notify"))
  264.         }
  265.         else
  266.         {
  267.             Save_SQL(id)
  268.         }
  269.     }
  270. }
  271.  
  272. public Save_SQL(id)
  273. {
  274.     static Query[512]
  275.     formatex(Query, charsmax(Query), "INSERT INTO `elo_ranking` (`authid`, `name`, `rating`, `kills`, `deaths`, `notify`) VALUES ('%s', '%s', 1600, 0, 0, 0);", g_PlayerDatas[id][AuthId], g_PlayerDatas[id][Name])
  276.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
  277. }
  278.  
  279. public Update_SQL(id)
  280. {
  281.     static Query[512]
  282.     formatex(Query, charsmax(Query), "UPDATE `elo_ranking` SET `name` = '%s', `rating` = %d, `kills` = %d, `deaths` = %d, `notify` = %d WHERE `authid` = '%s';", g_PlayerDatas[id][Name], g_PlayerDatas[id][Rating], g_PlayerDatas[id][Kills], g_PlayerDatas[id][Deaths], g_PlayerDatas[id][Notify], g_PlayerDatas[id][AuthId])
  283.    
  284.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
  285. }
  286.  
  287. public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  288. {
  289.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  290.     {
  291.         log_amx("%s", Error)
  292.         return
  293.     }
  294. }
  295.  
  296. public SQL_Rank(id)
  297. {
  298.     static Query[512]
  299.     new Data[1]; Data[0] = id
  300.     formatex(Query, charsmax(Query), "SELECT COUNT(*) FROM `elo_ranking` WHERE `rating`>%i", g_PlayerDatas[id][Rating])
  301.     SQL_ThreadQuery(g_SqlTuple, "QueryRank", Query, Data, 1)
  302. }
  303.  
  304. public QueryRank(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  305. {
  306.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  307.     {
  308.         log_amx("%s", Error)
  309.         return
  310.     }
  311.     else
  312.     {
  313.         g_PlayerDatas[Data[0]][Rank] = SQL_ReadResult(Query, P_DATA)
  314.         g_PlayerDatas[Data[0]][Rank] ++
  315.     }
  316.     SQL_ThreadQuery(Query, "QueryCount", "SELECT COUNT(*) FROM `elo_ranking`", Data, 1)
  317. }
  318.  
  319. public QueryCount(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  320. {
  321.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  322.     {
  323.         log_amx("%s", Error)
  324.         return
  325.     }
  326.     else
  327.     {
  328.         new id = Data[0]
  329.         new szStats[8], szBHits[8]
  330.         get_user_stats(id, szStats, szBHits)
  331.         new Float:kpd = szStats[1]==0?1.0:float(szStats[0]/szStats[1])
  332.         ColorChat(id, NORMAL, "^4[%s] ^1ELO pontjaid: ^4%i ^1| Rangod: ^4%s ^1| Rankod: ^4%i ^1| KPD: ^4%.2f", Prefix, g_PlayerDatas[id][Rating], get_user_rang(g_PlayerDatas[id][Rating], 0, 0), g_PlayerDatas[id][Rank], kpd)
  333.     }
  334. }
  335.  
  336. public SQL_Top10(id)
  337. {
  338.     new Data[1]; Data[0] = id
  339.     SQL_ThreadQuery(g_SqlTuple, "QueryTop10", "SELECT `name`, `rating` FROM `elo_ranking` ORDER BY `rating` DESC LIMIT 10", Data, 1)
  340. }
  341.  
  342. public QueryTop10(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  343. {
  344.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  345.     {
  346.         log_amx("%s", Error)
  347.         return
  348.     }
  349.     else
  350.     {
  351.         new i
  352.         while(SQL_MoreResults(Query))
  353.         {
  354.             SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "name"), g_Top10[i][Name], charsmax(g_Top10[][Name]))
  355.             g_Top10[i][Kills] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "kills"))
  356.             g_Top10[i][Deaths] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "deaths"))
  357.             g_Top10[i][Rating] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "rating"))
  358.             i++
  359.         }
  360.         ShowTopMOTD(Data[0])
  361.     }
  362. }
  363.  
  364. public ShowTopMOTD(id)
  365. {
  366.     static Menu[1024]
  367.     new Len
  368.    
  369.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "<center><table border=^"1^">")
  370.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "<body bgcolor=#000000><table style=^"color: #00FFFF^">")
  371.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "<td>Név</td><td>Rang</td><td>Ölések</td><td>Halálok</td><td>Pontszám</td>")
  372.     for(new i; i< 10; i++)
  373.         Len += formatex(Menu[Len], charsmax(Menu) - Len, "<tr><td>%s</td><td>%s</td><td>%i</td><td>%i</td><td>%i</td></tr>", g_Top10[i][Name], get_user_rang(g_Top10[i][Rating], 0, 0), g_Top10[i][Kills], g_Top10[i][Deaths], g_Top10[i][Rating])
  374.    
  375.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "</table></center>")
  376.     show_motd(id, Menu, "ELO Rankrendszer | TOP10")
  377. }
  378.  
  379. public SessionStats(id) ColorChat(id, NORMAL, "^4[%s]^3(Részeredmények) ^1ELO pontjaid: ^4%i ^1| Rangod: ^4%s ^1| Ölések: ^4%i ^1| Halálok: ^4%i", Prefix, g_PlayerDatas[id][SessionRating], get_user_rang(g_PlayerDatas[id][SessionRating], 0, 0), g_PlayerDatas[id][SessionKills], g_PlayerDatas[id][SessionDeaths])
  380.  
  381. public Notification(id)
  382. {
  383.     if(g_PlayerDatas[id][Notify])
  384.     {
  385.         ColorChat(id, NORMAL, "^4[%s] ^3Kikapcsoltad ^1az értesítéseket! Bekapcsolásukhoz újra írd be a parancsot.", Prefix)
  386.         g_PlayerDatas[id][Notify] = false
  387.     }
  388.     else
  389.     {
  390.         ColorChat(id, NORMAL, "^4[%s] ^3Bekapcsoltad ^1az értesítéseket! Kikapcsolásukhoz újra írd be a parancsot.", Prefix)
  391.         g_PlayerDatas[id][Notify] = true
  392.     }
  393. }
  394.  
  395. public Advertise()
  396. {
  397.     switch(random_num(0, 3))
  398.     {
  399.         case 0: ColorChat(0, NORMAL, "^4[%s] ^1Rankod megnézéséhez írd be: ^4/elo", Prefix)
  400.         case 1: ColorChat(0, NORMAL, "^4[%s] ^1Szeretnéd tudni, kik a legjobbak? Írd be: ^4/top10", Prefix)
  401.         case 2: ColorChat(0, NORMAL, "^4[%s] ^1Tudd meg, hogyan teljesítesz a mapon! Írd be: ^4/session", Prefix)
  402.         case 3: ColorChat(0, NORMAL, "^4[%s] ^1Ki szeretnéd kapcsolni az értesítéseket? Írd be: ^4/notify", Prefix)
  403.     }
  404. }
  405.  
  406. public HandlerSay(id) return uzenetformazas(id, false)
  407. public HandlerSayTeam(id) return uzenetformazas(id, true)
  408.  
  409. uzenetformazas(id, bool:csapat)
  410. {
  411. #define MAX_BIT 180
  412.     static uzenet[MAX_BIT], stringkonvertalas[charsmax(uzenet) * 2 + 1];
  413.     read_args(uzenet, charsmax(uzenet));
  414.     remove_quotes(uzenet);
  415.  
  416.     if(uzenet[0] == EOS || uzenet[0] == '/' || equal(uzenet, " "))
  417.         return PLUGIN_HANDLED_MAIN;
  418.  
  419.     static fullos, tagek[MAX_BIT], team_lekeres, sTeam[16];
  420.     team_lekeres  = get_user_team(id, sTeam, charsmax(sTeam));
  421.  
  422.     switch(team_lekeres)
  423.     {
  424.         case 1: fullos = formatex(tagek, charsmax(tagek), "%s%s", GetBit(bitelo, id) ? "^1" : "^1*Halott* ", csapat ? "^1[T] " : "");
  425.         case 2: fullos = formatex(tagek, charsmax(tagek), "%s%s", GetBit(bitelo, id) ? "^1" : "^1*Halott* ", csapat ? "^1[CT] " : "");
  426.         default:fullos = formatex(tagek, charsmax(tagek), "^1*Spec* ");
  427.     }
  428.    
  429.     if(get_user_flags(id)&ADMIN_IMMUNITY)
  430.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[Tulaj]")
  431.     else if(get_user_flags(id)&ADMIN_LEVEL_G)
  432.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[FĹ‘admin]")
  433.     else if((get_user_flags(id)&ADMIN_BAN) && (get_user_flags(id)&ADMIN_LEVEL_F))
  434.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[Admin+VIP]")
  435.     else if(get_user_flags(id)&ADMIN_BAN)
  436.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[Admin]")
  437.     else if(get_user_flags(id)&ADMIN_LEVEL_F)
  438.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[VIP]")
  439.    
  440.     fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[%s]", get_user_rang(g_PlayerDatas[id][Rating], 0, 0))
  441.    
  442.     if(is_user_admin(id))   fullos += formatex(tagek[fullos], charsmax(tagek) - fullos, "^3%%s1^1 :  ^4%%s2");
  443.     else    formatex(tagek[fullos], charsmax(tagek) - fullos, "^3%%s1^1 :  %%s2");
  444.    
  445.     stringkonvertalas = uzenet;
  446.     replace_all( stringkonvertalas, charsmax( stringkonvertalas ), "", " " );
  447.     replace_all( stringkonvertalas, charsmax( stringkonvertalas ), "", " " );
  448.  
  449.     static bitlimit; bitlimit = MAX_BIT;
  450.     while(fullos + strlen(stringkonvertalas) > MAX_BIT) stringkonvertalas[bitlimit -= 10] = 0;
  451.  
  452.     static players[32], pcount; get_players(players, pcount, "c");
  453.     switch(csapat)
  454.     {
  455.         case true:
  456.         {
  457.             for(new i; i < pcount; i++)
  458.             {              
  459.                 if(GetBit(bitadmin, players[i]) || (GetBit(bitelo, id) == GetBit(bitelo, players[i]) && team_lekeres == get_user_team(players[i])))
  460.                     PrintChat(players[i], id, tagek, stringkonvertalas);
  461.             }                              
  462.         }
  463.         case false:
  464.         {  
  465.             for(new i; i < pcount; i++)
  466.                 PrintChat(players[i], id, tagek, stringkonvertalas);
  467.         }
  468.     }
  469.     static sAuthId[25], sName[32];
  470.     get_user_name(id, sName, charsmax(sName));
  471.     get_user_authid(id, sAuthId, charsmax(sAuthId));
  472.     log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", sName, get_user_userid(id), sAuthId, sTeam, csapat ? "say_team" : "say" , stringkonvertalas);  
  473.     return PLUGIN_HANDLED;
  474. }
  475.  
  476. PrintChat(iReceiver, iSender, const tagek[], const uzenet[])
  477. {
  478.     message_begin(MSG_ONE, 76, .player=iReceiver);
  479.     write_byte(iSender);
  480.     write_string(tagek);
  481.     write_string("");
  482.     write_string(uzenet);
  483.     message_end();
  484. }
  485.  
  486. public plugin_end() SQL_FreeHandle(g_SqlTuple)
  487.  
  488. stock get_user_rang(Usr_Rating, diff, minus)
  489. {
  490.     for(new i; i<sizeof(g_Ranks); i++)
  491.     {
  492.         if(i == charsmax(g_Ranks))
  493.         {
  494.             if(minus == 1)  return g_Ranks[i-diff][Cht_Prefix]
  495.             else    return g_Ranks[i+diff][Cht_Prefix]
  496.         }
  497.         if(g_Ranks[i][Min_ELO] < Usr_Rating && g_Ranks[i][Max_ELO] > Usr_Rating)
  498.         {
  499.             if(minus == 1)  return g_Ranks[i-diff][Cht_Prefix]
  500.             else    return g_Ranks[i+diff][Cht_Prefix]
  501.         }
  502.     }
  503.     return 0;
  504. }



mostmár jó??


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Publikus CS:GO Mod
HozzászólásElküldve: 2016.06.03. 11:59 
Offline
Nagyúr
Avatar

Csatlakozott: 2014.08.24. 18:28
Hozzászólások: 584
Megköszönt másnak: 122 alkalommal
Megköszönték neki: 120 alkalommal
Amikor próbáltam, nem működött a chat része. "[G" csak ennyit írt ki mindenkinek chatre. De nem sok időm van ezzel foglalkozni, aki akarja, javítja magának.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Publikus CS:GO Mod
HozzászólásElküldve: 2016.06.03. 18:13 
Offline
Fanatikus

Csatlakozott: 2015.07.05. 12:18
Hozzászólások: 172
Megköszönt másnak: 41 alkalommal
Megköszönték neki: 1 alkalommal
LyleChriss írta:
Amikor próbáltam, nem működött a chat része. "[G" csak ennyit írt ki mindenkinek chatre. De nem sok időm van ezzel foglalkozni, aki akarja, javítja magának.



az annyira nem is fontos


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Publikus CS:GO Mod
HozzászólásElküldve: 2016.06.03. 18:54 
Offline
Beavatott

Csatlakozott: 2016.05.11. 23:09
Hozzászólások: 67
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 3 alkalommal
$weeT írta:
LyleChriss írta:
Azért SQL, mert SQL... FVaultba beledöglene a szerver...
Az ELO bugos sajna, még nem volt időm javítani, de nemsokára fogom. Holnap biztos, hogy nem, de Szerdán látok rá esélyt, hogy nekiállok.

Gyors belenéztem, erre jutottam:
  1. /*Köszönet  Mike-nak és R_Hehl-nek az ELO Rankrendszerért: https://forums.alliedmods.net/showpost. ... ostcount=1
  2. mforce-nak és Akosch:.-nak a segítségért. :)*/
  3.  
  4. /*
  5. v1.2.0 - Rankból olvas [csstats]
  6. v1.1.0 - sql.cfg-ből olvas SQL adatokat, chat rendszer bekerült.
  7. v1.0.0 - Alap rendszer elkészítése.
  8. */
  9.  
  10. #include <amxmodx>
  11. #include <amxmisc>
  12. #include <csstats>
  13. #include <colorchat>
  14. #include <sqlx>
  15.  
  16. enum _:DATA
  17. {
  18.     Cht_Prefix[32],
  19.     Name[32],
  20.     Min_ELO,
  21.     Max_ELO
  22. }
  23.  
  24. new const g_Ranks[19][DATA] = {
  25.     {"Unranked", "Unranked", -1, 0},
  26.     {"Silver I", "Silver I", 0, 199},
  27.     {"Silver II", "Silver II", 200, 399},
  28.     {"Silver III", "Silver III", 400, 799},
  29.     {"Silver IV", "Silver IV", 800, 1199},
  30.     {"SE", "Silver Elite", 1200, 1599},
  31.     {"SEM", "Silver Elite Master", 1600, 1999},
  32.     {"Nova I", "Gold Nova I", 2000, 2399},
  33.     {"Nova II", "Gold Nova II", 2400, 2799},
  34.     {"Nova III", "Gold Nova III", 2800, 3199},
  35.     {"Nova Master", "Gold Nova Master", 3200, 3599},
  36.     {"Kala", "Master Guardian I", 3600, 3999},
  37.     {"Kala II", "Master Guardian II", 4000, 4499},
  38.     {"Kereszt Kala", "Master Guardian Elite", 4500, 4999},
  39.     {"Sheriff", "Distinguished Master Guardian", 5000, 5999},
  40.     {"Sas", "Legendary Eagle", 6000, 6999},
  41.     {"Sas II", "Legendary Eagle Master", 7000, 7999},
  42.     {"Supreme", "Supreme Master First Class", 8000, 9999},
  43.     {"Global", "The Global Elite", 10000, 0}
  44. }
  45.  
  46. #define GetBit(%1,%2)       (%1 & (1 << (%2 & 31)))
  47. #define SetBit(%1,%2)       %1 |= (1 << (%2 & 31))
  48. #define ResetBit(%1,%2)     %1 &= ~(1 << (%2 & 31))
  49.  
  50. new bitadmin, bitelo
  51.  
  52. new SQL_INFO[4][32]
  53. new Handle:g_SqlTuple
  54.  
  55. new const Prefix[] = {"ELO"}
  56.  
  57. new cvar_kValue, cvar_Advert
  58.  
  59. enum _:P_DATA
  60. {
  61.     Rank,
  62.     Rating,
  63.     Kills,
  64.     Deaths,
  65.     SessionRating,
  66.     SessionKills,
  67.     SessionDeaths,
  68.     Name[64],
  69.     AuthId[32],
  70.     bool:Notify
  71. }
  72. new g_PlayerDatas[33][P_DATA]
  73. new bool:roundend
  74.  
  75. enum _:TOP
  76. {
  77.     Name[32],
  78.     Kills,
  79.     Deaths,
  80.     Rating
  81. }
  82. new const g_Top10[10][TOP]
  83.  
  84. public plugin_init() {
  85.     register_plugin("ELO Stats", "1.1.0", "LyleChriss")
  86.    
  87.     cvar_kValue = register_cvar("amx_elo_k", "16.0")
  88.     cvar_Advert = register_cvar("amx_elo_ads", "60.0")
  89.    
  90.     // Rank
  91.     register_clcmd("say elo", "SQL_Rank")
  92.     register_clcmd("say .elo", "SQL_Rank")
  93.     register_clcmd("say !elo", "SQL_Rank")
  94.     register_clcmd("say /elo", "SQL_Rank")
  95.     // Top10
  96.     register_clcmd("say top10", "SQL_Top10")
  97.     register_clcmd("say .top10", "SQL_Top10")
  98.     register_clcmd("say !top10", "SQL_Top10")
  99.     register_clcmd("say /top10", "SQL_Top10")
  100.     // Session Stats
  101.     register_clcmd("say session", "SessionStats")
  102.     register_clcmd("say .session", "SessionStats")
  103.     register_clcmd("say !session", "SessionStats")
  104.     register_clcmd("say /session", "SessionStats")
  105.     // ELO Notify
  106.     register_clcmd("say notify", "Notification")
  107.     register_clcmd("say .notify", "Notification")
  108.     register_clcmd("say !notify", "Notification")
  109.     register_clcmd("say /notify", "Notification")
  110.  
  111.     register_event("DeathMsg", "eDeathMsg", "a")
  112.     register_logevent("logevent_round_start", 2, "1=Round_Start")
  113.     register_logevent("logevent_round_end", 2, "1=Round_End")
  114.    
  115.     //Chat cuccok
  116.     register_clcmd("say", "HandlerSay");
  117.     register_clcmd("say_team", "HandlerSayTeam");
  118.     register_event("ResetHUD", "eResetHUD", "be");
  119.    
  120.     if(get_pcvar_float(cvar_Advert) > 0.0)
  121.         set_task(get_pcvar_float(cvar_Advert), "Advertise", _, _, _, "b")
  122.        
  123.     get_cvar_string("amx_sql_host", SQL_INFO[0], charsmax(SQL_INFO[]))
  124.     get_cvar_string("amx_sql_user", SQL_INFO[1], charsmax(SQL_INFO[]))
  125.     get_cvar_string("amx_sql_pass", SQL_INFO[2], charsmax(SQL_INFO[]))
  126.     get_cvar_string("amx_sql_db", SQL_INFO[3], charsmax(SQL_INFO[]))
  127. }
  128.  
  129. public eDeathMsg()
  130. {
  131.     ResetBit(bitelo, read_data(2))
  132.     if(!roundend)
  133.     {
  134.         new attacker = read_data(1)
  135.         new victim = read_data(2)
  136.        
  137.         if(attacker != victim)
  138.         {
  139.             new Float:rating = float(g_PlayerDatas[victim][Rating]-g_PlayerDatas[attacker][Rating])
  140.             new Float:prob = 1.0/(power(floatround(rating)/400, 10)+1)
  141.             new diff = floatround(get_pcvar_float(cvar_kValue)*(1.0-prob))
  142.            
  143.             g_PlayerDatas[victim][Rating] -= diff
  144.             g_PlayerDatas[attacker][Rating] += diff
  145.             g_PlayerDatas[victim][SessionRating] -= diff
  146.             g_PlayerDatas[attacker][SessionRating] += diff
  147.             g_PlayerDatas[victim][SessionDeaths]++
  148.             g_PlayerDatas[attacker][SessionKills]++
  149.             Update_SQL(victim)
  150.             Update_SQL(attacker)
  151.            
  152.             new victName[32]; get_user_name(victim, victName, charsmax(victName))
  153.             new attaName[32]; get_user_name(attacker, attaName, charsmax(attaName))
  154.            
  155.             if(g_PlayerDatas[attacker][Notify])
  156.             {
  157.                 ColorChat(attacker, NORMAL, "^4[%s]^1 Megölted (^4%i^1) ^3%s^1-t (^4%i^1), ezért kaptál ^4%i ^1pontot.", Prefix, g_PlayerDatas[attacker][Rating], victName, g_PlayerDatas[victim][Rating], diff)
  158.             }
  159.             if(g_PlayerDatas[victim][Notify])
  160.             {
  161.                 ColorChat(victim, NORMAL, "^4[%s]^1 Megölt téged (^4%i^1) ^3%s^1 (^4%i^1), ezért vesztettél ^4%i ^1pontot.", Prefix, g_PlayerDatas[victim][Rating], victName, g_PlayerDatas[attacker][Rating], diff)
  162.             }
  163.         }
  164.     }
  165. }
  166.  
  167. public logevent_round_start()   roundend=false
  168.  
  169. public logevent_round_end() roundend=true
  170.  
  171. public eResetHUD(id, level, cid) SetBit(bitelo, id)
  172.  
  173. public plugin_cfg()
  174. {
  175.     g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3])
  176.    
  177.     SQL_ThreadQuery(g_SqlTuple,"createTableThread", "CREATE TABLE IF NOT EXISTS `elo_ranking` (`authid` varchar(32) NOT NULL, `name` varchar(64) NOT NULL, `rating` INT(8), `kills` INT(8), `deaths` INT(8), `notify` INT(2), `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
  178. }
  179.  
  180. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  181. {
  182.     if(FailState == TQUERY_CONNECT_FAILED)
  183.         set_fail_state("Nem lehet csatlakozni az adatbazishoz.")
  184.     else if(FailState == TQUERY_QUERY_FAILED)
  185.         set_fail_state("Query Error")
  186.     if(Errcode)
  187.         log_amx("Hiba: %s",Error)
  188. }
  189.  
  190. public client_putinserver(id)
  191. {
  192.     arrayset(g_PlayerDatas[id], 0, 7)
  193.     g_PlayerDatas[id][SessionRating] = 1600
  194.     g_PlayerDatas[id][Rating] = -1
  195.     g_PlayerDatas[id][Name][0] = EOS
  196.     g_PlayerDatas[id][AuthId][0] = EOS
  197.     g_PlayerDatas[id][Notify] = true
  198.    
  199.     if(get_user_flags(id) & ADMIN_CHAT) SetBit(bitadmin, id)
  200.     else ResetBit(bitadmin, id)
  201.    
  202.     if(!is_user_bot(id) && !is_user_hltv(id))
  203.     {
  204.         get_user_name(id, g_PlayerDatas[id][Name], charsmax(g_PlayerDatas[][Name]))
  205.         get_user_authid(id, g_PlayerDatas[id][AuthId], charsmax(g_PlayerDatas[][AuthId]))
  206.         if(contain(g_PlayerDatas[id][AuthId], "_ID_LAN") != -1) get_user_ip(id, g_PlayerDatas[id][AuthId], charsmax(g_PlayerDatas[][AuthId]), 1)
  207.         Load_SQL(id)
  208.     }
  209. }
  210.  
  211. public client_infochanged(id)
  212. {
  213.     if(!is_user_connected(id))
  214.         return PLUGIN_HANDLED
  215.    
  216.     get_user_info(id, "name", g_PlayerDatas[id][Name], charsmax(g_PlayerDatas[][Name]))
  217.    
  218.     return PLUGIN_CONTINUE
  219. }
  220.  
  221. public client_disconnect(id)
  222. {
  223.     ResetBit(bitelo, id)
  224.    
  225.     new szStats[8], szBHits[8]
  226.     get_user_stats(id, szStats, szBHits)
  227.     g_PlayerDatas[id][Kills] = szStats[0]
  228.     g_PlayerDatas[id][Deaths] = szStats[1]
  229.    
  230.     if(!is_user_bot(id) && !is_user_hltv(id)) Update_SQL(id)
  231.    
  232.     arrayset(g_PlayerDatas[id], 0, 7)
  233.     g_PlayerDatas[id][SessionRating] = 1600
  234.     g_PlayerDatas[id][Rating] = -1
  235.     g_PlayerDatas[id][Name][0] = EOS
  236.     g_PlayerDatas[id][AuthId][0] = EOS
  237.     g_PlayerDatas[id][Notify] = true
  238. }
  239.  
  240. public Load_SQL(id)
  241. {
  242.     static Query[512]
  243.     new Data[1]; Data[0] = id
  244.    
  245.     formatex(Query, charsmax(Query), "SELECT * FROM `elo_ranking` WHERE authid = '%s';", g_PlayerDatas[id][AuthId])
  246.     SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1)
  247. }
  248.  
  249. public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  250. {
  251.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  252.     {
  253.         log_amx("%s", Error)
  254.         return
  255.     }
  256.     else
  257.     {
  258.         new id = Data[0];
  259.  
  260.         if(SQL_NumRows(Query) > 0)
  261.         {
  262.             g_PlayerDatas[id][Rating] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "rating"))
  263.             g_PlayerDatas[id][Notify] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "notify"))
  264.         }
  265.         else
  266.         {
  267.             Save_SQL(id)
  268.         }
  269.     }
  270. }
  271.  
  272. public Save_SQL(id)
  273. {
  274.     static Query[512]
  275.     formatex(Query, charsmax(Query), "INSERT INTO `elo_ranking` (`authid`, `name`, `rating`, `kills`, `deaths`, `notify`) VALUES ('%s', '%s', 1600, 0, 0, 0);", g_PlayerDatas[id][AuthId], g_PlayerDatas[id][Name])
  276.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
  277. }
  278.  
  279. public Update_SQL(id)
  280. {
  281.     static Query[512]
  282.     formatex(Query, charsmax(Query), "UPDATE `elo_ranking` SET `name` = '%s', `rating` = %d, `kills` = %d, `deaths` = %d, `notify` = %d WHERE `authid` = '%s';", g_PlayerDatas[id][Name], g_PlayerDatas[id][Rating], g_PlayerDatas[id][Kills], g_PlayerDatas[id][Deaths], g_PlayerDatas[id][Notify], g_PlayerDatas[id][AuthId])
  283.    
  284.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
  285. }
  286.  
  287. public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  288. {
  289.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  290.     {
  291.         log_amx("%s", Error)
  292.         return
  293.     }
  294. }
  295.  
  296. public SQL_Rank(id)
  297. {
  298.     static Query[512]
  299.     new Data[1]; Data[0] = id
  300.     formatex(Query, charsmax(Query), "SELECT COUNT(*) FROM `elo_ranking` WHERE `rating`>%i", g_PlayerDatas[id][Rating])
  301.     SQL_ThreadQuery(g_SqlTuple, "QueryRank", Query, Data, 1)
  302. }
  303.  
  304. public QueryRank(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  305. {
  306.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  307.     {
  308.         log_amx("%s", Error)
  309.         return
  310.     }
  311.     else
  312.     {
  313.         g_PlayerDatas[Data[0]][Rank] = SQL_ReadResult(Query, P_DATA)
  314.         g_PlayerDatas[Data[0]][Rank] ++
  315.     }
  316.     SQL_ThreadQuery(Query, "QueryCount", "SELECT COUNT(*) FROM `elo_ranking`", Data, 1)
  317. }
  318.  
  319. public QueryCount(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  320. {
  321.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  322.     {
  323.         log_amx("%s", Error)
  324.         return
  325.     }
  326.     else
  327.     {
  328.         new id = Data[0]
  329.         new szStats[8], szBHits[8]
  330.         get_user_stats(id, szStats, szBHits)
  331.         new Float:kpd = szStats[1]==0?1.0:float(szStats[0]/szStats[1])
  332.         ColorChat(id, NORMAL, "^4[%s] ^1ELO pontjaid: ^4%i ^1| Rangod: ^4%s ^1| Rankod: ^4%i ^1| KPD: ^4%.2f", Prefix, g_PlayerDatas[id][Rating], get_user_rang(g_PlayerDatas[id][Rating], 0, 0), g_PlayerDatas[id][Rank], kpd)
  333.     }
  334. }
  335.  
  336. public SQL_Top10(id)
  337. {
  338.     new Data[1]; Data[0] = id
  339.     SQL_ThreadQuery(g_SqlTuple, "QueryTop10", "SELECT `name`, `rating` FROM `elo_ranking` ORDER BY `rating` DESC LIMIT 10", Data, 1)
  340. }
  341.  
  342. public QueryTop10(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  343. {
  344.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  345.     {
  346.         log_amx("%s", Error)
  347.         return
  348.     }
  349.     else
  350.     {
  351.         new i
  352.         while(SQL_MoreResults(Query))
  353.         {
  354.             SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "name"), g_Top10[i][Name], charsmax(g_Top10[][Name]))
  355.             g_Top10[i][Kills] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "kills"))
  356.             g_Top10[i][Deaths] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "deaths"))
  357.             g_Top10[i][Rating] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "rating"))
  358.             i++
  359.         }
  360.         ShowTopMOTD(Data[0])
  361.     }
  362. }
  363.  
  364. public ShowTopMOTD(id)
  365. {
  366.     static Menu[1024]
  367.     new Len
  368.    
  369.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "<center><table border=^"1^">")
  370.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "<body bgcolor=#000000><table style=^"color: #00FFFF^">")
  371.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "<td>Név</td><td>Rang</td><td>Ölések</td><td>Halálok</td><td>Pontszám</td>")
  372.     for(new i; i< 10; i++)
  373.         Len += formatex(Menu[Len], charsmax(Menu) - Len, "<tr><td>%s</td><td>%s</td><td>%i</td><td>%i</td><td>%i</td></tr>", g_Top10[i][Name], get_user_rang(g_Top10[i][Rating], 0, 0), g_Top10[i][Kills], g_Top10[i][Deaths], g_Top10[i][Rating])
  374.    
  375.     Len += formatex(Menu[Len], charsmax(Menu) - Len, "</table></center>")
  376.     show_motd(id, Menu, "ELO Rankrendszer | TOP10")
  377. }
  378.  
  379. public SessionStats(id) ColorChat(id, NORMAL, "^4[%s]^3(Részeredmények) ^1ELO pontjaid: ^4%i ^1| Rangod: ^4%s ^1| Ölések: ^4%i ^1| Halálok: ^4%i", Prefix, g_PlayerDatas[id][SessionRating], get_user_rang(g_PlayerDatas[id][SessionRating], 0, 0), g_PlayerDatas[id][SessionKills], g_PlayerDatas[id][SessionDeaths])
  380.  
  381. public Notification(id)
  382. {
  383.     if(g_PlayerDatas[id][Notify])
  384.     {
  385.         ColorChat(id, NORMAL, "^4[%s] ^3Kikapcsoltad ^1az értesítéseket! Bekapcsolásukhoz újra írd be a parancsot.", Prefix)
  386.         g_PlayerDatas[id][Notify] = false
  387.     }
  388.     else
  389.     {
  390.         ColorChat(id, NORMAL, "^4[%s] ^3Bekapcsoltad ^1az értesítéseket! Kikapcsolásukhoz újra írd be a parancsot.", Prefix)
  391.         g_PlayerDatas[id][Notify] = true
  392.     }
  393. }
  394.  
  395. public Advertise()
  396. {
  397.     switch(random_num(0, 3))
  398.     {
  399.         case 0: ColorChat(0, NORMAL, "^4[%s] ^1Rankod megnézéséhez írd be: ^4/elo", Prefix)
  400.         case 1: ColorChat(0, NORMAL, "^4[%s] ^1Szeretnéd tudni, kik a legjobbak? Írd be: ^4/top10", Prefix)
  401.         case 2: ColorChat(0, NORMAL, "^4[%s] ^1Tudd meg, hogyan teljesítesz a mapon! Írd be: ^4/session", Prefix)
  402.         case 3: ColorChat(0, NORMAL, "^4[%s] ^1Ki szeretnéd kapcsolni az értesítéseket? Írd be: ^4/notify", Prefix)
  403.     }
  404. }
  405.  
  406. public HandlerSay(id) return uzenetformazas(id, false)
  407. public HandlerSayTeam(id) return uzenetformazas(id, true)
  408.  
  409. uzenetformazas(id, bool:csapat)
  410. {
  411. #define MAX_BIT 180
  412.     static uzenet[MAX_BIT], stringkonvertalas[charsmax(uzenet) * 2 + 1];
  413.     read_args(uzenet, charsmax(uzenet));
  414.     remove_quotes(uzenet);
  415.  
  416.     if(uzenet[0] == EOS || uzenet[0] == '/' || equal(uzenet, " "))
  417.         return PLUGIN_HANDLED_MAIN;
  418.  
  419.     static fullos, tagek[MAX_BIT], team_lekeres, sTeam[16];
  420.     team_lekeres  = get_user_team(id, sTeam, charsmax(sTeam));
  421.  
  422.     switch(team_lekeres)
  423.     {
  424.         case 1: fullos = formatex(tagek, charsmax(tagek), "%s%s", GetBit(bitelo, id) ? "^1" : "^1*Halott* ", csapat ? "^1[T] " : "");
  425.         case 2: fullos = formatex(tagek, charsmax(tagek), "%s%s", GetBit(bitelo, id) ? "^1" : "^1*Halott* ", csapat ? "^1[CT] " : "");
  426.         default:fullos = formatex(tagek, charsmax(tagek), "^1*Spec* ");
  427.     }
  428.    
  429.     if(get_user_flags(id)&ADMIN_IMMUNITY)
  430.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[Tulaj]")
  431.     else if(get_user_flags(id)&ADMIN_LEVEL_G)
  432.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[FĹ‘admin]")
  433.     else if((get_user_flags(id)&ADMIN_BAN) && (get_user_flags(id)&ADMIN_LEVEL_F))
  434.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[Admin+VIP]")
  435.     else if(get_user_flags(id)&ADMIN_BAN)
  436.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[Admin]")
  437.     else if(get_user_flags(id)&ADMIN_LEVEL_F)
  438.         fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[VIP]")
  439.    
  440.     fullos += formatex(tagek[fullos], charsmax(tagek)-fullos, "^4[%s]", get_user_rang(g_PlayerDatas[id][Rating], 0, 0))
  441.    
  442.     if(is_user_admin(id))   fullos += formatex(tagek[fullos], charsmax(tagek) - fullos, "^3%%s1^1 :  ^4%%s2");
  443.     else    formatex(tagek[fullos], charsmax(tagek) - fullos, "^3%%s1^1 :  %%s2");
  444.    
  445.     stringkonvertalas = uzenet;
  446.     replace_all( stringkonvertalas, charsmax( stringkonvertalas ), "", " " );
  447.     replace_all( stringkonvertalas, charsmax( stringkonvertalas ), "", " " );
  448.  
  449.     static bitlimit; bitlimit = MAX_BIT;
  450.     while(fullos + strlen(stringkonvertalas) > MAX_BIT) stringkonvertalas[bitlimit -= 10] = 0;
  451.  
  452.     static players[32], pcount; get_players(players, pcount, "c");
  453.     switch(csapat)
  454.     {
  455.         case true:
  456.         {
  457.             for(new i; i < pcount; i++)
  458.             {              
  459.                 if(GetBit(bitadmin, players[i]) || (GetBit(bitelo, id) == GetBit(bitelo, players[i]) && team_lekeres == get_user_team(players[i])))
  460.                     PrintChat(players[i], id, tagek, stringkonvertalas);
  461.             }                              
  462.         }
  463.         case false:
  464.         {  
  465.             for(new i; i < pcount; i++)
  466.                 PrintChat(players[i], id, tagek, stringkonvertalas);
  467.         }
  468.     }
  469.     static sAuthId[25], sName[32];
  470.     get_user_name(id, sName, charsmax(sName));
  471.     get_user_authid(id, sAuthId, charsmax(sAuthId));
  472.     log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", sName, get_user_userid(id), sAuthId, sTeam, csapat ? "say_team" : "say" , stringkonvertalas);  
  473.     return PLUGIN_HANDLED;
  474. }
  475.  
  476. PrintChat(iReceiver, iSender, const tagek[], const uzenet[])
  477. {
  478.     message_begin(MSG_ONE, 76, .player=iReceiver);
  479.     write_byte(iSender);
  480.     write_string(tagek);
  481.     write_string("");
  482.     write_string(uzenet);
  483.     message_end();
  484. }
  485.  
  486. public plugin_end() SQL_FreeHandle(g_SqlTuple)
  487.  
  488. stock get_user_rang(Usr_Rating, diff, minus)
  489. {
  490.     for(new i; i<sizeof(g_Ranks); i++)
  491.     {
  492.         if(i == charsmax(g_Ranks))
  493.         {
  494.             if(minus == 1)  return g_Ranks[i-diff][Cht_Prefix]
  495.             else    return g_Ranks[i+diff][Cht_Prefix]
  496.         }
  497.         if(g_Ranks[i][Min_ELO] < Usr_Rating && g_Ranks[i][Max_ELO] > Usr_Rating)
  498.         {
  499.             if(minus == 1)  return g_Ranks[i-diff][Cht_Prefix]
  500.             else    return g_Ranks[i+diff][Cht_Prefix]
  501.         }
  502.     }
  503.     return 0;
  504. }



mostmár jó??

Majd ha lesz idom at nezem


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Publikus CS:GO Mod
HozzászólásElküldve: 2016.06.03. 18:56 
Offline
Fanatikus

Csatlakozott: 2015.07.05. 12:18
Hozzászólások: 172
Megköszönt másnak: 41 alkalommal
Megköszönték neki: 1 alkalommal
a ritkaság mi alapján értendő

pl van 4 es láda ID
ezon belül is van ritkaság 1 2 3 4 5 6 ??
minnél nagyobb a szám annál ritkább??


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Publikus CS:GO Mod
HozzászólásElküldve: 2016.06.05. 08:13 
Offline
Fanatikus
Avatar

Csatlakozott: 2015.10.04. 22:42
Hozzászólások: 164
Megköszönt másnak: 9 alkalommal
Megköszönték neki: 6 alkalommal
Lehet hogy én vagyok hülye de ez sehogy se akar rá csatlakozni az sqlre

_________________
Konfigost keresek aki ha bozonyít megkapja a jogot hogy az összes pbt szervert konfigolja irányitja


Kép
Kép


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  [ 52 hozzászólás ]  Oldal Előző 1 2 3 4 5 6 Következő


Ki van itt

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