hlmod.hu

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



Jelenlévő felhasználók

Jelenleg 99 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 99 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  [ 21 hozzászólás ]  Oldal Előző 1 2 3 Következő
Szerző Üzenet
 Hozzászólás témája: Re: VIP Időre
HozzászólásElküldve: 2016.08.30. 23:22 
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
Reconnect után jó lesz.
  1. #include < amxmodx >
  2. #include < engine >
  3.  
  4. // 31 nap
  5. #define VIPTIME 31 * 86400
  6. #define VIPFLAG ADMIN_LEVEL_H
  7.  
  8. new const g_sPrefix[ ] = "VIP Rendszer";
  9.  
  10. new const g_sVipsFile[ ] = "addons/amxmodx/configs/vips.ini";
  11. enum _: eVipInfos { sVipAuthId[ 32 ], iVipTime };
  12.  
  13. new Array: g_daVips, g_iVip[ eVipInfos ], g_iVipsNum, g_iVipCheckEntity;
  14. new g_sAuthId[ 33 ][ 32 ], g_iTime[ 33 ];
  15.  
  16. public plugin_init( )
  17. {
  18.     register_plugin( "VIP Rendszer", "1.0", "Demon" );
  19.    
  20.     register_clcmd( "say /vipvasarlas", "CmdBuyVip" );
  21.     register_clcmd( "say /info", "CmdVipInfo" );
  22.    
  23.     CreateVipCheckEntity( );
  24. }
  25.  
  26. public CmdVipInfo( iId )
  27. {
  28.     if ( !( get_user_flags( iId ) & VIPFLAG ) )
  29.     {
  30.         ChatColor( iId, "Te nem vagy VIP tag." );
  31.         return;
  32.     }
  33.    
  34.     static iTime;
  35.     iTime = g_iTime[ iId ] - get_systime( );
  36.    
  37.     if ( iTime <= 0 ) ChatColor( iId, "VIP tagsagod lejart." );
  38.     else ChatColor( iId, "VIP tagsagod lejar: %d ora %02d perc %02d mp mulva.", iTime / 3600, ( iTime / 60 ) % 60, iTime % 60 );
  39. }
  40.  
  41. public CmdBuyVip( iId )
  42. {
  43.     if ( get_user_flags( iId ) & VIPFLAG )
  44.     {
  45.         ChatColor( iId, "Te VIP tag vagy, nem vasarolhatsz ujra VIP tagsagot." );
  46.         return;
  47.     }
  48.    
  49.     g_iTime[ iId ] = g_iVip[ iVipTime ] = get_systime( ) + VIPTIME;
  50.     copy( g_iVip[ sVipAuthId ], charsmax( g_iVip[ ] ), g_sAuthId[ iId ] );
  51.    
  52.     ArrayPushArray( g_daVips, g_iVip );
  53.    
  54.     set_user_flags( iId, get_user_flags( iId ) | ADMIN_LEVEL_H );
  55.    
  56.     ChatColor( iId, "Sikeresen vasaroltal VIP tagsagot." );
  57. }
  58.  
  59. public plugin_precache( )
  60. {
  61.     g_daVips = ArrayCreate( eVipInfos );
  62.    
  63.     new pFile  = fopen( g_sVipsFile, "rt" );
  64.    
  65.     if ( pFile )
  66.     {
  67.         new sLine[ 64 ];
  68.        
  69.         new sData[ 2 ][ 32 ];
  70.         while ( !feof( pFile ) )
  71.         {
  72.             fgets( pFile, sLine, charsmax( sLine ) );
  73.            
  74.             if ( sLine[ 0 ] == ';' || strlen( sLine ) < 10 ) continue;
  75.            
  76.             parse( sLine, sData[ 0 ], 31, sData[ 1 ], 31 );
  77.            
  78.             g_iVip[ iVipTime ] = str_to_num( sData[ 1 ] );
  79.            
  80.             if ( g_iVip[ iVipTime ] < get_systime( ) ) continue;
  81.            
  82.             copy( g_iVip[ sVipAuthId ], charsmax( g_iVip[ ] ), sData[ 0 ] );
  83.            
  84.             ArrayPushArray( g_daVips, g_iVip );
  85.         }
  86.        
  87.         g_iVipsNum = ArraySize( g_daVips );
  88.        
  89.         fclose( pFile );
  90.     }
  91.     else Save( );
  92. }
  93.  
  94. public CreateVipCheckEntity( )
  95. {
  96.     g_iVipCheckEntity = create_entity( "info_target" );
  97.    
  98.     if ( !is_valid_ent( g_iVipCheckEntity ) ) return;
  99.    
  100.     entity_set_string( g_iVipCheckEntity, EV_SZ_classname, "vipcheck_entity" );
  101.     entity_set_float( g_iVipCheckEntity, EV_FL_nextthink, get_gametime( ) + 1.0 );
  102.    
  103.     register_think( "vipcheck_entity", "FwdThink" );
  104. }
  105.  
  106. public FwdThink( iEntity )
  107. {
  108.     if ( iEntity != g_iVipCheckEntity || g_iVipsNum == 0 ) return;
  109.    
  110.     static iCurSysTime;
  111.    
  112.     iCurSysTime = get_systime( );
  113.    
  114.     for ( new i; i < g_iVipsNum; ++i )
  115.     {
  116.         ArrayGetArray( g_daVips, i, g_iVip );
  117.        
  118.         if ( g_iVip[ iVipTime ] < iCurSysTime )
  119.             ArrayDeleteItem( g_daVips, i );
  120.     }
  121.    
  122.     entity_set_float( g_iVipCheckEntity, EV_FL_nextthink, get_gametime( ) + 5.0 );
  123. }
  124.  
  125. public client_putinserver( iId )
  126. {
  127.     if ( is_user_bot( iId ) || is_user_hltv( iId ) ) return;
  128.    
  129.     get_user_authid( iId, g_sAuthId[ iId ], charsmax( g_sAuthId[ ] ) );
  130.    
  131.     Check( iId );
  132. }
  133.  
  134. public Check( iId )
  135. {
  136.     for ( new i; i < g_iVipsNum; ++i )
  137.     {
  138.         ArrayGetArray( g_daVips, i, g_iVip );
  139.        
  140.         if ( equal( g_iVip[ sVipAuthId ], g_sAuthId[ iId ] ) )
  141.         {
  142.             set_user_flags( iId, get_user_flags( iId ) | ADMIN_LEVEL_H );
  143.            
  144.             g_iTime[ iId ] =  g_iVip[ iVipTime ];
  145.            
  146.             break;
  147.         }
  148.     }
  149. }
  150.  
  151. public Save( )
  152. {
  153.     if ( file_exists( g_sVipsFile ) ) delete_file( g_sVipsFile );
  154.    
  155.     new pFile  = fopen( g_sVipsFile, "wt" );
  156.     if ( pFile )
  157.     {
  158.         new sLine[ 64 ];
  159.        
  160.         for ( new i; i < g_iVipsNum; ++i )
  161.         {
  162.             ArrayGetArray( g_daVips, i, g_iVip );
  163.            
  164.             formatex( sLine, charsmax( sLine ), "^"%s^" ^"%d^"", g_iVip[ sVipAuthId ], g_iVip[ iVipTime ] );
  165.        
  166.             fputs( pFile, sLine );
  167.         }
  168.        
  169.         fclose( pFile );
  170.     }
  171. }
  172.  
  173. public plugin_end( ) { Save( ); }
  174.  
  175. stock ChatColor( iId, const sMessage[ ], any:... )
  176. {
  177.     static iPlrNum, iPlayers[ 32 ], sMsg[ 256 ], iIdMsg, iMsgLen = charsmax( sMsg );
  178.    
  179.     vformat( sMsg, iMsgLen, sMessage, 3 );
  180.     format( sMsg, iMsgLen, "!g[%s]!y %s", g_sPrefix, sMsg );
  181.    
  182.     replace_all( sMsg, iMsgLen, "!g", "^4" );
  183.     replace_all( sMsg, iMsgLen, "!y", "^1" );
  184.     replace_all( sMsg, iMsgLen, "!t", "^3" );
  185.  
  186.     if ( !iIdMsg ) iIdMsg = get_user_msgid( "SayText" );
  187.  
  188.     if ( iId )
  189.     {
  190.         iPlayers[ 0 ] = iId;
  191.         iPlrNum = 1;
  192.     }
  193.     else get_players( iPlayers, iPlrNum, "ch" );
  194.  
  195.     for ( new i, iPId; i < iPlrNum; ++i )
  196.     {
  197.         iPId = iPlayers[ i ];
  198.        
  199.         if ( !is_user_connected( iPId ) ) continue;
  200.        
  201.         message_begin( MSG_ONE, iIdMsg, _, iPId );
  202.         write_byte( iPId );
  203.         write_string( sMsg );
  204.         message_end( );
  205.     }
  206. }

Ehhez már nem kell reconnect.

Ők köszönték meg demon nek ezt a hozzászólást: exodus (2016.08.31. 12:33)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: VIP Időre
HozzászólásElküldve: 2016.08.31. 00:04 
Offline
Nagyúr
Avatar

Csatlakozott: 2016.03.05. 20:56
Hozzászólások: 663
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 124 alkalommal
Most olyan problémám van, hogy a hudon nem számol..:

  1. static iTime;
  2. iTime = Masodpercek[id] + get_user_time(id);
  3. set_hudmessage(0, 255, 0, 0.0, 0.2, 0, 0.0, 12.0);
  4. show_hudmessage(id, "Játszott idő: %dÓra %02d Perc %02d Mp.", iTime / 3600, ( iTime / 60 ) % 60, iTime % 60 );


Esetleg valaki valami ötlet?

SZERK:

Sikerűlt megcsinálni, még az lenne a kérdésem ha napot is akarok vele számolni akkor hogyan osszam?
  1. iTime / 3600, ( iTime / 60 ) % 60, iTime % 60

Erre gondolok

_________________
Global Offensive modok:

Global Offensive Mode 1.0
Global Offensive Mode 3.0
exodus Global Offensive 4.0


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: VIP Időre
HozzászólásElküldve: 2016.08.31. 00:19 
Offline
Senior Tag

Csatlakozott: 2016.06.01. 21:49
Hozzászólások: 234
Megköszönt másnak: 29 alkalommal
Megköszönték neki: 17 alkalommal
Vagy hogyan lehet azt meg oldani hogy ki írja a dátumót is hogy mikor jár le..

_________________
*pbT# Knife Hamarosan.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: VIP Időre
HozzászólásElküldve: 2016.08.31. 00:24 
Offline
Tag
Avatar

Csatlakozott: 2016.08.30. 21:55
Hozzászólások: 44
Megköszönt másnak: 2 alkalommal
Megköszönték neki: 2 alkalommal
Így.
  1. new Masodpercek[id]
  2.  
  3. new iMasodperc, iPerc, iOra, nev[32]
  4. get_user_name(id, nev, 31)
  5. iMasodperc = Masodpercek[id] + get_user_time(id)
  6. iPerc = iMasodperc / 60
  7. iOra = iPerc / 60
  8. iMasodperc = iMasodperc - iPerc * 60
  9. iPerc = iPerc - iOra * 60
  10.  
  11. set_hudmessage(0, 255, 0, 0.0, 0.2, 0, 0.0, 12.0)
  12. show_hudmessage(id, "Vip Lejár: %dÓra %dPerc %dMp.", nev, iOra, iPerc, iMasodperc)

_________________
Kép
Szerver konfigost keresek
Amxx plugin ismerette sql, ismerete

Ők köszönték meg DarkFly nek ezt a hozzászólást: exodus (2016.08.31. 12:32)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: VIP Időre
HozzászólásElküldve: 2016.08.31. 12:32 
Offline
Nagyúr
Avatar

Csatlakozott: 2016.03.05. 20:56
Hozzászólások: 663
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 124 alkalommal
Most, olyan problémám van, hogy elkészítettem a modba a vip vásárlást viszont a mentés nemjó.

Így mentem:

  1. Len += formatex(Query[Len], charsmax(Query)-Len, "VIP = ^"%i^", ", Vip[id] - get_systime( ));


Tehát vip[id]-ből vonja ki az időt.

felcsatlakozásnál már ezt az értéket kapja alapbol a játékos:
  1. -1472639373


Ha így mentem:
  1. Len += formatex(Query[Len], charsmax(Query)-Len, "VIP = ^"%i^", ", Vip[id]);


Akkor jó minden kivéve, hogy nem számolja lefele az időt (nem tellik a vip ideje)

_________________
Global Offensive modok:

Global Offensive Mode 1.0
Global Offensive Mode 3.0
exodus Global Offensive 4.0


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: VIP Időre
HozzászólásElküldve: 2016.08.31. 15:49 
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
DarkFly írta:
Így.
  1. new Masodpercek[id]
  2.  
  3. new iMasodperc, iPerc, iOra, nev[32]
  4. get_user_name(id, nev, 31)
  5. iMasodperc = Masodpercek[id] + get_user_time(id)
  6. iPerc = iMasodperc / 60
  7. iOra = iPerc / 60
  8. iMasodperc = iMasodperc - iPerc * 60
  9. iPerc = iPerc - iOra * 60
  10.  
  11. set_hudmessage(0, 255, 0, 0.0, 0.2, 0, 0.0, 12.0)
  12. show_hudmessage(id, "Vip Lejár: %dÓra %dPerc %dMp.", nev, iOra, iPerc, iMasodperc)


Ezt már 1x elmagyaráztam, hogy miért nem jó...
De levezetem matematikailag is.

iPerc = iMasodperc / 60
iMasodperc = iMasodperc - iPerc * 60
_______________
iMasodperc = iMasodperc - ( iMasodperc / 60 ) * 60
iMasodperc = iMasodperc - ( ( iMasodperc * 60 ) / 60 )
iMasodperc = iMasodperc - iMasodperc
iMasodperc = 0

Nem tudom, hogy miért erőltetitek, ha nem jó.

  1. new iMasodperc, iPerc, iOra, iNap, nev[32]
  2. get_user_name(id, nev, 31)
  3. iMasodperc = Masodpercek[id] + get_user_time(id)
  4.  
  5. iNap = iMasodperc  / 86400
  6. iOra = ( iMasodperc / 3600 ) % 24
  7. iPerc = ( iMasodperc / 60 ) % 60
  8. iMasodperc %= 60


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: VIP Időre
HozzászólásElküldve: 2016.09.06. 14:43 
Offline
Nagyúr
Avatar

Csatlakozott: 2016.03.05. 20:56
Hozzászólások: 663
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 124 alkalommal
Itt mi lehet a probléma?

Vip vásárlásnál a következők történnek:

  1. if(SMS[id] >= 5)
  2.         {
  3.         Vip[id] = 0;
  4.         Vip[id] = get_systime() + (15 * 86400);
  5.         SMS[id] -= 5;
  6.         ColorChat(id, GREEN, "[InformáciĂł] ^1Megvásároltad a ^4VIP ^1jogot ^15 napra^1.");
  7.         }  
  8.         else
  9.         {
  10.         ColorChat(id, GREEN, "[InformáciĂł] ^1Nincs elĂ©g ^4SMS Pontod.");
  11.         }
  12.         }


Check:
  1. public VipLoad(id)
  2. {
  3.     if(Vip[id] < get_systime())
  4.     {
  5.        Vip[id] = 0;
  6.     }
  7. }


És a mentés:
  1. Len += formatex(Query[Len], charsmax(Query)-Len, "VIP = ^"%i^", ", Vip[id]);


De valamiért mégsem jó, valaki valami ötlet mi nemjó? :D
Mert már ezzel szenvedek de még mindig nemtudtam rájönni, hogy hogyan kell másodpercenként leszámolni az időt.
Simán, hogy számolja azt meg már értem..

_________________
Global Offensive modok:

Global Offensive Mode 1.0
Global Offensive Mode 3.0
exodus Global Offensive 4.0


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: VIP Időre
HozzászólásElküldve: 2016.09.07. 13:01 
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
  1. new Vip[2][33]/*Vip, VipIdo*/
  2.  
  3. public plugin_init() {
  4. set_task(60.0,"TaskOneMinute",.flags="b");
  5. }
  6.  
  7. public Vip_h(id, menu, key) {
  8. if(key == MENU_EXIT) {
  9. menu_destroy(menu)
  10. return
  11. }
  12.  
  13. switch(key) {
  14. case 0: {
  15. if(Sms[id] >= 50) {
  16. Sms[id] -= 50;
  17. Vip[0][id] = 1;
  18. Vip[1][id] = get_systime(24*3600*10) // 10 nap
  19. }
  20. }
  21. public TaskOneMinute()
  22. {
  23.     new players[32], pnum, id
  24.     get_players(players, pnum)
  25.    
  26.     for(new i; i<pnum; i++)
  27.     {
  28.         id = players[i]
  29.            
  30.         if((get_user_flags(id) & ADMIN_KICK) && (Vip[1][id] < get_systime()))
  31.         {
  32.             Vip[0][id] = 0;
  33.             Vip[1][id] = 0;
  34.         }
  35.     }
  36.    
  37.     return PLUGIN_HANDLED;
  38. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: VIP Időre
HozzászólásElküldve: 2017.07.04. 18:35 
Offline
Tud valamit

Csatlakozott: 2016.12.25. 12:43
Hozzászólások: 129
Megköszönt másnak: 35 alkalommal
Megköszönték neki: 4 alkalommal
demon írta:
Reconnect után jó lesz.
  1. #include < amxmodx >
  2. #include < engine >
  3.  
  4. // 31 nap
  5. #define VIPTIME 31 * 86400
  6. #define VIPFLAG ADMIN_LEVEL_H
  7.  
  8. new const g_sPrefix[ ] = "VIP Rendszer";
  9.  
  10. new const g_sVipsFile[ ] = "addons/amxmodx/configs/vips.ini";
  11. enum _: eVipInfos { sVipAuthId[ 32 ], iVipTime };
  12.  
  13. new Array: g_daVips, g_iVip[ eVipInfos ], g_iVipsNum, g_iVipCheckEntity;
  14. new g_sAuthId[ 33 ][ 32 ], g_iTime[ 33 ];
  15.  
  16. public plugin_init( )
  17. {
  18.     register_plugin( "VIP Rendszer", "1.0", "Demon" );
  19.    
  20.     register_clcmd( "say /vipvasarlas", "CmdBuyVip" );
  21.     register_clcmd( "say /info", "CmdVipInfo" );
  22.    
  23.     CreateVipCheckEntity( );
  24. }
  25.  
  26. public CmdVipInfo( iId )
  27. {
  28.     if ( !( get_user_flags( iId ) & VIPFLAG ) )
  29.     {
  30.         ChatColor( iId, "Te nem vagy VIP tag." );
  31.         return;
  32.     }
  33.    
  34.     static iTime;
  35.     iTime = g_iTime[ iId ] - get_systime( );
  36.    
  37.     if ( iTime <= 0 ) ChatColor( iId, "VIP tagsagod lejart." );
  38.     else ChatColor( iId, "VIP tagsagod lejar: %d ora %02d perc %02d mp mulva.", iTime / 3600, ( iTime / 60 ) % 60, iTime % 60 );
  39. }
  40.  
  41. public CmdBuyVip( iId )
  42. {
  43.     if ( get_user_flags( iId ) & VIPFLAG )
  44.     {
  45.         ChatColor( iId, "Te VIP tag vagy, nem vasarolhatsz ujra VIP tagsagot." );
  46.         return;
  47.     }
  48.    
  49.     g_iTime[ iId ] = g_iVip[ iVipTime ] = get_systime( ) + VIPTIME;
  50.     copy( g_iVip[ sVipAuthId ], charsmax( g_iVip[ ] ), g_sAuthId[ iId ] );
  51.    
  52.     ArrayPushArray( g_daVips, g_iVip );
  53.    
  54.     set_user_flags( iId, get_user_flags( iId ) | ADMIN_LEVEL_H );
  55.    
  56.     ChatColor( iId, "Sikeresen vasaroltal VIP tagsagot." );
  57. }
  58.  
  59. public plugin_precache( )
  60. {
  61.     g_daVips = ArrayCreate( eVipInfos );
  62.    
  63.     new pFile  = fopen( g_sVipsFile, "rt" );
  64.    
  65.     if ( pFile )
  66.     {
  67.         new sLine[ 64 ];
  68.        
  69.         new sData[ 2 ][ 32 ];
  70.         while ( !feof( pFile ) )
  71.         {
  72.             fgets( pFile, sLine, charsmax( sLine ) );
  73.            
  74.             if ( sLine[ 0 ] == ';' || strlen( sLine ) < 10 ) continue;
  75.            
  76.             parse( sLine, sData[ 0 ], 31, sData[ 1 ], 31 );
  77.            
  78.             g_iVip[ iVipTime ] = str_to_num( sData[ 1 ] );
  79.            
  80.             if ( g_iVip[ iVipTime ] < get_systime( ) ) continue;
  81.            
  82.             copy( g_iVip[ sVipAuthId ], charsmax( g_iVip[ ] ), sData[ 0 ] );
  83.            
  84.             ArrayPushArray( g_daVips, g_iVip );
  85.         }
  86.        
  87.         g_iVipsNum = ArraySize( g_daVips );
  88.        
  89.         fclose( pFile );
  90.     }
  91.     else Save( );
  92. }
  93.  
  94. public CreateVipCheckEntity( )
  95. {
  96.     g_iVipCheckEntity = create_entity( "info_target" );
  97.    
  98.     if ( !is_valid_ent( g_iVipCheckEntity ) ) return;
  99.    
  100.     entity_set_string( g_iVipCheckEntity, EV_SZ_classname, "vipcheck_entity" );
  101.     entity_set_float( g_iVipCheckEntity, EV_FL_nextthink, get_gametime( ) + 1.0 );
  102.    
  103.     register_think( "vipcheck_entity", "FwdThink" );
  104. }
  105.  
  106. public FwdThink( iEntity )
  107. {
  108.     if ( iEntity != g_iVipCheckEntity || g_iVipsNum == 0 ) return;
  109.    
  110.     static iCurSysTime;
  111.    
  112.     iCurSysTime = get_systime( );
  113.    
  114.     for ( new i; i < g_iVipsNum; ++i )
  115.     {
  116.         ArrayGetArray( g_daVips, i, g_iVip );
  117.        
  118.         if ( g_iVip[ iVipTime ] < iCurSysTime )
  119.             ArrayDeleteItem( g_daVips, i );
  120.     }
  121.    
  122.     entity_set_float( g_iVipCheckEntity, EV_FL_nextthink, get_gametime( ) + 5.0 );
  123. }
  124.  
  125. public client_putinserver( iId )
  126. {
  127.     if ( is_user_bot( iId ) || is_user_hltv( iId ) ) return;
  128.    
  129.     get_user_authid( iId, g_sAuthId[ iId ], charsmax( g_sAuthId[ ] ) );
  130.    
  131.     Check( iId );
  132. }
  133.  
  134. public Check( iId )
  135. {
  136.     for ( new i; i < g_iVipsNum; ++i )
  137.     {
  138.         ArrayGetArray( g_daVips, i, g_iVip );
  139.        
  140.         if ( equal( g_iVip[ sVipAuthId ], g_sAuthId[ iId ] ) )
  141.         {
  142.             set_user_flags( iId, get_user_flags( iId ) | ADMIN_LEVEL_H );
  143.            
  144.             g_iTime[ iId ] =  g_iVip[ iVipTime ];
  145.            
  146.             break;
  147.         }
  148.     }
  149. }
  150.  
  151. public Save( )
  152. {
  153.     if ( file_exists( g_sVipsFile ) ) delete_file( g_sVipsFile );
  154.    
  155.     new pFile  = fopen( g_sVipsFile, "wt" );
  156.     if ( pFile )
  157.     {
  158.         new sLine[ 64 ];
  159.        
  160.         for ( new i; i < g_iVipsNum; ++i )
  161.         {
  162.             ArrayGetArray( g_daVips, i, g_iVip );
  163.            
  164.             formatex( sLine, charsmax( sLine ), "^"%s^" ^"%d^"", g_iVip[ sVipAuthId ], g_iVip[ iVipTime ] );
  165.        
  166.             fputs( pFile, sLine );
  167.         }
  168.        
  169.         fclose( pFile );
  170.     }
  171. }
  172.  
  173. public plugin_end( ) { Save( ); }
  174.  
  175. stock ChatColor( iId, const sMessage[ ], any:... )
  176. {
  177.     static iPlrNum, iPlayers[ 32 ], sMsg[ 256 ], iIdMsg, iMsgLen = charsmax( sMsg );
  178.    
  179.     vformat( sMsg, iMsgLen, sMessage, 3 );
  180.     format( sMsg, iMsgLen, "!g[%s]!y %s", g_sPrefix, sMsg );
  181.    
  182.     replace_all( sMsg, iMsgLen, "!g", "^4" );
  183.     replace_all( sMsg, iMsgLen, "!y", "^1" );
  184.     replace_all( sMsg, iMsgLen, "!t", "^3" );
  185.  
  186.     if ( !iIdMsg ) iIdMsg = get_user_msgid( "SayText" );
  187.  
  188.     if ( iId )
  189.     {
  190.         iPlayers[ 0 ] = iId;
  191.         iPlrNum = 1;
  192.     }
  193.     else get_players( iPlayers, iPlrNum, "ch" );
  194.  
  195.     for ( new i, iPId; i < iPlrNum; ++i )
  196.     {
  197.         iPId = iPlayers[ i ];
  198.        
  199.         if ( !is_user_connected( iPId ) ) continue;
  200.        
  201.         message_begin( MSG_ONE, iIdMsg, _, iPId );
  202.         write_byte( iPId );
  203.         write_string( sMsg );
  204.         message_end( );
  205.     }
  206. }

Ehhez már nem kell reconnect.

Hali!
Ehhez nem lehet hozzá írni hogy Pl: Lejár: 2017.07.20?
Előre is köszönöm!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: VIP Időre
HozzászólásElküldve: 2017.07.05. 12:10 
Offline
Félisten
Avatar

Csatlakozott: 2015.03.12. 18:30
Hozzászólások: 975
Megköszönt másnak: 67 alkalommal
Megköszönték neki: 136 alkalommal
KillerBoy12 írta:
demon írta:
Reconnect után jó lesz.
  1. #include < amxmodx >
  2. #include < engine >
  3.  
  4. // 31 nap
  5. #define VIPTIME 31 * 86400
  6. #define VIPFLAG ADMIN_LEVEL_H
  7.  
  8. new const g_sPrefix[ ] = "VIP Rendszer";
  9.  
  10. new const g_sVipsFile[ ] = "addons/amxmodx/configs/vips.ini";
  11. enum _: eVipInfos { sVipAuthId[ 32 ], iVipTime };
  12.  
  13. new Array: g_daVips, g_iVip[ eVipInfos ], g_iVipsNum, g_iVipCheckEntity;
  14. new g_sAuthId[ 33 ][ 32 ], g_iTime[ 33 ];
  15.  
  16. public plugin_init( )
  17. {
  18.     register_plugin( "VIP Rendszer", "1.0", "Demon" );
  19.    
  20.     register_clcmd( "say /vipvasarlas", "CmdBuyVip" );
  21.     register_clcmd( "say /info", "CmdVipInfo" );
  22.    
  23.     CreateVipCheckEntity( );
  24. }
  25.  
  26. public CmdVipInfo( iId )
  27. {
  28.     if ( !( get_user_flags( iId ) & VIPFLAG ) )
  29.     {
  30.         ChatColor( iId, "Te nem vagy VIP tag." );
  31.         return;
  32.     }
  33.    
  34.     static iTime;
  35.     iTime = g_iTime[ iId ] - get_systime( );
  36.    
  37.     if ( iTime <= 0 ) ChatColor( iId, "VIP tagsagod lejart." );
  38.     else ChatColor( iId, "VIP tagsagod lejar: %d ora %02d perc %02d mp mulva.", iTime / 3600, ( iTime / 60 ) % 60, iTime % 60 );
  39. }
  40.  
  41. public CmdBuyVip( iId )
  42. {
  43.     if ( get_user_flags( iId ) & VIPFLAG )
  44.     {
  45.         ChatColor( iId, "Te VIP tag vagy, nem vasarolhatsz ujra VIP tagsagot." );
  46.         return;
  47.     }
  48.    
  49.     g_iTime[ iId ] = g_iVip[ iVipTime ] = get_systime( ) + VIPTIME;
  50.     copy( g_iVip[ sVipAuthId ], charsmax( g_iVip[ ] ), g_sAuthId[ iId ] );
  51.    
  52.     ArrayPushArray( g_daVips, g_iVip );
  53.    
  54.     set_user_flags( iId, get_user_flags( iId ) | ADMIN_LEVEL_H );
  55.    
  56.     ChatColor( iId, "Sikeresen vasaroltal VIP tagsagot." );
  57. }
  58.  
  59. public plugin_precache( )
  60. {
  61.     g_daVips = ArrayCreate( eVipInfos );
  62.    
  63.     new pFile  = fopen( g_sVipsFile, "rt" );
  64.    
  65.     if ( pFile )
  66.     {
  67.         new sLine[ 64 ];
  68.        
  69.         new sData[ 2 ][ 32 ];
  70.         while ( !feof( pFile ) )
  71.         {
  72.             fgets( pFile, sLine, charsmax( sLine ) );
  73.            
  74.             if ( sLine[ 0 ] == ';' || strlen( sLine ) < 10 ) continue;
  75.            
  76.             parse( sLine, sData[ 0 ], 31, sData[ 1 ], 31 );
  77.            
  78.             g_iVip[ iVipTime ] = str_to_num( sData[ 1 ] );
  79.            
  80.             if ( g_iVip[ iVipTime ] < get_systime( ) ) continue;
  81.            
  82.             copy( g_iVip[ sVipAuthId ], charsmax( g_iVip[ ] ), sData[ 0 ] );
  83.            
  84.             ArrayPushArray( g_daVips, g_iVip );
  85.         }
  86.        
  87.         g_iVipsNum = ArraySize( g_daVips );
  88.        
  89.         fclose( pFile );
  90.     }
  91.     else Save( );
  92. }
  93.  
  94. public CreateVipCheckEntity( )
  95. {
  96.     g_iVipCheckEntity = create_entity( "info_target" );
  97.    
  98.     if ( !is_valid_ent( g_iVipCheckEntity ) ) return;
  99.    
  100.     entity_set_string( g_iVipCheckEntity, EV_SZ_classname, "vipcheck_entity" );
  101.     entity_set_float( g_iVipCheckEntity, EV_FL_nextthink, get_gametime( ) + 1.0 );
  102.    
  103.     register_think( "vipcheck_entity", "FwdThink" );
  104. }
  105.  
  106. public FwdThink( iEntity )
  107. {
  108.     if ( iEntity != g_iVipCheckEntity || g_iVipsNum == 0 ) return;
  109.    
  110.     static iCurSysTime;
  111.    
  112.     iCurSysTime = get_systime( );
  113.    
  114.     for ( new i; i < g_iVipsNum; ++i )
  115.     {
  116.         ArrayGetArray( g_daVips, i, g_iVip );
  117.        
  118.         if ( g_iVip[ iVipTime ] < iCurSysTime )
  119.             ArrayDeleteItem( g_daVips, i );
  120.     }
  121.    
  122.     entity_set_float( g_iVipCheckEntity, EV_FL_nextthink, get_gametime( ) + 5.0 );
  123. }
  124.  
  125. public client_putinserver( iId )
  126. {
  127.     if ( is_user_bot( iId ) || is_user_hltv( iId ) ) return;
  128.    
  129.     get_user_authid( iId, g_sAuthId[ iId ], charsmax( g_sAuthId[ ] ) );
  130.    
  131.     Check( iId );
  132. }
  133.  
  134. public Check( iId )
  135. {
  136.     for ( new i; i < g_iVipsNum; ++i )
  137.     {
  138.         ArrayGetArray( g_daVips, i, g_iVip );
  139.        
  140.         if ( equal( g_iVip[ sVipAuthId ], g_sAuthId[ iId ] ) )
  141.         {
  142.             set_user_flags( iId, get_user_flags( iId ) | ADMIN_LEVEL_H );
  143.            
  144.             g_iTime[ iId ] =  g_iVip[ iVipTime ];
  145.            
  146.             break;
  147.         }
  148.     }
  149. }
  150.  
  151. public Save( )
  152. {
  153.     if ( file_exists( g_sVipsFile ) ) delete_file( g_sVipsFile );
  154.    
  155.     new pFile  = fopen( g_sVipsFile, "wt" );
  156.     if ( pFile )
  157.     {
  158.         new sLine[ 64 ];
  159.        
  160.         for ( new i; i < g_iVipsNum; ++i )
  161.         {
  162.             ArrayGetArray( g_daVips, i, g_iVip );
  163.            
  164.             formatex( sLine, charsmax( sLine ), "^"%s^" ^"%d^"", g_iVip[ sVipAuthId ], g_iVip[ iVipTime ] );
  165.        
  166.             fputs( pFile, sLine );
  167.         }
  168.        
  169.         fclose( pFile );
  170.     }
  171. }
  172.  
  173. public plugin_end( ) { Save( ); }
  174.  
  175. stock ChatColor( iId, const sMessage[ ], any:... )
  176. {
  177.     static iPlrNum, iPlayers[ 32 ], sMsg[ 256 ], iIdMsg, iMsgLen = charsmax( sMsg );
  178.    
  179.     vformat( sMsg, iMsgLen, sMessage, 3 );
  180.     format( sMsg, iMsgLen, "!g[%s]!y %s", g_sPrefix, sMsg );
  181.    
  182.     replace_all( sMsg, iMsgLen, "!g", "^4" );
  183.     replace_all( sMsg, iMsgLen, "!y", "^1" );
  184.     replace_all( sMsg, iMsgLen, "!t", "^3" );
  185.  
  186.     if ( !iIdMsg ) iIdMsg = get_user_msgid( "SayText" );
  187.  
  188.     if ( iId )
  189.     {
  190.         iPlayers[ 0 ] = iId;
  191.         iPlrNum = 1;
  192.     }
  193.     else get_players( iPlayers, iPlrNum, "ch" );
  194.  
  195.     for ( new i, iPId; i < iPlrNum; ++i )
  196.     {
  197.         iPId = iPlayers[ i ];
  198.        
  199.         if ( !is_user_connected( iPId ) ) continue;
  200.        
  201.         message_begin( MSG_ONE, iIdMsg, _, iPId );
  202.         write_byte( iPId );
  203.         write_string( sMsg );
  204.         message_end( );
  205.     }
  206. }

Ehhez már nem kell reconnect.

Hali!
Ehhez nem lehet hozzá írni hogy Pl: Lejár: 2017.07.20?
Előre is köszönöm!

  1. ChatColor( iId, "VIP tagsagod lejar: %d ora %02d perc %02d mp mulva.", iTime / 3600, ( iTime / 60 ) % 60, iTime % 60 );

_________________
Fórumi aktivitásom véget ért: 2017.09.07.
Innentől esetleg steamen vagyok elérhető.


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


Ki van itt

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