ID 0 wird immer ausgewählt

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
  • Guten Tag /Abend Leute,


    ich sitze jetzt dran alle Befehle auf ocmd umzuschreiben. Doch ich hab ein Problem, immer wenn ich ein Befehl umschreibe wo man einen anderen

    Spieler angeben muss, kommt dann in der Nachricht aber der Name vom Spieler mit der ID 0.

    Ich weiß jetzt nicht ob ich irgend etwas vergessen habe, ich hoffe ihr könnt mir helfen.


    PS: Habe lange nicht mehr gescriptet, muss wieder rein kommen in die Sache, also verzeiht ^^


    ocmd:setlohn(playerid,params[])
    {
    new str[128],giveplayerid,pID,gehalt,name[MAX_PLAYER_NAME],givename[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name)),GetPlayerName(pID,givename,sizeof(givename));
    if(IsPlayerConnected(playerid))
    if(PlayerInfo[playerid][pLeader] >= 1)
    {
    if(sscanf(params,"ud",pID,gehalt))return SendClientMessage(playerid,COLOR_GRAD1,"Benutze: /setlohn [ID] [Gehalt]");
    if(IsPlayerConnected(pID))
    {
    if(PlayerInfo[playerid][pLeader] == PlayerInfo[pID][pMember] || PlayerInfo[playerid][pLeader] == PlayerInfo[pID][pLeader])
    {
    if(gehalt > 100 || gehalt < 12000)
    {
    PlayerInfo[pID][pGehalt] = gehalt;
    format(str, sizeof(str), "Du hast das Gehalt von %s auf %d$ gesetzt.", givename, gehalt);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
    format(str, sizeof(str), "Leader %s hat dein Gehalt geändert. Gehalt: %d$.", name, gehalt);
    SendClientMessage(pID, COLOR_LIGHTBLUE, str);
    }
    else SendClientMessage(playerid,COLOR_GRAD1,"Das Gehalt muss zwischen 100$ und 12.000$ liegen.");
    }
    }
    else SendClientMessage(playerid,COLOR_GRAD1,"Der ausgewählte Spieler ist nicht Online.");
    }
    else SendClientMessage(playerid,COLOR_RED,"Du besitzt nicht die benötgiten Rechte dafür!");
    return 1;
    }



    MfG


    Advanced

  • GetPlayerName(playerid,name,sizeof(name)),GetPlayerName(pID,givename,sizeof(givename));


    Unter die Klammern der If Abfrage von gehalt.



    Warum?
    Du musst erst sscanf ausführen (setzt den Wert in pID) und dann musst du GetPlayerName nutzen.


    EDIT:
    Nebenbei, das ist die online Abfrage
    if(IsPlayerConnected(pID))