Werte auf 0?

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
  • Hey Leute,


    folgendes Problem. Ich habe ein altes Selfmade rausgekramt das früher genug funktioniert hat. Es hat zwar nur 3000 Zeilen aber funktionierte ohne Probleme. Jetzt aber wo ich es wieder ausprobieren wollte gehen auf einmal einige Befehle mit Sscanf nicht. Nämlich wenn ich mir ne Waffe geben will mit /givew [ID] [Waffe] [Muni] gebe ich z.B. bei Muni 100 ein. Da kommt aber die Nachricht "Du musst dir mehr als 0 Munition geben". Das gleiche auch bei /givem [ID] [Geld]. Will ich mir z.B. 10000$ geben steht da "Du musst dir mehr als 1$ geben. Das gleich bei den Skins /skin [ID] [Skin]. "Skin ID 0 ist verboten", obwohl ich 29 eingegeben habe. Früher hat alles funktioniert ich versteh nicht warum jetzt nicht. Ich hab die Codes überprüft aber die sehen mir Fehlerfrei aus.




    ocmd:skin(playerid,params[])
    {
    new str[100],str2[100],skin,name[MAX_PLAYER_NAME],givename[MAX_PLAYER_NAME],pID;
    if(IsPlayerConnected(playerid))
    if(IsPlayerAdminLevel(playerid, 2))
    {
    if(sscanf(params,"ud",pID,skin))return SendClientMessage(playerid,Gelb,"Befehl: /skin [ID] [SkinID]");
    GetPlayerName(playerid,name,sizeof(name)),GetPlayerName(pID,givename,sizeof(givename));
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Gelb,"Es ist kein Spieler mit dieser ID verbunden.");
    if(skin < 1 || skin > 298)return SendClientMessage(playerid,Gelb,"Du kannst nur einen Wert von 1 bis 298 angeben.");
    format(str,sizeof(str),"[Admin]: %s hat dir den Skin %d gegeben.",name,skin);
    SendClientMessage(pID,Gelb,str);
    SetPlayerSkin(pID,skin);
    SetPVarInt(pID, "Skin", skin);
    format(str2,sizeof(str2),"[AdmCmd]: %s hat dem Spieler %s den Skin %d gegeben.",name,givename,skin);
    printf("%s",str2);
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerAdminLevel(i, 2))
    {
    SendClientMessage(i,Gelb,str2);
    }
    }
    }
    return 1;
    }



    Das ist ein Beispiel, die anderen Codes sind fast identisch aufgebaut. Bei allen Befehlen die einen 2 Wert haben und mit Sscanf verbunden sind tritt dieser Fehler auf. Ich hoffe jemand kann helfen.


    MfG

  • Hey,
    Update mal dein sscanf Plugin und Include
    Link


    Dazu reicht es wenn du einmal str nutzt zwei sind unnötig


    ocmd:skin(playerid,params[])
    {
    new str[100],skin,name[MAX_PLAYER_NAME],givename[MAX_PLAYER_NAME],pID;
    if(IsPlayerConnected(playerid))
    if(IsPlayerAdminLevel(playerid, 2))
    {
    if(sscanf(params,"ud",pID,skin))return SendClientMessage(playerid,Gelb,"Befehl: /skin [ID] [SkinID]");
    GetPlayerName(playerid,name,sizeof(name)),GetPlayerName(pID,givename,sizeof(givename));
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Gelb,"Es ist kein Spieler mit dieser ID verbunden.");
    if(skin < 1 || skin > 298)return SendClientMessage(playerid,Gelb,"Du kannst nur einen Wert von 1 bis 298 angeben.");
    format(str,sizeof(str),"[Admin]: %s hat dir den Skin %d gegeben.",name,skin);
    SendClientMessage(pID,Gelb,str);
    SetPlayerSkin(pID,skin);
    SetPVarInt(pID, "Skin", skin);
    format(str,sizeof(str),"[AdmCmd]: %s hat dem Spieler %s den Skin %d gegeben.",name,givename,skin);
    printf("%s",str);
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerAdminLevel(i, 2))
    {
    SendClientMessage(i,Gelb,str);
    }
    }
    }
    return 1;
    }

  • Was steht denn dort wenn du diesen Befehl eingibst?
    Bis wohin kommst du?


    Füg ein paar print(""); ein


    soo...
    ocmd:skin(playerid,params[])
    {
    new str[100],skin,name[MAX_PLAYER_NAME],givename[MAX_PLAYER_NAME],pID;
    print("1");
    if(!IsPlayerConnected(playerid))return 1; //Wenn nicht eingeloggt
    if(!IsPlayerAdminLevel(playerid, 2))return 1; //Wenn kein Admin
    print("2");
    if(sscanf(params,"ud",pID,skin))return SendClientMessage(playerid,Gelb,"Befehl: /skin [ID] [SkinID]");
    printf("ID: %i || Skin %i",pID,skin);
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Gelb,"Es ist kein Spieler mit dieser ID verbunden.");
    if(skin < 1 || skin > 298)return SendClientMessage(playerid,Gelb,"Du kannst nur einen Wert von 1 bis 298 angeben.");
    print("3");
    GetPlayerName(playerid,name,sizeof(name)),GetPlayerName(pID,givename,sizeof(givename));
    print("4");
    format(str,sizeof(str),"[Admin]: %s hat dir den Skin %d gegeben.",name,skin);
    SendClientMessage(pID,Gelb,str);
    format(str,sizeof(str),"[AdmCmd]: %s hat dem Spieler %s den Skin %d gegeben.",name,givename,skin);
    printf("%s",str);
    print("5");
    SetPVarInt(pID, "Skin", skin);
    SetPlayerSkin(pID,skin);
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerAdminLevel(i, 2))continue;//Schleife geht einfach weiter
    SendClientMessage(i,Gelb,str);
    }
    print("6");
    return 1;
    }


    Dann dann führe den befehl aus und sag uns was die Server.Logs sagen

  • Aber über diesen befehl sehen wir den Fehler, also machst du es oder nicht?


    Hast du das Plugin und include geupdatet?
    Und nutzt das neuste?


    Hast du in deinem Script irgendwo den stock sscanf?


    //EDIT:
    Schick uns bitte die Logs
    Wo die print's drinnen sind.
    Nur diesen teil


    //EDIT: 13:31 _Advanced_:
    Ich habe es nun mal in mein Script eingefügt und es klappt ohne Probleme



    [13:30:34] 1
    [13:30:34] 2
    [13:30:34] ID: 0 || Skin 2
    [13:30:34] 3
    [13:30:34] 4
    [13:30:34] [AdmCmd]: PermanenT hat dem Spieler PermanenT den Skin 2 gegeben.
    [13:30:34] 5
    [13:30:34] 6


    Das sagen meine Server.Logs, der Skin wird mir auch gegeben ohne Probleme


    Es liegt also sicherlich an deinem Sscanf Plugin