Ja,
also ich habe gerade meinen MapLoader weiter gescriptet.
Natürlich benutzt diese Funktion fread um die Map Datei zu lesen,
doch ist mir vorhin aufgefallen, dass diese Funktion nur die ersten 100 Zeilen liest
Meine lade Funktion:
public LoadMap (file[]) {
new s = GetFreeMapSlot ();
if (s == -1) { //OMG, maximale Map anzahl erreicht
return -1;
}
new filename[256];
new buf[256];
format (filename, 256, "Maps/%s.txt", file);
printf ("Lade Map '%s' ...", file);
new File:h = fopen (filename, io_read); // Map öffnen
if (h == 0) { // Gibtn Warning... vll. würde auch if (!h) gehen
return -1; // Datei nicht gefunden
}
new Float:X, Float:Y, Float:Z;
new Float:rX, Float:rY, Float:rZ;
new ModelID/*, waste*/, f1, f2;
new i = 0;
new idx, tmp[64], id;
i = 0;
// Ich benutze hier StrTok, da sscanf komischerweise bei sehr vielen Objekten müll liest?? Naja, mit Strtok funzt es ;)
#define USE_STRTOK
while (fread (h, buf)) { // Zeile lesen
idx = 0;
if (buf[0] == '1') { // Objekt
Karten[s][Typ][i] = 1;
/* bla */
} else if (buf[0] == '2') { // Pickup
Karten[i][Typ] = 2;
} else if (buf[0] == '3') { // Auto
Karten[i][Typ] = 3;
/* bla */
Karten[s][ID][i] = CreateAuto (ModelID, X, Y, Z, rZ, f1, f2, 999999);
} else if (buf[0] == '4') { // Spawnpunkt
Karten[i][Typ] = 4;
/* bla */
printf ("SpawnPunkt: %s Desc: %s", Spawns[id][Name], Spawns[id][Beschreibung]);
}
printf ("%i %c", i, buf[0]); // i = Zeilenanzahl. geht komischerweise von 0-99, obwohl die Datei mehr Zeilen hat
i++;
}
fclose (h);
return s; // Map Slot zurückgeben
}
Sieht jemand nen Fehler?
Würde mich über jede Hilfe freuen
MfG xMine