Dynamisches Fraktionsystem Fehler beim erstellen

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 Community!
    Wenn ich eine Fraktion erstelle wird "MAX_FRAKT" ausgefürt.
    Aber ich will nur das eine Fraktion erstellt wird und nicht 24..


    #define MAX_FRAKT 25


    public CreateFraktion(fname[35],Float:x,Float:y,Float:z,waffe,munition)
    {
    new datei[128];
    for(new i=0; i<MAX_FRAKT; i++)
    {
    format(datei,sizeof(datei),"/Fraktionsystem/Fraktionen/%i.ini",i);
    if(!fexist(datei))
    {
    dini_Create(datei);
    dini_Set(datei,"Name",fname);
    dini_FloatSet(datei,"SpawnX",x);
    dini_FloatSet(datei,"SpawnY",y);
    dini_FloatSet(datei,"SpawnZ",z);
    dini_IntSet(datei,"Waffe",waffe);
    dini_IntSet(datei,"Munition",munition);
    return LadeFraktion(i);
    }
    }
    return 1;
    }


    public LadeFraktion(id)
    {
    new datei[128];
    format(datei,sizeof(datei),"/Fraktionsystem/Fraktionen/%i.ini",id);
    format(fInfo[id][f_name],35,"%s",dini_Get(datei,"Name"));
    fInfo[id][f_x] = dini_Float(datei,"SpawnX");
    fInfo[id][f_y] = dini_Float(datei,"SpawnY");
    fInfo[id][f_z] = dini_Float(datei,"SpawnZ");
    fInfo[id][f_waffe] = dini_Int(datei,"Waffe");
    fInfo[id][f_muni] = dini_Int(datei,"Munition");
    fInfo[id][f_pickup] = CreatePickup(1239,1,fInfo[id][f_x],fInfo[id][f_y],fInfo[id][f_z],0);
    new string[128];
    format(string,128,"--> Fraktion Spawn <--\nFraktion: %s\nFraktionsID: %d",fInfo[id][f_name],id);
    fInfo[id][f_label] = Create3DTextLabel(string,COLOR_GRAU,fInfo[id][f_x],fInfo[id][f_y],fInfo[id][f_z],5.0,0,0);
    return 1;
    }


    ocmd:ferstellen(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    new Float:x,Float:y,Float:z;
    new fraktname[35],waffe,muni;
    for(new i=0; i<MAX_FRAKT; i++)
    {
    if(sscanf(params,"s[120]ii",fraktname,waffe,muni))return SendClientMessage(playerid, COLOR_GRAU," Verwendung: /ferstellen [fraktions-name] [waffenID] [munition]");
    {
    if(waffe <0||waffe >46)return SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du kannst nur eine Waffe zwischen 0-46 wählen!");
    if(muni <0||muni >500)return SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du kannst nur eine Munition zwischen 0-500 wählen!");
    GetPlayerPos(playerid,x,y,z);
    CreateFraktion(fraktname,x,y,z,waffe,muni);
    print(fraktname);
    }
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du bist kein Admin!");
    }
    return 1;
    }


    ocmd:fdelete(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    for(new i=0; i<MAX_FRAKT; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.5,fInfo[i][f_x],fInfo[i][f_y],fInfo[i][f_z]))
    {
    new datei[264];
    format(datei,sizeof(datei),"/Fraktionsystem/Fraktionen/%i.ini",i);
    if(dini_Exists(datei))
    {
    dini_Remove(datei);
    KillFraktion(i);
    printf("Fraktion %d wurde gelöscht.",i);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_ROT," FEHLER: Du bist nicht in der nähe einer Fraktion!");
    }
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du bist kein Admin!");
    }
    return 1;
    }

  • Auf Anfrage in PM:


    ocmd:ferstellen(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    new Float:x,Float:y,Float:z;
    new fraktname[35],waffe,muni;
    if(sscanf(params,"s[120]ii",fraktname,waffe,muni))return SendClientMessage(playerid, COLOR_GRAU," Verwendung: /ferstellen [fraktions-name] [waffenID] [munition]");
    {
    if(waffe <0||waffe >46)return SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du kannst nur eine Waffe zwischen 0-46 wählen!");
    if(muni <0||muni >500)return SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du kannst nur eine Munition zwischen 0-500 wählen!");
    GetPlayerPos(playerid,x,y,z);
    CreateFraktion(fraktname,x,y,z,waffe,muni);
    print(fraktname);
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du bist kein Admin!");
    }
    return 1;
    }



    ocmd:fdelete(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    for(new i=0; i<MAX_FRAKT; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.5,fInfo[i][f_x],fInfo[i][f_y],fInfo[i][f_z]))
    {
    new datei[264];
    format(datei,sizeof(datei),"/Fraktionsystem/Fraktionen/%i.ini",i);
    if(dini_Exists(datei))
    {
    dini_Remove(datei);
    KillFraktion(i);
    printf("Fraktion %d wurde gelöscht.",i);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_ROT," FEHLER: Du bist nicht in der nähe einer Fraktion!");
    }
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAU," FEHLER: Du bist kein Admin!");
    }
    return 1;
    }


    Die Schleife beim Erstellen-Befehl ist da falsch, da du sie ja schon bei "CreateFraktion" hast, sonst hast du zwei, was folglich 25 Fraktionen erstellt.
    Beim Löschen hat ein return 1; gefehlt.