/setcash gibt allen Geld?

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
  • Hey ich hab da ein Befehl gebastelt aber der Befehl setzt von allen Accounts das Geld auf das was ich dem einen gesetzt habe.
    Wo ist da der Fehler? (Ich speicher auf MySQL)




    ocmd:setcash(playerid,params[])
    {
    if(!isAdmin(playerid,4))return SendClientMessage(playerid,COLOR_DRED,"Dein Adminrang ist zu niedrig!");
    new pID,cash,n1[128],n2[128];
    if(sscanf(params,"ui",pID,cash))return SendClientMessage(playerid,COLOR_GREY,"INFO: {00A5FF}/setcash {B3B3B3}[playerid] [geld]");
    sInfo[pID][geld]=cash;
    savePlayer(pID);
    format(n1,sizeof(n1),"Ein Admin hat dein Geld auf %i EUR gesetzt.",cash);
    format(n2,sizeof(n2),"Du hast das Geld von %s auf %i EUR gesetzt.",SpielerName(pID),cash);
    SendClientMessage(playerid,COLOR_DGREEN,n1);
    SendClientMessage(pID,COLOR_DGREEN,n2);
    return 1;
    }

    Mit freundlichen Grüßen,
    Derakar

  • Im hier gezeigten Code, ist kein Fehler.
    Überprüfe mal, "savePlayer" bzw. deine Speicherung.


  • savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //Speichern level,money
    new query[128];
    format(query,sizeof(query),"UPDATE user SET level='%i',geld='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],sInfo[playerid][geld],sInfo[playerid][alevel],sInfo[playerid][id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }

    Mit freundlichen Grüßen,
    Derakar

  • Was eventuell hilfreich sein würde ist wenn du auch abfragen würdest ob pID keine INVALID_PLAYER_ID ist


    if(pID==INVALID_PLAYER_ID)return Aktion;


    Und dann noch wieso nimmst du 2 strings ?


    Du kannst das ganze auch so machen:


    format(string,sizeof(string),"Ein Admin hat dein Geld auf %i EUR gesetzt.",cash);
    SendClientMessage(pID,COLOR_DGREEN,string);
    format(string(string),"Du hast das Geld von %s auf %i EUR gesetzt.",SpielerName(pID),cash);
    SendClientMessage(playerid,COLOR_DGREEN,string);


    Weil ich sehe auch keinen direkten Fehler warum der Fail auftritt
    Was ich vielmehr denke ist das du es dachtest das es gefailt hatte da du die String reihenfolge falsch gesetzt hast ;) Habe sie dir oben Berichtigt:


    format(n1,sizeof(n1),"Ein Admin hat dein Geld auf %i EUR gesetzt.",cash);
    format(n2,sizeof(n2),"Du hast das Geld von %s auf %i EUR gesetzt.",SpielerName(pID),cash);
    SendClientMessage(playerid,COLOR_DGREEN,n1);
    SendClientMessage(pID,COLOR_DGREEN,n2);


    n1=Ein Admin hat dein Geld auf %i Eur gesetzt aber du lässt das an den admin senden ;)
    n2=Du hast das Geld von %s auf %i EUR gesetzt. Das lässt du an die pID senden :)

  • Also bisher hat es noch nicht Funktioniert.
    Bisher ist das so wenn ID 0 das Geld gesetzt wird bekommen alle das Geld angezeigt aber in der Datenbank wird das richtig angegeben also wenn ich jemanden das Geld setze ist das in der Datenbank angegeben aber es wird nicht auf das Textdraw ausgegeben.


    Hier der Geldtimer:



    public GeldTimer(playerid)
    {
    new string[124];
    new vgeld[MAX_PLAYERS];
    vgeld[playerid] = sInfo[playerid][cash];
    format(string, sizeof(string), "%d ~g~EUR", vgeld[playerid]);
    TextDrawSetString(Geldlabel,string);
    }


    EDIT:
    Hier noch der Befehl ich hatte einen MySQL Error und hab den jetzt weggemacht



    ocmd:setcash(playerid,params[])
    {
    if(!isAdmin(playerid,4))return SendClientMessage(playerid,COLOR_DRED,"Dein Adminrang ist zu niedrig!");
    new pID,cashstring,string[128];
    if(sscanf(params,"ui",pID,cashstring))return SendClientMessage(playerid,COLOR_GREY,"INFO: {00A5FF}/setcash {B3B3B3}[playerid] [cash]");
    sInfo[pID][cash]=cashstring;
    savePlayer(pID);
    format(string,sizeof(string),"Ein Admin hat dein Geld auf %i EUR gesetzt.",cashstring);
    SendClientMessage(pID,COLOR_DGREEN,string);
    format(string,sizeof(string),"Du hast das Geld von %s auf %i EUR gesetzt.",SpielerName(pID),cashstring);
    SendClientMessage(playerid,COLOR_DGREEN,string);
    return 1;
    }

    Mit freundlichen Grüßen,
    Derakar

  • Heißst? Das muss für jeden einzelnen angezeigt werden? Und wie?


    EDIT:
    bzw. wo?


    EDIT2:
    Das ist Das Textdraw unter OnGameModeInit


    //__________________________ TextDraw Geld __________________________
    Geldlabel = TextDrawCreate(496.000000, 79.000000, "Geld");
    TextDrawBackgroundColor(Geldlabel, -1);
    TextDrawFont(Geldlabel, 2);
    TextDrawLetterSize(Geldlabel, 0.500000, 2.100000);
    TextDrawColor(Geldlabel, -1);
    TextDrawSetOutline(Geldlabel, 0);
    TextDrawSetProportional(Geldlabel, 1);
    TextDrawSetShadow(Geldlabel, 0);
    TextDrawUseBox(Geldlabel, 1);
    TextDrawBoxColor(Geldlabel, 255);
    TextDrawTextSize(Geldlabel, 640.000000, 0.000000);
    SetTimer("GeldTimer",1000,1);


    BoxG1 = TextDrawCreate(496.000000, 77.000000, " ");
    TextDrawBackgroundColor(BoxG1, 255);
    TextDrawFont(BoxG1, 1);
    TextDrawLetterSize(BoxG1, 0.500000, -0.300000);
    TextDrawColor(BoxG1, -1);
    TextDrawSetOutline(BoxG1, 0);
    TextDrawSetProportional(BoxG1, 1);
    TextDrawSetShadow(BoxG1, 1);
    TextDrawUseBox(BoxG1, 1);
    TextDrawBoxColor(BoxG1, -1);
    TextDrawTextSize(BoxG1, 638.000000, 0.000000);


    BoxG2 = TextDrawCreate(496.000000, 77.000000, "L");
    TextDrawBackgroundColor(BoxG2, 255);
    TextDrawFont(BoxG2, 1);
    TextDrawLetterSize(BoxG2, 0.000000, 2.599999);
    TextDrawColor(BoxG2, -1);
    TextDrawSetOutline(BoxG2, 0);
    TextDrawSetProportional(BoxG2, 1);
    TextDrawSetShadow(BoxG2, 1);
    TextDrawUseBox(BoxG2, 1);
    TextDrawBoxColor(BoxG2, -1);
    TextDrawTextSize(BoxG2, 491.000000, 0.000000);


    BoxG3 = TextDrawCreate(494.000000, 101.000000, " ");
    TextDrawBackgroundColor(BoxG3, 255);
    TextDrawFont(BoxG3, 1);
    TextDrawLetterSize(BoxG3, 0.500000, -0.300000);
    TextDrawColor(BoxG3, -1);
    TextDrawSetOutline(BoxG3, 0);
    TextDrawSetProportional(BoxG3, 1);
    TextDrawSetShadow(BoxG3, 1);
    TextDrawUseBox(BoxG3, 1);
    TextDrawBoxColor(BoxG3, -1);
    TextDrawTextSize(BoxG3, 638.000000, 0.000000);


    BoxG4 = TextDrawCreate(646.000000, 77.000000, "L");
    TextDrawBackgroundColor(BoxG4, 255);
    TextDrawFont(BoxG4, 1);
    TextDrawLetterSize(BoxG4, 0.000000, 2.599999);
    TextDrawColor(BoxG4, -1);
    TextDrawSetOutline(BoxG4, 0);
    TextDrawSetProportional(BoxG4, 1);
    TextDrawSetShadow(BoxG4, 1);
    TextDrawUseBox(BoxG4, 1);
    TextDrawBoxColor(BoxG4, -1);
    TextDrawTextSize(BoxG4, 636.000000, 0.000000);

    Mit freundlichen Grüßen,
    Derakar

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • Eigentlich ja schon, ich habe jedoch auch einmal ein Bug gehabt, dass ich nur den Namen eingeben konnte. Eventuell lag es am Plugin oder so. Jedoch habe ich das Problem nicht mehr.

  • Verwendung: Textdraw[playerid]

    Wo muss das jetzt hin? Muss das mit da hin?
    Geldlabel[playerid] = TextDrawCreate(496.000000, 79.000000, "Geld");
    Ich hab das jetzt so gemacht



    new Text:Geldlabel[MAX_PLAYERS];
    new Text:BoxG1[MAX_PLAYERS];
    new Text:BoxG2[MAX_PLAYERS];
    new Text:BoxG3[MAX_PLAYERS];
    new Text:BoxG4[MAX_PLAYERS];


    EDIT:
    Also ich hab jetzt das mit PlayerTestDraw gemacht aber jetzt updatet der Timer nicht.
    hier das was ich Verändert habe:



    //Geld
    new PlayerText:Geldlabel[MAX_PLAYERS];
    new PlayerText:BoxG1[MAX_PLAYERS];
    new PlayerText:BoxG2[MAX_PLAYERS];
    new PlayerText:BoxG3[MAX_PLAYERS];
    new PlayerText:BoxG4[MAX_PLAYERS];



    //OnGameModeInit
    SetTimer("GeldTimer",1000,1);




    //__________________________ TextDraw Geld __________________________
    Geldlabel[playerid] = CreatePlayerTextDraw(playerid,496.000000,79.000000,"Geld");
    PlayerTextDrawBackgroundColor(playerid,Geldlabel[playerid],-1);
    PlayerTextDrawFont(playerid,Geldlabel[playerid],2);
    PlayerTextDrawLetterSize(playerid,Geldlabel[playerid],0.500000,2.100000);
    PlayerTextDrawColor(playerid,Geldlabel[playerid], -1);
    PlayerTextDrawSetOutline(playerid,Geldlabel[playerid],0);
    PlayerTextDrawSetProportional(playerid,Geldlabel[playerid],1);
    PlayerTextDrawSetShadow(playerid,Geldlabel[playerid],0);
    PlayerTextDrawUseBox(playerid,Geldlabel[playerid],1);
    PlayerTextDrawBoxColor(playerid,Geldlabel[playerid],255);
    PlayerTextDrawTextSize(playerid,Geldlabel[playerid],640.000000,0.000000);


    BoxG1[playerid] = CreatePlayerTextDraw(playerid,496.000000, 77.000000," ");
    PlayerTextDrawBackgroundColor(playerid,BoxG1[playerid], 255);
    PlayerTextDrawFont(playerid,BoxG1[playerid], 1);
    PlayerTextDrawLetterSize(playerid,BoxG1[playerid], 0.500000, -0.300000);
    PlayerTextDrawColor(playerid,BoxG1[playerid], -1);
    PlayerTextDrawSetOutline(playerid,BoxG1[playerid], 0);
    PlayerTextDrawSetProportional(playerid,BoxG1[playerid], 1);
    PlayerTextDrawSetShadow(playerid,BoxG1[playerid], 1);
    PlayerTextDrawUseBox(playerid,BoxG1[playerid], 1);
    PlayerTextDrawBoxColor(playerid,BoxG1[playerid], -1);
    PlayerTextDrawTextSize(playerid,BoxG1[playerid], 638.000000, 0.000000);


    BoxG2[playerid] = CreatePlayerTextDraw(playerid,496.000000, 77.000000, "L");
    PlayerTextDrawBackgroundColor(playerid,BoxG2[playerid], 255);
    PlayerTextDrawFont(playerid,BoxG2[playerid], 1);
    PlayerTextDrawLetterSize(playerid,BoxG2[playerid], 0.000000, 2.599999);
    PlayerTextDrawColor(playerid,BoxG2[playerid], -1);
    PlayerTextDrawSetOutline(playerid,BoxG2[playerid], 0);
    PlayerTextDrawSetProportional(playerid,BoxG2[playerid], 1);
    PlayerTextDrawSetShadow(playerid,BoxG2[playerid], 1);
    PlayerTextDrawUseBox(playerid,BoxG2[playerid], 1);
    PlayerTextDrawBoxColor(playerid,BoxG2[playerid], -1);
    PlayerTextDrawTextSize(playerid,BoxG2[playerid], 491.0, 0.0);


    BoxG3[playerid] = CreatePlayerTextDraw(playerid,494.0, 101.0, " ");
    PlayerTextDrawBackgroundColor(playerid,BoxG3[playerid], 255);
    PlayerTextDrawFont(playerid,BoxG3[playerid], 1);
    PlayerTextDrawLetterSize(playerid,BoxG3[playerid], 0.5, -0.3);
    PlayerTextDrawColor(playerid,BoxG3[playerid], -1);
    PlayerTextDrawSetOutline(playerid,BoxG3[playerid], 0);
    PlayerTextDrawSetProportional(playerid,BoxG3[playerid], 1);
    PlayerTextDrawSetShadow(playerid,BoxG3[playerid], 1);
    PlayerTextDrawUseBox(playerid,BoxG3[playerid], 1);
    PlayerTextDrawBoxColor(playerid,BoxG3[playerid], -1);
    PlayerTextDrawTextSize(playerid,BoxG3[playerid], 638.0, 0.0);


    BoxG4[playerid] = CreatePlayerTextDraw(playerid,646.0, 77.0, "L");
    PlayerTextDrawBackgroundColor(playerid,BoxG4[playerid], 255);
    PlayerTextDrawFont(playerid,BoxG4[playerid], 1);
    PlayerTextDrawLetterSize(playerid,BoxG4[playerid], 0.0, 2.599999);
    PlayerTextDrawColor(playerid,BoxG4[playerid], -1);
    PlayerTextDrawSetOutline(playerid,BoxG4[playerid], 0);
    PlayerTextDrawSetProportional(playerid,BoxG4[playerid], 1);
    PlayerTextDrawSetShadow(playerid,BoxG4[playerid], 1);
    PlayerTextDrawUseBox(playerid,BoxG4[playerid], 1);
    PlayerTextDrawBoxColor(playerid,BoxG4[playerid], -1);
    PlayerTextDrawTextSize(playerid,BoxG4[playerid], 636.0, 0.0);



    PlayerTextDrawHide(playerid, Geldlabel[playerid]);
    PlayerTextDrawHide(playerid, BoxG1[playerid]);
    PlayerTextDrawHide(playerid, BoxG2[playerid]);
    PlayerTextDrawHide(playerid, BoxG3[playerid]);
    PlayerTextDrawHide(playerid, BoxG4[playerid]);




    //Geld
    PlayerTextDrawShow(playerid, Geldlabel[playerid]);
    PlayerTextDrawShow(playerid, BoxG1[playerid]);
    PlayerTextDrawShow(playerid, BoxG2[playerid]);
    PlayerTextDrawShow(playerid, BoxG3[playerid]);
    PlayerTextDrawShow(playerid, BoxG4[playerid]);
    GeldTimer(playerid);




    public GeldTimer(playerid)
    {
    new string[124];
    new vgeld[MAX_PLAYERS];
    vgeld[playerid] = sInfo[playerid][cash];
    format(string, sizeof(string), "%d ~g~EUR", vgeld[playerid]);
    PlayerTextDrawSetString(playerid,Geldlabel[playerid],string);
    }

    Mit freundlichen Grüßen,
    Derakar

    Einmal editiert, zuletzt von Derakar ()

  • Also ich habe via MySQL ein Geldsystem geschrieben mit Textdraws. Dazu habe ich einen /setcash Befehl gemacht. So zu dem Zeitpunkt ist mein Problem, dass ich mir Geld setzen kann aber bei einem anderen geht das nicht.

    Mit freundlichen Grüßen,
    Derakar

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen