textdraw und timer

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 bin gerade dabei ein Drogensystem zu machen.
    Man fährt zu dem einen punkt und kauft sich drogenpakete. diese drogenpakete muss man nun auf einer drogenfarm einlösen um drogen zu bekommen die mann anschließend verkaufen kann.


    Nun bin ich gerade dabei den dcmd /drogen abheolen ANZAHL und /drogen einlösen ANZAHL zu scripten.


    man soll dann ein marker bekommen wo man hinfahren soll. was mir bisher noch keine probleme macht.


    wenn er nun in dem marker ist soll eine zeit ablaufen und passend dazu wie bei einem speedo so ein balken der leer wird.


    das mache ich mit textdraws. nur ich kenne mich nicht so gut mit textdraws auf und weiß nicht wie ich das mit dem balken machen soll


    könnt ihr mir das an einem beispiel zeigen? bsp: /test und ein timer von 10 sekunden und ein passender balken der nach 10 sekunden leer ist.



    das wäre echt nett wenn mir da eine rhelfen könnte


    mfg
    Simon

  • ja ich werde es mal versuchen. aber habe es noch net so ganz verstanden.. muss mir das noch ma durchlesen.


    //edit:so habe mal ein versuch gemacht. der pawn compiller kackt ab.. er compillet nicht, er kackt ab. hier alles was mit dem drogensystem zu tun hat:


    enum Sinfo
    {
    Drogen,
    Drogenpakete,
    Drogenskill
    }
    new Spieler[MAX_PLAYERS][Sinfo];


    new drogenpackets[MAX_PLAYERS];
    new drugstime[MAX_PLAYERS];
    new drogencheck[MAX_PLAYERS];
    new Bar:drugs[MAX_PLAYERS] = CreateProgressBar(50.0, 300.0, _, _, 0xFFFF00FF, 20.0);



    if(dialogid == DIALOG_REGIS)
    {
    if(response == 1)
    {
    new Spielerdatei[256];
    new SpielerName[MAX_PLAYER_NAME];
    Spieler[playerid][Drogen] = 0;
    Spieler[playerid][Drogenpakete] = 0;
    Spieler[playerid][Drogenskill] = 1;
    dini_IntSet(Spielerdatei,"Drogen",Spieler[playerid][Drogen]);
    dini_IntSet(Spielerdatei,"Drogenpakete",Spieler[playerid][Drogenpakete]);
    dini_IntSet(Spielerdatei,"Drogenskill",Spieler[playerid][Drogenskill]);
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Du musst dich schon registrieren um hier zu Spielen!");
    Kick(playerid);
    }
    }
    return 1;
    }


    public Anmelden(playerid)
    {
    new Spielerdatei[256];
    new SpielerName[MAX_PLAYER_NAME];
    Spieler[playerid][Drogen] = dini_Int(Spielerdatei,"Drogen");
    Spieler[playerid][Drogenpakete] = dini_Int(Spielerdatei,"Drogenpakete");
    Spieler[playerid][Drogenskill] = dini_Int(Spielerdatei,"Drogenskill");
    return 1;
    }


    public Update(playerid)
    {
    new Spielerdatei[256];
    new SpielerName[MAX_PLAYER_NAME];
    dini_IntSet(Spielerdatei,"Drogen",Spieler[playerid][Drogen]);
    dini_IntSet(Spielerdatei,"Drogenpakete",Spieler[playerid][Drogenpakete]);
    dini_IntSet(Spielerdatei,"Drogenskill",Spieler[playerid][Drogenskill]);
    return 1;
    }


    dcmd_drogen(playerid,params[])
    {
    new s[10], anzahl;
    if(sscanf(params, "sd", s, anzahl))
    {
    return SendClientMessage(playerid,0xFF0000FF,"Benutzte /drogen Abholen/Einlösen Anzahl");
    }
    if(gTeam[playerid] != 4)
    {
    return 0;
    }
    else
    {
    if(!strcmp(s,"abholen",true))
    {
    if(IsPlayerInRangeOfPoint(playerid,3.5,2660.4912,-1589.9127,14.0197))
    {
    if(anzahl+Spieler[playerid][Drogenpakete]>Spieler[playerid][Drogenskill]*10 || anzahl <= 0)
    {
    new str[256];
    format(str,sizeof(str),"Du kannst mit Skill %d maximal %d drogenpakete tragen!",Spieler[playerid][Drogenskill], Spieler[playerid][Drogenskill]*10);
    return SendClientMessage(playerid,0xFF0000FF,str);
    }
    else
    {
    drogenpackets[playerid] = anzahl;
    new str[256];
    format(str,sizeof(str),"Du hast %d Pakete bestellt, begebe dich zum makierten Punkt um sie abzuholen!", anzahl);
    SendClientMessage(playerid,0x00EE00FF,str);
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,2683.3813,-1561.6362,21.8555,5);
    drogencheck[playerid] = 1;
    }
    }
    }
    }
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    if(drogencheck[playerid] == 1)
    {
    SendClientMessage(playerid,0xFFFF00FF,"Deine Drogenbestellung kommt...");
    drogencheck[playerid] = 0;
    SetTimerEx("drogenabholen",1000,0,"i",playerid);
    TogglePlayerControllable(playerid,0);
    drugstime[playerid] = 20
    SetProgressBarValue(drugs[playerid], drugstime[playerid]);
    UpdateProgressBar(drugs[playerid], playerid);
    ShowProgressBarForPlayer(playerid, drugs[playerid])
    }
    return 1;
    }


    public drogenabholen(playerid)
    {
    if(drugstime[playerid] >= 0)
    {
    drugstime[playerid]--;
    SetProgressBarValue(drugs[playerid], drugstime);
    UpdateProgressBar(drugs[playerid], playerid);
    }
    else
    {
    DestroyProgressBar(drugs[playerid]);
    TogglePlayerControllable(playerid,1);
    DisablePlayerCheckpoint(playerid);
    new str[256]
    format(str,sizeof(str),"Du erhälts %d Drogenpakete, Löse sie auf der Drogenfarm ein!", drogenpackets[playerid]);
    SendClientMessage(playerid,0x00EE00FF,str);
    Spieler[playerid][Drogenpakete] = drogenpackets[playerid];
    drogenpackets[playerid] = 0;
    Update(playerid):
    }
    return 1;
    }


    Ich weiß nicht ob da ein tippfehler drinne ist oder ein richtig schlimmer fehler.. das habe ich jetzt mal eben schnell gemacht, da kann das gut sein das da einiges falsch ist


    wenn mir einer helfen könnte wäre es echt net.

    Einmal editiert, zuletzt von Simon ()

  • editierregel nicht beachtet!
    if(dialogid == DIALOG_REGIS)
    {
    if(response == 1)
    {
    new Spielerdatei[256];
    new SpielerName[MAX_PLAYER_NAME];
    Spieler[playerid][Drogen] = 0;
    Spieler[playerid][Drogenpakete] = 0;
    Spieler[playerid][Drogenskill] = 1;
    dini_IntSet(Spielerdatei,"Drogen",Spieler[playerid][Drogen]);
    dini_IntSet(Spielerdatei,"Drogenpakete",Spieler[playerid][Drogenpakete]);
    dini_IntSet(Spielerdatei,"Drogenskill",Spieler[playerid][Drogenskill]);
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Du musst dich schon registrieren um hier zu Spielen!");
    Kick(playerid);
    }

    return 1;
    }

  • was habe ich nicht beachtet???


    //edit: der fehler liegt in dieser zeile: new Bar:drugs[MAX_PLAYERS] = CreateProgressBar(50.0, 300.0,_, _, 0xFFFF00FF, 20.0);


    aber was ist da falsch? habe es so wie es in dem tut steht.

    Einmal editiert, zuletzt von Simon ()

  • Das kannst du nicht in einem Zug erstellen.Zum einen hättest du sowieso nur eine ProgressBar erstellt,zum anderen ist es nicht möglich im Kopf zu nutzen.
    new Bar:drugs[MAX_PLAYERS];
    // OnPlayerConnect()
    drugs[playerid] = CreateProgressBar(50.0, 300.0,_, _, 0xFFFF00FF, 20.0);