Was ist Falsch?

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
  • Hallo Brotfisch


    Was ist hier falsch:
    inputtext[] = tmppass[64];


    ich bekomme immer diese errors:
    .pwn(32291) : error 029: invalid expression, assumed zero
    .pwn(32291) : error 032: array index out of bounds (variable "tmppass")


    Zeile 32291:
    inputtext[] = tmppass[64];

  • Willst du einfach, dass inputtext den Inhalt von tmppass annimmt?
    Dann benutz das:
    strmid(inputtext,tmppass,0,sizeof(tmppass),sizeof(tmppass));


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • hmm ok keine errors oder warnings aber meine idee geht nicht auf :(


    Was ist da falsch:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new idx;
    new cmdtext[64];
    new tmp[256];
    new tmppass[64];
    if(dialogid == 1)
    {
    if(IsPlayerConnected(playerid))
    {
    Eingeloggt[playerid] = 1;
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are already logged in.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /login [password]");
    return 1;
    }
    strmid(inputtext,tmppass,0,sizeof(tmppass),sizeof(tmppass));
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid,tmppass);
    }
    return 1;
    }
    return 0;
    }


    Und onplayercommandtext:


    if(strcmp(cmdtext, "/loginmenu", true) == 0)
    {
    new s[128];
    new loginname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,loginname,MAX_PLAYER_NAME);
    format(s,sizeof(s),"Willkommen zurück, %s!\n\nBitte Logge dich ein!",loginname);
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Login",s,"Login","Abbrechen");
    return 1;
    }


    Warum geht das nicht?

  • Du verstehst unter Encrypt was falsches.
    In Encrypt musst du einen String einlesen.
    D.h. du kannst ganz normal inputtext verwenden.


    P.S Ich würde es so verwenden(Ungetestet)
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 1)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_WHITE, "SERVER: You are already logged in.");
    return 1;
    }
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /login [password]");
    return 1;
    }
    Encrypt(inputtext);
    OnPlayerLogin(playerid,inputtext);
    }
    return 1;
    }
    return 0;
    }