Beiträge von alva

    if(sscanf(params,"us",pID,iLevel))


    U = eine Spielerid
    S = ein String
    und da du einen Integer, also eine Zahl als Wert eingibst, müsste es i/d sein.


    Das mit dem iLevel < XYZ ist soweit Richtig.


    if(sscanf(params,"ud",pID,iLevel))


    new pChoosedSkin[MAX_PLAYERS];
    switch(GetPlayerSkin(playerid))
    {
    case 105:
    {
    SetPlayerSkin(playerid,106);
    pChoosedSkin[playerid] = 106;
    }
    case 106:
    {
    SetPlayerSkin(playerid,107);
    pChoosedSkin[playerid] = 107;
    }
    case 107:
    {
    SetPlayerSkin(playerid,269);
    pChoosedSkin[playerid] = 269;
    }
    case 269:
    {
    SetPlayerSkin(playerid,270);
    pChoosedSkin[playerid] = 270;
    }
    case 270:
    {
    SetPlayerSkin(playerid,105);
    pChoosedSkin[playerid] = 105;
    }
    }


    Hier mal ein Beispiel, du musst dir eine neue Variable erstellen mit dem Skin den der Spieler gerade benutzt und dann einfach Abfragen, dass wenn er den einen Skin hat, die Taste drückt, dass der andere kommt.

    Nur mal so am Rande, ich weiß nicht ob es richtig ist, jedenfalls ist es bei mir so:



    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Grau,"Der angegebene Spieler ist nicht online.");
    if(sscanf(params,"uds",pID,Checkpoints,Grund))return SendClientMessage(playerid,Grau,"Benutze: /prison [ID/Teilname] [Checkpoints] [Grund]");


    Würde ich tauschen, da sonst, wenn keine ID 0 auf dem Server ist, dort die ganze Zeit stehen würde: "Der angegebene Spieler ist nicht online."
    Also am besten andersrum:


    if(sscanf(params,"uds",pID,Checkpoints,Grund))return SendClientMessage(playerid,Grau,"Benutze: /prison [ID/Teilname] [Checkpoints] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Grau,"Der angegebene Spieler ist nicht online.");

    Es gibt nun "Anwählbare" Textdraws.


    http://forum.sa-mp.com/showthread.php?t=328267


    [video]

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]

    stock GetPlayersInTeamFromMaxPlayers(team)
    {
    new playercount = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPVarInt(i,"loggedin")== 0) continue;
    if(GetPVarInt(i,"member") != team)continue;
    playercount++;
    }
    return playercount;
    }


    So in der Art köntest du es einfacher schreiben.
    Den Stock ein wenig umschreiben und dann ist alles fertig.

    Arbeitest du mit Array oder PVar?
    Hier mal mein Command, falls du mit PVar arbeitest.


    ocmd:admins(playerid,params[])
    {
    #pragma unused params
    SendClientMessage(playerid,COLOR_GREY,"Admin Online:");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPVarInt(i,"Admin")) // undzwar, wird hier abgefragt ob der spieler ein admin ist
    {
    new string[128],adminlevel[64]; // neuer string, für später und ein neuer Adminname
    switch(GetPVarInt(i,"admin")) // hier switchen wir nun die Variable Admin
    {
    case 1:{adminlevel="Supporter";} // wenn 1 adminlevel = Supporter usw.
    case 2:{adminlevel="Moderator";}
    case 3:{adminlevel="Admin";}
    case 4:{adminlevel="Head-Admin";}
    case 5:{adminlevel="Head-Admin";}
    }
    format(string, 256, "%s: %s",adminlevel,PlayerName(i));
    SendClientMessage(playerid,COLOR_GREY,string);
    }
    }
    }
    return 1;
    }

    Das Problem wurde erfolgreich gelöst.
    Hier erkläre ich mal wie:


    bspw. für den Adminrang.
    mysql_SetInt("accounts", "admin", GetPVarInt(playerid,"admin"), "Name", SpielerInfo[playerid][sName]);


    Anstatt dem:
    SpielerInfo[playerid][sName]


    Benutze ich nun:
    PlayerName(playerid)


    Dazu folgenden Stock:


    stock PlayerName(playerid)
    {
    new GetName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,GetName,sizeof(GetName)); //Wir getten den Spielernamen
    return GetName; //Und returnen ihn hier...
    }


    Gruß,
    /erledigt

    Heyho, ich habe mal versucht , wie bei Maddin's Tutorial mit MySQL zu arbeiten, das Script hat keine Errors oder Warnings, jedenfalls wenn ich den Server verlasse, speichert nichts und wenn ich Relogge, muss ich mich auch neu Registrieren, obwohl bei Navicat ein Account existiert.
    Unter Disconnect usw. steht natürlich alles.


    Hier mal mein Speichern stock:


    stock SpielerSpeichern(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"loggedin") == 1)
    {
    mysql_SetInt("accounts", "admin", GetPVarInt(playerid,"admin"), "Name", SpielerInfo[playerid][sName]);
    mysql_SetInt("accounts", "Kills", GetPlayerScore(playerid), "Name", SpielerInfo[playerid][sName]);
    mysql_SetInt("accounts", "prison", GetPVarInt(playerid,"prison"), "Name", SpielerInfo[playerid][sName]);
    mysql_SetInt("accounts", "zeit", GetPVarInt(playerid,"zeit"), "Name", SpielerInfo[playerid][sName]);
    mysql_SetInt("accounts", "Tode", GetPVarInt(playerid,"Tode"), "Name", SpielerInfo[playerid][sName]);
    mysql_SetInt("accounts", "warns", GetPVarInt(playerid,"warns"), "Name", SpielerInfo[playerid][sName]);
    mysql_SetInt("accounts", "skin", GetPVarInt(playerid,"skin"), "Name", SpielerInfo[playerid][sName]);
    mysql_SetInt("accounts", "member", GetPVarInt(playerid,"member"), "Name", SpielerInfo[playerid][sName]);
    mysql_SetInt("accounts", "Baned", GetPVarInt(playerid,"Baned"), "Name", SpielerInfo[playerid][sName]);
    printf("%s wurde gespeichert.",PlayerName(playerid));
    }
    }
    return 1;
    }


    Hier mein Laden Stock:


    stock LoadAccount(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)
    {
    GetPlayerName(playerid, SpielerInfo[playerid][sName], MAX_PLAYER_NAME);
    SetPVarInt(playerid,"admin",mysql_GetInt("accounts", "admin", "Name", SpielerInfo[playerid][sName]));
    SetPVarInt(playerid,"prison",mysql_GetInt("accounts", "prison", "Name", SpielerInfo[playerid][sName]));
    SetPVarInt(playerid,"zeit", mysql_GetInt("accounts", "zeit", "Name", SpielerInfo[playerid][sName]));
    new score = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][sName]);
    SetPlayerScore(playerid,score);
    SetPVarInt(playerid,"Baned",mysql_GetInt("accounts", "Baned", "Name", SpielerInfo[playerid][sName]));
    SetPVarInt(playerid,"Tode", mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][sName]));
    SetPVarInt(playerid,"member", mysql_GetInt("accounts", "member", "Name", SpielerInfo[playerid][sName]));
    SetPVarInt(playerid,"skin", mysql_GetInt("accounts", "skin", "Name", SpielerInfo[playerid][sName]));
    SetPVarInt(playerid,"warns", mysql_GetInt("accounts", "warns", "Name", SpielerInfo[playerid][sName]));
    SetPVarInt(playerid,"loggedin",1);
    new frak;
    frak = GetPVarInt(playerid,"member");
    SetSpawnInfo(playerid,bugfix[frak][0],GetPVarInt(playerid,"skin"),Fraktionsspawns[frak][0],Fraktionsspawns[frak][1],Fraktionsspawns[frak][2],Fraktionsspawns[frak][3],1,1,0,0,0,0);
    SpawnPlayer(playerid);
    if(GetPVarInt(playerid,"Baned") == 1)
    {
    SendClientMessage(playerid,0x828282FF,"Du bist gebannt.");
    Kick(playerid);
    }
    return 1;
    }


    Wisst ihr vielleicht was falsch ist?

    Heyho.
    Bei fogenden Code:


    ocmd:setstat(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,COLOR_GREY,"Du bist kein Admin");
    new pid;
    new nummer;
    new wert;
    new string[128];
    new string2[128];
    if(sscanf(params,"udd",pid,nummer,wert)){SendClientMessage(playerid,COLOR_WHITE,"Verwendung: /setstat [Spieler] [Stat] [Wert]"); SendClientMessage(playerid,COLOR_WHITE,"(1 = Kills) (2 = Tode) (3 = Verwarnungen)");}
    if(nummer < 1 || nummer > 3)return SendClientMessage(playerid,COLOR_GREY,"Ungültige Parameter.");
    if(nummer == 1)
    {
    format(string,sizeof(string),"%s hat die Kills von %s auf %d gesetzt.",PlayerName(playerid),PlayerName(pid),wert);
    SendAdminMessage(string);
    SetPlayerScore(pid,wert);
    format(string2,sizeof(string2),"* Deine Kills wurden vom System auf %i gesetetzt.",PlayerName(playerid),wert);
    SendClientMessage(pid,BLAU,string2);
    }
    if(nummer == 2)
    {
    format(string,sizeof(string),"%s hat die Tode von %s auf %d gesetzt.",PlayerName(playerid),PlayerName(pid),wert);
    SendAdminMessage(string);
    SetPVarInt(pid,"Tode",wert);
    format(string2,sizeof(string2),"* Deine Tode wurden vom System auf %i gesetetzt.",PlayerName(playerid),wert);
    SendClientMessage(pid,BLAU,string2);
    }
    if(nummer == 3)
    {
    SetPVarInt(pid,"warns",wert);
    format(string,sizeof(string),"%s hat die Verwarnungen von %s auf %d gesetzt.",PlayerName(playerid),PlayerName(pid),wert);
    SendAdminMessage(string);
    format(string2,sizeof(string2),"* Deine Verwarnungen wurden vom System auf %i gesetetzt.",PlayerName(playerid),wert);
    SendClientMessage(pid,BLAU,string2);
    }
    return 1;
    }


    Kommt folgendes im Chat:

    Also eigentlich sollte unten auch 1 stehen, passiert aber nicht, wisst ihr vielleicht wies?

    stock IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY)
    {
    return 1;
    }
    return 0;
    }



    Dann einfach bei dem Befehl eine if Abfrage hinein.