Schleife erstellt alle Datein schon.

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo breadfish,
    meine Schleife erstellt schon alle datein, wieso ?


    COMMAND:createitem(playerid, params[])
    {
    new Typee, Float:Spawnnung[3];
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid, ROT, "Du bist kein Admin");
    if(sscanf(params, "d", Typee))return SendClientMessage(playerid, ROT, "Fehler: /createitem [Type]");
    GetPlayerPos(playerid, Spawnnung[0], Spawnnung[1],Spawnnung[2]);
    SetPlayerPos(playerid, Spawnnung[0]+2, Spawnnung[1],Spawnnung[2]);
    CreateItems(Typee, Spawnnung[0], Spawnnung[1],Spawnnung[2]);
    SendClientMessage(playerid, ROT, "Item wurde erfolgreich gespawn!");
    return 1;
    }
    stock CreateItems(Typee,Float:spawnssX, Float:spawnssY, Float:spawnssZ)
    {
    for(new i = 0; i < MAX_ITEMS; i++)
    {
    new datein[128];
    format(datein, 128, "/Items/%i.txt", i);
    if(!fexist(datein))
    {
    dini_Create(datein);
    dini_IntSet(datein, "Type", Typee);
    dini_FloatSet(datein,"PosX",spawnssX);
    dini_FloatSet(datein,"PosY",spawnssY);
    dini_FloatSet(datein,"PosZ",spawnssZ);
    return LoadItems(i);
    }
    }
    return 1;
    }
    stock LoadItems(Item)
    {
    new Navidatei[128];
    format(Navidatei, 128, "/Items/%i.txt", Item);
    if(!fexist(Navidatei))
    {
    dini_Create(Navidatei);
    sItem[Item][Type] = dini_Int(Navidatei, "Type");
    sItem[Item][SpawnX] = dini_Float(Navidatei, "PosX");
    sItem[Item][SpawnY] = dini_Float(Navidatei, "PosY");
    sItem[Item][SpawnZ] = dini_Float(Navidatei, "PosZ");
    sItem[Item][Pickup] = CreatePickup(854, 2, sItem[Item][SpawnX], sItem[Item][SpawnY], sItem[Item][SpawnZ], 0);
    }
    return 1;
    }
    Ist es Egal ob ich bei CreateItem(Typee,Float:spawnssX, Float:spawnssY, Float:spawnssZ)
    z.b CreateItem(Test123,Float:WTF, Float:WTFY, Float:WTFZ)

    Mit freundlichen Grüßen,
    Chriss aka. xDesertx


  • stock LoadItems(Item)
    {
    new Navidatei[128];
    format(Navidatei, 128, "/Items/%i.txt", Item);
    if(!fexist(Navidatei))
    {
    dini_Create(Navidatei);
    sItem[Item][Type] = dini_Int(Navidatei, "Type");
    sItem[Item][SpawnX] = dini_Float(Navidatei, "PosX");
    sItem[Item][SpawnY] = dini_Float(Navidatei, "PosY");
    sItem[Item][SpawnZ] = dini_Float(Navidatei, "PosZ");
    sItem[Item][Pickup] = CreatePickup(854, 2, sItem[Item][SpawnX], sItem[Item][SpawnY], sItem[Item][SpawnZ], 0);
    }
    return 1;
    }
    wieso erstellst du die Datei beim Laden, falls sie nicht vorhanden ist?


  • stock LoadItems(Item)
    {
    new Navidatei[16]; //16 Zeichen reichen
    format(Navidatei, 16, "/Items/%i.txt", Item);
    if(!fexist(Navidatei))return 0; //Datei existiert nicht, abbrechen
    //-> Datei existiert, Ladevorgang
    sItem[Item][Type] = dini_Int(Navidatei, "Type");
    sItem[Item][SpawnX] = dini_Float(Navidatei, "PosX");
    sItem[Item][SpawnY] = dini_Float(Navidatei, "PosY");
    sItem[Item][SpawnZ] = dini_Float(Navidatei, "PosZ");
    sItem[Item][Pickup] = CreatePickup(854, 2, sItem[Item][SpawnX], sItem[Item][SpawnY], sItem[Item][SpawnZ], 0);
    return 1;
    }

  • Hallo,
    stock CreateItems(Typee,Float:spawnssX, Float:spawnssY, Float:spawnssZ)
    {
    for(new i = 0; i < MAX_ITEMS; i++)
    {
    new datein[128];
    format(datein, 128, "/Items/%i.txt", i);
    if(!fexist(datein)) // Fehler
    {
    dini_Create(datein);
    dini_IntSet(datein, "Type", Typee);
    dini_FloatSet(datein,"PosX",spawnssX);
    dini_FloatSet(datein,"PosY",spawnssY);
    dini_FloatSet(datein,"PosZ",spawnssZ);
    return LoadItems(i);
    }
    }
    return 1;
    }


    Bei CreateItems ist schon der Fehler, die Schleife läuft MAX_ITEMS durch und erstellt natürlich die Dateien weil sie ja nicht existieren.

  • apoolecu: Was soll an seiner Funktion falsch sein? Den Fehler haben wir ihm schon gezeigt, in CreateItems gibt es keinen Fehler. Beim Erstellen wird in einer Schleife überprüft ob die Datei existiert, wenn nicht wird sie erstellt und die Schleife mit return abgebrochen.

  • for(new i = 0; i < MAX_ITEMS; i++)
    {
    new datein[128];
    format(datein, 128, "/Items/%i.txt", i);
    if(!fexist(datein)) // Fehler
    {


    es wird eine Schleife erstellt und wie wird immer hochgezählt, wenn die Datei nicht existiert, wird sie erstellt


    von dem Threadersteller kam diese Frage ,,Hallo breadfish,
    meine Schleife erstellt schon alle datein, wieso ?"


    also ist bei CreateItems der fehler.

  • Bei CreateItems ist schon der Fehler, die Schleife läuft MAX_ITEMS durch und erstellt natürlich die Dateien weil sie ja nicht existieren.


    Übersiehst du eigentlich das return in der Schleife?

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • In diesem Fall ist das egal ob er direkt abbricht oder zum Ende der Schleife springt.


    Am Ende steht ja auch ein return ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Dann müsste er aber den Index zwischenspeichern, da die Variable ( i ) nach der Schleife nichtmehr verfügbar ist.


    LoadItems(i);
    break;


    Würde also nicht gehen? :huh:
    WTF...

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski