Beiträge von Jeffry

    Das kannst du so machen:

    Ahh, so meinst du es! Eine ausführliche Erklärung ist immer hilfreich.


    Unter den Includes:

    C
    new bool:blockCountdown;


    Im Countdown Befehl:

    C
    if(blockCountdown) return SendClientMessage(playerid, 0xFF0000FF, "Error: Erst die Runde beenden.");
    blockCountdown = true;


    Dort wo die Objekte gelöscht werden:

    C
    blockCountdown = false;

    Das kannst du dann so machen:


    In der Datei schreibst du die Variablen dann einfach untereinander, also:

    Code
    33
    44
    55
    ...


    Daher auch diese Schleife mit \r und \n, damit der Zeilenumbruch nicht in der Variable steht.


    Alternativ kannst du das fread auch in eine while-Schleife packen, je nach dem was du vor hast.

    Hm...was ist denn, wenn du es so schreibst?

    Nur mal testweise.


    Schreibe in die Datei wieder nur "33", also ohne das Komma.
    Klappt es dann?

    Du solltest jetzt aber in der Lage sein, den /elock Befehl zu verwenden, um die Objekte zu entfernen.
    An dem Code, den du gepostet hast, kann ich nicht nachvollziehen, warum die Objekte zu Beginn schon da sind (Serverstart?), daher versuche es erst mal mit dem elock Befehl, die müssten dan weg gehen, dann kannst du den countdown starten, der die Objekte erstellt.

    Du musst eben im Hinterkopf behalten, dass alles was rein PAWN Code ist nur auf einem einzigen Kern laufen kann, selbst wenn du 8 Kerne á 3,5 GHz hast, dann kann nur ein Kern verwendet werden.
    Das beste ist, wenn man es ausgeglichen hält, heißt nicht nur alles auf die CPU hauen, aber auch nicht nur alles auf den RAM packen.

    C
    CMD:ecountdown(playerid,params[]) //Starts a countdown, after the countdown the Doors will be locked. (There is no command yet to unlock the doors).
    {
    	if(countTimer != -1) return SendClientMessage(playerid, RED, "ERROR: Countdown is already enabled.");
    	if(!params[0]) return SendClientMessage(playerid, 0xFF0055FF, "Type in a time.");
     	if(status) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nicht unlocked.");
    	new time = strval(params);
    	if(time < 10 || time > 500) return SendClientMessage(playerid, RED, "Type in a time from 10 to 500..");
    	countTimer = SetTimerEx("CountDownObjekte", 1000, false, "dd", playerid, time);
    	return 1;
    }



    Und die Deklaration:

    C
    new bool:status = true;


    Versuche es dann so.

    Das kannst du nicht vergleichen.
    Die Variable benötigt Arbeitsspeicher und die Schleife geht auf die CPU.


    Was allerdings grundsätzlich Sinn macht ist, die 500 von MAX_PLAYERS auf die tatsächliche Anzahl der Slots zu reduzieren, das spart massiv Arbeitsspeicher, vor allem wenn du gar nicht 500 Slots nutzt.

    Nimm das hier aus dem elock Befehl raus:
    static bool:status;
    und schreibe es unter die Includes als:
    new bool:status;


    Dann kannst du in dem countdown Befehl abfragen:

    Code
    if(!status) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nicht unlocked.");


    PS: Es wäre wesentlich sinnvoller, wenn du einen eigenen Thread erstellst, weil das keine kleinen Fragen mehr sind, mit so viel Code.

    Deine TextDrawTextSize (X) ist 0, sprich das Textdraw hat keine anklickbare Breite.


    Versuche es so:

    C
    TextDrawTextSize(LoginString[12], 50.00, 12.00);


    Gegebenenfalls musst du die Werte noch anpassen, die sind nur geschätzt.



    Grundsätzlich musst du die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. wiki.sa-mp.com/wiki/TextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.


    Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
    Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24.