[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
  • Ich bin davon ausgegangen, dass du da noch mehr machst/hast, vor allem deswegen, weil du das Textdraw dort auch noch nicht entfernst. Egal.
    An sich fehlt da nur das return in der if-Ebene:
    forward CountDownObjekte(playerid, count);
    public CountDownObjekte(playerid, count)
    {
    count--;
    if(count <= 0)
    {
    KillTimer(countTimer);
    countTimer = -1;
    //Hier die Objekte erstellen
    gObj[0] = CreateObject(1498,1866.485,-2496.830,5047.411,0.000,0.000,36.199,300.000);
    SetObjectMaterial( gObj[0], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
    SetObjectMaterialText(gObj[0], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
    gObj[1] = CreateObject(1498,1841.824,-2495.508,5047.339,0.000,0.000,335.900,300.000);
    SetObjectMaterial( gObj[1], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
    SetObjectMaterialText(gObj[1], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
    TextDrawHideForPlayer(playerid, Textdraw0);
    return 1;
    }
    new str[16];
    format(str, sizeof(str), "Countdown: %d", count);
    TextDrawSetString(Textdraw0, str);
    TextDrawShowForPlayer(playerid, Textdraw0);
    countTimer = SetTimerEx("CountDownObjekte", 1000, false, "dd", playerid, count);
    return 1;
    }


    Zwecks den Markierungen:
    Darfst du gerne machen. Falls ich es mal übersehe, einfach eine PN mit dem Link schicken. ;)

  • Jeffry:


    Funktioniert danke, und ja ich habe noch eine Menge vor nur mache ich das gerne alles Schritt für Schritt um später bei Problemen besser erkennen zu können was ich falsch verändert habe etc.


    Ich habe nirgendswo TextdrawDestroy drinne, doch ist der Countdown vorbei sehe ich ihn nicht immer ( so solls auch sein). Sollte ich das trotzdem einfügen oder kann das zu Problemen führen?


    Mit freundlichen Grüßen
    JustMe.77 8)

  • tayson87:

    Zitat

    Die Größe auf der X[&Y]-Achse (links/rechts), folgt dem selben 640x480 Raster wie TextDrawCreate.


    Wenn du 0.25 nimmst, dann ist dein Textdraw wirklich extrem klein.


    Stell dir vor dein Bildschirm ist 640x480 Pixel groß. Wenn das Textdraw über ein zehntel der Breite geht, dann trägst du 64 für X ein und je nach Höhe das entsprechende, zum Beispiel 20.0.

  • Jeffry:


    Ja, ich dachte mir nur das dieses Textdraw mehrmals erstellt wird sobald ich jedes mal erneut den Countdown starte.


    Ich benutze es zurzeit als FilterScript, ich denke ich werde das zu OnFilterScriptExit hinzufügen.


    Habe mal danach gesucht doch nur was für OnPlayerDisconnect gefunden, ich möchte aber das dass ganze beim entladen des Filterscript gelöscht wird doch kenne die Funktion nicht.


    Die hier ist falsch oder? Denn ich bekomme Errors.


    TextDrawDestroy(textdraw[playerid]);
    return 1;


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Funktioniert gut. Hatte gedacht OnPlayerConnect und OnFilterScript Init wären identisch..


    Wie dem auch sei, mein nächster Schritt ist ein Sound zu adden der sich dann jede Sekunde beim Countdown abspielt. Auch hier weiß ich nicht ob es einen gibt der standart dafür genutzt wird, aber ich meine diesen Sound den Server meistens verwenden wenn z.B ein Rennen gestartet wird und dann 3, 2, 1 etc kommt.


    Weißt du eventuell welchen ich meine oder gibt es da irgendeine Liste mit den Sound IDs?


    Edit:


    Ich habs selber gefunden, ich denke es ist der hier. SOUND_RACE_321 1056.


    Nur muss ich nur noch wissen mit welcher Funktion ich ein Sound abspielen lasse und wo genau das hinkommt..


    Mit freundlichen Grüßen
    JustMe.77 8)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Funktioniert, nur möchte ich ja 2 Sounds abspielen lassen einmal den Timer und DANACH den GO Sound. Doch die spielen sich bei mir beide gleichzeitig ab, was mache ich falsch?


    PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0); //Timer - Sound
    PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); //GO - Sound


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Hilft nicht, habe es so gemacht wie du wolltest.



    forward CountDownObjekte(playerid, count);
    public CountDownObjekte(playerid, count)
    {
    count--;
    if(count <= 0)
    {
    KillTimer(countTimer);
    countTimer = -1;
    PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); //GO - Sound
    //Hier die Objekte erstellen
    gObj[0] = CreateObject(1498,1866.485,-2496.830,5047.411,0.000,0.000,36.199,300.000);
    SetObjectMaterial( gObj[0], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
    SetObjectMaterialText(gObj[0], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
    gObj[1] = CreateObject(1498,1841.824,-2495.508,5047.339,0.000,0.000,335.900,300.000);
    SetObjectMaterial( gObj[1], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
    SetObjectMaterialText(gObj[1], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
    TextDrawHideForPlayer(playerid, Textdraw0);
    return 1;
    }
    new str[16];
    format(str, sizeof(str), "Countdown: %d", count);
    TextDrawSetString(Textdraw0, str);
    PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0); //Timer - Sound
    TextDrawShowForPlayer(playerid, Textdraw0);
    countTimer = SetTimerEx("CountDownObjekte", 1000, false, "dd", playerid, count);
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Ach tut mir Leid das funktioniert. Ich hatte mein FilterScript unbennannt deswegen hat das Reloaden auf dem Server nichts gebracht :D


    Jetzt funktionierts, aber während des testen kam ein Freund auf meinem Server und ich habe bemerkt das dieser Countdown nur für mich erstellt wird bzw. nur dem der den Befehl ausführt.
    Ich wollte das aber global haben, was muss ich ändern Jeffry: ?


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Dann musst du es für alle machen:
    forward CountDownObjekte(playerid, count);
    public CountDownObjekte(playerid, count)
    {
    count--;
    if(count <= 0)
    {
    KillTimer(countTimer);
    countTimer = -1;
    for(new i=0; i<MAX_PLAYERS; i++) PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0); //GO - Sound
    //Hier die Objekte erstellen
    gObj[0] = CreateObject(1498,1866.485,-2496.830,5047.411,0.000,0.000,36.199,300.000);
    SetObjectMaterial( gObj[0], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
    SetObjectMaterialText(gObj[0], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
    gObj[1] = CreateObject(1498,1841.824,-2495.508,5047.339,0.000,0.000,335.900,300.000);
    SetObjectMaterial( gObj[1], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
    SetObjectMaterialText(gObj[1], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
    TextDrawHideForAll(Textdraw0);
    return 1;
    }
    new str[16];
    format(str, sizeof(str), "Countdown: %d", count);
    TextDrawSetString(Textdraw0, str);
    for(new i=0; i<MAX_PLAYERS; i++) PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); //Timer - Sound
    TextDrawShowForAll(Textdraw0);
    countTimer = SetTimerEx("CountDownObjekte", 1000, false, "dd", playerid, count);
    return 1;
    }


    Ich habe den playerid Parameter noch drin gelassen, falls du damit noch etwas anfangen willst.

  • Jeffry:


    Danke dir, habe zwar gerade keine Möglichkeit zu testen (mache das Morgen) aber ich gehe mal davon aus das es klappt, danke dir sehr für deine große Hilfe.


    Ich arbeite Morgen an meinem System weiter wollte aber nebenbei Fragen ob es irgendwie einen Weg gibt die Mittle vom Bildschirm herauszufinden?
    Also habe vor den Timer Textdraw genau mittig zu platzieren.


    Mit freundlichen Grüßen
    JustMe.77 8)

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