funktion "split"

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
  • Guten Tag.


    Ich habe ein Banksystem. nun soll man anderen Spielern etwas überweisen können.
    dazu soll überprüft werden ob er folgendes Eingegeben hat: "Id Betrag".


    dazu benutzte ich die Funktion "split". die nach einem bestimmten zeichen etwas einteilt. der erste teil ist die id, der 2. teil der betrag.


    nun wollte ich abfragen ob er beides geschrieben hat.


    hier mein scriptausschnitt:

    public OnDIalogResponse(...)
    {
    if(dialogid == DIALOG_ÜBERWEISEN)
    {
    if(response)
    {
    new WeisInfo[2][50];
    split(inputtext, WeisInfo, ' ');
    if (strval(inputtext) > 13 || strval(inputtext) < 5)
    {
    SendClientMessage(playerid,0xFF000FF,"Angabe Fehler!");
    new str[256], CHand, DHand, DBank;
    DHand = GetPlayerMoney(playerid)/100;
    CHand = GetPlayerMoney(playerid)%100;
    DBank = Spieler[playerid][Bank]/100;
    format(str,sizeof(str),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
    ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",str,"Okay","Zurück");
    }
    else
    {
    if()//hier soll die abfrage hin, ob er "ID Betrag" eingegeben hat.
    {
    SendClientMessage(playerid,0xFF000FF,"Angabe Fehler!");
    new str[256], CHand, DHand, DBank;
    DHand = GetPlayerMoney(playerid)/100;
    CHand = GetPlayerMoney(playerid)%100;
    DBank = Spieler[playerid][Bank]/100;
    format(str,sizeof(str),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
    ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",str,"Okay","Zurück");
    }
    else
    {
    if(!IsPlayerConnected(strval(WeisInfo[0])))
    {
    SendClientMessage(playerid,0xFF000FF,"Ungültige Id!");
    new str[256], CHand, DHand, DBank;
    DHand = GetPlayerMoney(playerid)/100;
    CHand = GetPlayerMoney(playerid)%100;
    DBank = Spieler[playerid][Bank]/100;
    format(str,sizeof(str),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
    ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",str,"Okay","Zurück");
    }
    else if(Spieler[playerid][Bank] < strval(WeisInfo[1]))
    {
    SendClientMessage(playerid,0xFF000FF,"Du hast nicht soviel Geld auf der Bank!");
    new str[256], CHand, DHand, DBank;
    DHand = GetPlayerMoney(playerid)/100;
    CHand = GetPlayerMoney(playerid)%100;
    DBank = Spieler[playerid][Bank]/100;
    format(str,sizeof(str),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
    ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",str,"Okay","Zurück");
    }
    else
    {
    new strtest[256],name[MAX_PLAYER_NAME];
    GetPlayerName(strval(WeisInfo[0]), name, sizeof(name));
    format(strtest,256,"[TEST] Du wolltest $%d an %s (%d) überweisen!", strval(WeisInfo[1]), name, strval(WeisInfo[0]));
    SendClientMessage(playerid,0x00EE00FF,strtest);
    }
    }
    }
    }
    else
    {
    if(GetPlayerVirtualWorld(playerid) == 1)
    {
    ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Los Santos Bank","Konto erstellen\nFinanzen\nAbheben oder Einzahlen\nÜberweisen","Weiter","Abbrechen");
    }
    if(GetPlayerVirtualWorld(playerid) == 2)
    {
    ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"San Fierro Bank","Konto erstellen\nFinanzen\nAbheben oder Einzahlen\nÜberweisen","Weiter","Abbrechen");
    }
    if(GetPlayerVirtualWorld(playerid) == 3)
    {
    ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Las Venturas Bank","Konto erstellen\nFinanzen\nAbheben oder Einzahlen\nÜberweisen","Weiter","Abbrechen");
    }
    }
    }
    return 1;
    }


    Wäre sehr nett wenn mir da eine rhelfen könnte.


    mfg
    Simon

  • ganz schön dumme frage eigentlich :D so habs mal probiert mit sscanf und ich werde es gleich mal testen


    danke schön


    //edit: ich habs jetzt mal so gemacht, weiß aber net genau ob das richtig ist, ich habe immer noch split, aber diesmal die abfrage mit sscanf gemacht.


    der fehler liegt eindeutig bei der sscanf abfrage, da es egal ist was man eingiebt..


    if(dialogid == DIALOG_ÜBERWEISEN)
    {
    if(response)
    {
    new WeisInfo[2][50];
    split(inputtext, WeisInfo, ' ');
    if (strlen(inputtext) > 15 || strlen(inputtext) < 1)
    {
    SendClientMessage(playerid,0xFF000FF,"Angabe Fehler!");
    new str[256], CHand, DHand, DBank;
    DHand = GetPlayerMoney(playerid)/100;
    CHand = GetPlayerMoney(playerid)%100;
    DBank = Spieler[playerid][Bank]/100;
    format(str,sizeof(str),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
    ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",str,"Okay","Zurück");
    }
    else
    {
    new str[50];
    format(str,sizeof(str),"%s", inputtext);
    if(sscanf(str, "dd", WeisInfo[0], WeisInfo[1]))
    {
    SendClientMessage(playerid,0xFF000FF,"Angabe Fehler!");
    new gstr[256], CHand, DHand, DBank;
    DHand = GetPlayerMoney(playerid)/100;
    CHand = GetPlayerMoney(playerid)%100;
    DBank = Spieler[playerid][Bank]/100;
    format(gstr,sizeof(gstr),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
    ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",gstr,"Okay","Zurück");
    }
    else
    {
    if(!IsPlayerConnected(strlen(WeisInfo[0])))
    {
    SendClientMessage(playerid,0xFF000FF,"Ungültige Id!");
    new astr[256], CHand, DHand, DBank;
    DHand = GetPlayerMoney(playerid)/100;
    CHand = GetPlayerMoney(playerid)%100;
    DBank = Spieler[playerid][Bank]/100;
    format(astr,sizeof(astr),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
    ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",astr,"Okay","Zurück");
    }
    if(Spieler[playerid][Bank] < strlen(WeisInfo[1]))
    {
    SendClientMessage(playerid,0xFF000FF,"Du hast nicht soviel Geld auf der Bank!");
    new astr[256], CHand, DHand, DBank;
    DHand = GetPlayerMoney(playerid)/100;
    CHand = GetPlayerMoney(playerid)%100;
    DBank = Spieler[playerid][Bank]/100;
    format(astr,sizeof(astr),"Wieviel Geld möchtest du an wen Überweisen?\nGebe folgendes ein: *Id Betrag*\n\nAktueller Kontostand: $%d\nBargeld: $%d,%d\n",DBank, DHand, CHand);
    ShowPlayerDialog(playerid,DIALOG_ÜBERWEISEN,DIALOG_STYLE_INPUT,"Überweisen",astr,"Okay","Zurück");
    }
    else
    {
    new strtest[256],name[MAX_PLAYER_NAME];
    GetPlayerName(strval(WeisInfo[0]), name, sizeof(name));
    format(strtest,256,"[TEST] Du wolltest $%d an %s (%d) überweisen!", strval(WeisInfo[1]), name, strval(WeisInfo[0]));
    SendClientMessage(playerid,0x00EE00FF,strtest);
    }
    }
    }
    }
    else
    {
    if(GetPlayerVirtualWorld(playerid) == 1)
    {
    ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Los Santos Bank","Konto erstellen\nFinanzen\nAbheben oder Einzahlen\nÜberweisen","Weiter","Abbrechen");
    }
    if(GetPlayerVirtualWorld(playerid) == 2)
    {
    ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"San Fierro Bank","Konto erstellen\nFinanzen\nAbheben oder Einzahlen\nÜberweisen","Weiter","Abbrechen");
    }
    if(GetPlayerVirtualWorld(playerid) == 3)
    {
    ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Las Venturas Bank","Konto erstellen\nFinanzen\nAbheben oder Einzahlen\nÜberweisen","Weiter","Abbrechen");
    }
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von Simon ()

  • Beim Überfliegen bin ich mir unklar ob ich das gewünschte Ergebnis richtig verstanden habe.


    Aber ein Ansatz:


    Anstelle dieser Zeile "split(inputtext, WeisInfo, ' ');"



    new user, betrag;
    sscanf(inputtext,"ud",user,betrag);
    if(IsPlayerConnected(user))
    {
    if(betrag>0)
    {
    // ...
    }
    else
    {
    // error betrag
    }
    }
    else
    {
    // error user
    }


    Möcht jetzt nicht allzu viel wiederholen, was die jeweiligen Bezeichner etc. machen kannst dem Thread entnehmen.

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax