arevive - sscanf funktioniert nicht

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
  • Hallo,


    Ich versuche folgendes auszuführen.



    ocmd:arevive(playerid,params[])
    {
    new pID;
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid, COLOR_WHITE,"Benutze: /arevive [playerid].");
    else if(SpielerInfo[pID][pTot] == 0) SendClientMessage(playerid,COLOR_WHITE,"Dieser Spieler ist nicht Tot.");
    else if(SpielerInfo[playerid][pAdmin] < 4) SendClientMessage(playerid,COLOR_WHITE,"Du darfst den Befehl nicht nutzen.");



    else
    {
    new string[128];
    new string2[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(pID,pname,sizeof(pname));
    SetPlayerPos(pID,SpielerInfo[pID][pTx],SpielerInfo[pID][pTy],SpielerInfo[pID][pTz]);
    format(string,sizeof(string),"Du wurdest von Admin %s wiederbelebt.",SpielerName(playerid));
    SendClientMessage(pID,COLOR_LIGHTBLUE,string);
    format(string2,sizeof(string2),"Du hast %s wiederbelebt.",SpielerName(pID));
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string2);
    //SetPlayerSkin(playerid,SpielerInfo[playerid][pChar]);
    SpielerInfo[pID][pTot] = 0;
    SetPlayerVirtualWorld(pID, 0);
    SetPlayerWorldBounds(pID,20000.0000, -20000.0000, 20000.0000, -20000.0000);
    DestroyPickup(TotenKopf[pID]);
    SetPlayerWeather(pID,2);
    SetPlayerSkin(pID,SpielerInfo[pID][pChar]);
    SetPlayerHealth(pID,100);

    }
    return 1;
    }


    Aber, ganz gleich wann und wie ich den command eingebe (/arevive, /arevive ID) oder ob ich lebe oder tot bin, immerzu kommt "Benutze: /arevive [playerid]." ... ich weiss nicht mehr weiter und hoffe hier natürlich auf hilfe ...


    Liebe Grüße

  • Beitrag von Lukaz ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Fail... ().
  • versuch es mal so



    ocmd:arevive(playerid, params[])
    {
    new String[128], pID;

    if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_WHITE, "Benutze: /arevive [playerid].");
    if(SpielerInfo[pID][pTot] == 0)return SendClientMessage(playerid, COLOR_WHITE, "Dieser Spieler ist nicht Tot.");
    if(SpielerInfo[playerid][pAdmin] < 4)return SendClientMessage(playerid, COLOR_WHITE, "Du darfst den Befehl nicht nutzen.");


    SetPlayerPos(pID, SpielerInfo[pID][pTx], SpielerInfo[pID][pTy], SpielerInfo[pID][pTz]);
    SpielerInfo[pID][pTot] = 0;
    SetPlayerVirtualWorld(pID, 0);
    SetPlayerWorldBounds(pID, 20000.0000, -20000.0000, 20000.0000, -20000.0000);
    DestroyPickup(TotenKopf[pID]);
    SetPlayerWeather(pID, 2);
    SetPlayerSkin(pID, SpielerInfo[pID][pChar]);
    SetPlayerHealth(pID, 100);


    format(String, sizeof(String), "Du wurdest von Admin %s wiederbelebt.", SpielerName(playerid));
    SendClientMessage(pID, COLOR_LIGHTBLUE, String);

    format(String, sizeof(String), "Du hast %s wiederbelebt.", SpielerName(pID));
    SendClientMessage(playerid, COLOR_LIGHTBLUE, String);

    //SetPlayerSkin(playerid,SpielerInfo[playerid][pChar]);
    return 1;
    }

  • Sah wirklich sehr interessant aus, das ergebnis ist leider das gleiche ... es bleibt dabei dass ich immer die meldung "Benutze: /arevive [playerid]." erhalte...


    Es ist doch wirklich zum verzweifeln oder?

  • Naja, aber an irgendwas muss es ja liegen ... im normalfall nutz ich auch if(strcmp(cmd, ....


    nur ich weiss nicht, ich bin mir eigentlich sicher dass der command schon mal funktionierte irgendwie .. so ca. 2013 irgendwann .. aber ich weiss es auch nicht mehr...

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • alles klar.. -.- bevor ich überhaupt angefangen habe das zu printen wie du meintest, schaute ich in die log um diese zu leeren.. dort erhalte ich folgenden fehler:


    [08:39:24] sscanf error: System not initialised.
    [08:39:27] sscanf error: System not initialised.


    So.. wie ich das nun behebe weiss ich allerdings auf anhieb auch nicht

  • alles klar.. -.- bevor ich überhaupt angefangen habe das zu printen wie du meintest, schaute ich in die log um diese zu leeren.. dort erhalte ich folgenden fehler:


    [08:39:24] sscanf error: System not initialised.
    [08:39:27] sscanf error: System not initialised.


    So.. wie ich das nun behebe weiss ich allerdings auf anhieb auch nicht

    Es reicht, wenn du eine ältere SSCANF Version verwendest.


    Ansonsten;

    • SSCANF Plugin updaten
    • Neue Include in den pawno/include Ordner kopiert
    • Neukomplieren
  • ein neueres sscanf als 2.8.2 hab ich bisher nicht gefunden leider :/


    Okay und jetzt wird es auch direkt mal spannend...


    ich habe #include <sscanf2> zu #include <sscanf> geändert und: jetzt kommt bei eingabe des befehls die meldung: "Dieser Spieler ist nicht Tot." obwohl er durchaus tot ist und auch ptot auf 1 gesetzt wird...

    Einmal editiert, zuletzt von Timon1986 ()

  • mhhh, ich hab jetzt einfach mal else if(SpielerInfo[pID][pTot] != 1) SendClientMessage(playerid,COLOR_WHITE,"Dieser Spieler ist nicht Tot.");



    Die meldung kommt dennoch immer, obschon ich natürlich tot bin, sonst würd ich nicht auf den friedhof kommen und: wenn ich tot bin, also auf den friedhof gesetzt werde wird ptot 1 gesetzt ...

  • Bei bedarf geb ich dir gern den Code, jedoch ist es jetzt endlich funktionabel...


    Folgendes habe ich geändert ..


    if(sscanf(params,"u",pID)) zu if(sscanf(params,"d",pID))


    und #include <sscanf2> zu #include <sscanf>


    den pTot setze ich hier auf 1 @Speezy



    public OnPlayerDeath(playerid, killerid, reason)
    {


    if(SpielerInfo[playerid][pJailed] == 0)
    {
    SpielerInfo[playerid][pTot] = 1;



    glaube ich zumindest ... auf anhieb das logischste