Basit nVault Kullanımı

Konu

#1
Merhabalar bugün nVault ile steamid üzerine sayısal değerleri kaydedeceğiz. 
Öncelikle nVault hakkında pek bir şey söylemeyeceğim zaten aşağıdaki kodları geçirmeyi bilenler nVault'un ne işe yaradığını az çok bilir.



  • Adım 1 / Kaydedilecek verimiz ve kasamız:
örneğin ben g_OyuncuKillSayisi[33] değerini kaydedeceğim.
ve kaydedilecek yeri belirlemek için bir dosya yolu oluşturmak.

Kod:
new g_OyuncuKillSayisi[33];
new g_Vault;

g_OyuncuKillSayisi[33] - oyuncunun kill miktarı
g_Vault - kaydedilecek dosya



  • Adım 2 / Kaydetme ve Yükleme - (Oyuncu bağlandığında killerini ona yüklemek ve Bağlantısını kopardıktan sonra verileri korumak)
ilk başta 

Kod:
public client_connect(id)
{
VeriyiYukle(id)
}

public client_disconnected(id)
{
VeriyiKaydet(id)
}

VeriyiYukle(id) - oyunucu sunucuya girince önceki zamandan kalma kill sayısı ona geri yüklenecek.
VeriyiKaydet(id) - her kill aldığında mantıken bu arkadaşın kill sayısı artacak, oyundan çıktığı zaman bunu bir publice yönlendirip verisini kaydedeceğiz.



  • Adım 3 / Sunucu kapanınca veya çökünce kasayı kapatmak.
Kod:
public plugin_end()
{
    nvault_close(g_Vault)    
}




  • Adım 4 / Map değşince veya server başlayınca kasayı açmak
Kod:
public plugin_cfg()
{
    g_Vault = nvault_open("oyuncunun_killeri")

    if ( g_Vault == INVALID_HANDLE )
        set_fail_state( "Dosya Bulunmamakta!" )    
}

Burada kaydedilecek dosyamızın ismini veriyoruz ve herhangi bir okumama durumunda hata kaydı oluşturuyoruz. 




  • Adım 5 / Kill Sayılarını Kaydetme
Kod:
VeriyiKaydet(id)
{
    new szAuth[33];
    new szKey[64];
    new szData[256];
    
    get_user_authid(id , szAuth , charsmax(szAuth))
    formatex(szKey , 63 , "%s-ID" , szAuth)
    
    formatex(szData , 255 , "%i#" , g_OyuncuKillSayisi[id])
    nvault_pset(g_Vault , szKey , szData)
}

client_disconnected ile algıladığımız ve yönlendirdiğimiz publice steamid ve verimizi beraber kaydediyoruz.


  • Adım 6 / Verileri oyuncya yükleme
Kod:
VeriyiYukle(id)
{
    new szAuth[33];
    new szKey[40];
    
    get_user_authid(id , szAuth , charsmax(szAuth))
    formatex(szKey , 63 , "%s-ID" , szAuth)

    new szData[256];
        
    formatex(szData , 255, "%i#", g_OyuncuKillSayisi[id])
        
    nvault_get(g_Vault, szKey, szData, 255)
        
    replace_all(szData , 255, "#", " ")
    new veri[32]
    parse(szData, veri, 31)
    g_OyuncuKillSayisi[id] = str_to_num(veri)
}

Burada ise bağlanan oyuncunun steamidsini kasadan çekip kill sayısınını ona geri yüklüyoruz.




  • Anlatımdaki eklenti:
Kod:
#include <amxmodx>
#include <nvault>

new g_OyuncuKillSayisi[33]
new g_Vault

public plugin_cfg()
{
    g_Vault = nvault_open("oyuncunun_killeri")

    if ( g_Vault == INVALID_HANDLE )
        set_fail_state( "Dosya Bulunmamakta!" )    
}

public plugin_end()
{
    nvault_close(g_Vault)    
}

public client_connect(id)
{
    VeriyiYukle(id)
}

public client_disconnected(id)
{
    VeriyiKaydet(id)
}

VeriyiKaydet(id)
{
    new szAuth[33];
    new szKey[64];
    
    get_user_authid(id , szAuth , charsmax(szAuth))
    formatex(szKey , 63 , "%s-ID" , szAuth)

    new szData[256]
        
    formatex(szData , 255 , "%i#" , g_OyuncuKillSayisi[id])
        
    nvault_pset(g_Vault , szKey , szData)
}

VeriyiYukle(id)
{
    new szAuth[33];
    new szKey[40];
    
    get_user_authid(id , szAuth , charsmax(szAuth))
    formatex(szKey , 63 , "%s-ID" , szAuth)

    new szData[256];
        
    formatex(szData , 255, "%i#", g_OyuncuKillSayisi[id])
        
    nvault_get(g_Vault, szKey, szData, 255)
        
    replace_all(szData , 255, "#", " ")
    new veri[32]
    parse(szData, veri, 31)
    g_OyuncuKillSayisi[id] = str_to_num(veri)

}

Hatalar olabilir, farkederseniz belirtin.
Dm atmayın bakmıyorum. Mod satmıyorum paylaşılan modlara da destek vermiyorum.
Cevapla
#2
Teşekkürler
Cevapla
#3
Teşekkürler Ustadım Çok güldüm
|.gg/ambar discordunda takılıyorum| 網 ALFACREW36 卍 |
Cevapla
#4
VeriyiKaydet(id)
{
new szAuth[33];
new szKey[64];
new szData[256];

get_user_authid(id , szAuth , charsmax(szAuth))
formatex(szKey , 63 , "%s-ID" , szAuth)

formatex(szData , 255 , "%i#" , g_OyuncuKillSayisi[id])
nvault_pset(g_Vault , szKey , szData)
}


Pki Bunu Oyuncu Model Satin Alinca Kaydetme Kullanma Gibi Bi Şansımız Oluyormu ?
~ Ücretli Eklenti İçin 'DM' ~ Discord ~
Cevapla
#5
Teşekkürler
Cevapla
#6
Altta verdiğim eklentide seninkiyle aynı işi yapacaktır daha basitine inebilirsiniz işin;
PHP Kod:
#include <amxmodx>
#include <nvault>

new g_OyuncuKillSayisi[33]
new 
g_Vault

public plugin_cfg(){
    
g_Vault nvault_open("oyuncunun_killeri")
    
    if ( 
g_Vault == INVALID_HANDLE )
        
set_fail_state"Dosya Bulunmamakta!" )    
}

public 
plugin_end(){
    
nvault_close(g_Vault)    
}

public 
client_connect(id){
    
VeriyiYukle(id)
}

public 
client_disconnected(id){
    
/*Sunucu çökmelerinde vs durumlarda burası genellikle çalışmıyor ve veri kaybı olacaktır 
    kaydetme işini adam öldürme fonksiyonunda kaydettirmek en sağlıklısı olacaktır*/
    
VeriyiKaydet(id)
}

VeriyiKaydet(id){
    
//Tek bir veri kaydedeceğimiz için szKey adlı değişkene ihtiyacımız yok birden fazla veri kaydedecek olsaydık olabilirdi
    
new szAuth[33],szData[6];
    
get_user_authid(id szAuth charsmax(szAuth))
    
num_to_str(g_OyuncuKillSayisi[id],szData,5);
    
nvault_pset(g_Vault,szAuth ,szData); 
   
/*nvault_set de kullanabilirsiniz eğer nvault_set kullanırsanız nvault_prune ile silme işlemi yaparsanız silinir fakat
   nvault_pset kullanırsanız nvault_prune de silinmez bu veri*/
}

VeriyiYukle(id){
    new 
szAuth[33];
    
get_user_authid(id szAuth charsmax(szAuth))
    
//int bir değer çekeceğimiz için nvault_get komutunun bu hali yeterlidir
    
g_OyuncuKillSayisi[id] = nvault_get(g_Vault,szAuth);

Cevapla
#7
@ITenGriTR teşekkürler, yeni bir konu açsan daha mantıklı olmaz mi ?
Sadece bu konuda yoruma bakanlar göreceğine, herkes görsün
Cevapla
#8
Anlatımlı bir şey olabilir fakat artık ne kadar uğraşabilirim 1.6 için bir fikrim yok.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Benzer Konular

0
Yorum
21.059
Okunma
21-06-2021, 19:42
0
Yorum
22.780
Okunma
13-03-2021, 18:54
0
Yorum
22.978
Okunma
13-03-2021, 18:54
8
Yorum
31.347
Okunma
17-11-2020, 07:10
Task
Kayıt Ol
Discord Adresimize Katılın