hlmod.hu

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



Jelenlévő felhasználók

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

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

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

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



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

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Szerveren töltött időre jog adás
HozzászólásElküldve: 2016.04.21. 14:44 
Offline
Jómunkásember
Avatar

Csatlakozott: 2016.02.27. 17:55
Hozzászólások: 349
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 57 alkalommal
Üdv mindenkinek!

Olyat hogyan tudok csinálni, hogy ha pl a player a szerveren összesen játszott már 2 órát, akkor kapjon mondjuk VIP jogot.
Tételezzük fel, hogy a VIP, az o jog, és ha mondjuk 4órát játszott összesen eddig a szerveren, akkor KICK jogot kapjon VIP helyett.

Lényeg, hogy ne set_task -al legyen megoldva, hanem inkább get_user_time(id, 1).

Csupán kíváncsiság, hogy hogyan lehetne megoldani.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Szerveren töltött időre jog adás
HozzászólásElküldve: 2016.04.21. 16:00 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
https://neugomon.ru/threads/1866

_________________
GitHub - mforce


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Szerveren töltött időre jog adás
HozzászólásElküldve: 2016.04.21. 22:02 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.01.15. 19:04
Hozzászólások: 407
Megköszönt másnak: 17 alkalommal
Megköszönték neki: 176 alkalommal
MYSQL adatbázisba mentés:
  1. #include <amxmodx>
  2. #include <sqlx>
  3.  
  4. #define PLUGIN "New Plug-In"
  5. #define VERSION "1.0"
  6. #define AUTHOR "Demon"
  7.  
  8. #pragma semicolon 1
  9.  
  10. #define VIP_JOG "o"
  11.  
  12. new const SQL_INFO[][] = {
  13.     "",     // HOST
  14.     "",     // USERNAME
  15.     "",     // PASSWORD
  16.     ""      // DATABASE
  17. };
  18.  
  19. new const TABLE[] = "online_time";
  20.  
  21. new Handle:g_SqlTuple;
  22.  
  23. new online_time[33], connect_time[33];
  24.  
  25. public plugin_init() {
  26.     register_plugin(PLUGIN, VERSION, AUTHOR);
  27. }
  28.  
  29. public client_putinserver(id)
  30. {
  31.     online_time[id] = connect_time[id] = 0;
  32.     if(!is_user_bot(id) && !is_user_hltv(id))
  33.     {
  34.         connect_time[id] = get_user_time(id, 1);
  35.         Load(id);
  36.     }
  37. }
  38. public client_disconnect(id)
  39. {
  40.     if(!is_user_bot(id) && !is_user_hltv(id))
  41.         Update(id);
  42. }
  43.  
  44. public calc_user_otime(id)
  45. {
  46.     online_time[id] += (get_user_time(id, 1) - connect_time[id]);
  47. }
  48.  
  49. public Load(id)
  50. {
  51.     new Query[128], Data[1], name[32];
  52.     Data[0] = id;
  53.     get_user_name(id, name, 31);
  54.     formatex(Query, charsmax(Query), "SELECT * FROM `%s` WHERE username = ^"%s^";", TABLE, name);
  55.     SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1);
  56. }
  57.  
  58. public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  59. {
  60.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  61.     {
  62.         log_amx("%s", Error);
  63.         return;
  64.     }
  65.     else
  66.     {
  67.         new id = Data[0];
  68.        
  69.         if(SQL_NumRows(Query) > 0)
  70.         {
  71.             online_time[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "online_time"));
  72.             if(!(get_user_flags(id) & ADMIN_KICK))
  73.             {
  74.                 if(online_time[id] >= (4 * 3600)) // 4 ora
  75.                     set_user_flags(id, read_flags("c"));
  76.                 else if(online_time[id] >= (2 * 3600))  // 2 ora
  77.                     set_user_flags(id, read_flags(VIP_JOG));
  78.             }
  79.         }
  80.         else Save(id);
  81.     }
  82. }
  83.  
  84. public Save(id)
  85. {
  86.     new Query[128], name[32];
  87.     get_user_name(id, name, 31);
  88.            
  89.     formatex(Query, sizeof(Query) - 1,"INSERT INTO `%s` (`username`, `online_time`) VALUES ('%s','0');", TABLE, name);
  90.  
  91.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query);
  92. }
  93.  
  94. public Update(id)
  95. {
  96.     new Query[128], name[32];
  97.     get_user_name(id, name, 31);
  98.     calc_user_otime(id);
  99.     formatex(Query, sizeof(Query) - 1,"UPDATE `%s` SET `online_time`='%d' WHERE `username` = '%s';", TABLE, online_time[id], name);
  100.    
  101.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query);
  102. }
  103.  
  104. public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  105. {
  106.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED)
  107.     {
  108.         log_amx("%s", Error);
  109.         return;
  110.     }
  111. }
  112.  
  113. public plugin_cfg()
  114. {
  115.     static Query[2000];
  116.     g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3]);
  117.     formatex(Query, sizeof(Query) - 1,"CREATE TABLE IF NOT EXISTS `%s` (`username` varchar(32) NOT NULL, `online_time` INT(11) NOT NULL,`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY);", TABLE);
  118.    
  119.     SQL_ThreadQuery(g_SqlTuple,"createTableThread", Query);
  120. }
  121.  
  122. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
  123. {
  124.     if(FailState == TQUERY_CONNECT_FAILED)
  125.         set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  126.     else if(FailState == TQUERY_QUERY_FAILED)
  127.         set_fail_state("Query Error");
  128.     if(Errcode)
  129.         log_amx("Hibat dobtam: %s",Error);
  130. }
  131.  
  132. public plugin_end() {
  133.     SQL_FreeHandle(g_SqlTuple);
  134. }

Fájlba mentés:
  1. #include <amxmodx>
  2. #include <amxmisc>
  3.  
  4. #define PLUGIN "New Plug-In"
  5. #define VERSION "1.0"
  6. #define AUTHOR "Demon"
  7.  
  8. #pragma semicolon 1
  9.  
  10. #define VIP_JOG "o"
  11.  
  12. new online_time[33], connect_time[33];
  13.  
  14. public plugin_init() {
  15.     register_plugin(PLUGIN, VERSION, AUTHOR);
  16. }
  17.  
  18. public client_putinserver(id)
  19. {
  20.     online_time[id] = connect_time[id] = 0;
  21.     if(!is_user_bot(id) && !is_user_hltv(id))
  22.     {
  23.         connect_time[id] = get_user_time(id, 1);
  24.         Load(id);
  25.     }
  26. }
  27. public client_disconnect(id)
  28. {
  29.     if(!is_user_bot(id) && !is_user_hltv(id))
  30.         Save(id);
  31. }
  32.  
  33. public calc_user_otime(id)
  34. {
  35.     online_time[id] += (get_user_time(id, 1) - connect_time[id]);
  36. }
  37.  
  38. public Save(id)
  39. {
  40.     new file[200];
  41.    
  42.     get_configsdir(file, 199);
  43.    
  44.     format(file, 199, "%s/played_time.ini", file);
  45.    
  46.     if (!file_exists(file))
  47.         write_file(file, "; Jatszott ido masodpercben");
  48.    
  49.     new pFile, linetoadd[128];
  50.     pFile = fopen(file, "rt");
  51.    
  52.     if(pFile)
  53.     {
  54.         new sName[32], sName2[32], bool:Found;
  55.         get_user_name(id, sName, 31);
  56.         new Line[192], Lines;
  57.         calc_user_otime(id);
  58.        
  59.         while(!feof(pFile) && !Found)
  60.         {
  61.             fgets(pFile, Line, 191);
  62.            
  63.             if(Line[0] == ';' || !strlen(Line))
  64.             {
  65.                 Lines++;
  66.                 continue;
  67.             }
  68.            
  69.             parse(Line, sName2, 31);
  70.            
  71.             if(equal(sName, sName2))
  72.             {
  73.                 formatex(linetoadd, 127, "^"%s^" ^"%d^"", sName, online_time[id]);
  74.                 write_file(file, linetoadd, Lines);
  75.                 Found = true;
  76.                 break;
  77.             }
  78.             Lines++;
  79.         }
  80.            
  81.         if(!Found)
  82.         {
  83.             formatex(linetoadd, 127, "^"%s^" ^"%d^"", sName, online_time[id]);
  84.             write_file(file, linetoadd);
  85.         }
  86.         fclose(pFile);
  87.     }
  88.     return PLUGIN_HANDLED;
  89. }
  90.  
  91. public Load(id)
  92. {
  93.     new file[200];
  94.    
  95.     get_configsdir(file, 199);
  96.     format(file, 199, "%s/played_time.ini", file);
  97.    
  98.     if (!file_exists(file))
  99.         return PLUGIN_HANDLED;
  100.    
  101.     new pFile;
  102.     pFile = fopen(file, "rt");
  103.    
  104.     if(pFile)
  105.     {
  106.         new Line[192];
  107.        
  108.         new sName[32], sName2[32], sTime[8];
  109.         get_user_name(id, sName, 31);
  110.         while(!feof(pFile))
  111.         {
  112.             fgets(pFile, Line, 191);
  113.             if(Line[0] == ';' || strlen(Line) < 10)
  114.                 continue;
  115.            
  116.             parse(Line, sName2, 31, sTime, 7);
  117.            
  118.             if(equal(sName, sName2))
  119.             {
  120.                 online_time[id] = str_to_num(sTime);
  121.                
  122.                 if(!(get_user_flags(id) & ADMIN_KICK))
  123.                 {
  124.                     if(online_time[id] >= (4 * 3600)) // 4 ora
  125.                         set_user_flags(id, read_flags("c"));
  126.                     else if(online_time[id] >= (2 * 3600))  // 2 ora
  127.                         set_user_flags(id, read_flags(VIP_JOG));
  128.                 }
  129.                 break;
  130.             }
  131.         }
  132.         fclose(pFile);
  133.     }
  134.     return PLUGIN_HANDLED;
  135. }

Csatlakozáskor ellenőrzi, hogy van-e a játékosnak elegendő játszott ideje, ha van kiossza neki a megfelelő jogot.

Ők köszönték meg demon nek ezt a hozzászólást: koko.988 (2016.04.22. 14:36)
  Népszerűség: 2.27%


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


Ki van itt

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