Subtrahieren

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
    • Offizieller Beitrag

    Moin,
    mein Textdraw arbeitet ganz gut, nur halt nicht immer. Wenn der Server neu gestartet ist, klappt es immer solange nur ein Spieler online ist, aber sobald mehrere Spieler da sind, erhöht er die Variable im Textdraw immer um 2.
    Der Code, sobald ein Report an die Admins gesendet wird:


    for(new i=0;i<MAX_PLAYERS;i++) { if(GetPVarInt(i,"Admin") > 0) { Report -= 1; format(str,144,"offene Reports: %d",Report); TextDrawSetString(Textdraw1,str); TextDrawShowForPlayer(i,Textdraw1); } }


    Dasselbe ist beim Report öffnen, nur da steht halt:

    Report -= 1;


    Wo liegt der Fehler?

    MFG

  • An dem subtrahieren liegt es nicht, sondern eher an einem Logik Fehler:


    new idx = 0;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(GetPVarInt(i,"Admin") > 0)
    {
    if(idx == 0)
    {
    Report -= 1;
    }
    idx++;
    format(str,144,"offene Reports: %d",Report);
    TextDrawSetString(Textdraw1,str);
    TextDrawShowForPlayer(i,Textdraw1);
    }
    }


    Der Fehler war, da es eine Globale Variable ist und wenn mehrere Admins online sind, dann wird da immer -x abgezogen.
    x = Anzahl der Admins ;)


    mfg. :thumbup:


    //Edit: Absatz

    ast2ufdyxkb1.png


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

    • Offizieller Beitrag

    Klappt leider nicht :/

  • müsste aber, schick mal mehr Code...


    und achte bitte beim Einfügen darauf, dass du oben neben "Editor", "Quellcode" verwendest !


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

    • Offizieller Beitrag

    Ist viel unnützes, nicht wundern ^^


    Wenn ein Spieler einen Report abgesendet hat:

    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(GetPVarInt(i,"Admin") > 0)
    {
    format(str,144,"[Report] %s hat einen Report eingesendet: %s",PlayerName[playerid],inputtext);
    SCM(i,COLOR_YELLOW,str);
    SCM(i,COLOR_YELLOW,"[Report] Mit /oreport kannst du den Report öffnen");
    if(idx == 0)
    {
    Report += 1;
    }
    idx ++;
    TextDrawHideForPlayer(i,Textdraw1);
    format(str,144,"offene Reports: %d",Report);
    TextDrawSetString(Textdraw1,str);
    TextDrawShowForPlayer(i,Textdraw1);
    }
    }


    Annehmen eines Reports:
    COMMAND:oreport(playerid,params[])
    {
    new pID, string[128],text[256];
    if(GetPVarInt(playerid,"Admin") == 0) return SendClientMessage(playerid,COLOR_RED,"Du besitzt nicht die nötigen Rechte um diesen Befehl ausführen zu können!");
    if(Report == 0) return SCM(playerid,COLOR_RED,"Ist es ist kein Report offen!");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,COLOR_RED,"Benutze /oreport [id]!");
    SetPVarInt(playerid,"RP",pID);
    format(string,sizeof(string),"%s bearbeitet nun deinen Report.",PlayerName[playerid]);
    SendClientMessage(pID,COLOR_YELLOW,string);
    SendClientMessage(pID,COLOR_LILA,"Du bist nun im Support. Alles was du mit /rc schreibst, sieht der Supporter.");
    GetPVarString(pID,"RText",text,144);
    format(str,144,"Report von: %s ID: %i\nText: %s",PlayerName[pID],pID,text);
    ShowPlayerDialog(playerid,DIALOG_REPORTA,DIALOG_STYLE_INPUT,"Report",str,"Antworten","Schließen");
    SetPVarInt(playerid,"LiveChat",1);
    SetPVarInt(pID,"LiveChat",1);
    SetPVarInt(pID,"Report",0);
    SetPVarInt(playerid,"RPartner",pID);
    SetPVarInt(pID,"RPartner",playerid);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(GetPVarInt(i,"Admin") > 0)
    {
    format(str,144,"[Admin] %s hat den Report von %s geöffnet",PlayerName[playerid],PlayerName[pID]);
    SCM(i,COLOR_YELLOW,str);
    }
    }
    SetPlayerChatBubble(playerid,"Im Support",COLOR_LILA,50.0,999999999999999);
    SetPlayerChatBubble(pID,"Im Support",COLOR_LILA,50.0,999999999999999);
    TextDrawShowForPlayer(playerid,Textdraw0);
    TextDrawShowForPlayer(pID,Textdraw0);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(GetPVarInt(i,"Admin") > 0)
    {
    if(idx == 0)
    {
    Report -= 1;
    }
    idx ++;
    format(str,144,"offene Reports: %d",Report);
    TextDrawSetString(Textdraw1,str);
    TextDrawShowForPlayer(i,Textdraw1);
    }
    }
    Support[playerid] = 1;
    Support[pID] = 1;
    DeletePVar(playerid,"RText");
    return 1;
    }

  • du musst das new idx = 0; direkt über die Schleife da unten packen, so wie ich das gemacht hatte ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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