Geplaatst: 10 augustus 201014 jaren comment_1703559 ik heb een admin system gemaakt , als ik inlog werkt het goed maar als er daarna nog iemand in de server komt ben ik ineens uitgelogd en moet ik opnieuw inloggen. weet iemand waardoor dit komt //======================================================== public OnPlayerConnect(playerid) { for (new i = 0; i < MAX_PLAYERS; i++) { logged[i] = 0; if(logged[i] == 1) { TextDrawShowForPlayer(i, PlayerStats[i]); } par12[i] = true; par22[i] = true; par32[i] = true; if(logged[i] == 0) { SendClientMessage(i, COLOR_RED, "Typ /login [password] to login"); SendClientMessage(i, COLOR_RED, "Typ /register [password] to make an Account"); GetPlayerName(i, playername, sizeof(playername)); } } return 1; } //======================================================== public OnPlayerSpawn(playerid) { if(logged[playerid] == 0) { for(new i=0;i<MAX_PLAYERS;i++) { SendClientMessage(i, COLOR_RED, "Typ /login [password] to login"); SendClientMessage(i, COLOR_RED, "Typ /register [password] to make an Account"); } } return 1; } //======================================================== public OnPlayerDeath(playerid,killerid,reason) { if(logged[playerid] == 1) { kills[killerid]++; deaths[playerid]++; SetPlayerScore(killerid, GetPlayerScore(killerid) + 10); SetPlayerScore(playerid, GetPlayerScore(playerid) - 10); GivePlayerMoney(killerid, 500); TextDrawShowForPlayer(killerid, Text:KILLP); PlayerPlaySound(killerid, 1057, 0.0, 0.0, 10.0); SetTimerEx("stuntoff", 3000, false, "i", killerid); TextDrawShowForPlayer(playerid, Text:DEATHP); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 10.0); SetTimerEx("stuntoff", 3000, false, "i", playerid); } return 1; } //======================================================== public OnPlayerCommandText(playerid, cmdtext[]) { for (new i = 0; i < MAX_PLAYERS; i++) { new cmd[256],tmp[256], tmp2[256]; new idx; new string[256]; cmd = strtok(cmdtext, idx); GetPlayerName(i, playername, sizeof(playername)); if(strcmp(cmd, "/register", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(i, 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), "money", 1000); dini_IntSet(udb_encode(playername), "score", 0); dini_IntSet(udb_encode(playername), "kills", 0); dini_IntSet(udb_encode(playername), "deaths", 0); dini_IntSet(udb_encode(playername), "stunts", 0); format(string, sizeof(string), "Account %s has been created! password : %s.", playername, tmp); SendClientMessage(i, COLOR_YELLOW, string); } else { format(string, sizeof(string), "%s already registered!", playername,tmp); SendClientMessage(i, COLOR_RED, string); } } return 1; } if(strcmp(cmd, "/login", true) == 0) { if(logged[i] == 1) { SendClientMessage(i, COLOR_RED, "already logged in!"); return 1; } if(logged[i] == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(i, COLOR_YELLOW, "USAGE: /login (password)"); } else { if (dini_Exists(udb_encode(playername))) { tmp2 = dini_Get(udb_encode(playername), "password"); if (udb_hash(tmp) != strval(tmp2)) { SendClientMessage(i, COLOR_RED, "Wrong password!."); } else { logged[i] = 1; money[i] = dini_Int(udb_encode(playername), "money"); score[i] = dini_Int(udb_encode(playername), "score"); kills[i] = dini_Int(udb_encode(playername), "kills"); deaths[i] = dini_Int(udb_encode(playername), "deaths"); stunts[i] = dini_Int(udb_encode(playername), "stunts"); format(string, sizeof(string), "%s, you are now logged in. stuntpoints: %d money: %d", playername, stunts[i], money[i]); SendClientMessage(i, COLOR_GREEN, string); format(string, sizeof(string), "Kills: %d | Deaths: %d", kills[i], deaths[i]); SendClientMessage(i, COLOR_GREEN, string); GivePlayerMoney(i, money[i]); SetPlayerScore(i, score[i]); } } else { format(string, sizeof(string), "Account %s, does not exist! Typ /register [password] to create an Account.", playername); SendClientMessage(i, COLOR_RED, string); } } return 1; } } return 0; } return 0; } //======================================================== public OnPlayerDisconnect(playerid, reason) { for (new i = 0; i < MAX_PLAYERS; i++) { if(logged[playerid] == 1) { money[playerid] = GetPlayerMoney(i); score[playerid] = GetPlayerScore(i); dini_IntSet(udb_encode(playername), "money", money[i]); dini_IntSet(udb_encode(playername), "score", score[i]); dini_IntSet(udb_encode(playername), "kills", kills[i]); dini_IntSet(udb_encode(playername), "deaths", deaths[i]); dini_IntSet(udb_encode(playername), "stunts", stunts[i]); } logged[i] = 0; } return 1; } //======================================================== stock GetKills(playerid) { return kills[playerid]; } stock GetDeaths(playerid) { return deaths[playerid]; } stock Getstunts(playerid) { return stunts[playerid]; } //======================================================== public StatsInfromation() { new str[128]; for(new i=0;i<MAX_PLAYERS;i++) { if (IsPlayerConnected(i)) { if(logged[i] == 0) { TextDrawShowForPlayer(i, PlayerStatsNot[i]); TextDrawHideForPlayer(i, PlayerStats[i]); } if(logged[i] == 1) { format(str, sizeof(str), "Kills: %d Deaths: %d stuntpoints: %d money: %d score: %d" , GetKills(i), GetDeaths(i), Getstunts(i), GetPlayerMoney(i), GetPlayerScore(i)); TextDrawSetString(PlayerStats[i],str); TextDrawShowForPlayer(i, PlayerStats[i]); TextDrawHideForPlayer(i, PlayerStatsNot[i]); } } } return 1; }
Geplaatst: 10 augustus 201014 jaren comment_1703604 Waarom heb je overal een loop? Dat is toch helemaal nergens voor nodig?
Geplaatst: 10 augustus 201014 jaren comment_1703650 for(), while() en do while. Zie ook hier: http://wiki.sa-mp.com/wiki/Control_Structures#Loops Bewerkt: 10 augustus 201014 jaren door Big Boss
Geplaatst: 10 augustus 201014 jaren Auteur comment_1703658 o je bedoelt : for(new i=0;i<MAX_PLAYERS;i++)
ik heb een admin system gemaakt , als ik inlog werkt het goed maar als er daarna nog iemand in de server komt ben ik ineens uitgelogd en moet ik opnieuw inloggen.
weet iemand waardoor dit komt