hlmod.hu
https://hlmod.hu/

Viprendszer lementése
https://hlmod.hu/viewtopic.php?f=9&t=30377
Oldal: 1 / 1

Szerző:  Alekvar [ 2020.04.12. 18:05 ]
Hozzászólás témája:  Viprendszer lementése

Sziasztok találtam itt egy forrást, s ebből vip rendszert akarok csinálni.

Annyi dolog lenne, hogy hogyan tudnám lementeni SQL-el a időt?
Tehát a g_iTime -t kellene, de nem tudom, hogy hogyan lehetne azt lementeni.

Esetleg?
Len += formatex(Query[Len], charsmax(Query)-Len, "VipTime = ^"%i^", ", g_iTime [id]-get_user_time(id));


  1. public ido_levon(iId)
  2. {
  3.     if(g_iTime != 0)
  4.     {
  5.         g_iTime --;
  6.         g_Vip[iId] -= 1;
  7.         set_task(1.0, "ido_levon", iId);
  8.     }
  9.     else
  10.     {
  11.         if(task_exists(iId))
  12.             remove_task(iId);
  13.     }
  14. }
  15. public Idoprobaadd(iId)
  16. {  
  17. if(PremiumP[iId] >= 450)
  18. {
  19. PremiumP[iId] -= 450;
  20. g_Vip[iId] += 1;
  21. g_iTime += get_pcvar_num(g_cTime);
  22. ColorChat(iId, GREY, "Sikeresen megvásároltad a V.I.P Tagságot! (7 Nap-ra)");
  23. set_task(1.0, "ido_levon", iId);
  24. }
  25. else
  26. {
  27. ColorChat(iId, GREEN, "[Információ] ^1Nincs elég ^4PP-d!");
  28. }
  29. }
  30. public Idoproba(iId)
  31. {
  32.     if(g_iTime != 0)
  33.     {
  34.        
  35.         new iTimes[4];// iTimes[0] - sec, iTimes[1] - min, iTimes[2] - hr, iTimes[3] - d
  36.         iTimes[0] = g_iTime;
  37.         iTimes[1] = iTimes[0] / 60;
  38.         iTimes[2] = iTimes[1] / 60;
  39.         iTimes[3] = iTimes[2] / 24;
  40.         iTimes[0] = iTimes[0] - iTimes[1] * 60;
  41.         iTimes[1] = iTimes[1] - iTimes[2] * 60;
  42.         iTimes[2] = iTimes[2] - iTimes[3] * 24;
  43.         ColorChat(iId, GREY, "V.I.P Tagság lejárata: %i NNap %i Ora %i Perc %i Masodperc", iTimes[3], iTimes[2], iTimes[1], iTimes[0]);
  44.     }
  45.     else if(g_iTime == 0)
  46.     {
  47.         ColorChat(iId, GREY, "Nincs V.I.P Tagságod!");
  48.     }
  49. }

Szerző:  HellEnergY [ 2020.04.12. 20:11 ]
Hozzászólás témája:  Re: Viprendszer lementése

Alekvar írta:
Sziasztok találtam itt egy forrást, s ebből vip rendszert akarok csinálni.

Annyi dolog lenne, hogy hogyan tudnám lementeni SQL-el a időt?
Tehát a g_iTime -t kellene, de nem tudom, hogy hogyan lehetne azt lementeni.

Esetleg?
Len += formatex(Query[Len], charsmax(Query)-Len, "VipTime = ^"%i^", ", g_iTime [id]-get_user_time(id));


  1. public ido_levon(iId)
  2. {
  3.     if(g_iTime != 0)
  4.     {
  5.         g_iTime --;
  6.         g_Vip[iId] -= 1;
  7.         set_task(1.0, "ido_levon", iId);
  8.     }
  9.     else
  10.     {
  11.         if(task_exists(iId))
  12.             remove_task(iId);
  13.     }
  14. }
  15. public Idoprobaadd(iId)
  16. {  
  17. if(PremiumP[iId] >= 450)
  18. {
  19. PremiumP[iId] -= 450;
  20. g_Vip[iId] += 1;
  21. g_iTime += get_pcvar_num(g_cTime);
  22. ColorChat(iId, GREY, "Sikeresen megvásároltad a V.I.P Tagságot! (7 Nap-ra)");
  23. set_task(1.0, "ido_levon", iId);
  24. }
  25. else
  26. {
  27. ColorChat(iId, GREEN, "[Információ] ^1Nincs elég ^4PP-d!");
  28. }
  29. }
  30. public Idoproba(iId)
  31. {
  32.     if(g_iTime != 0)
  33.     {
  34.        
  35.         new iTimes[4];// iTimes[0] - sec, iTimes[1] - min, iTimes[2] - hr, iTimes[3] - d
  36.         iTimes[0] = g_iTime;
  37.         iTimes[1] = iTimes[0] / 60;
  38.         iTimes[2] = iTimes[1] / 60;
  39.         iTimes[3] = iTimes[2] / 24;
  40.         iTimes[0] = iTimes[0] - iTimes[1] * 60;
  41.         iTimes[1] = iTimes[1] - iTimes[2] * 60;
  42.         iTimes[2] = iTimes[2] - iTimes[3] * 24;
  43.         ColorChat(iId, GREY, "V.I.P Tagság lejárata: %i NNap %i Ora %i Perc %i Masodperc", iTimes[3], iTimes[2], iTimes[1], iTimes[0]);
  44.     }
  45.     else if(g_iTime == 0)
  46.     {
  47.         ColorChat(iId, GREY, "Nincs V.I.P Tagságod!");
  48.     }
  49. }


Ezt már leírtam hogyan kell lol
Mikor lelép a játékos töröld a taskot utána ments, nem kell lekerni a get_user_timeot :lol:.
Felesleges kivonnod plusz még a játékos fent töltött idejét a get_user_timeal mert taskolva van igyis vonja másodpercenként, amit meg lementesz az már nem a teljes 7 nap.


Mivel a g_iTime int tipusú:
plugin cfgbe:
  1. sLen += formatex(Query[sLen], charsmax(Query)-sLen, "`VIPido` int(11) NOT NULL,");


betoltes(load_thr) thrnel:
  1. g_iTime = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "VIPido"));


lecsatlakozasnal pedig(updatenal):
  1. sLen += formatex(Query[sLen], charsmax(Query)-sLen, "VIPido = ^"%i^", ", g_iTime);


lecsatlakozasnal:
  1. public client_disconnected(iId)
  2. {
  3.     if(!is_user_bot(iId))
  4.     {
  5.         //itt is nulalzod ami kell
  6.         if(task_exists(iId))
  7.             remove_task(iId);
  8.        
  9.         sql_save(iId);
  10.     }
  11. }


fellepesnel pedig betoltod:
  1. public client_connect(iId)
  2. {
  3.     if(!is_user_bot(iId))
  4.     {
  5.         //lenullazod amit le kell
  6.         sql_load(iId); betoltes utan pedig taskeolod ujra.. vagyis meghivod ido_levon(iId) publicot
  7.     }
  8. }


Elvileg igy kell. :/

Szerző:  Alekvar [ 2020.04.13. 08:41 ]
Hozzászólás témája:  Re: Viprendszer lementése

HellEnergY írta:
Alekvar írta:
Sziasztok találtam itt egy forrást, s ebből vip rendszert akarok csinálni.

Annyi dolog lenne, hogy hogyan tudnám lementeni SQL-el a időt?
Tehát a g_iTime -t kellene, de nem tudom, hogy hogyan lehetne azt lementeni.

Esetleg?
Len += formatex(Query[Len], charsmax(Query)-Len, "VipTime = ^"%i^", ", g_iTime [id]-get_user_time(id));


  1. public ido_levon(iId)
  2. {
  3.     if(g_iTime != 0)
  4.     {
  5.         g_iTime --;
  6.         g_Vip[iId] -= 1;
  7.         set_task(1.0, "ido_levon", iId);
  8.     }
  9.     else
  10.     {
  11.         if(task_exists(iId))
  12.             remove_task(iId);
  13.     }
  14. }
  15. public Idoprobaadd(iId)
  16. {  
  17. if(PremiumP[iId] >= 450)
  18. {
  19. PremiumP[iId] -= 450;
  20. g_Vip[iId] += 1;
  21. g_iTime += get_pcvar_num(g_cTime);
  22. ColorChat(iId, GREY, "Sikeresen megvásároltad a V.I.P Tagságot! (7 Nap-ra)");
  23. set_task(1.0, "ido_levon", iId);
  24. }
  25. else
  26. {
  27. ColorChat(iId, GREEN, "[Információ] ^1Nincs elég ^4PP-d!");
  28. }
  29. }
  30. public Idoproba(iId)
  31. {
  32.     if(g_iTime != 0)
  33.     {
  34.        
  35.         new iTimes[4];// iTimes[0] - sec, iTimes[1] - min, iTimes[2] - hr, iTimes[3] - d
  36.         iTimes[0] = g_iTime;
  37.         iTimes[1] = iTimes[0] / 60;
  38.         iTimes[2] = iTimes[1] / 60;
  39.         iTimes[3] = iTimes[2] / 24;
  40.         iTimes[0] = iTimes[0] - iTimes[1] * 60;
  41.         iTimes[1] = iTimes[1] - iTimes[2] * 60;
  42.         iTimes[2] = iTimes[2] - iTimes[3] * 24;
  43.         ColorChat(iId, GREY, "V.I.P Tagság lejárata: %i NNap %i Ora %i Perc %i Masodperc", iTimes[3], iTimes[2], iTimes[1], iTimes[0]);
  44.     }
  45.     else if(g_iTime == 0)
  46.     {
  47.         ColorChat(iId, GREY, "Nincs V.I.P Tagságod!");
  48.     }
  49. }


Ezt már leírtam hogyan kell lol
Mikor lelép a játékos töröld a taskot utána ments, nem kell lekerni a get_user_timeot :lol:.
Felesleges kivonnod plusz még a játékos fent töltött idejét a get_user_timeal mert taskolva van igyis vonja másodpercenként, amit meg lementesz az már nem a teljes 7 nap.


Mivel a g_iTime int tipusú:
plugin cfgbe:
  1. sLen += formatex(Query[sLen], charsmax(Query)-sLen, "`VIPido` int(11) NOT NULL,");


betoltes(load_thr) thrnel:
  1. g_iTime = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "VIPido"));


lecsatlakozasnal pedig(updatenal):
  1. sLen += formatex(Query[sLen], charsmax(Query)-sLen, "VIPido = ^"%i^", ", g_iTime);


lecsatlakozasnal:
  1. public client_disconnected(iId)
  2. {
  3.     if(!is_user_bot(iId))
  4.     {
  5.         //itt is nulalzod ami kell
  6.         if(task_exists(iId))
  7.             remove_task(iId);
  8.        
  9.         sql_save(iId);
  10.     }
  11. }


fellepesnel pedig betoltod:
  1. public client_connect(iId)
  2. {
  3.     if(!is_user_bot(iId))
  4.     {
  5.         //lenullazod amit le kell
  6.         sql_load(iId); betoltes utan pedig taskeolod ujra.. vagyis meghivod ido_levon(iId) publicot
  7.     }
  8. }


Elvileg igy kell. :/


client_connect-hez mit írjak, hogy meghívja a ido_levon publicot, mert most lementi és jó is, viszont ha lecsatlakozok nem vonja tovább az időt.

Szerző:  ultraibolya [ 2020.04.13. 11:10 ]
Hozzászólás témája:  Re: Viprendszer lementése

Nem hát. Így online megy csak. Offlinehoz get_systime kell.

Szerző:  Alekvar [ 2020.04.13. 11:24 ]
Hozzászólás témája:  Re: Viprendszer lementése

ultraibolya írta:
Nem hát. Így online megy csak. Offlinehoz get_systime kell.


Es azt hogyan oldjam meg, mert így amikor le csatlakozok nem von semmit és amikor fellepek újra és beírom a parancsot nem von továbbra se semmit megall az idő, tehát nem vonja le.

Szerző:  ultraibolya [ 2020.04.13. 11:48 ]
Hozzászólás témája:  Re: Viprendszer lementése

De most mi a hiba?
Azt akarod hogy offline is levonja az időt vagy ha a szerveren van csak akkor és az nem működik?

Szerző:  Alekvar [ 2020.04.13. 11:53 ]
Hozzászólás témája:  Re: Viprendszer lementése

ultraibolya írta:
De most mi a hiba?
Azt akarod hogy offline is levonja az időt vagy ha a szerveren van csak akkor és az nem működik?

Igen azt akarom, ha nincs is fent akkor is teljen az idő.

Es ezzel az a baj, hogy nem vonja az időt ha nem vagyok fent, és amikor újra fellepek megall az idő, tehát 23 nap 58 perc 45 másodperc. (nem vonja le akkor se ha fent vagyok, ha újra csatlakozok azután nem vonja)

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/