Sscanf + ID Frage

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
  • dcmd_w(playerid,params[])
    {
    new name[MAX_PLAYER_NAME];
    new ID,Text[128],string[128];
    GetPlayerName(playerid,name,sizeof(name));
    if(PlayerInfo[playerid][Admin] >= 1)
    {
    if(sscanf(params,"uz",ID,Text))
    {
    SendClientMessage(playerid,Rot,"Benutze /w [playerid][text]");
    return 1;
    }
    if(!IsPlayerConnected(ID))
    {
    SendClientMessage(playerid,Rot,"Angegebene ID ist nicht online!");
    return 1;
    }
    format(string, sizeof(string), "%s schreibt zu dir: %s.",name,Text);
    SendClientMessage(ID,Gelb,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Admin!");
    }
    return 1;
    }


    Da buggt igendwie der ID parameter ich bekomme die wisper narricht immer selber
    wie muss ich id definieren?

  • Auszug aus Ylesses plugin (link)


    Zitat

    Z(string)[length] Invalid optional string
    z(string)[length] Deprecated optional string
    S(string)[length] Optional string
    s[length] String


    Was ich mir auch noch vorstellen könnte ist das du beim eingeben der ID im Spiel als 1. Parameter irgendwie die 0 angegeben hast?(Falscher Name?)

  • Genau bei diesen cmd alle cmds wo ich eine ID angeben muss (Spielerid)


    dcmd_goto(playerid,params[])
    {
    new name[MAX_PLAYER_NAME];
    new ID,string[128];
    new Float:x,Float:y,Float:z;
    new car = GetPlayerVehicleID(playerid);
    GetPlayerPos(ID,x,y,z);
    GetPlayerName(ID,name,sizeof(name));
    if(PlayerInfo[playerid][Admin] >= 1)
    {
    if(sscanf(params,"u",ID))
    {
    SendClientMessage(playerid,Rot,"Benutze /goto [playerid]");
    return 1;
    }
    if(!IsPlayerConnected(ID))
    {
    SendClientMessage(playerid,Rot,"Angegebene ID ist nicht online!");
    return 1;
    }
    if (GetPlayerState(playerid) == 2)
    {
    LinkVehicleToInterior(car,0);
    SetVehiclePos(playerid,x,y+2,z);
    return 1;
    }
    else
    {
    SetPlayerPos(playerid,x,y+2,z);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    format(string, sizeof(string), "Du hast dich zu %s geportet.",name);
    SendClientMessage(playerid,Grün,string);
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Admin!");
    }
    return 1;
    }


    Komme ich immer zu mir selbst wenn ich id 0 bin oder zu id kann ich z.B /goto 8 eingeben ich komme zu id 0
    ich weiß nicht woran das liegen könnte (info: ich benutze nur den sscanf code kein Plugin und das sollte so bleiben :))


    (E) Text

    Einmal editiert, zuletzt von Quini ()

  • GOTO teleportiert nicht genau genommen immer zu dir,sondern immer zu ID 0. Würdest du das ganze als ID 2 ausprobieren, würde es trotzdem versuchen dich zu ID 0 zu porten.Ich zeig dir mal den Fehler:


    dcmd_goto(playerid,params[])
    {
    new name[MAX_PLAYER_NAME];
    new ID,string[128];
    new Float:x,Float:y,Float:z;
    new car = GetPlayerVehicleID(playerid);
    // Wir kennen die Verarbeitung der Parameter noch nicht
    // Erst später im Code verarbeiten wir die Eingabe und weisen ID
    // einen richtigen Wert zu
    //
    // GetPlayerPos(ID,x,y,z); <-- hier ist ID noch 0
    // GetPlayerName(ID,name,sizeof(name)); <-- hier ist ID noch 0. Da noch kein Wert zugewiesen und nur deklariert
    // Da du beim testen ID 0 bist,wird immer zu "dir" geportet. Da noch kein Wert zugewiesen und nur deklariert
    if(PlayerInfo[playerid][Admin] >= 1)
    {
    if(sscanf(params,"u",ID)) // <- Erst hier wird ID der richtige Wert der Eingabe überwiesen
    // bsp /goto 23 oder /goto Tim ( Tim hat playerid 23 )
    // Dann wird ID = 23
    {
    SendClientMessage(playerid,Rot,"Benutze /goto [playerid]");
    return 1;
    }
    if(!IsPlayerConnected(ID))
    {
    SendClientMessage(playerid,Rot,"Angegebene ID ist nicht online!");
    return 1;
    }
    GetPlayerPos(ID,x,y,z); // Jetzt kennen wir ID,also besorgen wir uns die Position
    GetPlayerName(ID,name,sizeof(name)); // Jetzt kennen wir ID,also besorgen wir uns den Namen
    if (GetPlayerState(playerid) == 2)
    {
    LinkVehicleToInterior(car,0);
    SetVehiclePos(playerid,x,y+2,z);
    return 1;
    }
    else
    {
    SetPlayerPos(playerid,x,y+2,z);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    format(string, sizeof(string), "Du hast dich zu %s geportet.",name);
    SendClientMessage(playerid,Grün,string);
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Admin!");
    }
    return 1;
    }
    Im Code steht die Information.