Beiträge von Kaliber

    Was ist das Problem?

    Dein Stack ist nur begrenzt groß.


    Wenn du Speicher in einer Funktion (auch ein Befehl steht in einer Funktion) reservierst mit z.B. new test[5000]; werden 5000*4 Bytes im Stack alloziiert. Und dann kann es zu einer Stack / Heap Kollission kommen.
    Deshalb #pragma dynamic was deinen Stack & deinen Heap um eine bestimmte Anzahl an Bytes vergrößert :)


    Allerdings sollte das nicht notwendig sein...schau doch mal wo du große Arrays stehen hast..eventuell hast du sie unnötig groß gemacht bzw dich um eine 0 oder so vertippt ^^


    Warum finden voids in PAWN bzw. in SA-MP Scripts nie Verwendung? Sind doch super praktisch.

    Es gibt weder void noch int in Pawn.


    Das führt er bei dir nur aus, weil es vom Compiler ignoriert wird, da das in der Sektion #if defined filterscript steht und dies nirgends definiert wurde, also wird der komplette Codeblock ignoriert ^^


    Zudem gibt es leider nicht direkte Pointer in Pawn ^^


    ...kopieren ohne Gehirn funktioniert halt nicht immer :rolleyes:


    Einfach +1 am Ende rechnen? Nein oder ?

    Nein, das würde ja keinen Sinn machen xD



    Das return 1; in der Schleife..sorgt übrigens dafür, dass das nur an 1ne Person gesendet wird ^^

    Hatte jemand schon diesen Fehler und kann da weiter helfen?

    Jau, das ein Bug in SA:MP. Ist eine spezielle Art des Timebugs xD


    Tritt genau dann auf, wenn du während du in einem Auto bist, gespawnt wirst :rolleyes:


    Das bedeutet, wenn du SpawnPlayer(playerid); und sich dieser Spieler in einem Auto befindet...landet er da...
    Lösung...slap den spieler kurz hoch..oder setz ihn kurz ans Ende der Map oder an den 0 Punkt..what ever und dann lass ihn erst spawnen :)

    Deine ganzen Varianten sind identisch.


    Du musst wissen, bevor deine .pwn Datei zu einer .amx Datei wird, wird dein Skript kompiliert.


    Und bevor das passiert, kommt der pre-kompiler und verarbeitet deine #define.


    Und zwar werden diese einfach ersetzt:



    //Variante 1
    new x;
    printf("%d",x);


    //Variante 2
    #define ROFL "%d",x
    new x;
    printf(ROFL);


    Nach dem pre-compiler wird Variante 2 zu Variante 1.


    Insofern, sparst du mit einem #define meistens nur Schreibarbeit und machst es eventuell ein wenig übersichtlicher, wenn du es richtig einsetzt.


    und es ist egal wie du bzw ob du Klammern setzt und Umbrüche lässt. Das wird so oder so alles entfernt während des compilen und umgewandelt :)


    Das dient alles lediglich der Übersicht, macht aber keinen "Ressourcen" unterschied :)