Beiträge von Hagi

    Ja natürlich. Aber ich gehe mal nicht davon aus, dass er den abichtlich global deklariert hat.
    Mir ist das schon oft passiert, dass durch einen Semantikfehler in einer andere Funktion die dort verwendeten Variablen als global gesehen wurden, obwohl sie lokal gedacht waren.

    Naja kann ja nicht Sinn der Sache sein, die Variablen umzubenennen. Im Normalfall gehts ja auch, wenn gleiche Bezeichner in verschiedenen Funktionen sitzen oder nicht kollidieren können.

    Gut, aber du brauchst die Befehle ja. Wie gesagt, meist ist irgendwo ein anderer Fehler (wie oben beschrieben).


    Such mal bitte oberhalb der Zeile 1972 (also unterhalb :D you know 1-1972)nach den Bezeichnernamen in irgendwelchen Funktionen und check die auf Fehler.

    Und wenn du die Befehle auskommentierst, dann gehts?


    Ich habe das Problem auch manchma. Ich habe dann z.B. hinter einer id() ein ; gesetzt. Dadurch sieht der Compiler dass dann wohl irgendwie als global deklarierte Variablen an, sodass in folgenden deklarationen einer Variable mit dem gleichen Bezeichner ein Error auftritt.

    Du musst auch ne Abfrage machen


    stock isPlayerBallas(playerid)
    {
    if(klasse[playerid] ==1) return 1; // wenn er ballas ist
    return 0; // wenn er kein ballas ist
    }

    Ein Streamer macht nichts anders, als Objekte die weiter weg sind als die eingestellte Distanz zu löschen und wieder zu createn, wenn man nah genug dran ist.
    Zwei Streamer bringen da auch nichts, weil beide addiert auch nur 1000 Objekte gleichzeitig anzeigen können.

    Das Problem liegt einfach bei folgendem. Gehen wir von einen Stack mit 12 Einträgen aus


    E1
    E2
    E3
    E4
    E5
    E6
    E7
    E8
    E9
    E10
    E11
    E12


    Wir senden nun einen Text mit inhalt E13, dieser kann einfach eingefügt werden, da der Stack noch nicht voll ist


    E1
    E2
    E3
    E4
    E5
    E6
    E7
    E8
    E9
    E10
    E11
    E12
    E13


    Wenn wir das ausgeben, siehts so aus:


    E1
    E2
    E3
    E4
    E5 // Von hier
    E6
    E7
    E8
    E9
    LEER
    E10
    E11
    E12
    E13 //bis hier


    Das heißst bei einer Chatgröße von 10 Zeilen ist dein Chat oben nicht frei.


    Wenn wir nur 9 Einträge haben, sähe es so aus
    // Von hier
    E1
    E2
    E3
    E4
    E5
    E6
    E7
    E8
    E9 // bis hier


    In dem Fall wäre dann die oberste Zeile frei. Und wenn mal ein Spieler mit /chatsize (so war glaub ich der Command) den Chat nur mit 8 Zeilen o.Ä anzeigt, haut das ganze sowieso schon wieder nicht hin.

    ICh möchte noch kurz anmerken, dass wenn jemand /timestamp aktiviert hat, alle Chaterläufe die gleiche Uhrzeit haben, da sie ja erneut gesendet werden.
    Davon mal abgesehen



    new chatkeller[MAX_PLAYERS][100][128];


    Dann müstest du entweder SendClientMessage und SendClientMessageToAll umschreiben oder im Script alle EInträge der beiden natives durch folgende natives ersetzen:



    SendModClientMessage(playerid,color,text[128])
    {
    // Der Text wird in den Keller geworfen
    for(new i = 0;i<100;i++)
    {
    if(strlen(chatkeller[playerid][i]) == 0)
    {
    strcat(chatkeller[playerid][i],text);
    break;
    }
    }
    // Sollte dieser Code ausgeführt werden, bedeutet dass, das der Keller voll ist. Wir droppen ale das unterste Element und rücken alle folgenden Elemente auf
    for(new i = 0;i<100;i++)
    {
    if(i = 0) chatkeller[playerid][i] = "";
    chatkeller[playerid][i-1] = chatkeller[playerid][i];
    }
    chatkeller[playerid][99] = "";
    strcat(chatkeller[playerid][99],text);


    // Jetzt löschen wir den Chat des Spielers
    for(new i = 0;i<100;i++)
    {
    SendClientMessage(playerid,-1,"");
    }
    // Jetzt geben wir den Chat des Spielers wieder aus (ausgehend von 10 Zeilen pro Seite)
    new count = 0;
    for(new i = 0;i<100;i++)
    {
    if(count == 9) // 9 Zeilen wurden bereits gesendet
    {
    SendClientMessage(playerid,-1,""); // Die erforderte Leerzeile
    SendClientMessage(playerid-1,chatkeller[playerid][i];
    count = 1;
    }
    else
    {
    SendClientMessage(playerid-1,chatkeller[playerid][i];
    count ++;
    }
    }
    }


    So gehts dann auch mit SendClientMessageToAll


    Hinweis: Die Farbe wird hier nicht mit gespeichert. Das kann man aber durch ein weiteres Array oder durch eine weitere Dimension im alten Array realisieren.
    Hinweis: Mir ist gerade aufgefallen, dass man den Array nach FIFO und nicht nach LIFO ausgeben muss. Ich bin aber jetzt zu faul überall den variablenNamen zu ändern.
    Hinweis: Das ganze ist keine gute Lösung !, dann je nachdem wie viele Nachrichten gespeichert sind, funktionierts wieder nicht :D

    Ja hatte ich auch gelesen, aber laut Wiki liegt das Objektlimit pro Spieler bei der Version 0.3x bei 1000 Obekten.


    Das was du meinst:


    Zitat

    Extended draw distance for objects:


    You can now set the draw distance on objects to any distance. This will allow for more seamless object streaming in custom areas.


    bezieht sich glaube ich auf die Original Objekte von GTA (also Bäume usw) oder auf gemapptest, dann aber auch nur im 1000 Objekte Ramen.

    An sich erstmal ein guter Rohbau.
    Leider kann auch der beste Streamer nicht mehr als 1000 Objekte/Spieler gleichzeitig einstreamen. Also das könnte ein Problem werden.


    Ich bin leider auch kein Mapper und kann deshalb auch keine Texturvorschläge liefern. Jedoch bin ich davon überzeugt, dass man daraus noch was richtig geiles machen kann.
    Demnach: weiter gemacht ! :D

    Ich hab aber erlich gesagt ein paar cells zu viel als zu wenig aufm String. Klar kann man alle Zeichen zählen und dann noch die maximalen cell Anzahlen für weitere Eingaben (z.B. Playername) einrechnen, aber meist ist mir das viel zu umständlich.