Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
nVault Modülü Temel Bilgiler [Orta Seviye]
#1
nVault

nVault, harici bir dosyaya veri kaydetmenin ve dosyadan veri almanın en kolay yoludur. nVault harici dosyaları map değiştiğinde veya server çöktüğünde herhangi bir veri kaybına uğramazlar. Bu yüzden kişisel verileri depolamanın en iyi yolu nVault modülünü kullanmaktır. Örneğin bu modül ile üyelik, banka vb. sistemler yazabilirsiniz.
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ı:

Code:
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.

Code:
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.

PHP Code:
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.

Code:
nvault_close( vault )

vault = Kapatmak istediğimiz vault dosyasını açarken kullandığımız global değişkendir.

PHP Code:
new iVault nvault_open"banka" );

nvault_closeiVault ); 


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.

Code:
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)

PHP Code:
new szName[32];
new 
szData[32];
new 
iTimestamp;
new 
iVault;
new 
iDataExists;

get_user_nameid szName charsmaxszName ) );

iVault nvault_open"banka" );
iDataExists nvault_lookupiVault szName szData charsmaxszData ) , iTimestamp );

if ( 
iDataExists )
{
    
client_printid print_chat "Ikincil Parametre - Veri =%s Zaman Damgasi = %d" szData iTimestamp );
}
else
{
    
client_printid 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.

Code:
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 );

PHP Code:
new iVault;
new 
szName[35];
new 
szData[30];

iVault nvault_open"banka" );
get_user_nameid szName charsmaxszName ) );

//Integer tipinde veri alma;
new iSayi nvault_getiVault szName );

//Float tipinde veri alma;
new FloatfOndalik;
nvault_getiVault szName fOndalik );

//String tipinde veri alma;
new szData[10];
nvault_getiVault szName szData charsmaxszData ) ); 


nvault_set Fonksiyonu:

Bu fonksiyon bir vault dosyasına satır kaydetmek için kullanılır. Aynı zamanda zaman damgası da kullanır.

Code:
nvault_set( vault , const key[] , const value[] )
vault = Vault dosyasını açarken kullandığımız değişken.
key = Oluşturulacak satırın anahtar parametresi.
value = Oluşturulacak satırın ikincil parametresi.

PHP Code:
//Anahtar parametre olan kullanıcı ismine özel rutbe koyalım.
new iVault;
new 
szName[35];
new 
szData[30];

iVault nvault_open"ozelrutbe" );
get_user_nameid szName charsmaxszName ) );

nvault_setiVault szName "Profesyonel Oyuncu" ); 

nvault_pset Fonksiyonu:

Bu fonksiyon nvault_set fonksiyonuyla hemen hemen aynıdır. Tek fark bu fonksiyon zaman damgası bırakmaz. Örneğin bir verinin birazdan görmüş olacağınız nvault_prune fonksiyonu tarafından silinmesini istemiyorsak zaman damgası olmadan oluşturmamız gerekir. Bu da bu fonksiyonla sağlanır.

nvault_touch Fonksiyonu:

Bu fonksiyon bir veriye dokunarak zaman damgasını günceller.

Code:
nvault_touch( vault , const szKey[] , [ iTimestamp = -1 ] )

vault = Vault dosyasını açarken kullandığımız değişken.
szKey = Zaman damgasını güncelleyeceğimiz verinin anahtar parametresi.
iTimeStamp - (Istege Bagli) Eğer boş bırakılırsa zamanı, geçerli zaman olarak günceller. Eğer doldurulursa yazılan zaman olarak değiştirir.

PHP Code:
new iVault;
new 
szName[35];

iVault nvault_open"banka" );

get_user_nameid szName charsmaxszName ) );

//Şimdiki zamanla veriye dokun;
nvault_touchiVault szName );

//1 saat önceki zamanla veriye dokun. (60 * 60) = 3600
nvault_touchiVault szName get_systime() - 3600 ); 

nvault_prune Fonksiyonu:

Bu fonksiyon belirlenen zaman aralığındaki tüm zaman damgalı verileri siler.

Code:
nvault_prune( vault , iStart , iEnd )

vault = Vault dosyasını açarken kullandığımız değişken.
iStart = Verilerin silinmeye başlanacağı zaman damgası.
iEnd = Verilerin silineceği son zaman damgası.


PHP Code:
new iVault;

iVault nvault_open"banka" );

//En erken olası zaman = 0 dan, şu ana kadar olan tüm verileri sil : 
nvault_pruneiVault 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_pruneiVault get_systime() - ( 15 86400 ) ); 

Zaman Damgaları:

nVault modülünde zaman damgaları, unix-time formatını kullanır. Bu formatta sadece saniye vardır ve zamanın başlangıcı yani 0. zaman 1 Ocak gecesi 1970 tarihidir. Basitçe unix-time formatını dakika, saat, gün şeklinde çevirebilirsiniz.
Örnek: 1 gün = 60 * 60 * 24 = 86400
Bu durumda 15 gün = 15 * 86400 dür.



Örnek Plugin:

Bu tam anlamlı bir plugin değil tabiki. Fakat nerde ne nasıl kullanılır anlamanız açısından örnek gösteriyorum.

PHP Code:
#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_prunegVault get_systime() - ( 86400 get_pcvar_numgExpiration ) ) );
}

public 
plugin_end()
{
    
//Server Çöktünde veya map değiştiğinde dosyayı kapat.
    
nvault_closegVault );
}

public 
client_authorized(id)
{
    
    
get_user_nameid gszName[id] , charsmaxgszName[] ) );
}

public 
cmdSaveMoney(id)
{
    
    new 
szMoney[7];
    
    
formatexszMoney charsmaxszMoney ) , "%d" cs_get_user_money(id) );
    
    
cs_set_user_money(id,0)
    
    
nvault_setgVault gszName[id] , szMoney );
    
    
client_printid print_chat "Tum Paran Nickine Kaydedildi !" );
}

public 
cmdGetMoney(id)
{
    
    
    new 
iMoney nvault_getgVault gszName[id] );
    
    
//Parayi cektikten sonra bankayi sifirlamak için veriyi silmelisiniz.
    
if ( iMoney )
    {
        
cs_set_user_moneyid iMoney );
        
nvault_removegVault gszName[id] );
        
        
client_printid print_chat "Paran Nickinin Hesabindan Yuklendi: $%d" iMoney );
    }
    else
    {
        
client_printid print_chat "Bu Nicke Ait Hic Para Verisi Bulunamadi !" );
    }



Not:Bu modülle ilgili anlamadığınız, öğrenmek istediğiniz her şeyi sorabilirsiniz. Elimden geldiğince açıklamaya çalışırım.


CS:GO ve CS 1.6 için ücretli eklenti yapılır.
Plugin yazmak isteyenlere yardımcı olabilirim.
Skype adresimden ulaşabilirsiniz:
destek_596
Steam: http://steamcommunity.com/id/ca-nemesis/

Reply
#2
Başarılı Anlatım Teşekkürler.
Reply
#3
ben tesekkur ederim


CS:GO ve CS 1.6 için ücretli eklenti yapılır.
Plugin yazmak isteyenlere yardımcı olabilirim.
Skype adresimden ulaşabilirsiniz:
destek_596
Steam: http://steamcommunity.com/id/ca-nemesis/

Reply
#4
teşekkürler çok işime yaradı moderatör olmanız hepimiz için en iyisi
Reply
#5
Eywallah Kardeşim Teşekkür Ettim İşe Yarar Konu.

[url=https://img107.imageshack.us/img107/2662/isliklalfj7.gif][Image: isliklalfj7.gif]




Moderatör Olduğum Bölümler:

Wall Hack Hile Bölümü
[MAP]Harita Bölümü
Reply
#6
Yeni Serverimiz Açılmıştır 95.173.174.56 HERKEZİ BEKLERİZ

MSN ADRESİİM : [email protected]

ADMİNİK 1 AYLIK:10 TL
2 AYLIK:20 TL
3 AYLIK:25
SINIRSIZ:45
Reply
#7
Konuya Reklam İçerikli Mesaj ADMİNE BİLDİRİLDİ !

[url=https://img107.imageshack.us/img107/2662/isliklalfj7.gif][Image: isliklalfj7.gif]




Moderatör Olduğum Bölümler:

Wall Hack Hile Bölümü
[MAP]Harita Bölümü
Reply
#8
Bu Nvault ' u Banka Dosyasında Kendi İsmimimizin Üstüne Kaydediyor.
Eğer biz bunu ortak bir satır üstüne kaydetmek istersek nasıl yapıcaz ?
yani sadece kaydetme kimsenin üstüne değil herkes aynı satırdaki veriyi kullanacak
Reply
#9
Mesela Ben Bir sayı kaydettim Bu sayıda 1 olsun
Daha sonra server çöktü bu sayı 1 den farklı bir sayı oldu
ben tekrar dosyadan bu sayıyı çağırdığımdada başkası çağırdığındada gelsin.
Yani ismimizin üstüne kayıt olmasın

- - - - - - - - - -

Umarım anlatabilmişimdir
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Basit Bir Respawn Plugini - Tüm Ayrıntılarıyla [Başlangıç Seviyesi] [Temel Konular] akcaliberkk 15 21,115 09-09-21, 21:40
Last Post: Dream592
  Cstrike Modülü Fonksiyonları akcaliberkk 7 5,850 29-05-15, 01:37
Last Post: ResuLBaskan

Foruma Atla:


Users browsing this thread: 1 Guest(s)