Schleife + Box bearbeiten

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 zusammen,


    ich habe hier schonmal angefangen ein "Bug melde" System zu bauen
    Das ganze funktioniert mit Textdraws


    Nun, habe ich 2 Punkte die ich hier gerne bearbeiten möchte



    1.


    Brauche ich hier eine Schleife, die alle "Bugs" durchgeht und guckt ob einer der Bugs 1-10 noch ohne text ist,
    ist dieser ohne Text soll er durch den Input ersetzt werden


    Anschlißend wird in der Großen BugBox (DIALOG_STYLE_MSGBOX) der Text eingefügt werden


    dazu hier der anfang der Schleife und unten die Box



    Spoiler anzeigen
    new Bugs[50][];
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    //Bug melden
    if(dialogid == DIALOG_BUG_MELDEN)
    {

    if(strlen(inputtext)>10)
    {
    for(new i=0; i<10; i++);
    {
    if(Bugs[i][%d] <
    }
    }
    else
    {
    SendClientMessage(playerid,RED,"ERROR:Bugmeldung war nicht erfolgreich -> bitte verwende mindestens 10 Zeichen!");
    ShowPlayerDialog,DIALOG_BUG_MELDEN,"Bug melden","Bitte gebe eine genaue Beschreibung des Bugs an!","Bug absenden","Bugmeldung abbrechen");
    }
    return 1;


    Die box

    Spoiler anzeigen
    ocmd:showbugs(playerid,params[])
    {
    if(!isAdmin(playerid,2)) return SendClientMessage(playerid,RED,"Nur Admins können gemeldete Bugs sehen!");
    if(Bugs !>-1 ) return SendClientMessage(playerid,RED,"Es gibt keine gemeldeten Bugs");


    format(string,sizeof(string),"Bug 1:%d \nBug 2: %d\nBug 2: %d\nBug 2: %d\nBug 5: %d\nBug 6: %d\nBug 7: %d\nBug 8: %d",
    ShowPlayerDialog(playerid,DIALOG_SHOW_BUGS,"DIALOG_STYLE_MSGBOX","Bug Übersicht",string,"OK","");
    return 1;
    }



    2. Soll sich bei einer Bugmeldung die 0 + 1 erhöhen und halt wenn ich dann die buglöschen funktion geschrieben habe der Bug um -1 gesetzt werden aber auch der Text soll gelöscht werden


    Wäre toll wenn mir da jmd hilft


    MFG

  • Wie in PN abgesprochen, hier der Beispielcode, von dem, was du bis jetzt vorgeschlagen hast:


    Oben unter die Includes:
    #define MAX_BUGS 10
    #define MAX_BUG_LEN 64


    new gBugs[MAX_BUGS][MAX_BUG_LEN]; //gBugs = >g<lobale Variable >Bugs<
    new gBugCount;


    OnDialogResponse:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    //Bug melden
    if(dialogid == DIALOG_BUG_MELDEN)
    {
    if(strlen(inputtext) >= 10)
    {
    for(new i=0; i<MAX_BUGS; i++)
    {
    if(strlen(Bugs[i]) < 10)
    {
    format(Bugs[i], MAX_BUG_LEN, inputtext);
    SendClientMessage(playerid, 0xFFFFFFFF, "Bug gemeldet. Danke!");
    gBugCount++; //Ein Bug mehr
    return 1; //Es wird beendet, Bug ist eingetragen
    }
    }
    SendClientMessage(playerid, 0xFF0000FF, "ERROR: Es ist leider kein Platz für einen Bug mehr frei!.");
    }
    else
    {
    SendClientMessage(playerid,RED,"ERROR: Bugmeldung war nicht erfolgreich -> bitte verwende mindestens 10 Zeichen!");
    ShowPlayerDialog(playerid, DIALOG_BUG_MELDEN, DIALOG_STYLE_INPUT, "Bug melden","Bitte gebe eine genaue Beschreibung des Bugs an!", "Senden", "Abbrechen");
    }
    return 1;
    }
    return 0;
    }


    Und das ist der Befehl:

    ocmd:showbugs(playerid,params[])
    {
    if(!isAdmin(playerid,2)) return SendClientMessage(playerid,RED,"Nur Admins können gemeldete Bugs sehen!");
    if(gBugCount <= 0) return SendClientMessage(playerid,RED,"Es gibt keine gemeldeten Bugs.");
    new string[MAX_BUGS*(MAX_BUG_LEN+20)];
    for(new i=0; i<MAX_BUGS; i++)
    {
    if(strlen(Bugs[i]) < 10)
    {
    format(string, sizeof(string), "%sBug %d: %s\n", string, i, Bug[i]);
    }
    }
    ShowPlayerDialog(playerid,DIALOG_SHOW_BUGS,DIALOG_STYLE_MSGBOX,"Bug Übersicht",string,"OK","");
    return 1;
    }


    Ich habe versucht weitgehend das Prinzip das du angefangen hast beizubehalten.
    Bis in drei Wochen dann, gute Fahrt und schönen Urlaub! :)

  • Super, habe das eben noch eingefügt ->


    wenn ich jetzt einen Bug löschen möchte
    dann muss ich ja mit sscanf abfragen welche Bugnummer gelöscht wird und dementsprechend auch den Text löschen



    habe hier mal angefangen den Code zu schreiben


    if(sscanf,params,"i",Bug[]) return SendClientMessage(playerid,RED,"Verwendung: /delbug [Bugnummer 1-10]");


    wie muss ich dort die [ ] ausfüllen? die wird ja ersetzt mit der Bugnummer




    mein gesamtcode sieht so aus


    Spoiler anzeigen
    ocmd:delbug(playerid,params[])
    {
    if(!isAdmin(playerid,8)) return SendClientMessage(playerid,RED,"Bugs können nur vom Scripter gelöscht werden!");
    if(sscanf,params,"i",Bug[]) return SendClientMessage(playerid,RED,"Verwendung: /delbug [Bugnummer 1-10]");
    for(new i=0; i<MAX_BUGS; i++)
    {
    SendClientMessage(playerid,RED,"Du hast einen Bug erfolgreich gelöscht");

    }

    return 1;
    }


    nur wie setze ich den ausgewählten Bug jetzt auf den hier "" _> also ohne Text

  • ocmd:delbug(playerid,params[])
    {
    if(!isAdmin(playerid,8)) return SendClientMessage(playerid,RED,"Bugs können nur vom Scripter gelöscht werden!");
    new bug;
    if(sscanf(params,"i",bug)) return SendClientMessage(playerid,RED,"Verwendung: /delbug [Bugnummer 0-9]");
    if(bug < 0 || bug >= MAX_BUGS) return SendClientMessage(playerid,RED,"Der Bug existiert nicht.");
    if(strlen(gBugs[bug]) >= 10)
    {
    gBugs[bug] = "";
    SendClientMessage(playerid,RED,"Du hast einen Bug erfolgreich gelöscht.");
    }
    else SendClientMessage(playerid,RED,"Der Bug existiert nicht.");
    return 1;
    }