Dann funktionieren entweder die Funktionen nicht richtig, oder die Objekte werden gar nicht mit dem Streamer erstellt (wenn Valid überall 0 ist).
Beiträge von Jeffry
-
-
OnGameModeInit:
SetTimer("TextdrawTimer", 1000, true);Unten im Gamemode:
forward TextdrawTimer();
public TextdrawTimer()
{
new
Float:health,
string[25];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerInAnyVehicle(i))
{
GetVehicleHealth(GetPlayerVehicleID(i), health);
format(string,sizeof(string), "Fahrzeug: %.0f%s", health/10.0, "%");
PlayerTextDrawSetString(i, healthText[i], string);
PlayerTextDrawShow(i, healthText[i]);
}
}
return 1;
} -
Das musst du in einem Timer machen, nicht bei OnPlayerEnterVehicle. Erstens wird das nur einmal aufgerufen, wenn man ENTER drückt beim einsteigen, und zweitens ist man zu dem Zeitpunkt als das aufgerufen wird noch gar nicht im Fahrzeug.
-
for (new id = 0, j = 1000; id < j; id++)
{
printf("id: %d | j: %d | Valid: %d | World: %d", id, j, IsValidDynamicObject(id), Streamer_GetIntData(STREAMER_TYPE_OBJECT, id, E_STREAMER_WORLD_ID));
if(IsValidDynamicObject(id) && Streamer_GetIntData(STREAMER_TYPE_OBJECT, id, E_STREAMER_WORLD_ID) <= 89)
{
printf("Destroy");
DestroyDynamicObject(id);
}
}
print("Fertig.");
Versuche es mal so. Das CountItems hat 0 ausgegeben.
=> Soweit ich weiß nicht, nein.
-
for (new id = 0, j = Streamer_CountItems(STREAMER_TYPE_OBJECT); id < j; id++)
{
printf("id: %d | j: %d | Valid: %d | World: %d", id, j, IsValidDynamicObject(id), Streamer_GetIntData(STREAMER_TYPE_OBJECT, id, E_STREAMER_WORLD_ID));
if(IsValidDynamicObject(id) && Streamer_GetIntData(STREAMER_TYPE_OBJECT, id, E_STREAMER_WORLD_ID) <= 89)
{
printf("Destroy");
DestroyDynamicObject(id);
}
}
print("Fertig.");
Was wird dir so geprintet?Nein, bei CreateObject's geht das nicht. Am sinnvollsten wäre es aber, wenn du die PWN dazu hättest.
-
Von selber passieren eigentlich keine Fehler. Starte den Server mal neu und versuche es dann nochmal.
-
Ich hatte es jetzt mal Probiert, klappt leider nicht so ganz.
for (new id = 0, j = Streamer_CountItems(STREAMER_TYPE_OBJECT); id < j; id++)
{
if(IsValidDynamicObject(id) && Streamer_GetIntData(STREAMER_TYPE_OBJECT, id, E_STREAMER_WORLD_ID) <= 89)
{
DestroyDynamicObject(id);
}
}
Versuche es so.Heav3n: Das ist schon an der Code Größe keine kleine Frage mehr. Mache bitte einen Thread auf.
-
ocmd:testrandom(playerid)
{
new haus_random, string[80];
haus_random=1+random(30);
for(new i=0; i<sizeof(hInfo); i++)
{
if(hInfo[i][h_id]==haus_random)
{
SetPlayerCheckpoint(playerid,hInfo[i][h_x], hInfo[i][h_y], hInfo[i][h_z],1.0);
format(string,sizeof(string),"* Random Hausnummer: %d",haus_random);
SendClientMessage(playerid,COLOR_GREEN,string);
return 1;
}
}
return ocmd_testrandom(playerid);
}Beachte aber, dass so eine theoretische Chance besteht, dass der Code endlos lange läuft.
-
Ja, das würde dann gehen.
Mit
Streamer_GetIntData
Siehe hier: http://forum.sa-mp.com/showthread.php?t=102865 -
Wenn du jemanden hast, der die pwn Datei hat, dann wäre die Methode die BlackAce vorgeschlagen hat am sinnvollsten.
Wenn nicht, dann kannst du die Objekte auch nicht in Welten setzen, dann musst du es mit entsprechenden Flächen machen, in denen Umkreisen du die Objekte eben entfernst, wie erklärt.
Je nach dem was auf dich zutrifft.EDIT:
Dann geht es nur über den Umkreis, oder eben Flächen, vom Prinzip das gleiche, ein Umkreis ist ja auch eine Fläche. -
Du könntest eine Schleife durch alle Dynamic Objekte machen (0 bis X) und die Position abfragen, und dann mit einer Range Abfrage prüfen, ob das Objekt im entsprechenden Umkreis liegt, wenn ja, entfernen.
-
Versuche es dann mal so, manchmal klappt es direkt im Format nicht.
format(string,sizeof(string), "Das Fahrzeug hat noch %.0f%s Struktur.", health/10.0, "%%"); -
Ja, das geht. Der Bereich nach dem Komma wird abgeschnitten, sprich bei:
15/4 kommt dann 3 raus. -
Ein Prozent Zeichen zeigst du mit %% an.
format(string,sizeof(string), "Das Fahrzeug hat noch %.0f%% Struktur.", health/10.0); -
Wo hast du den Code eingefügt?
Bei mir klappt es ohne Probleme.
-
Uh, wahrscheinlich ist das grade um ein paar Zeichen zu klein.
new sql[512];
zu:
new sql[600];Dann sollte es passen.
-
Ja.
So:
new sql[512];
format(sql, sizeof(sql), "UPDATE hauser SET");
for(new i=1; i<30; i++) format(sql, sizeof(sql), "%s Mieter%d = '-', ", sql, i);
format(sql, sizeof(sql), "%s Mieter30 = '-' WHERE ID = '%d'", sql, HausIDErstellen);
mysql_query(sql); -
https://wiki.sa-mp.com/wiki/SetPlayerMapIcon
Du hast keine Koordinate zu viel drin und dann als Icon die 0. Schau dir da mal das Beispiel an und ersetze es mit deinen Koordinaten.
EDIT:
SetPlayerMapIcon(playerid, 23, 2182.0, 1515.9717, 75.3594, 19, -1, MAPICON_LOCAL); -
new Float:KD = pInfo[fromplayerid][pKills] / pInfo[fromplayerid][pTode];
zu:
new tode = pInfo[fromplayerid][pTode];
if(tode == 0) tode = 1;
new Float:KD = pInfo[fromplayerid][pKills] / tode;Versuch es mal so, vielleicht war das schon das Problem, dass du durch 0 geteilt hast.
-
Die Korrektheit von Codes kannst du durch ausprobieren prüfen.
Einmal drauf schauen ist keine 100%'ige Garantie, dass alles klappt. Ausprobieren, dann weißt du es.