Beim /umbenennen relogg und neuen Namen auswählen?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Nabend Forum.
    Es gibt manche Leute auf dem Server, die nennen sich irgendwie sooo... wie soll ich sagen wie man es nicht sollte.
    Und ich habe ja den command /umbenennen.
    Nur leider muss man dort den neuen Namen eingeben, und das sollen ja nicht wir entscheiden sondern die User ^^


    Hier der Command :
    if(strcmp(cmd,"/umbenennen",true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 4)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_WHITE,"NUTZUNG: /umbenennen [playerid/name] [neuer name] Achtung! Maximale Länge: 16 Zeichen");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(!IsPlayerConnected(giveplayerid))
    {
    SendClientMessage(playerid,COLOR_WHITE," Spieler ist nicht Online!");
    return 1;
    }
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(strlen(result) < 1 || strlen(result) > 16)
    {
    SendClientMessage(playerid,COLOR_WHITE,"NUTZUNG: /umbennen [playerid/name] [neuer name] Achtung! Maximale Länge: 16 Zeichen");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string,sizeof(string),"/Accounts/%s.ini",giveplayer);
    fremove(string);
    format(string,sizeof(string)," AdmCmd: %s hat %s in %s umbenannt!",sendername,giveplayer,result);
    ABroadCast(COLOR_LIGHTRED,string,1);
    format(string,sizeof(string)," Admin %s hat dich in %s umbenannt!",sendername,result);
    SendClientMessage(playerid,COLOR_YELLOW,string);
    SetPlayerName(giveplayerid,result);
    OnPlayerUpdate(giveplayerid);
    }
    return 1;
    }


    Also ich hab es jetzt schlecht Formuliert, unzwar ist es auf meinem Server so das man :
    /umbenennen [id] [neuen namen] eingeben muss.


    Und meine Frage ist ob es geht das mann :
    /umbenennen [id] eingibt, und der sich seinen neuen Namen aussuchen kann? z.B in einem Dialog, oder er wird gekickt, und mit dem Neuen Namen mit dem er reinkommt ist dann sein neuer Account.
    Nur die Sachen sollten alle behalten werden.
    Geht das?
    Währe nett..


    Mfg..

  • Ja das will ich ja nicht, ich muss die User dann immer fragen was sie für ein neuen Namen haben wollen.
    Ich möchte einfach nur /umbenennen lol schreiben und dann steht bei ihm :
    Ein Admin hat dir aufgefordert dich umzubennenen.
    Bitte gebe hier dein Neuen namen ein :
    Dann gibt er dort irgendein Namen ein, und die ganzen Daten werden auf den neuen Namen überschrieben.


  • if(strcmp(cmd,"/umbenennen",true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 4)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_WHITE,"NUTZUNG: /umbenennen [playerid/name]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(!IsPlayerConnected(giveplayerid))
    {
    SendClientMessage(playerid,COLOR_WHITE," Spieler ist nicht Online!");
    return 1;
    }
    ShowPlayerDialog(DIALOG_ID,"Umbennenen","Ein Spielleiter meint, du benötigst einen anderen Namen, schreibe ihn nun hier rein","OK"...);
    ...


    //Bei OnDialogResponse
    //Hier muss dann der Spieler den neuen Namen bekommen, den er gewählt hat

  • Ich kenne mich mit den Dialogen noch garnicht aus, wie könnte man es den dort ändern? Ich hab bei OnDialogResponce das hier stehen :



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new string[128];
    new string2[128];
    new giveplayer[MAX_PLAYER_NAME];
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,sendername,sizeof(sendername));


    if(dialogid == DIALOG_LOGIN)
    {
    if(response && strlen(inputtext) > 0)
    {
    OnPlayerLogin(playerid,inputtext);
    }
    else
    {
    Kick(playerid);
    }
    }


    if(dialogid == DIALOG_REG)
    {
    if(response)
    {
    ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_INPUT,"Account erstellen","Gib das Passwort für deinen Account ein:","OK","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_MSGBOX,"Account","Du benötigst einen Account, um auf diesem Server zu spielen!","Erstellen","Abbrechen");
    }
    }


    if(dialogid == DIALOG_REG2)
    {
    if(response && strlen(inputtext) > 0)
    {
    OnPlayerRegister(playerid,inputtext);
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_INPUT,"Account erstellen","Gib das Passwort für deinen Account ein:","OK","Abbrechen");
    }
    }


    if(dialogid == DIALOG_CLICK)
    {
    if(PlayerInfo[playerid][pAdmin] >= 2)
    {
    if(response == 1)
    {
    GetPlayerName(pClicked[playerid],giveplayer,sizeof(giveplayer));
    switch (listitem)
    {
    case 0:
    {
    format(string,sizeof(string),"/goto %d",pClicked[playerid]);
    OnPlayerCommandText(playerid,string);
    }
    case 1:
    {
    format(string,sizeof(string),"/gethere %d",pClicked[playerid]);
    OnPlayerCommandText(playerid,string);
    }
    case 2:
    {
    format(string,sizeof(string),"[KICK] %s",giveplayer);
    ShowPlayerDialog(playerid,DIALOG_CLICK_KICK,DIALOG_STYLE_INPUT,string,"Tippe einen Grund für den Kick ein:","OK","Abbrechen");
    }
    case 3:
    {
    format(string,sizeof(string),"[BAN] %s",giveplayer);
    ShowPlayerDialog(playerid,DIALOG_CLICK_BAN,DIALOG_STYLE_INPUT,string,"Tippe einen Grund für den Bann ein:","OK","Abbrechen");
    }
    case 4:
    {
    format(string,sizeof(string),"[HEALTH] %s",giveplayer);
    format(string2,sizeof(string2),"Gib an wieviel Health zu %s geben willst. (0-100)",giveplayer);
    ShowPlayerDialog(playerid,DIALOG_CLICK_HEALTH,DIALOG_STYLE_INPUT,string,string2,"OK","Abbrechen");
    }
    case 5:
    {
    format(string,sizeof(string),"/slap %d",pClicked[playerid]);
    OnPlayerCommandText(playerid,string);
    }
    case 6:
    {
    format(string,sizeof(string),"/tv %d",pClicked[playerid]);
    OnPlayerCommandText(playerid,string);
    }
    case 7:
    {
    format(string,sizeof(string),"[INTERIOR] %s",giveplayer);
    format(string2,sizeof(string2),"Gib an in welches Interior du %s stecken willst.",giveplayer);
    ShowPlayerDialog(playerid,DIALOG_CLICK_INT,DIALOG_STYLE_INPUT,string,string2,"OK","Abbrechen");
    }
    }
    }
    }
    return 1;
    }//22(50),29(30),23(35)


    //edit : Korrektur im Code.

  • Im Befehl folgendes noch ändern:
    ShowPlayerDialog(playerid, DIALOG_ID, DIALOG_STYLE_INPUT,"Umbennenen","Ein Spielleiter meint, du benötigst einen anderen Namen, schreibe ihn nun hier rein","OK"...);


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    // ...
    if(dialogid == DIALOG_ID)
    {
    SetPlayerName(playerid , inputtext); // Eventuelle Namensvalidierung hinzufügen
    // In Datenbank Spielernamen ändern
    // Alle Spieler Arrays und Variablen löschen (Vorbereiten auf Logout)
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, // Einfach das normale Login Dialog
    }
    }

    Code ungetestet.