Megadreams Geplaatst: 6 november 2009 Rapport Geplaatst: 6 november 2009 (bewerkt) Probleem is opgelost: [MAX_PLAYERS] bij new password weggehaald en bij de dini_get een format gezet. Ik zit met een probleempje mijn login dialog werkte altijd perfect nu moest ik hem aanpassen omdat ik registreren via de site nu doe maar het probleem is dat hij de dialog niet meer in OnDialogResponse uitvoert deze staat mooi op dialogid 0 en werkte altijd er is ook niets mis aan de ShowDialog. Code: public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { new accountfile[256]; new playername[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername, sizeof(playername)); format(accountfile, sizeof(accountfile), "%s.user", playername); if(dialogid == 0) { // Our example inputbox if(response) { new message[256]; new password[50][MAX_PLAYERS]; password[playerid] = dini_Get(accountfile, "password"); if(udb_hash(password[playerid]) != udb_hash(inputtext)){ SendClientMessage(playerid, COLOR_RED, "The password is wrong."); ShowPlayerDialog(playerid,0,DIALOG_STYLE_INPUT,"Login in United Roleplay","Welcome to United Roleplay.\nThis account exist, please log in.\n\nPassword:","Login","Cancel"); } else { job[playerid] = dini_Int(accountfile, "job"); adminlevel[playerid] = dini_Int(accountfile, "adminlevel"); format(message, 256, "%s you have succesfully logged in.", playername, inputtext); SendClientMessage(playerid, COLOR_YELLOW, message); logged[playerid] = 1; } } else { new kickmessage[256]; SendClientMessage(playerid, COLOR_RED, "You cannot enter the server without login or registering!"); format(kickmessage, sizeof(kickmessage), "UnitedBot kicked %s (reason: no login, no enter.)", playername); SendClientMessageToAll(COLOR_RED, kickmessage); Kick(playerid); } return 1; // we processed it. } return 1; } als je het volledig uittypt in tekst krijg je dit: Start Public OnDialogResponse, slaag gegevens op in: playerid, dialogid, listitem, inputtextmaak accountfile aan waarin tot 256 tekens in mogen.maak playername aan waarin de lengte van de naam in mag.Haal de playername op via playerid en slaag het op in playername met de lengte van de naam.Start format waarin playername.user in accountfile word opgeslagen met de lengte ervan.check of dialogid 0 is zoja voer alles uit wat erin staat.check of button 1 is ingedrukt zoja voer alles uit wat erin staat.maak message aan waarin tot 256 tekens in mogen.maak password aan waarin tot 50 tekens in mogen en je [playerid] moet achterzetten voor specifieke aanduiding.haal password uit accountfile (playername.user) en slaag dit op in password[playerid]check of gecodeerde password[playerid] niet gelijk is aan gecodeerde inputtext, zoja voer alles uit wat erin staat.vertel in de kleur COLOR_RED aan de speler dat zijn ingevoerde wachtwoord fout is.laat opnieuw de inlog dialog zien.anders...haal job uit accountfile (playername.user) en slaag dit op in job[playerid]haal adminlevel uit accountfile (playername.user) en slaag dit op in adminlevel[playerid]Start format waarin een tekst met playername en inputtext word opgeslagen in message.stuur de format naar de speler in kleur COLOR_YELLOW.zet logged][playerid] op 1 wat aanduid dat de speler ingelogd is.einde if.anders...maak kickmessage aan waarin tot 256 tekens mogen.Stuur naar de speler in de kleur COLOR_RED dat hij de server niet in kan zonder te registreren of in te loggen.Maak een format aan die vertelt met playername dat Unitedbot de speler kickte met reden: no login, no enter.Zend de bovenstaande tekst in COLOR_RED naar alle spelers.Kick de speler.einde if.return 1einde dialogreturn 1einde public Bewerkt: 7 november 2009 door megadreams Reageren
Megadreams Geplaatst: 7 november 2009 Auteur Rapport Geplaatst: 7 november 2009 Sorry voor de dubbelpost: Ik ben na een tijdje zoeken erachter gekomen dat blijkbaar deze new: new password[50][MAX_PLAYERS]; de code zou gestoord hebben. Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.