[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Yo, wie ändere ich die Zahl in die Anzahl der Spieler die sich in der Arena befinden?


    Habe hier ein Objekt mit folgendem Text:



    tmpobjid = CreateDynamicObject(19483, 1305.009155, -1367.589599, 13.762177, -0.000007, -0.000000, -89.999977, -1, -1, -1, 50.00, 50.00);
    SetDynamicObjectMaterialText(tmpobjid, 0, "< Spieler >\n {FF0000}13", 90, "Ariel", 20, 1, 0xFF000000, 0x00000000, 1);


    So sieht meine Spieler Variable aus:


    new paintballspieler = 0;


    Wie ändere ich das jetzt um, dass wenn 5 Spieler drin sind, die Zahl auf 5 gesetzt wird?


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Einfach jedes mal wenn jemand die Arena betritt oder verlässt mit format und SetDynamicObjectMaterialText den Text aktualisieren.
    Versuche es mal, ich denke du bekommst es hin.

  • Beitrag von reaL. ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Wieso wird mein OnPlayerDeath Callback nicht aufgerufen? (Filterscript)



    public OnPlayerDeath(playerid, killerid, reason)
    {



    print("OPD aufgerufen");
    new str[64];
    if(inRunde[playerid] == true)
    {
    tode[playerid]++;
    format(str, sizeof(str),"Tode: ~g~%d",tode[playerid]);
    PlayerTextDrawSetString(playerid, KDText[playerid][1], str);
    }



    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

    Einmal editiert, zuletzt von JustMe.77 ()

  • Komisch, dann ruf im Gamemode unter OnPlayerDeath doch einfach eine CallRemoteFunction auf ^^


    Kann dies leider nicht testen, da ich zu faul bin...das alles zu rekonstruieren :D

    ast2ufdyxkb1.png


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

  • Habe im SAMP Forum ja geschrieben das ich das vermeiden will, musste das jetzt aber machen weil ich keine andere Lösung habe, funktioniert übrigens.


    Edit:


    Noch ne Frage, wie zeige ich am besten die Zeit einer Runde an? Eine Runde geht beispielsweise 10 Minuten und die Textdraws sollen die Zeit anzeigen und immer runterzählen.
    Habe bisher nur ein Timer der nach 10 Minuten die Runde beendet.



    forward UpdatePaintBallInfo();
    public UpdatePaintBallInfo()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(paintballspieler < 1) //weniger als 1 Spieler
    {
    KillTimer(PaintBallEnde);
    timerstarted = false;
    RundeGestartet = false;
    }



    else if(paintballspieler > 0) //mehr als 1 Spieler
    {
    //PaintBallEnde = SetTimer("PaintballRundeVorbei", 15 * 60 * 1000, false);
    if(timerstarted == false)
    {
    PaintBallEnde = SetTimer("PaintballRundeVorbei", 5* 1000, false);
    }
    timerstarted = true;
    RundeGestartet = true;
    }
    }



    return 1;
    }


    Mein Zeit Textdraw



    PBText2 = TextDrawCreate(299.000000, 428.000000, "00:00");
    TextDrawBackgroundColor(PBText2, 255);
    TextDrawFont(PBText2, 2);
    TextDrawLetterSize(PBText2, 0.380000, 2.100000);
    TextDrawColor(PBText2, -1);
    TextDrawSetOutline(PBText2, 1);
    TextDrawSetProportional(PBText2, 1);
    TextDrawSetSelectable(PBText2, 0);


    Mit freundlichen Grüßen
    JustMe.77 8)

    Einmal editiert, zuletzt von JustMe.77 ()

  • Oh Gott...was soll diese Schleife da? 8|


    Die sorgt irgendwie..wenn du Pech hast, dass 500 Timer gestartet werden xD


    Wie prüfst du denn ob sich jemand im Paintball befindet :)

    ast2ufdyxkb1.png


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

  • Das mache ich mit dem oben geposteten Code xD


    So besser?



    forward UpdatePaintBallInfo();
    public UpdatePaintBallInfo()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(paintballspieler < 1) //weniger als 1 Spieler
    {
    KillTimer(PaintBallEnde);
    timerstarted = false;
    RundeGestartet = false;
    }



    else if(paintballspieler > 0) //mehr als 1 Spieler
    {
    RundeGestartet = true;
    }
    }



    return 1;
    }




    forward RoundTimer();
    public RoundTimer()
    {



    if(RundeGestartet == true)
    {
    if(timerstarted == false)
    {
    PaintBallEnde = SetTimer("PaintballRundeVorbei", 5* 1000, false);
    }
    timerstarted = true;



    }



    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Mach mal folgendes:



    Und ruf das im takt von 999ms auf :)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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