- nVault
nVault modülünün kullandığı harici dosyalar .vault uzantılı dosyalardır. Vault dosyalarında her bir satır iki parametreden oluşur. İlk parametre anahtar parametresidir. Anahtar parametrelerini vault dosyalarında satırları bulmak için kullanırız. İkinci parametre ise anahtar parametre için belirlediğimiz verilerdir. Her iki parametrenin de kayıt türü "string" dir. Fakat ikinci parametre çağrılırken "integer", "float" veya "string" şeklinde de çağrılabilir. Verilerin kaydedildiği .vault dosyaları "binary" formatındadır. Yani normal yollarla düzenlenemez/okunamaz. Ancak Vault file editor programlarıyla okuyup düzenleyebilirsiniz.
nVault Fonksiyonları:
nvault_open - Bir vault dosyasını açmakta kullanılır.
nvault_close - Açılan bir vault dosyasını kapatmakta kullanılır.
nvault_lookup - Bir vault dosyasında belirtilen satırı okuyup tam bilgi toplar.
nvault_get - Bir vault dosyasının belirtilen satırdaki ikinci parametreyi okumak için kullanılır.
nvault_set - Bir vault dosyasına satır yazmak için kullanılır. Geçerli zamanı damgalar.
nvault_pset - Bir vault dosyasına satır yazmak için kullanılır. Zaman damgası kullanılmaz.
nvault_touch - Bir vault satırının zaman damgasını yeniler.
nvault_prune - Belirlenen zaman içerisindeki tüm vault satırlarını siler.
nvault_remove - Belirtilen anahtar parametrenin satırını siler.
nvault_open Fonksiyonu:
Herhangi bir işlem yapmadan önce, işlem yapılacak vault dosyası açılmalıdır. Dosya açma işlemi de bu fonksiyon ile kullanılır. Bu fonksiyon yalnızca 1 parametre içerir. Bu parametre de açılacak dosyanın ismidir. Eğer dosya açılması sırasında herhangi bir hata meydana gelirse bu fonksiyon INVALID_HANDLE (-1) 'a dönecektir. Bu yüzden bu fonksiyon ile dosyanın düzgün açılıp açılmadığı kontrolünü yapmamız gerekir. Ayrıca bu fonksiyon plugin_cfg() publicinde kullanılmalıdır.
nvault_open( const szVaultName[] )
szVaultName = Buraya vault dosyanızın adı girilecektir. Örneğin banka.vault adlı bir dosyanız var ise buraya "banka" yazıcaksınız.
Kod:
new iVault = nvault_open( "banka" );
if ( iVault == INVALID_HANDLE )
set_fail_state( "nVault Dosyasi Acilamadi !" );
nvault_close Fonksiyonu:
Bu fonksiyon açılmış olan vault dosyasını kapatmak için kullanılır. Kapatılan dosya tekrar açılana kadar üzerinde herhangi bir işlem yapılamaz. Bu fonksiyon plugin_end() publicine yazılır. Böylece server çökmeden veya map değişmeden hemen önce vault dosyaları kapatılır ve veri kaybı önlenmiş olur. Eğer bu fonksiyon ile dosyalarınızı kapatmazsanız map değiştiğinde veya server çöktüğünde verileri kaybedersiniz. Bu fonksiyon bir nevi kayıt işlemidir.
nvault_close( vault )
vault = Kapatmak istediğimiz vault dosyasını açarken kullandığımız global değişkendir.
nvault_lookup Fonksiyonu:
Bu fonksiyon ile belirtilen anahtar parametreyi kullanarak, anahtar parametreye ait ikinci parametre olan veriyi ve zaman damgasını öğrenmek için kullanırız. Öğrendiğimiz veri string türü değişkenlerde depolanabilir. Bu fonksiyon true ve false olmak üzere iki farklı şekile dönüşebilir. Eğer anahtar parametre vault dosyasında bulunamazsa false olur. Eğer dosyada aranan parametre bulunursa true olur.
nvault_lookup( vault , const szKey[] , szValue[] , iMaxLength , iTimestamp )
vault = Vault dosyamızı açarken atadığımız değişken. (integer)
szKey = Verisini öğrenmek istediğimiz anahtar parametre. (string)
szValue = Öğrenilen verinin depolanacağı değişken. (string)
iMaxLength = szValue değişkeninin maksimum uzunluğu. (integer)
iTimestamp = Öğrenilen zaman damgasının depolanacağı değişken. (integer)
Kod:
new szName[32];
new szData[32];
new iTimestamp;
new iVault;
new iDataExists;
get_user_name( id , szName , charsmax( szName ) );
iVault = nvault_open( "banka" );
iDataExists = nvault_lookup( iVault , szName , szData , charsmax( szData ) , iTimestamp );
if ( iDataExists )
{
client_print( id , print_chat , "Ikincil Parametre - Veri =%s Zaman Damgasi = %d" , szData , iTimestamp );
}
else
{
client_print( id , print_chat , "%s Anahtar Parametresine Ait Veri Bulunamadi." , szName );
}
nvault_get Fonksiyonu:
Bu fonksiyon nvault_lookup fonksiyonuna benzer fakat bu fonksiyon daha esnektir. Bu fonksiyon belirtilen anahtar parametrenin verisini 3 farklı şekilde öğrenebilir. Integer, float ve string. Böylece herhangi bir tür dönüşümü yapmadan kolaylıkla istenen türde veri elde edilebilir. Bu fonksiyon zaman damgasını öğrenmekte kullanılamaz. Eğer zaman damgasını öğrenmek istiyorsanız nvault_lookup fonksiyonunu kullanmak zorundasınız.
nvault_get( vault , const szKey[] , ... )
vault = Vault dosyasını açarken kullandığımız değişken.
szKey = Verisini öğrenmek istediğiniz anahtar parametre.
Farklı türlerde veri alma;
Integer:
iVeri = nvault_get( vault , szKey[] );
Float:
nvault_get( vault , szKey[] , float );
String:
nvault_get( vault , szKey[] , szValue[] , iMaxLen );
Kod:
new iVault;
new szName[35];
new szData[30];
iVault = nvault_open( "banka" );
get_user_name( id , szName , charsmax( szName ) );
//Integer tipinde veri alma;
new iSayi = nvault_get( iVault , szName );
//Float tipinde veri alma;
new Float: fOndalik;
nvault_get( iVault , szName , fOndalik );
//String tipinde veri alma;
new szData[10];
nvault_get( iVault , szName , szData , charsmax( szData ) );
[color=#000000][color=#000000][color=#000000]
Kod:
//Anahtar parametre olan kullanıcı ismine özel rutbe koyalım.
new iVault;
new szName[35];
new szData[30];
iVault = nvault_open( "ozelrutbe" );
get_user_name( id , szName , charsmax( szName ) );
nvault_set( iVault , szName , "Profesyonel Oyuncu" );
[color=#000000][color=#000000][color=#000000]
Kod:
new iVault;
new szName[35];
iVault = nvault_open( "banka" );
get_user_name( id , szName , charsmax( szName ) );
//Şimdiki zamanla veriye dokun;
nvault_touch( iVault , szName );
//1 saat önceki zamanla veriye dokun. (60 * 60) = 3600
nvault_touch( iVault , szName , get_systime() - 3600 );
[color=#000000][color=#000000][color=#000000]
Kod:
new iVault;
iVault = nvault_open( "banka" );
//En erken olası zaman = 0 dan, şu ana kadar olan tüm verileri sil :
nvault_prune( iVault , 0 , get_systime() );
//15 gün veya daha eski verileri sil :
//get_systime() = şuanki zaman.
//1 gün = 86400 saniye = 60 sn * 60 dk * 24 saat
nvault_prune( iVault , 0 , get_systime() - ( 15 * 86400 ) );
[color=#000000][color=#000000][color=#000000]
Kod:
#include <amxmodx>
#include <nvault>
#include <cstrike>
#include <fun>
new gVault;
new gszName[33][35];
new gExpiration;
public plugin_init()
{
register_plugin( "CS Money Bankasi" , "1.0" , "akcaliberkk" );
register_clcmd( "say /savemoney" , "cmdSaveMoney" );
register_clcmd( "say /getmoney" , "cmdGetMoney" );
gExpiration = register_cvar( "zaman_asimi" , "10" );
}
public plugin_cfg()
{
// Vault plugin_cfg() publicinde açılır.
gVault = nvault_open( "banka" );
if ( gVault == INVALID_HANDLE )
set_fail_state( "Vault Dosyasi Acilamadi !" );
//Cvarda belirtilen günü aşmış verileri sil.
nvault_prune( gVault , 0 , get_systime() - ( 86400 * get_pcvar_num( gExpiration ) ) );
}
public plugin_end()
{
//Server Çöktünde veya map değiştiğinde dosyayı kapat.
nvault_close( gVault );
}
public client_authorized(id)
{
get_user_name( id , gszName[id] , charsmax( gszName[] ) );
}
public cmdSaveMoney(id)
{
new szMoney[7];
formatex( szMoney , charsmax( szMoney ) , "%d" , cs_get_user_money(id) );
cs_set_user_money(id,0)
nvault_set( gVault , gszName[id] , szMoney );
client_print( id , print_chat , "Tum Paran Nickine Kaydedildi !" );
}
public cmdGetMoney(id)
{
new iMoney = nvault_get( gVault , gszName[id] );
//Parayi cektikten sonra bankayi sifirlamak için veriyi silmelisiniz.
if ( iMoney )
{
cs_set_user_money( id , iMoney , 1 );
nvault_remove( gVault , gszName[id] );
client_print( id , print_chat , "Paran Nickinin Hesabindan Yuklendi: $%d" , iMoney );
}
else
{
client_print( id , print_chat , "Bu Nicke Ait Hic Para Verisi Bulunamadi !" );
}
}
Bu konu Soldier den alıntıdır +Rep vermeyi unutmayın