Here you have my login script. Before I start scripting at my other pc, it was working fine, so i think this problem isn't cause by the FS but by Dini or Dudb
Код:
#define COLOR_RED 0xFF0000AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_GREEN 0x00FF00AA
new logged[MAX_PLAYERS];
new adminlevel[MAX_PLAYERS];
new money[MAX_PLAYERS];
new playername[MAX_PLAYER_NAME];
main()
{
print("===============================");
print("AccountTutorial by Sandra18[NL]");
print("===============================");
}
public OnGameModeInit()
{
SetGameModeText("Tutorial Accounts by Sandra18[NL]");
AddPlayerClass(93, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1968.3783, 1345.1572, 17.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
logged[playerid] = 0;
return 1;
}
public OnPlayerSpawn(playerid)
{
if(logged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_RED, "Je bent nog niet ingelogd! Gebruik /login [wachtwoord]!");
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256],tmp[256], tmp2[256];
new idx;
new string[256];
cmd = strtok(cmdtext, idx);
GetPlayerName(playerid, playername, sizeof(playername));
if(strcmp(cmd, "/register", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /register (password)");
}
else
{
if (!dini_Exists(udb_encode(playername)))
{
dini_Create(udb_encode(playername));
dini_IntSet(udb_encode(playername), "password", udb_hash(tmp));
dini_IntSet(udb_encode(playername), "adminlevel", 0);
dini_IntSet(udb_encode(playername), "money", 0);
format(string, sizeof(string), "Account %s aangemaakt! Je kunt nu inloggen met het wachtwoord: %s.", playername, tmp);
SendClientMessage(playerid, COLOR_YELLOW, string);
}
else
{
format(string, sizeof(string), "%s already registered.", playername,tmp);
SendClientMessage(playerid, COLOR_RED, string);
}
}
return 1;
}
if(strcmp(cmd, "/login", true) == 0)
{
if(logged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_RED, "Je bent al ingelogd");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_YELLOW, "Gebruik: /login (wachtwoord)");
}
else
{
if (dini_Exists(udb_encode(playername)))
{
tmp2 = dini_Get(udb_encode(playername), "password");
if (udb_hash(tmp) != strval(tmp2))
{
SendClientMessage(playerid, COLOR_RED, "Verkeerd wachtwoord!.");
}
else
{
logged[playerid] = 1;
money[playerid] = dini_Int(udb_encode(playername), "money");
adminlevel[playerid] = dini_Int(udb_encode(playername), "adminlevel");
format(string, sizeof(string), "%s, je bent nu ingelogd. Je hebt adminlevel %d en je hebt %d dollar", playername, adminlevel[playerid], money[playerid]);
SendClientMessage(playerid, COLOR_GREEN, string);
GivePlayerMoney(playerid, money[playerid]);
TogglePlayerControllable(playerid, 1);
}
}
else
{
format(string, sizeof(string), "Het account %s, bestaat nog niet. Typ /register [wachtwoord] om een account te maken.", playername);
SendClientMessage(playerid, COLOR_RED, string);
}
}
return 1;
}
if(strcmp(cmd, "/maakmijadmin", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
if(logged[playerid] == 1)
{
if(adminlevel[playerid] != 3)
{
adminlevel[playerid] = 3;
SendClientMessage(playerid, COLOR_GREEN, "Je bent nu hoofdadmin! Gefeliciteerd!");
}
else
{
SendClientMessage(playerid, COLOR_RED, "Je bent al hoofdadmin!");
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Je moet je eerst inloggen /login [wachtwoord]");
}
}
else
{
SendClientMessage(playerid, COLOR_RED, "Je moet je eerst met rcon inloggen! (/rcon login [rcon-pass])");
}
return 1;
}
return 0;
}
public OnPlayerDisconnect(playerid, reason)
{
money[playerid] = GetPlayerMoney(playerid);
dini_IntSet(udb_encode(playername), "money", money[playerid]);
dini_IntSet(udb_encode(playername), "adminlevel", adminlevel[playerid]);
logged[playerid] = 0;
return 1;
}