Kendimi geliştirmek adına mysql kayıt sistemi olan bir sunucu geliştiriyorum.
Şifreyi bir kere yanlış girince otomatik sunucudan atıyor fakat eğer şifreyi yanlış girersem bir sonraki girişimde bana para ve skor gibi verileri vermiyor, sıfırlıyor.
Kodlar aşağıdaki gibi, bilen varsa yardımcı olabilir mi:
forward OyuncuKontrol(playerid);
public OyuncuKontrol(playerid)
{
new rows;
cache_get_row_count(rows);
if(!rows) return oyundanat(playerid, "Şifreniz yanlış");
else
{
new para, skor;
cache_get_value_name_int(0, "Skor", skor);
cache_get_value_name_int(0, "Para", para);
cache_get_value_name_int(0, "AdminLevel", pData[playerid][AdminSeviye]);
SetPlayerScore(playerid, skor);
GivePlayerMoney(playerid, para);
OyuncuSpawnla(playerid);
SendClientMessage(playerid, -1, "[!] Başarıyla giriş yaptınız!");
}
return 1;
}forward OyuncuYukle(playerid);
public OyuncuYukle(playerid)
{
new rows;
cache_get_row_count(rows);
if(!rows)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Kayıt", "Sunucumuzda hesabınız bulunamadı.\nKayıt olmak için şifrenizi girin:", "Kaydol", "Çıkış");
}
else
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Giriş", "Sunucumuzda hesabınız bulundu.\nGiriş yapmak için şifrenizi girin:", "Giriş", "Çıkış");
}
return 1;
}public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)
{
if(response)
{
if(strlen(inputtext) < 5) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Kayıt", "HATA: Şifreniz 5 haneden kısa olamaz!\n\nKayıt olmak için şifrenizi girin:", "Kaydol", "Çıkış");
new query[128], isim[24];
GetPlayerName(playerid, isim, 24);
format(query, sizeof(query), "INSERT INTO `hesaplar` (`Isim`, `Sifre`, `Skor`, `Para`, `AdminLevel`) VALUES ('%s', '%s', 0, 0, 0)", isim, inputtext);
mysql_query(mysqlC, query);
SendClientMessage(playerid, -1, "Başarıyla kaydoldunuz!");
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_PASSWORD, "Giriş", "Giriş yapmak için şifrenizi girin:", "Giriş", "Çıkış");
}
}
if(dialogid == 2)
{
if(response)
{
new query[128], isim[24];
GetPlayerName(playerid, isim, 24);
format(query, sizeof(query), "SELECT * FROM `hesaplar` WHERE Isim = '%s' AND Sifre = '%s'", isim, inputtext);
mysql_tquery(mysqlC, query, "OyuncuKontrol", "d", playerid);
}
}
return 1;
}
Neden kaybolduğunu anladım fakat bir çözüm bulamadım.
Şifreyi yanlış girince direkt olarak kişiyi sunucudan kickletiyorum, mantıkken veriler de yüklenmediği ve sunucudan kişiyi kicklettiğim için veriler 0'a iniyor. Bunu nasıl çözebilirim?
Şifre ekranında bir kere yanlış girip atılma olayını spawn butonunun yarattığı buglar yüzünden yaptım, bunu önlemenin farklı bir yolu varsa söylerseniz sevinirim.
sorun cozuldu k/a