errors und warnings

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
  • ich erhalte folgende errors un warnings bei folgenden zeilen:


    test.pwn(57) : warning 202: number of arguments does not match definition
    test.pwn(57) : warning 202: number of arguments does not match definition
    test.pwn(57) : error 033: array must be indexed (variable "Name")
    test.pwn(137) : error 033: array must be indexed (variable "Account")
    test.pwn(138) : error 047: array sizes do not match, or destination array is too small
    test.pwn(146) : warning 203: symbol is never used: "playerid"
    test.pwn(160) : warning 203: symbol is never used: "SpielerInfo"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.



    für zeile 57:



    stock SpielerName(playerid)
    {
    new Name[MAX_PLAYER_NAME];
    Name = GetPlayerName(playerid);
    return 1;
    }


    für zeile 137-138



    stock CreateAccount(playerid,pass[])
    {
    new Account[128];
    Account = PlayerAccount(playerid);
    setString:Account("Passwort",pass);
    setFloat:Account("posX",1512.0344);
    setFloat:Account("posY",-1674.6484);
    setFloat:Account("posZ",14.0469);
    setFloat:Account("posA",268.5105);
    return 1;
    }


    //der stock für playeraccount


    stock PlayerAccount(playerid)
    {
    new Acc[128];
    format(Acc,sizeof(Acc), "/Accounts/%s", SpielerName(playerid));
    return 1;
    }


    was ist da nicht in ordnung ?

  • ok damit ist der 1. error weg (also die errors bei zeile 57)



    die 2 unteren warnings könnt ihr ignorieren. da weiß ich wie es geht, bzw. hab die funktionen noch nicht wo ich das verwende.


    meine momentanen errors:


    C:\Dokumente und Einstellungen\Rocco\Desktop\samp03e_svr_R2_win32\gamemodes\test.pwn(138) : error 047: array sizes do not match, or destination array is too small



    stock CreateAccount(playerid,pass[])
    {
    new Account[128];
    Account = PlayerAccount(playerid);
    setString:Account("Passwort",pass); //Zeile 138
    setFloat:Account("posX",1512.0344);
    setFloat:Account("posY",-1674.6484);
    setFloat:Account("posZ",14.0469);
    setFloat:Account("posA",268.5105);
    return 1;
    }


    //der stock für playeraccount


    stock PlayerAccount(playerid)
    {
    new Acc[128];
    format(Acc,sizeof(Acc), "/Accounts/%s", SpielerName(playerid));
    return 1;
    }

    Einmal editiert, zuletzt von rocco95 () aus folgendem Grund: nur noch ein error

  • also ich bin echt am verzweifeln, warum das nicht geht ich versteh es nicht :(


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new Account[128];
    Account = PlayerAccount(playerid);
    new LogDia[128];
    if (dialogid == DIA_REG)
    {
    if(response)
    {
    if (strlen(inputtext) <6)
    {
    SendClientMessage(playerid,ROT, "Deine Eingabe war zu kurz (Mindentens 6 Zeichen).");
    ShowPlayerDialog(playerid,DIA_REG,DIALOG_STYLE_PASSWORD,"Registrierung","Herzlich Willkommen auf dem Server.\nDu hast noch keinen Account. \n \nGib hier dein gewünschtes Passwort ein:","Register","Exit");
    }
    else
    {
    CreateAccount(playerid,inputtext);
    format(LogDia,sizeof(LogDia), "Dein Account wurde erstellt. \nDu kannst dich nun einloggen. \n \nAccount: %s", SpielerName(playerid));
    ShowPlayerDialog(playerid,DIA_LOG,DIALOG_STYLE_PASSWORD,"Einloggen",LogDia,"Login","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    if (dialogid == DIA_LOG)
    {
    if(response)
    {
    if (!strcmp(inputtext,getString:Account("Passwort"),false))
    {
    SendClientMessage(playerid, ROT, "Das Passwort war falsch. Achte auf Groß- und Kleinschreibung.");
    format(LogDia,sizeof(LogDia), "Herzlich Willkommen zurück auf dem Server. \nBitte gib dein Passwort ein \n \nAccount: %s", SpielerName(playerid));
    ShowPlayerDialog(playerid,DIA_LOG,DIALOG_STYLE_PASSWORD,"Einloggen",LogDia,"Login","Abbrechen");
    }
    else
    {
    LoadAccount(playerid);
    SendClientMessage(playerid, GRÜN, "Du hast dich erfolgreich eingeloggt.");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    return 1;
    }


    stock CreateAccount(playerid,pass[])
    {
    new Account[128];
    Account = PlayerAccount(playerid);
    setString:Account("Passwort",pass); //zeile 126
    setFloat:Account("posX",1512.0344);
    setFloat:Account("posY",-1674.6484);
    setFloat:Account("posZ",14.0469);
    setFloat:Account("posA",268.5105);
    setInt:Account("Geld",5000);
    setInt:Account("Skin",26);
    return 1;
    }


    mein error:


    test.pwn(126) : error 047: array sizes do not match, or destination array is too small

    2 Mal editiert, zuletzt von rocco95 () aus folgendem Grund: meinen momentanen stand angeben

  • stock CreateAccount(playerid,inputtext[])
    {
    new Account[128],new pw=strval(inputtext);
    Account = PlayerAccount(playerid);
    setString:Account("Passwort",pw); //zeile 126
    setFloat:Account("posX",1512.0344);
    setFloat:Account("posY",-1674.6484);
    setFloat:Account("posZ",14.0469);
    setFloat:Account("posA",268.5105);
    setInt:Account("Geld",5000);
    setInt:Account("Skin",26);
    return 1;
    }
    Probiere mal ob es so geht :) Wie in Skype versprochen, hier das
    was dann ganz sicher funktioniert.
    [ SCRIPTING ] GUI Login/Register System

  • Ganz kurz nochmal, der stock von SpielerName muss so aussehen:


    stock SpielerName(playerid)
    {
    new Name[24];
    GetPlayerName(playerid, Name, 24);
    return Name;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ist "Spieleraccount" dasselbe wie Spielername?


    Zu deinem Problem, du musst anders mit Strings umgehen. Du kannst nicht einfach zuweisen wie ein Intger. Wenn du Int's zuweisen willst, machst du wie üblich:
    wert = int;


    Sobald du aber ein String zuweisen willst, müsstest du es wie folgt machen:
    format(neustring,sizeof(neustring),altstring);


    kannst aber auch:
    format(neustring,sizeof(neustring),"%s",altstring);
    machen, falls du längere texte hast, bzw mehrere String in einer Packen, achte aber drauf, dass der neue String genug arrays hat, ansonsten könnte es Probleme geben.

  • ne ist unterschiedlich:



    stock SpielerName(playerid)
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Name,sizeof(Name));
    return Name;
    }


    stock PlayerAccount(playerid)
    {
    new Acc[128];
    format(Acc,sizeof(Acc), "/Accounts/%s", SpielerName(playerid));
    return Acc;
    }


    //nun ja ich möchte ja bloß das ich beim registieren den inputtext vom dialog bei einem stock in meine accountdatei schreibe


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new Account[128];
    Account = PlayerAccount(playerid);
    new LogDia[128];
    if (dialogid == DIA_REG)
    {
    if (response)
    {
    if (strlen(inputtext) <6)
    {
    SendClientMessage(playerid,ROT, "Deine Eingabe war zu kurz (Mindentens 6 Zeichen).");
    ShowPlayerDialog(playerid,DIA_REG,DIALOG_STYLE_PASSWORD,"Registrierung","{FFFFFF}Herzlich Willkommen auf dem Server.\nDu hast noch keinen Account. \n \nGib hier dein gewünschtes Passwort ein:","Register","Exit");
    }
    else
    {
    CreateAccount(playerid,inputtext);
    format(LogDia,sizeof(LogDia), "{FFFFFF}Dein Account wurde erstellt. \nDu kannst dich nun einloggen. \n \n{FF9600}Account: {FFFFFF}%s", SpielerName(playerid));
    ShowPlayerDialog(playerid,DIA_LOG,DIALOG_STYLE_PASSWORD,"Einloggen",LogDia,"Login","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    sorry das das so komich angeorndet ist..


    stock CreateAccount(playerid,pass[])
    {
    SetPVarInt(playerid,"Newbie",1);
    new Account[128];
    Account = PlayerAccount(playerid);
    setString:Account("Passwort",pass); // bei dieser zeile gibt es denn error ich setze da dort etwas ein
    setFloat:Account("posX",1512.0344);
    setFloat:Account("posY",-1674.6484);
    setFloat:Account("posZ",14.0469);
    setFloat:Account("posA",268.5105);
    setInt:Account("Geld",5000);
    setInt:Account("Skin",26);
    return 1;
    }

  • mit dem PlayerAccount(playerid) im stock CreateAccount greift der doch nur auf den PlayerAccount stock zu wieso soll ich das in einen string setzen ?


    hab das jetzt so


    format(Account,sizeof(Account),"%s",PlayerAccount(playerid));
    geht immernoch nicht damit hängt es ja auch nicht zusammen es geht um diese zeile hier:


    setString:Account("Passwort",pass); (hsa system)

  • mit dem PlayerAccount(playerid) im stock CreateAccount greift der doch nur auf den PlayerAccount stock zu wieso soll ich das in einen string setzen ?


    Dein PlayerAccount(payerid) ist ein String und kein Wert, nämlich:
    /Accounts/spielername


    Deswegen kannst und darfst du nicht Playeraccount(playerid); wie ein Interger behandeln, da ist es klar, warum deine Fehlermeldung kommt.


    Kleiner Tipp:
    Ich würde noch eine Endung anfügen wie .txt oder .ini, damit du die Sachen leichter bearbeiten kannst.



    EDIT:
    Welchen Error bekommst du bei der setString zeile?

  • ja ich versth trotzdem nicht so richtig was du jetzt willst ich hab das doch so wie ich es brauche,


    kannste es nicht richtig stellen damit ich sehe wie du es meinst. (also den richtigen code posten)


    und ini oder txt brauch ich nicht ran hängen, da das hsa system automatisch hsa anhängt und ich es so wie txt trotzdem bearbeiten kann :)

  • ja ich versth trotzdem nicht so richtig was du jetzt willst ich hab das doch so wie ich es brauche,


    kannste es nicht richtig stellen damit ich sehe wie du es meinst. (also den richtigen code posten)


    und ini oder txt brauch ich nicht ran hängen, da das hsa system automatisch hsa anhängt und ich es so wie txt trotzdem bearbeiten kann :)


    kenne das komische HSA nicht, was auch immer das sein soll. Ich schreibe immer was eigenes...^^


    Poste doch einfach deine jetzigen Errors und die Zeilen. Wenn du statt =, format benutzt hast, müsstest du weniger Error haben. Ich möchte deinen jetzigen Stand sehen. Sonst kann ich wohl kaum helfen oder? :thumbup:

  • das hsa ist das hier:


    HSA


    der error:


    test.pwn(162) : error 047: array sizes do not match, or destination array is too small


    und der stock mit der fehlerzeile:



    stock CreateAccount(playerid,pass[])
    {
    SetPVarInt(playerid,"Newbie",1);
    new Account[128];
    format(Account,sizeof(Account),"%s",PlayerAccount(playerid));
    setString:Account("Passwort",pass); //Error-Zeile
    setFloat:Account("posX",1512.0344);
    setFloat:Account("posY",-1674.6484);
    setFloat:Account("posZ",14.0469);
    setFloat:Account("posA",268.5105);
    setInt:Account("Geld",5000);
    setInt:Account("Skin",26);
    return 1;
    }