Beiträge von Jeffry

    Den dritten Parameter als String auslesen lassen, und beim Preis-Teil mit IsNumeric prüfen.
    stock IsNumeric(string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    {
    if ((string[i] > '9' || string[i] < '0')) return 0;
    }
    return 1;
    }


    if(!IsNumeric(angabe)) return ...
    else preis = strval(angabe);

    Einfach so:
    if(strcmp(cmd,"/equip",true)==0)
    {
    if(PlayerInfo[playerid][pMember]!=20&&PlayerInfo[playerid][pLeader]!=20)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht in der jeweiligen Fraktion.");
    if(PlayerInfo[playerid][pFriedhof]==1)return SendClientMessage(playerid,COLOR_GREY,"Du kannst dich nicht ausrüsten, solange du auf den Friedhof bist.");
    if(!PlayerToPoint(5,playerid,-1869.5820,-1624.6660,21.8426))return SendClientMessage(playerid,COLOR_GREY,"Du kannst dich hier nicht ausrüsten.");
    if(gettime()<equipusen[playerid])
    {
    new equipzeit=equipusen[playerid]-gettime();
    format(string,sizeof(string),"Du kannst dich erst wieder in %d Sekunden wieder ausrüsten.",equipzeit);
    return SendClientMessage(playerid,COLOR_GREY,string);
    }
    GivePlayerWeapon(playerid,24,200);
    equipusen[playerid]=gettime()+(60*2);
    SendClientMessage(playerid,COLOR_GREY,"Du hast dich erfolgreich ausgerüstet.");
    return 1;
    }

    Ok. Ein paar Dinge:


    Wird die Fraktion geladen?
    Existiert der Ordner "Spieler" in den scriptfiles?
    Wo rufst du "loadacc(playerid)" auf? Poste den Code dazu mal.


    Dann:
    OnPlayerDisconnect zu:
    public OnPlayerDisconnect(playerid, reason)
    {
    SpielerSpeichern(playerid);
    ResetVariablen(playerid);
    return 1;
    }


    Und nebenbei:
    if(strcmp("/binichadmin", cmdtext, true, 10) == 0)
    zu:
    if(strcmp("/binichadmin", cmdtext, true) == 0)


    Sonst prüfst du nur die ersten 10 Zeichen. ;)

    Indem du überlegst, was du als letztes gemacht hast. Dort schaust du dann nach, ob eine Klammer zu viel oder zu wenig vorhanden ist.
    Wo der Fehler ist lässt sich nicht sagen, das ist das doofe daran.


    Du kannst als Alternative den ganzen Code via http://www.pastebin.com hier mal posten, dann kann ich es heute Abend mit meinem Programm mal testen, in ca. 50% der Fälle kann ich damit den Klammerfehler finden.

    Das sieht ziemlich stark nach einem Klammerfehler aus.
    Öffne den Code mal mit Notepad++ und lass dir die { und } Klammern zählen. Die sind dann wahrscheinlich unterschiedlich.


    Zitat

    26 Errors (Klammerfehler)


    Steht ja sogar dabei. ;)

    Du willst doch sicher nicht die playerid ausgeben, sondern den Name:
    format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und erhält: $%d >>",killer,playerid,PlayerInfo[playerid][pHeadValue]);
    Da musst du playerid ändern, und wie bei killer auch GetPlayerName machen.

    Du musst bei OnPlayerConnect (oder eben dort wo du willst), das Textdraw anzeigen lassen, wenn du das nicht machst:
    PlayerTextDrawShow(playerid, Geld2[playerid]);


    Übrigens sehe ich gerade, dass bei Geld1 das Array fehlt. An sich kein Problem, da es ja nur eine weiße Box ist, aber dann musst du es als normales Textdraw erstellen, sonst sieht es nur eine playerid. Also unter OnGameMode Init mit "TextDrawCreate" und ohne playerid erstellen und definieren. Außerdem "new Text:Geld1;".
    Das macht dann mehr Sinn, dann erstellst du nicht für jeden Spieler das weiße Textdraw nochmal.


    Anzeigen dann mit
    TextDrawShowForPlayer(playerid, Geld1);

    Dort wo die Nachricht ausgegeben wird:
    new string[145];
    format(string, sizeof(string), "[%s] %s: %s", GetAdminRank(playerid), SpielerName(playerid), nachricht);
    SendClientMessageToAll(FARBE, string);


    Ganz unten im Code:
    stock GetAdminRank(playerid)
    {
    new rank[20];
    switch(SpielerInfo[playerid][AdminLevel])
    {
    case 0: rank = "Spieler";
    case 1: rank = "Moderator";
    case 2: rank = "Administrator";
    default: rank = "Unbekannt";
    }
    return rank;
    }

    Hier hast du das Prinzip und den Anfang des Codes:


    Dort wo es beginnt:
    ShowPlayerDialog(playerid, DIALOG_ALTER, DIALOG_STYLE_INPUT, "Alter", "Bitte gebe dein Alter ein:", "Weiter", "");


    OnDialogResponse:
    if(dialogid == DIALOG_ALTER)
    {
    SpielerInfo[playerid][pAlter] = strval(inputtext);
    ShowPlayerDialog, playerid, DIALOG_LAND, DIALOG_STYLE_LIST, "Land", "Deutschland\nÖsterreich\nSchweiz", "Weiter", "");
    return 1;
    }


    if(dialogid == DIALOG_LAND)
    {
    SpielerInfo[playerid][pLand] = listitem;
    return 1;
    }



    Nachrichten und sowas musst du noch einbauen, falls du welche haben willst. Die Variablen musst du gegebenenfalls umbenennen, außer die heißen genau so wie bei dir.