| Problem - setleader |

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
  • Liebe Community,
    Ich bekomme viele Errors weiß aber nicht wo der Fehler ist. Hoffe es gibt mal wieder ne Lösung. :)


    Die Errors


    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1401) : error 017: undefined symbol "AccountSpeichern"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1414) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1422) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1433) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1444) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1455) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1465) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1493) : error 017: undefined symbol "SendMeChat"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1573) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1583) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1593) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1608) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1668) : error 017: undefined symbol "IstSpielerAdmin"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1700) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1717) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1734) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1751) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(1768) : error 017: undefined symbol "IstSpielerInFraktion"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(2090) : error 017: undefined symbol "Login"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(2109) : error 017: undefined symbol "Register"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(2119) : error 017: undefined symbol "sscanf"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(2123) : error 017: undefined symbol "IstSpielerAdmin"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(2129) : error 017: undefined symbol "IstSpielerAdmin"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(2146) : warning 203: symbol is never used: "params"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(2158) : error 017: undefined symbol "nSpieler"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(2159) : error 017: undefined symbol "nSpieler"
    C:\- GTA (SA) LoR Server -\gamemodes\LoR-v1.pwn(2160) : error 017: undefined symbol "nSpieler"


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    26 Errors.




    Der ganze ocmd:setleader befehl:



    ocmd:setleader(playerid,params[])
    {
    new pID, level;
    new string[128],fname[40];
    new oname[MAX_PLAYER_NAME],aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,aname,sizeof aname);
    GetPlayerName(pID,oname,sizeof oname);
    if(IsPlayerConnected(playerid))
    {
    if(sSpieler[playerid][Adminlevel] >= 1337)
    {
    if(sscanf(params,"ud",pID,level))
    return SendClientMessage(playerid,COLOR_HGRAD,"Benutze: /setleader [playerid] [Fraktion]");
    if(!IsPlayerConnected(pID))
    return SendClientMessage(playerid,COLOR_HGRAD,"Dieser Spieler ist nicht online.");
    if(sscanf(params,"ud",pID,level)) {
    SendClientMessage(playerid,COLOR_HGRAD,"Benutze: /setleader [playerid] [Fraktion]");
    if(level < 0 || level > 18) { return SendClientMessage(playerid,COLOR_HGRAD,"Es gibt nur 15 Fraktionen."); }
    sSpieler[pID][Leader] = level;
    sSpieler[pID][Rang] = 15;
    if(level == 0) { SetPlayerSkin(pID,79); sSpieler[pID][Skin] = 79; fname = "Zivilist"; }
    else if(level == 1) { SetPlayerSkin(pID,283); sSpieler[pID][Skin] = 283; fname = "S.A.P.D."; }
    else if(level == 2) { SetPlayerSkin(pID,285); sSpieler[pID][Skin] = 285; fname = "S.W.A.T."; }
    else if(level == 3) { SetPlayerSkin(pID,165); sSpieler[pID][Skin] = 165; fname = "F.B.I."; }
    else if(level == 4) { SetPlayerSkin(pID,287); sSpieler[pID][Skin] = 287; fname = "U.S. Army"; }
    else if(level == 5) { SetPlayerSkin(pID,188); sSpieler[pID][Skin] = 188; fname = "Zoll"; }
    else if(level == 6) { SetPlayerSkin(pID,227); sSpieler[pID][Skin] = 227; fname = "Ordnungsamt"; }
    else if(level == 7) { SetPlayerSkin(pID,279); sSpieler[pID][Skin] = 279; fname = "S.A.F.D."; }
    else if(level == 8) { SetPlayerSkin(pID,295); sSpieler[pID][Skin] = 295; fname = "U.S. Regierung"; }
    else if(level == 9) { SetPlayerSkin(pID,187); sSpieler[pID][Skin] = 187; fname = "S.A.N.Z."; }
    else if(level == 10) { SetPlayerSkin(pID,240); sSpieler[pID][Skin] = 240; fname = "Fahrschule"; }
    else if(level == 11) { SetPlayerSkin(pID,107); sSpieler[pID][Skin] = 107; fname = "Grove Street"; }
    else if(level == 12) { SetPlayerSkin(pID,108); sSpieler[pID][Skin] = 108; fname = "Los Santos Vagos"; }
    else if(level == 13) { SetPlayerSkin(pID,248); sSpieler[pID][Skin] = 248; fname = "Las Venturas Biker"; }
    else if(level == 14) { SetPlayerSkin(pID,120); sSpieler[pID][Skin] = 120; fname = "Triaden"; }
    else if(level == 15) { SetPlayerSkin(pID,177); sSpieler[pID][Skin] = 177; fname = "BloodZ"; }
    else if(level == 16) { SetPlayerSkin(pID,174); sSpieler[pID][Skin] = 174; fname = "Aztecas"; }
    else if(level == 17) { SetPlayerSkin(pID,104); sSpieler[pID][Skin] = 104; fname = "Ballas"; }
    else if(level == 18) { SetPlayerSkin(pID,294); sSpieler[pID][Skin] = 294; fname = "Hitman"; }
    format(string,sizeof string,"Du hast %s zum Leader der Fraktion %s (FraktionsID: %d) ernannt.",oname,fname,level);
    SendClientMessage(playerid,COLOR_HGRAD,string);
    format(string,sizeof string,"%s hat dich zum Leader der Fraktion %s (FraktionsID: %d) ernannt.",aname,fname,level);
    SendClientMessage(pID,COLOR_YELLOW,string);
    }
    else
    {
    SendClientMessage(playerid,COLOR_HGRAD,"Du hast keine Berechtigung.");
    }
    }
    return 1;
    }



    Ich weiß nicht wo der Fehler ist. Hoffe mir kann jemand helfen.





    MfG
    James.

  • ocmd:setleader(playerid,params[])
    {
    new pID, level;
    new string[128],fname[40];
    new oname[MAX_PLAYER_NAME],aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,aname,sizeof aname);
    GetPlayerName(pID,oname,sizeof oname);
    if(IsPlayerConnected(playerid))
    {
    if(sSpieler[playerid][Adminlevel] >= 1337)
    {
    if(sscanf(params,"ud",pID,level)) return SendClientMessage(playerid,COLOR_HGRAD,"Benutze: /setleader [playerid] [Fraktion]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_HGRAD,"Dieser Spieler ist nicht online.");
    SendClientMessage(playerid,COLOR_HGRAD,"Benutze: /setleader [playerid] [Fraktion]");
    if(level < 0 || level > 18)
    {
    return SendClientMessage(playerid,COLOR_HGRAD,"Es gibt nur 15 Fraktionen.");
    }
    sSpieler[pID][Leader] = level;
    sSpieler[pID][Rang] = 15;
    if(level == 0)
    {
    SetPlayerSkin(pID,79);
    sSpieler[pID][Skin] = 79;
    fname = "Zivilist";
    }
    else if(level == 1)
    {
    SetPlayerSkin(pID,283);
    sSpieler[pID][Skin] = 283;
    fname = "S.A.P.D.";
    }
    else if(level == 2)
    {
    SetPlayerSkin(pID,285);
    sSpieler[pID][Skin] = 285;
    fname = "S.W.A.T.";
    }
    else if(level == 3)
    {
    SetPlayerSkin(pID,165);
    sSpieler[pID][Skin] = 165;
    fname = "F.B.I.";
    }
    else if(level == 4)
    {
    SetPlayerSkin(pID,287);
    sSpieler[pID][Skin] = 287;
    fname = "U.S. Army";
    }
    else if(level == 5)
    {
    SetPlayerSkin(pID,188);
    sSpieler[pID][Skin] = 188;
    fname = "Zoll";
    }
    else if(level == 6)
    {
    SetPlayerSkin(pID,227);
    sSpieler[pID][Skin] = 227;
    fname = "Ordnungsamt";
    }
    else if(level == 7)
    {
    SetPlayerSkin(pID,279);
    sSpieler[pID][Skin] = 279;
    fname = "S.A.F.D.";
    }
    else if(level == 8)
    {
    SetPlayerSkin(pID,295);
    sSpieler[pID][Skin] = 295;
    fname = "U.S. Regierung";
    }
    else if(level == 9)
    {
    SetPlayerSkin(pID,187);
    sSpieler[pID][Skin] = 187;
    fname = "S.A.N.Z.";
    }
    else if(level == 10)
    {
    SetPlayerSkin(pID,240);
    sSpieler[pID][Skin] = 240;
    fname = "Fahrschule";
    }
    else if(level == 11)
    {
    SetPlayerSkin(pID,107);
    sSpieler[pID][Skin] = 107;
    fname = "Grove Street";
    }
    else if(level == 12)
    {
    SetPlayerSkin(pID,108);
    sSpieler[pID][Skin] = 108;
    fname = "Los Santos Vagos";
    }
    else if(level == 13)
    {
    SetPlayerSkin(pID,248);
    sSpieler[pID][Skin] = 248;
    fname = "Las Venturas Biker";
    }
    else if(level == 14)
    {
    SetPlayerSkin(pID,120);
    sSpieler[pID][Skin] = 120;
    fname = "Triaden";
    }
    else if(level == 15)
    {
    SetPlayerSkin(pID,177);
    sSpieler[pID][Skin] = 177;
    fname = "BloodZ";
    }
    else if(level == 16)
    {
    SetPlayerSkin(pID,174);
    sSpieler[pID][Skin] = 174;
    fname = "Aztecas";
    }
    else if(level == 17)
    {
    SetPlayerSkin(pID,104);
    sSpieler[pID][Skin] = 104;
    fname = "Ballas";
    }
    else if(level == 18)
    {
    SetPlayerSkin(pID,294);
    sSpieler[pID][Skin] = 294;
    fname = "Hitman";
    }
    format(string,sizeof string,"Du hast %s zum Leader der Fraktion %s (FraktionsID: %d) ernannt.",oname,fname,level);
    SendClientMessage(playerid,COLOR_HGRAD,string);
    format(string,sizeof string,"%s hat dich zum Leader der Fraktion %s (FraktionsID: %d) ernannt.",aname,fname,level);
    SendClientMessage(pID,COLOR_YELLOW,string);
    }
    else
    {
    SendClientMessage(playerid,COLOR_HGRAD,"Du hast keine Berechtigung.");
    }
    }
    return 1;
    }


    Wenn du es so schreibst fällt es dir viel leichter solche Fehler selbst zu finden, eine Anweisung pro Zeile. Es war eine Klammer-Zu zu wenig vorhanden.



    Oder in deinem Style:

    Spoiler anzeigen
    ocmd:setleader(playerid,params[])
    {
    new pID, level;
    new string[128],fname[40];
    new oname[MAX_PLAYER_NAME],aname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,aname,sizeof aname);
    GetPlayerName(pID,oname,sizeof oname);
    if(IsPlayerConnected(playerid))
    {
    if(sSpieler[playerid][Adminlevel] >= 1337)
    {
    if(sscanf(params,"ud",pID,level)) return SendClientMessage(playerid,COLOR_HGRAD,"Benutze: /setleader [playerid] [Fraktion]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_HGRAD,"Dieser Spieler ist nicht online.");
    if(level < 0 || level > 18) return SendClientMessage(playerid,COLOR_HGRAD,"Es gibt nur 15 Fraktionen.");
    sSpieler[pID][Leader] = level;
    sSpieler[pID][Rang] = 15;
    if(level == 0) { SetPlayerSkin(pID,79); sSpieler[pID][Skin] = 79; fname = "Zivilist"; }
    else if(level == 1) { SetPlayerSkin(pID,283); sSpieler[pID][Skin] = 283; fname = "S.A.P.D."; }
    else if(level == 2) { SetPlayerSkin(pID,285); sSpieler[pID][Skin] = 285; fname = "S.W.A.T."; }
    else if(level == 3) { SetPlayerSkin(pID,165); sSpieler[pID][Skin] = 165; fname = "F.B.I."; }
    else if(level == 4) { SetPlayerSkin(pID,287); sSpieler[pID][Skin] = 287; fname = "U.S. Army"; }
    else if(level == 5) { SetPlayerSkin(pID,188); sSpieler[pID][Skin] = 188; fname = "Zoll"; }
    else if(level == 6) { SetPlayerSkin(pID,227); sSpieler[pID][Skin] = 227; fname = "Ordnungsamt"; }
    else if(level == 7) { SetPlayerSkin(pID,279); sSpieler[pID][Skin] = 279; fname = "S.A.F.D."; }
    else if(level == 8) { SetPlayerSkin(pID,295); sSpieler[pID][Skin] = 295; fname = "U.S. Regierung"; }
    else if(level == 9) { SetPlayerSkin(pID,187); sSpieler[pID][Skin] = 187; fname = "S.A.N.Z."; }
    else if(level == 10) { SetPlayerSkin(pID,240); sSpieler[pID][Skin] = 240; fname = "Fahrschule"; }
    else if(level == 11) { SetPlayerSkin(pID,107); sSpieler[pID][Skin] = 107; fname = "Grove Street"; }
    else if(level == 12) { SetPlayerSkin(pID,108); sSpieler[pID][Skin] = 108; fname = "Los Santos Vagos"; }
    else if(level == 13) { SetPlayerSkin(pID,248); sSpieler[pID][Skin] = 248; fname = "Las Venturas Biker"; }
    else if(level == 14) { SetPlayerSkin(pID,120); sSpieler[pID][Skin] = 120; fname = "Triaden"; }
    else if(level == 15) { SetPlayerSkin(pID,177); sSpieler[pID][Skin] = 177; fname = "BloodZ"; }
    else if(level == 16) { SetPlayerSkin(pID,174); sSpieler[pID][Skin] = 174; fname = "Aztecas"; }
    else if(level == 17) { SetPlayerSkin(pID,104); sSpieler[pID][Skin] = 104; fname = "Ballas"; }
    else if(level == 18) { SetPlayerSkin(pID,294); sSpieler[pID][Skin] = 294; fname = "Hitman"; }
    format(string,sizeof string,"Du hast %s zum Leader der Fraktion %s (FraktionsID: %d) ernannt.",oname,fname,level);
    SendClientMessage(playerid,COLOR_HGRAD,string);
    format(string,sizeof string,"%s hat dich zum Leader der Fraktion %s (FraktionsID: %d) ernannt.",aname,fname,level);
    SendClientMessage(pID,COLOR_YELLOW,string);
    }
    else
    {
    SendClientMessage(playerid,COLOR_HGRAD,"Du hast keine Berechtigung.");
    }
    }
    return 1;
    }

    Das finde ich aber nicht so übersichtlich.

  • Wie wäre es, mit ein bisschen Struktur und leichterer Erweiterbarkeit?


    //Oben Ins Skript
    enum e_Frak {
    f_Name[32], f_Skin
    };
    #define GetFrakName(%0) f_Info[%0][f_Name]
    #define GetFrakSkin(%0) f_Info[%0][f_Skin]


    stock const f_Info[][e_Frak] = {
    {"Zivilist",79},{"S.A.P.D.",283},{"S.W.A.T.",285},{"F.B.I",165},{"U.S. Army",287},{"Zoll",188},
    {"Ordnungsamt",227},{"S.A.F.D.",279},{"U.S. Regierung",295},{"S.A.N.Z.",187},{"Fahrschule",240},
    {"Grove Street",107},{"Los Santos Vagos",108},{"Las Venturas Biker",248},{"Triaden",120},
    {"BloodZ",177},{"Aztecas",174},{"Ballas",104},{"Hitman",294}
    };


    //Dann der Befehl
    ocmd:setleader(playerid,params[]) {
    if(sSpieler[playerid][Adminlevel] < 1337) return SendClientMessage(playerid,COLOR_HGRAD,"Du hast keine Berechtigung.");
    new pID,frak,string[128];
    if(sscanf(params,"ud",pID,frak)) return SendClientMessage(playerid,COLOR_HGRAD,"Benutze: /setleader [playerid] [Fraktion]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_HGRAD,"Dieser Spieler ist nicht online.");
    if(frak < 0 || frak > sizeof f_Info) return format(string,sizeof string,"Es gibt nur %d Fraktionen.",sizeof f_Info),SendClientMessage(playerid,COLOR_HGRAD,string);
    sSpieler[pID][Leader] = frak,sSpieler[pID][Rang] = 15,SetPlayerSkin(pID,GetFrakSkin(frak)),sSpieler[pID][Skin] = GetFrakSkin(frak);
    format(string,sizeof string,"Du hast %s zum Leader der Fraktion %s (FraktionsID: %d) ernannt.",GetName(pID),GetFrakName(frak),frak);
    SendClientMessage(playerid,COLOR_HGRAD,string);
    format(string,sizeof string,"%s hat dich zum Leader der Fraktion %s (FraktionsID: %d) ernannt.",GetName(playerid),GetFrakName(frak),frak);
    return SendClientMessage(pID,COLOR_YELLOW,string);
    }


    //Dann die Funktion noch irgendwo ins Skript
    stock GetName(playerid) {
    new n[MAX_PLAYER_NAME];
    return GetPlayerName(playerid,n,MAX_PLAYER_NAME),n;
    }


    Jetzt könntest du einfach oben noch eine Fraktion hinzufügen und der Befehl würde sich automatisch anpassen ;)


    mfg. :thumbup:


    //Edit: James.Spader: damit du das auch liest...

    ast2ufdyxkb1.png


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

    Einmal editiert, zuletzt von Kaliber ()