Hey,
ich arbeite derzeit noch an meinem Map System und bin auf ein Problem gestoßen. Ich muss durch ein multidimensionales Array loopen, aber das habe ich noch nie gemacht bzw. verstanden. Ich erkläre mal was ich vor habe.
Hier mein Array + Enum:
enum Maps
{
MapID,
mapname[64],
objects[MAX_MAP_OBJECTS],
removeModel[MAX_REMOVE_CODES],
Float: removeX[MAX_REMOVE_CODES],
Float: removeY[MAX_REMOVE_CODES],
Float: removeZ[MAX_REMOVE_CODES],
Float: removeRadius[MAX_REMOVE_CODES],
};
new ServerMaps[MAX_MAPS][Maps];
Ich möchte wenn jemanden den Server betritt, dass die entsprechenden Gebäude entfernt werden. Wie mache ich das mit mehreren Removecodes ? So habe ich angefangen (würde nur mit einem Removecode funktionieren):
stock RemoveObjectsAtConnect(playerid)
{
for(new i=0;i<sizeof(ServerMaps);i++)
{
RemoveBuildingForPlayer(playerid,removeModel,removeX,removeY,removeZ,removeRadius);
}
return 1;
}
Wäre nett, wenn mir jemand weiterhelfen könnte
Durch multidimnensionales Array loopen ?
- Oskaar1994
- Geschlossen
- Erledigt
-
-
stock RemoveObjectsAtConnect(playerid)
{
for(new i=0;i<MAX_MAPS;i++)
{
RemoveBuildingForPlayer(playerid,ServerMaps[i][removeModel],ServerMaps[i][removeX],ServerMaps[i][removeY],ServerMaps[i][removeZ],ServerMaps[i][removeRadius]);
}
return 1;
} -
stock RemoveObjectsAtConnect(playerid)
{
for(new i=0;i<max_maps;i++)
{
RemoveBuildingForPlayer(playerid,ServerMaps[i][removeModel],ServerMaps[i][removeX],ServerMaps[i][removeY],ServerMaps[i][removeZ],ServerMaps[i][removeRadius]);
}
return 1;
}
Ups hatte das ServerMaps[i] vergessen, aber das ist trotzdem nicht die Lösung für mein Problem, glaube ich zumindest -
Syno: Der Array hat 3 Dimensionen, nicht 2
Oskaar1994: Was ist denn "MAX_REMOVE_CODES" ?
So wie das scheint, ist das ein eher unnötiger Code der dort nicht hin muss.
Das lässt sich ohne direkten Code einblick oder Erklräung deiner Seits wie das System funktioniert nicht genau sagen -
MAX_REMOVE_CODES definiert wie viel Removecodes eine Map höchstens hat bzw. haben darf. Und ja das macht Sinn, sonst könnte ich pro Map ja nur ein Objekt entfernen
-
Genau solch ein System habe ich für einen Kunden geschrieben, welcher letztendlich nicht zahlen wollte.
Nutz doch das memory acess plugin und somit ein dynamisches array -
Naja da müsste ich mich halt wieder komplett neu einarbeiten, was etwas blöd wäre weil mit der Funktion, mein Mapsystem fertig wäre.
-
stock RemoveObjectsAtConnect(playerid)
{
for(new i=0;i<MAX_MAPS;i++)
{
for(new r = 0; r < MAX_REMOVE_CODES; r++)
{
RemoveBuildingForPlayer(playerid,ServerMaps[i][removeModel][r],ServerMaps[i][removeX][r],ServerMaps[i][removeY][r],ServerMaps[i][removeZ][r],ServerMaps[i][removeRadius][r]);
}
}
return 1;
}So.
-
stock RemoveObjectsAtConnect(playerid)
{
for(new i=0;i<max_maps;i++)
{
for(new r = 0; r < MAX_REMOVE_CODES; r++)
{
RemoveBuildingForPlayer(playerid,ServerMaps[i][removeModel][r],ServerMaps[i][removeX][r],ServerMaps[i][removeY][r],ServerMaps[i][removeZ][r],ServerMaps[i][removeRadius][r]);
}
}
return 1;
}So.
Danke Da hatte ich auch schon dran gedacht, aber ich dachte eine Loop in einer Loop würde nicht funktionieren
*edit* Zu früh gefreut, der Code bringt den Client zum Abstürzen -
breadfish.de
Hat das Thema geschlossen.