Eklenti onaylandı fakat biraz güncellenmesi gerekiyor.
Eklentide kütüphane olarak reapiyi algılatmışsınız fakat MAX_CLIENTS dışında hiçbir işleve yaramıyor. MAX_CLIENTS -> MAX_PLAYERS
Eklentide gereksiz formatex kullanımı var. Evet, önceden formatex kullanmak zorundaydınız fakat güncellemelerle gelen "fmt" komutuna bir göz atmalısınız. Gereksiz değerlerden kaçındığınızı göreceksiniz.
Yukarıda da belirttiğim gibi gereksiz değerler var fakat sadece formatex için değil. Bir örneğini atıyorum. Birkaç yerde daha var. Bunu rahatça bulabilirsin.
Kod: Tümünü seç
public iOtoLogin(id){
//new name[20], pass[20];
//get_user_info(id, "_hn", name, charsmax(name));
//get_user_info(id, "_hs", pass, charsmax(pass));
//iName[id] = name;
//iPass[id] = pass;
get_user_info(id, "_hn", iName[id], charsmax(iName[]));
get_user_info(id, "_hs", iPass[id], charsmax(iPass[]));
Login(id);
}
End Of String olarak bilinen bu komut değerin boş olup olmadığını kontrol ediyor. Contain yerine bunu kullanmalısın.
Kod: Tümünü seç
//else if(containi(arg, " ") != -1){
else if(arg[0] == EOS) {
Aynı şekilde;
[code]
iName[id] = ""
iName[id] = EOS;
read_file yerine fopen kullanman hoşuma gitti fakat tam harika diyemiyorum. Nedeni formatex ve "a+". Formatex hakkında yukarıda bahsettim bu yüzden a+ ile devam ediyorum. "a+" yazdıysanız bu dosya yoksa dosyayı oluşturur, varsa dosya üzerinden devam eder. Fakat siz dosyanın olmaması durumunda log koymuşsunuz ve biraz saçma olmuş. Bu şekilde olması daha iyi olurdu.
Örnek olsun diye hızlı hızlı yaptım hatalar olabilir.
Kod: Tümünü seç
public Register(id){
//new form[50], accnum;
//formatex(form, charsmax(form), "%s-%s", iName[id], iPass[id]);
//accnum = nvault_get(nInt[iVault], form);
new accnum = nvault_get(nInt[iVault], fmt("%s-%s", iName[id], iPass[id]));
if(!accnum){
//new form1[50];
//formatex(form1, charsmax(form1), "LastNum");
//accnum = nvault_get(nInt[iVault], form1);
accnum = nvault_get(nInt[iVault], "LastNum");
if(!accnum){
accnum = 1;
}
else {
accnum++;
}
//Daha fazla bilgi için
//https://forums.alliedmods.net/showthread.php?t=46218
//------------------------------------------------------
//new form2[50];
//new file, write[150], len;
//if(!(file = fopen(iAccountsSave, "a+"))){
//log_amx("Hesap kayit bilgilerini kayit edecek .ini dosyasi bulunamadi.");
//return PLUGIN_HANDLED;
//}
//formatex(form2, charsmax(form2), "%i", accnum);
new iFile = fopen(iAccountsSave, "a+");
if(iFile) {
new szStr[10];
num_to_str(accnum, szStr, charsmax(szStr));
//nvault_set(nInt[iVault], form, form2);
//nvault_set(nInt[iVault], iName[id], form2);
//nvault_set(nInt[iVault], iPass[id], form2);
//nvault_set(nInt[iVault], form2, form2);
nvault_set(nInt[iVault], fmt("%s-%s", iName[id], iPass[id]), szStr);
nvault_set(nInt[iVault], iName[id], szStr);
nvault_set(nInt[iVault], iPass[id], szStr);
nvault_set(nInt[iVault], szStr, szStr);
int[id][iAccountsNum] = accnum;
client_cmd(id, "setinfo _hn %s", iName[id]);
client_cmd(id, "setinfo _hs %s", iPass[id]);
client_print_color(id, id, "%s ^3Basarili bir sekilde kayit oldunuz.",iChatTag);
client_print_color(id, id, "%s ^1[ ^3Kullanici Adi:^4 %s ^1|| ^3Sifre: ^4%s ^1 || ^3Hesap Numarasi:^4 %d ^1]",iChatTag, iName[id], iPass[id], accnum);
client_print_color(0, 0, "%s^1 %n ^3adli oyuncu sisteme kayit oldu. ^4Toplam Kayitli Kullanici Sayisi:^1 %i",iChatTag, id, accnum);
//len += formatex(write[len], charsmax(write)-len, "Oyuncu: %n - Kullanici Adi: %s - Sifre: %s - Hesap Numarasi: %i -^n", id, iName[id], iPass[id], accnum);
//fputs(file, write);
fprintf(iFile, fmt("Oyuncu: %n - Kullanici Adi: %s - Sifre: %s - Hesap Numarasi: %i -^n", id, iName[id], iPass[id], accnum));
fclose(iFile);
nvault_set(nInt[iVault], "LastNum", szStr);
Login(id);
}
}
return PLUGIN_HANDLED;
}