In welcher Zeile steht das?
new weatherid1,string[80];
Beiträge von Hagi
-
-
wo steht string in den Zeilen 1971-1 (bei 1971 angefangen) der erste mal? Da wo es "drinsteht" sollst du hier posten.
-
Gefällt mir. Ich werde auf jeden Fall mal vorbei schauen.
-
Ich meine wo im Quellcode vor der Zeile new string steht. Und dann die Funktion bitte mal posten.
-
Nein laut Errorcode sieht er diese Variable bereits als re-deklaration. Such nach dem Bezeichner vor der Zeile
-
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
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
} -
-
Nein nein, ich meine, ob du du abfragst ob der Spieler ein Bot ist?
if(IsPlayerNPC(playerid)
{
Einloggen usw.
}http://wiki.sa-mp.com/wiki/IsPlayerNPC_DE
edit: Man ist sa-mp.com heute langsam. Wiki läd ewig.
-
du musst playerid auch als Parameter mitgeben, bzw mit einer for alle Spieler überprüfen
-
Nein, aber du könntest ja mal sowohl die health, als auch giveplayerid printen. Vllt ist da was nicht koscha. Denn sonst sieht der code in Ordnung aus
-
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
E12Wir 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
E13Wenn wir das ausgeben, siehts so aus:
E1
E2
E3
E4
E5 // Von hier
E6
E7
E8
E9
LEER
E10
E11
E12
E13 //bis hierDas 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 hierIn 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 -
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:
ZitatExtended 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 ! -
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.