Beiträge von Jeffry

    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(OnEvent[playerid] == 0)return 1;
    if(TeamA[playerid] == 1) Team2++;
    else if(TeamB[playerid] == 1) Team1++;
    new string[128];
    format(string,128,"%d",Team1);
    TextDrawSetString(punkte1,string);

    format(string,128,"%d",Team2);
    TextDrawSetString(punkte2,string);
    return 1;
    }

    xSoldier:
    {2757.8887, 1223.3120, 2861.1313, 1383.1230, CTFx, CTFy, CTFz}


    Die drei letzen Koordinaten musst du mit noch einem /save auffüllen, wird wohl ein Checkpoint sein oder sowas, das was in der Zone irgendwo ist. Dafür nimmst du vom /save den 2., 3. und 4. Wert.


    @[GeD]Max: Zeigt es den richtigen Skin an, wenn du anstatt GetPlayerSkin einfach mal 50 reinschreibst? Siehst du dann Skin 50? Wenn ja, dann nutzt du wohl GetPlayerSkin an einer Stelle im Code an der es nicht geht, oder der Timer wird nicht richtig aufgerufen, oder du siehst ein falsches Textdraw.

    Das ist nötig, damit das Label nicht nochmal zerstört wird, denn die ID des Labels bleibt ja in der Variable, rufst du dann mit dieser Variable die Methode zum zerstören noch mal auf, kann es sein, dass ein Label eines anderen Spielers weg geht. Deshalb leeren wir die Variable zusätzlich, indem wir sie auf -1 setzen.

    arank ist ein Integer, es muss aber ein String (=Array) sein. Da nehmen wir eine neue Variable hinzu (rankstr).
    ocmd:makeadmin(playerid,params[])
    {
    new pID,string[256],adminname[MAX_PLAYERS],spielername[MAX_PLAYERS],arank;
    GetPlayerName(playerid, adminname, sizeof(adminname));
    GetPlayerName(playerid, spielername, sizeof(spielername));
    if(!IsPlayerConnected(playerid))return SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Die angegebende SpielerID ist nicht online!");
    SpielerInfo[playerid][pAlevel] = arank;
    if(arank < 0 || arank > 7) return SendClientMessage(playerid,Rot, "[FEHLER] {FFFFFF}Du kannst nur das Adminlevel von 0 - 7 vergeben!");
    if(SpielerInfo[playerid][pAlevel] == 8)
    {
    if(SpielerInfo[playerid][pAlevel] == 0)
    {
    format(string, sizeof string, "[INFO] {FFFFFF}Serverleiter %s hat dich aus dem Team entfernt!",adminname);
    format(string, sizeof string, "[A-INFO] {FFFFFF}Serverleiter %s hat %s aus dem Team entfernt!",adminname,spielername);
    SendClientMessage(playerid,Rot,string);
    SendAdminMessage(Rot,string);
    SpielerInfo[pID][pAlevel] = 0;
    SavePlayer(playerid);
    }
    else if(SpielerInfo[playerid][pAlevel] >= 1)
    {
    new rankstr[64];
    if(SpielerInfo[playerid][pAlevel] == 1)
    {
    rankstr = "Supporter";
    }
    else if(SpielerInfo[playerid][pAlevel] == 2)
    {
    rankstr = "Administrator Level 1";
    }
    else if(SpielerInfo[playerid][pAlevel] == 3)
    {
    rankstr = "Administrator Level 2";
    }
    else if(SpielerInfo[playerid][pAlevel] == 4)
    {
    rankstr = "Administrator Level 3";
    }
    else if(SpielerInfo[playerid][pAlevel] == 5)
    {
    rankstr = "High Administrator";
    }
    else if(SpielerInfo[playerid][pAlevel] == 6)
    {
    rankstr = "Entwickler";
    }
    else if(SpielerInfo[playerid][pAlevel] == 7)
    {
    rankstr = "Stelv. Serverleiter";
    }
    format(string, sizeof string, "[INFO] {FFFFFF}Serverleiter %s hat dich zum %s befördert!",adminname,rankstr);
    format(string, sizeof string, "[A-INFO] {FFFFFF}Serverleiter %s hat %s zum %s befördert!",adminname,spielername,rankstr);
    SendClientMessage(playerid,Rot,string);
    SendAdminMessage(Rot,string);
    SpielerInfo[pID][pAlevel] = arank;
    SavePlayer(playerid);
    }
    return 1;
    }
    return 1;
    }

    Ja, das sieht zwar gut aus aber das zeigt auch, dass
    if(mysql_CheckAccount(playerid) == 1)
    nicht aufgerufen wird.


    Mache dein OnPlayerRequestClass mal zu:
    public OnPlayerRequestClass(playerid, classid)
    {
    printf("OnPlayerRequestClass: %d", playerid);
    if(IsPlayerNPC(playerid))
    {
    SpawnPlayer(playerid);
    return 1;
    }
    printf("No NPC");
    printf("CheckAccount: %d", mysql_CheckAccount(playerid));
    if(mysql_CheckAccount(playerid) == 1)
    {
    printf("1");
    new logname[MAX_PLAYER_NAME];
    new logstr[250];
    printf("2");
    format(logstr,sizeof(logstr),"{FEFEFE}Herzlich Willkommen zurück {FF8C00}%s{FEFEFE},\nWir die NoL Community, wünschen dir noch {FF8C00}viel Spaß\n{FEFEFE}Logge dich bitte ein!",logname);
    printf("3");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"NoL - Login",logstr,"Login","Abbrechen");
    }
    else if(mysql_CheckAccount(playerid) == 0)
    {
    printf("4");
    ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_PASSWORD,"NoL - Registrierung","{FF8C00}Herzlich Willkommen{FEFEFE},\n Es freut uns das du zu uns gefunden hast\nBitte {FF8C00}Registriere dich {FEFEFE}nun um hier Spielen zu können!","Register","Abbrechen");
    }
    printf("MySQL passed");
    PlayerPlaySound(playerid, 1176, 0.0, 0.0, 0.0);
    PlayerInfo[playerid][pModel] = Peds[classid][0];
    SetPlayerTeamFromClass(playerid,classid);
    SetupPlayerForClassSelection(playerid);
    printf("OnPlayerRequestClass - Done");
    return 1;
    }


    Was wird im server_log geprintet?

    Du warst schneller mit kopieren als ich mit editieren.


    Also nochmal:
    forward GetpMember(playerid);
    public GetpMember(playerid)
    {
    return PlayerInfo[playerid][pMember];
    }


    forward GetpLeader(playerid);
    public GetpLeader(playerid)
    {
    return PlayerInfo[playerid][pLeader];
    }

    forward GetpMember(playerid);
    public GetpMember(playerid)
    {
    return PlayerInfo[playerid][pMember];
    }


    forward GetpLeader(playerid);
    public GetpLeader(playerid)
    {
    return PlayerInfo[playerid][pLeader];
    }


    So.

    Aha, so heißt das enum.


    Jetzt suche nach "[pInfo]".
    Das was dort nach dem "new" steht, muss anstelle von "pInfo" in die beiden Funktionen die du in den Gamemode eingefügt hast.