Naslov problema*: "Server closed the connection" nakon Log/Reg sistema *
Opis problema*: Pokrenuo sam novu skriptu od pocetka pre par dana i dosao do log/reg sistema. Nista preterano, nije mi prvi put da ga radim. Medjutim, kada se npr. registrujem, y_ini sacuva moj fajl, kao i podatke, i nakon toga mi konekcija crasha i dobijem poruku "Server closed the connection" (server i dalje radi, samo me je kikovalo). Imam osecaj da sam negde nesto maleno propustio i da me zbog toga zajebava. Ispod cu poslati sve vezano za moj log/reg sistem. Koristim y_ini i open.mp server. 🙂
Pokušaj rešavanja*: Pokusao sam dosta provera da postavim i brisem neke stvari ali problem je idalje tu.
Deo programskog koda*: enum {
d_reg,
d_log
};
enum pInfo {
pLozinka,
pPare,
pSkin
};
new PlayerInfo;
#define PLAYERPATH "/MojServer/Korisnici/%s.ini"
stock UserPath(playerid) {
new str, name;
GetPlayerName(playerid,name,sizeof(name));
format(str,sizeof(str),PLAYERPATH,name);
return str;
}
forward SacuvajAkaunt(playerid);
public SacuvajAkaunt(playerid) {
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File, "data");
INI_WriteInt(File, "Pare", PlayerInfo);
INI_WriteInt(File, "Skin", PlayerInfo);
INI_Close(File);
return true;
}
forward LoadUser_data(playerid, name[], value[]);
public LoadUser_data(playerid, name[], value[]) {
INI_Int("Lozinka", PlayerInfo);
INI_Int("Pare", PlayerInfo);
INI_Int("Skin", PlayerInfo);
return 1;
}
stock udb_hash(const buf[]) {
new duzina=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for(n=0;n s1 = (s1 + buf) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s1 << 16) + s1;
}
public OnPlayerConnect(playerid) {
//========================= [ Proverava Da Li Account Postoji ]
if(fexist(UserPath(playerid))) {
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new str;
format(str, sizeof(str), "{FFFFFF}Vas nalog je registrovan.\nUkucajte sifru.");
ShowPlayerDialog(playerid, d_log, DIALOG_STYLE_PASSWORD, "{FFFFFF}Login", str, "{FFFFFF}Login", "{FF0000}Otkazi");
} else {
new str;
format(str, sizeof(str), "{FFFFFF}Vas nalog {FF0000}nije {FFFFFF}registrovan.\nRegistrujte se.");
ShowPlayerDialog(playerid, d_reg, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registracija", str, "{FFFFFF}Registruj se", "{FF0000}Otkazi");
}
UlogovaniIgrac = 0;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if(dialogid == d_reg) {
if(!response) return Kick(playerid);
if(response) {
if(!strlen(inputtext) || strlen(inputtext) < 5 || strlen(inputtext) > 20) {
new str;
format(str, sizeof(str), "{FFFFFF}Vas nalog {FF0000}nije {FFFFFF}registrovan.\nRegistrujte se.");
ShowPlayerDialog(playerid, d_reg, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registracija", str, "{FFFFFF}Registruj se", "{FF0000}Otkazi");
SendClientMessage(playerid, ERROR, "[!] Lozinka mora imati izmedju 5 i 20 znakova.");
} else {
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File, "data");
INI_WriteInt(File,"Lozinka",udb_hash(inputtext));
INI_Close(File);
PlayerInfo = 26; SetPlayerSkin(playerid, PlayerInfo);
PlayerInfo = 10000; GivePlayerMoney(playerid, 10000);
SacuvajAkaunt(playerid);
SetSpawnInfo(playerid, NO_TEAM, PlayerInfo, 1213.6964, -1326.7321, 13.5676, 88.5987);
SpawnPlayer(playerid);
SendClientMessage(playerid, 0xFFFFFFAA, "Uspesno si se registrovao na server.");
}
}
}
if(dialogid == d_log) {
if(!response) return Kick(playerid);
if(response) {
if(udb_hash(inputtext) == PlayerInfo) {
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
SetSpawnInfo(playerid, NO_TEAM,26, 1213.6964,-1326.7321,13.5676,88.5987);
SpawnPlayer(playerid);
GivePlayerMoney(playerid, PlayerInfo);
SetPlayerSkin(playerid, PlayerInfo);
SendClientMessage(playerid, 0xFFFFFFAA, "Uspesno si se logovao na server.");
} else {
SendClientMessage(playerid, ERROR, "[!] Vasa lozinka nije tacna.");
new str;
format(str, sizeof(str), "{FFFFFF}Vas nalog je registrovan.\nUkucajte sifru.");
ShowPlayerDialog(playerid, d_log, DIALOG_STYLE_PASSWORD, "{FFFFFF}Login", str, "{FFFFFF}Login", "{FF0000}Otkazi");
}
}
}
return 1;
}
Debug informacije: //
Fotografija problema u igri: https://imgur.com/a/xUnTcVpKorišćene biblioteke (includes): y_ini
Dodatne informacije: //