/getarmour funktioniert nur bei der ersten Fraktion

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, mein /getarmour - Befehl funktioniert nur bei der ersten Fraktion.
    Was kann man da machen? Bei der ersten Fraktion funktioniert alles prima, dann bei der zweiten wird die Schleife zwar ausgeführt,
    doch es geht bei der Fraktionsabfrage nicht mehr weiter. Das habe ich gedebuggt und getestet. Warum funktioniert es nur bei der ersten Fraktion?


    Hier der Code


    ocmd:getarmour(playerid)
    {
    if(!DarfPlayerCommand(playerid))return ErrorMsg(playerid,"Du kannst keine Befehle benutzen.");
    if(!IsPlayerInFrakt(playerid,2)&&!IsPlayerInFrakt(playerid,4)&&!IsPlayerInFrakt(playerid,5)&&!IsPlayerInFrakt(playerid,8)&&!IsPlayerInFrakt(playerid,9)&&!IsPlayerInFrakt(playerid,10))return ErrorMsg(playerid,"Du bist nicht in der jewaligen Fraktion.");
    if(IsPlayerInFrakt(playerid,2))
    {
    if(!IsPlayerInRangeOfPoint(playerid,3,1712.0771,-1640.1244,20.2239))return ErrorMsg(playerid,"Du kannst dich hier nicht ausrüsten.");
    if(gettime()<SpielerInfo[playerid][AntiHealInFight])
    {
    new healtime=SpielerInfo[playerid][AntiHealInFight]-gettime();
    format(string,sizeof(string),"Du kannst dich erst wieder in %i:%02d Minuten heilen oder eine Rüstung überziehen.",healtime/60,healtime%60);
    return ErrorMsg(playerid,string);
    }
    for(new i=0; i<MAX_FBANKEN; i++)
    {
    if(Fbank[i][Fraktion]==SpielerInfo[playerid][Frakt])
    {
    if(Fbank[i][fwesten]>0)
    {
    Fbank[i][fwesten]-=1;
    format(string,sizeof(string),"<< Fraktionsmitglied %s hat sich eine Schutzweste aus der Fbank genommen. >>",SpielerName(playerid));
    sendFraktMsg(SpielerInfo[playerid][Frakt],COLOR_LIGHTBLUE,string);
    PlayerPlaySound(playerid,1054,0.0,0.0,0.0);
    SetPlayerArmour(playerid,100);
    return 1;
    }
    return ErrorMsg(playerid,"Es befinden sich nicht mehr genügend Westen in der F-Bank.");
    }
    return 1;
    }
    return 1;
    }
    if(IsPlayerInFrakt(playerid,4))
    {
    if(!IsPlayerInRangeOfPoint(playerid,3,1174.6534,-1186.5641,995.9297))return ErrorMsg(playerid,"Du kannst dich hier nicht ausrüsten.");
    if(gettime()<SpielerInfo[playerid][AntiHealInFight])
    {
    new healtime=SpielerInfo[playerid][AntiHealInFight]-gettime();
    format(string,sizeof(string),"Du kannst dich erst wieder in %i:%02d Minuten heilen oder eine Rüstung überziehen.",healtime/60,healtime%60);
    return ErrorMsg(playerid,string);
    }
    for(new i=0; i<MAX_FBANKEN; i++)
    {
    if(Fbank[i][Fraktion]==SpielerInfo[playerid][Frakt])
    {
    if(Fbank[i][fwesten]>0)
    {
    Fbank[i][fwesten]-=1;
    format(string,sizeof(string),"<< Fraktionsmitglied %s hat sich eine Schutzweste aus der Fbank genommen. >>",SpielerName(playerid));
    sendFraktMsg(SpielerInfo[playerid][Frakt],COLOR_LIGHTBLUE,string);
    PlayerPlaySound(playerid,1054,0.0,0.0,0.0);
    SetPlayerArmour(playerid,100);
    return 1;
    }
    return ErrorMsg(playerid,"Es befinden sich nicht mehr genügend Westen in der F-Bank.");
    }
    return 1;
    }
    return 1;
    }
    if(IsPlayerInFrakt(playerid,5))
    {
    if(!IsPlayerInRangeOfPoint(playerid,3,2498.6194,-1710.2561,1014.7422))return ErrorMsg(playerid,"Du kannst dich hier nicht ausrüsten.");
    if(gettime()<SpielerInfo[playerid][AntiHealInFight])
    {
    new healtime=SpielerInfo[playerid][AntiHealInFight]-gettime();
    format(string,sizeof(string),"Du kannst dich erst wieder in %i:%02d Minuten heilen oder eine Rüstung überziehen.",healtime/60,healtime%60);
    return ErrorMsg(playerid,string);
    }
    for(new i=0; i<MAX_FBANKEN; i++)
    {
    if(Fbank[i][Fraktion]==SpielerInfo[playerid][Frakt])
    {
    if(Fbank[i][fwesten]>0)
    {
    Fbank[i][fwesten]-=1;
    format(string,sizeof(string),"<< Fraktionsmitglied %s hat sich eine Schutzweste aus der Fbank genommen. >>",SpielerName(playerid));
    sendFraktMsg(SpielerInfo[playerid][Frakt],COLOR_LIGHTBLUE,string);
    PlayerPlaySound(playerid,1054,0.0,0.0,0.0);
    SetPlayerArmour(playerid,100);
    return 1;
    }
    return ErrorMsg(playerid,"Es befinden sich nicht mehr genügend Westen in der F-Bank.");
    }
    return 1;
    }
    return 1;
    }
    if(IsPlayerInFrakt(playerid,8))
    {
    if(!IsPlayerInRangeOfPoint(playerid,3,505.9581,-87.2091,998.9609))return ErrorMsg(playerid,"Du kannst dich hier nicht ausrüsten.");
    if(gettime()<SpielerInfo[playerid][AntiHealInFight])
    {
    new healtime=SpielerInfo[playerid][AntiHealInFight]-gettime();
    format(string,sizeof(string),"Du kannst dich erst wieder in %i:%02d Minuten heilen oder eine Rüstung überziehen.",healtime/60,healtime%60);
    return ErrorMsg(playerid,string);
    }
    for(new i=0; i<MAX_FBANKEN; i++)
    {
    if(Fbank[i][Fraktion]==SpielerInfo[playerid][Frakt])
    {
    if(Fbank[i][fwesten]>0)
    {
    Fbank[i][fwesten]-=1;
    format(string,sizeof(string),"<< Fraktionsmitglied %s hat sich eine Schutzweste aus der Fbank genommen. >>",SpielerName(playerid));
    sendFraktMsg(SpielerInfo[playerid][Frakt],COLOR_LIGHTBLUE,string);
    PlayerPlaySound(playerid,1054,0.0,0.0,0.0);
    SetPlayerArmour(playerid,100);
    return 1;
    }
    return ErrorMsg(playerid,"Es befinden sich nicht mehr genügend Westen in der F-Bank.");
    }
    return 1;
    }
    return 1;
    }
    if(IsPlayerInFrakt(playerid,9))
    {
    if(!IsPlayerInRangeOfPoint(playerid,3,960.7534,-59.3062,1001.1172))return ErrorMsg(playerid,"Du kannst dich hier nicht ausrüsten.");
    if(gettime()<SpielerInfo[playerid][AntiHealInFight])
    {
    new healtime=SpielerInfo[playerid][AntiHealInFight]-gettime();
    format(string,sizeof(string),"Du kannst dich erst wieder in %i:%02d Minuten heilen oder eine Rüstung überziehen.",healtime/60,healtime%60);
    return ErrorMsg(playerid,string);
    }
    for(new i=0; i<MAX_FBANKEN; i++)
    {
    SendClientMessage(playerid,COLOR_YELLOW,"Forschleife überwunden.");
    if(Fbank[i][Fraktion]==SpielerInfo[playerid][Frakt])
    {
    SendClientMessage(playerid,COLOR_YELLOW,"Fraktabfrage überwunden.");
    if(Fbank[i][fwesten]>0)
    {
    SendClientMessage(playerid,COLOR_YELLOW,"Westenabfrage überwunden.");
    Fbank[i][fwesten]-=1;
    format(string,sizeof(string),"<< Fraktionsmitglied %s hat sich eine Schutzweste aus der Fbank genommen. >>",SpielerName(playerid));
    sendFraktMsg(SpielerInfo[playerid][Frakt],COLOR_LIGHTBLUE,string);
    PlayerPlaySound(playerid,1054,0.0,0.0,0.0);
    SetPlayerArmour(playerid,100);
    return 1;
    }
    return ErrorMsg(playerid,"Es befinden sich nicht mehr genügend Westen in der F-Bank.");
    }
    return 1;
    }
    return 1;
    }
    if(IsPlayerInFrakt(playerid,10))
    {
    if(!IsPlayerInRangeOfPoint(playerid,3,-559.5900,2544.5581,31.5023))return ErrorMsg(playerid,"Du kannst dich hier nicht ausrüsten.");
    if(gettime()<SpielerInfo[playerid][AntiHealInFight])
    {
    new healtime=SpielerInfo[playerid][AntiHealInFight]-gettime();
    format(string,sizeof(string),"Du kannst dich erst wieder in %i:%02d Minuten heilen oder eine Rüstung überziehen.",healtime/60,healtime%60);
    return ErrorMsg(playerid,string);
    }
    for(new i=0; i<MAX_FBANKEN; i++)
    {
    if(Fbank[i][Fraktion]==SpielerInfo[playerid][Frakt])
    {
    if(Fbank[i][fwesten]>0)
    {
    Fbank[i][fwesten]-=1;
    format(string,sizeof(string),"<< Fraktionsmitglied %s hat sich eine Schutzweste aus der Fbank genommen. >>",SpielerName(playerid));
    sendFraktMsg(SpielerInfo[playerid][Frakt],COLOR_LIGHTBLUE,string);
    PlayerPlaySound(playerid,1054,0.0,0.0,0.0);
    SetPlayerArmour(playerid,100);
    return 1;
    }
    return ErrorMsg(playerid,"Es befinden sich nicht mehr genügend Westen in der F-Bank.");
    }
    return 1;
    }
    return 1;
    }
    return 1;
    }

  • else return 1; ist doch total unnötig, oder wie meinst du das jetzt genau?


    @Jeff_Hary: Wo das denn? Das stimmt doch alles einwandfrei? Ich komme nur nicht über die Schleife, das ist alles.
    Ich komme da überall hin. Wozu soll ich das ändern? Ich habe das Problem, dass es nur bei Fraktion 2 klappt, bei den anderen nicht. Ich komme immer rüber.

  • Hier mal deinen Code umgeschrieben..das sollte eigentlich reichen:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Dankeschön :)
    Jetzt funktioniert es. Ich hatte auch schon continue; verwendet, bei mir hat es dann auch geklappt, Danke für deinen Code, der nebenbei noch sehr schön kurz aussieht. Und kurz ist, Vielen Dank :) warum das vorher nicht funktioniert hat, das weiß ich auch nicht :)

  • das return 1 in der Schleife entfernen da es sonst nur einmal gesendet wird und setze das SetPlayerArmour und PlayerPlaySound nach oder vor der schleife da du es sonst pro spieler in der Fraktion hörst / Rüstung bekommst. @Kaliber

    Nein..das ist alles richtig so.


    Es soll nur der Spieler Rüstung bekommen, der den Command eingibt...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S