Beiträge von Kaliber

    Du packst alle modelids von den Objekten in ein Array (in der Reihenfolge, wie du sie ausliest..also rot sollte am 0. index, gelb am 1. usw stehen)


    C
    new neons[] = {18647, ...};
    
    
    //Und dann so:
    neon1[i] = CreateObject(neons[Neon[i]-1], 0, 0, 0, 0, 0, 0);
    neon2[i] = CreateObject(neons[Neon[i]-1], 0, 0, 0, 0, 0, 0);
    AttachObjectToVehicle(neon1[i], 0.94, 0, -0.48, 0, 0, 0);
    AttachObjectToVehicle(neon2[i], -0.94, 0, -0.48, 0, 0, 0);

    Hmm, interessant, ich mach nicht soviel mit Angular, aber probier mal:


    Also mal vorne weg, schau mal deine Deklaration an:



    new TrunkInvGetRowItem[128][MAX_PLAYERS][MAX_ROWS];


    und nutzen tust du sie so:


    TrunkInvGetRowItem[playerid][r]


    Naa fällt dir ein Fehler auf? :)


    Du nutzt dein Array, als ob du es so deklariert hättest:


    new TrunkInvGetRowItem[MAX_PLAYERS][MAX_ROWS][128];

    Ist es falsch strmid zu nutzen?

    Sagen wir mal nicht falsch, aber ungünstig.


    Besser wäre hier, wie du schon erwähnt hast format oder noch besser, da dein String hier konstant ist einfach direkt setzen lassen.


    Der Grund, warum dein Format nicht funktioniert ist, dass du sizeof so verwenden musst, wenn du die 3te Dimension abfragst: sizeof(TrunkInvGetRowItem[][])


    Aber wie schon gesagt, einfach direkt setzen ist ja kein Problem:


    TrunkInvGetRowItem[playerid][r] = "Margherita";

    kriege ich die Meldung dass dieser Befehl nicht existiert

    Das liegt daran, dass am Ende return 0; steht.



    Probiers mal so :)


    PS: Du kannst in den Schleifen auch die Variablen alle gleich nennen (nur so als Tipp) ist n bisschen übersichtlicher :)

    Stimmt jetzt nicht so ganz da man theoretisch Pakete an den Server senden kann mit denen man hupt

    ...klar...man kann so einiges. Kann auch eine Bot Armada draufpacken und alle hupen lassen, damit die Tore aufgehen, Mensch jetzt hab ichs dem Server aber gezeigt :D
    Zumal man auch durch das package sagen könnte, dass man online ist...


    In der 0.1 Version gab es auch mal einen Bug, dass gekickte Spieler immer noch Commands eingeben konnten haha :D


    Aber sind wir mal realistisch und bleiben bei normalem Code Flow.



    Hmm ka was Schuld ist aber es klappt nicht Pfffff

    Ja, wir haben es verstanden. Es geht darum, dass du diese print Statements setzt und es herausfindest.

    So macht dein Code mehr Sinn:



    IsPlayerConnected ist da komplett überflüssig, da der Spieler ja online sein muss..um zu hupen...wird für offline Spieler eher schwierig haha xD
    Und dann ein else if darauf anzuwenden..macht auch keinen Sinn...


    Achte mehr auf Code-Logik :)

    Weil es zu einem Fehler kommt und zwar geht die Schleife MAX_PLAYERS durch und nicht bis zum maximalen PizzaTextdraw.


    Und da sprengt das natürlich das Array.


    Aber lass mich dir noch weitere Dinge empfehlen:


    • Immer, wenn man switch benutzen kann, sollte man es unbedingt einer if-Abfrage vorziehen. (Aber war wahrscheinlich eh nur zum debuggen, anyway xD)
    • Wenn du das TextDraw gefunden hast undbedingt entweder return oder break nutzen, damit die Schleife nicht danach noch weiter läuft :)

    Die Schleife also einfach so schreiben:


    C
    for(new pi; pi<sizeof(pizzarow_td[]); pi++)

    PS: Sehr schöner Post! Guter Debug, gefällt mir! :)

    Hier mal ein Beispiel :)

    C
    //Oben im Skript
    new lastHotDog[MAX_PLAYERS];
    
    
    //Im Command ganz oben:
    if(lastHotDog[playerid] > gettime()) return SendClientMessage(playeird, -1, "* Sie können den Befehl noch nicht wieder verwenden!");
    
    
    //Im Command wenn er etwas bekommt:
    lastHotDog[playerid] = gettime()+10; //Nur alle 10 Sekunden

    Da du ja Dinge ausgibst bzw Clientseitig machst, kann der Header nicht nachträglich irgendwie noch darein geschoben werden.


    Nutze eine Clientseitige Weiterleitung wie z.B.:


    PHP
    echo '<meta http-equiv="refresh" content="15; url=index.html">';

    Die 15 steht für die Sekunden, wie lange gewartet werden soll.