Banksystem lässt Server Crashen

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 habe mal wieder ein Problem. Es geht um ein Banksystem in einem Selfmade Script. Immer wenn ich z.B. /bank eingeben, dann Crasht der Server.


    Ich habe mal die Commands Reingeschrieben.


    {
    new string[256];
    new pname[16];
    new amount = strval(cmdtext[6]);
    GetPlayerName(playerid, pname, sizeof(pname));


    if(!strcmp(cmdtext, "/bank", true, 3))
    {
    if(!Bankautomat(playerid))return SendClientMessage(playerid,COLOR_RED,"Du befindest dich am falschen Ort!");
    format(string, sizeof(string),"Du hast $%d auf deinem Konto.", PlayerInfo[playerid][Bank]);
    SendClientMessage(playerid, COLOR_YELLOW, string);
    return 1;
    }


    if(strcmp(cmdtext, "/einzahlen", true, 3))
    {
    if(Bankautomat(playerid))
    {
    GivePlayerMoney(playerid,-amount);
    PlayerInfo[playerid][Bank] += amount;
    format(string,sizeof(string),"Du hast $%d auf dein Bankkonto eingezahlt.",amount);
    SendClientMessage(playerid,COLOR_YELLOW,string);
    return 1;
    }
    return 1;
    }
    if(strcmp(cmdtext, "/abbuchen", true, 3))
    {
    if(Bankautomat(playerid))
    {
    GivePlayerMoney(playerid, amount);
    PlayerInfo[playerid][Bank] -= amount;
    format(string,sizeof(string),"Du hast %d$ von deinem Konto Abgebucht.",amount);
    SendClientMessage(playerid,COLOR_YELLOW,string);
    return 1;
    }
    return 1;
    }


    Greetz
    KillerTier

    Rundenrekord des Pagani Zonda R um 1,1 Sec. geschlagen.
    Und das mit einem 50 PS schwächeren Auto, dem BMW 320w 1 E90



    Einmal editiert, zuletzt von =[MW]= KillerTier ()

  • aufgefallen das du als Länge 3 angibst ? dabei sind die Kommandos wesentlich länger zudem ist die Angabe nicht erforderlich denn die wird meistens so ermittelt , nur wenn du Texte eingrenzen möchtest bis zu einer bestimmten Stelle

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • ich hab die grenze jetzt aufgehoben aber server crasht immer noch ;(


    //EDIT : Wenn ich /abbucen oder /einzahlen eingebe crasht der Server nicht, jedoch bei /abbuchen kommt : Su hast 0$ auf dein Konto eingezahlt und umgekehrt. Und das obwohl ich einen Betrag angebe!

    Rundenrekord des Pagani Zonda R um 1,1 Sec. geschlagen.
    Und das mit einem 50 PS schwächeren Auto, dem BMW 320w 1 E90



    Einmal editiert, zuletzt von =[MW]= KillerTier ()

  • new amount = strval(cmdtext[6]);
    GetPlayerName(playerid, pname, sizeof(pname));


    schlechte Lösung , nicht jedes Kommando endet an 6ter Stelle.


    if(!strcmp(cmdtext,"/test",true)) // 5 stellen lang + 1 Leerzeichen = 6 so beginnt der Inhalt dahinter an 7ter stelle
    {
    if(strlen(cmdtext) < 7)return SendClientMessage(playerid,0xFF0000FF,"Nutze /test [text]"); /* die Abfrage kann auch so gestaltet werden damit es etwas schneller läuft aber so müsste an 7ter stelle zwingend was stehen [[ !cmdtext[7] ]] falls 0 z.b. */
    SendClientMessage(playerid,0x0000FFFF,cmdtext[7]); // da Array wird alles ab Stelle 7 einbezogen & wiedergegeben ist aber nur ein Beispiel
    }


    wie man sieht müsstest du alles extra gestalten so das du jede Stelle zählen müsstest , es gibt aber auch Alternativen wie z.b. strtok(en) wie der Begriff Token / Trenner schon sagt trennt diese Funktion einen vordefinierten Trenner in diesem Fall das Leerzeichen so kannst du ganz Parameter fischen & wiedergeben

    Mfg. BlackFoX_UD_ alias [BFX]Explosion