ogólnie kod napisany dla jakiś oposów, kto to w ogóle wymyślił sprawdzać taskiem co 1 sekundę czy koniec vipa

ten temat to raczej do usunięcia się nadaje

ps. speedkill - jak coś to mogę napisać ten plug w jakiś normalny sposób, a nie za przeproszeniem

***** TASKIEM

kod pisany na szybko, bez testowania, bez przeliczeń na godziny i minuty (tylko sekundy) ale powinien działać (nie wiem czy daje flagi itp., ale chodzi mi tutaj o czas, kiedy się kończy itp.), jak chcesz żeby sprawdzało częściej niż co wejście gracza na serwer, zrób sobie jakiś bardzo rzadki task pod funkcję _Check.
/* Plugin generated by AMXX-Studio */
#include < amxmodx >
#include < sqlvault_ex >
#define PLUGIN "Vip for 24 hours"
#define VERSION "0.1a"
#define AUTHOR "emu"
#define MAXPLAYERS 32
#define VIP_FLAG ADMIN_LEVEL_H
enum _:g_Type
{
TIME,
USED
};
new g_iVip[ MAXPLAYERS + 1 ][ g_Type ];
new bool:g_bWasLoad[ MAXPLAYERS + 1 ];
new g_sSQLVaultName[] = "VipTest";
new SQLVault:g_hVault;
public plugin_init()
{
register_plugin( PLUGIN, VERSION, AUTHOR );
register_clcmd( "say /testuj_vipa", "cmdTestVip" );
g_hVault = sqlv_open_local( g_sSQLVaultName );
sqlv_init_ex( g_hVault );
sqlv_connect( g_hVault );
// Add your code here...
}
public plugin_end()
{
sqlv_disconnect( g_hVault );
}
public client_connect( id )
{
g_bWasLoad[ id ] = false;
g_iVip[ id ][ USED ] = 0;
g_iVip[ id ][ TIME ] = 0;
LoadData( id );
}
public client_putinserver( id )
{
_Check( id );
}
public client_disconnect( id )
{
SaveData( id );
g_bWasLoad[ id ] = false;
g_iVip[ id ][ USED ] = 0;
g_iVip[ id ][ TIME ] = 0;
}
public cmdTestVip( id )
{
_Check( id );
if( g_iVip[ id ][ TIME ] )
{
client_print( id, print_chat, "*** Testujesz aktualnie VIP'a, zostalo Ci %d sekund! ***", g_iVip[ id ][ TIME ] - get_systime() );
}
else
{
if( g_iVip[ id ][ USED ] )
{
client_print( id, print_chat, "*** Testowales juz VIP'a, teraz musisz go kupic! ***" );
}
else
{
g_iVip[ id ][ USED ] = 1;
g_iVip[ id ][ TIME ] = get_systime() + 86400;
client_print( id, print_chat, "*** Testujesz VIP'a przez %d sekund! ***", g_iVip[ id ][ TIME ] - get_systime() );
set_user_flags( id, get_user_flags( id ) | VIP_FLAG );
}
}
}
public _Check( id )
{
if( g_iVip[ id ][ TIME ] )
{
if( get_systime() > g_iVip[ id ][ TIME ] )
{
g_iVip[ id ][ TIME ] = 0;
remove_user_flags( id, VIP_FLAG );
client_print( id, print_chat, "*** Czas twojego testowego vipa sie skonczyl! ***" );
SaveData( id );
}
}
}
public SaveData( id )
{
if( is_user_connected( id ) )
{
if( g_bWasLoad[ id ] )
{
static sSteamID[ 32 ];
get_user_authid( id, sSteamID, sizeof ( sSteamID ) - 1 );
sqlv_set_num_ex( g_hVault, sSteamID, "used", g_iVip[ id ][ USED ] );
sqlv_set_num_ex( g_hVault, sSteamID, "time", g_iVip[ id ][ TIME ] );
}
else
{
LoadData( id );
}
}
}
public LoadData( id )
{
if( is_user_connected( id ) )
{
if( !g_bWasLoad[ id ] )
g_bWasLoad[ id ] = true;
static sSteamID[ 32 ];
get_user_authid( id, sSteamID, sizeof ( sSteamID ) - 1 );
g_iVip[ id ][ USED ] = sqlv_get_num_ex( g_hVault, sSteamID, "used" );
g_iVip[ id ][ TIME ] = sqlv_get_num_ex( g_hVault, sSteamID, "time" );
}
}
sqlvault.inc można pobrać
tutaj.
Użytkownik maselo edytował ten post 16.04.2012 23:05