dödel
Capo
|
|
Registrierung: |
16.04.2007, 22:15 |
Lieblings-GTA: |
GTA: Vice City |
Wohnort: |
The Triangle |
Beiträge: |
3191
|
|
@Michael
Is zwar schon ne Weile her, aber hier geht es eher um TextDraw, das sich aktualisiert, ansonsten stimmt deins schon
--------------------------------------------------------------------------------
Linuxserver-Besitzer -
Nun zum Wesentlichen:
Ich habe einen Unterschied im TextDraw vom Windows-Server und Linux-Server entdeckt.
Das Problem besteht aber auch nur, wenn man diese TextDraw nur bei bestimmen Positionen erzeugt, wie if(IsPLayerInAnyVehicle(playerid))
Das Beispiel beruht auch auf IsPlayerInAnyVehicle.
Also, zum Fehler bei Linux (der übrigens crash´s verursacht) :
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <? //alles im Public ;)
for (new a; a < MAX_PLAYERS; a++) { TextDrawDestroy(TextDraw1[i]); TextDrawDestroy(TextDraw2[i]); }
for (new i; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) {
new TXTDraw1[256]; new TXTDraw2[256];
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)) { format(TXTDraw1, sizeof(TXTDraw1),"Beispiel: %d", beispielarray[i]); TextDraw1[i] = TextDrawCreate(15.0, 50.0, TXTDraw1[i]); TextDrawLetterSize(TextDraw1[i], 0.5, 2.5); TextDrawShowForPlayer(i,TextDraw1[i]); }
format(TXTDraw2, sizeof(TXTDraw2), "Beispiel2: %d",beispielarray2[i]); TextDraw2[i] = TextDrawCreate(15.0, 50.0, TextDraw2[i]); TextDrawLetterSize(TextDraw2[i], 0.5, 2.5); TextDrawShowForPlayer(i,TextDraw2[i]);
} }
//ende ?> |
Sieht ja im übrigen ganz ok aus, auch beim Testserver vom Rechner aus keine Probleme, aber man lädt es schön aufn Root (linux) , startet in Ruhe, connected zum Server, Steigt Gemütlich in ein Auto, sieht alles i.o. aus, aber kaum steigt man aus, crasht es.
Ich denke der Fehler liegt darin, das bei Linux, die ID´s anders aufgenommen werden. (hier werden sie halt einfach überschrieben)
Aber um das zu verhindern, sollte es bei Linux so aussehen:
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| <? //alles im Public ;)
for (new a; a < MAX_PLAYERS; a++) { TextDrawDestroy(TextDraw1[i]); TextDrawDestroy(TextDraw2[i]); }
for (new i; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) {
new TXTDraw1[256]; new TXTDraw2[256];
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)) { format(TXTDraw1, sizeof(TXTDraw1),"Beispiel: %d", beispielarray[i]); TextDraw1[i] = TextDrawCreate(15.0, 50.0, TXTDraw1[i]); TextDrawLetterSize(TextDraw1[i], 0.5, 2.5); TextDrawShowForPlayer(i,TextDraw1[i]); } else //Dieses else, löst alle probleme { format(TXTDraw1, sizeof(TXTDraw1)," "); TextDraw1[i] = TextDrawCreate(15.0, 50.0, TXTDraw1[i]); TextDrawLetterSize(TextDraw1[i], 0.5, 2.5); TextDrawShowForPlayer(i,TextDraw1[i]); }
format(TXTDraw2, sizeof(TXTDraw2), "Beispiel2: %d",beispielarray2[i]); TextDraw2[i] = TextDrawCreate(15.0, 50.0, TextDraw2[i]); TextDrawLetterSize(TextDraw2[i], 0.5, 2.5); TextDrawShowForPlayer(i,TextDraw2[i]);
} }
//ende ?> |
Aber für die kleinen, mache ich das else noch ein bisschen einfacher/kürzer
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <? //if - else verzweigung
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)) { format(TXTDraw1, sizeof(TXTDraw1),"Beispiel: %d", beispielarray[i]); } else //Dieses else, löst alle probleme { format(TXTDraw1, sizeof(TXTDraw1)," "); }
TextDraw1[i] = TextDrawCreate(15.0, 50.0, TXTDraw1[i]); TextDrawLetterSize(TextDraw1[i], 0.5, 2.5); TextDrawShowForPlayer(i,TextDraw1[i]);
//ende ?>[code]
Ich hoffe, das hilft einigen Linux Server besitzern. |
|
|