Problem mit /su

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 Abend.
    Ich habe einen Befehl begonnen & Eben Fertig gestellt.
    Jetzt habe Ich es Getestet & Es Funktioniert auch.
    Aber immer wenn Ich dann Nochmal ein Wandet setzte, bleibt es Nur bei 1...
    Hier mein Befehl:

    ocmd:su(playerid,params[])
    {
    if(!isPlayerInFrak(playerid,1))return SendClientMessage(playerid,Rot,"Du bist kein Beamter.");
    new otherid,string[128],reason[64],amount;
    if(sscanf(params,"uds",otherid,amount,reason))return SendClientMessage(playerid,Blau,"Benutzung: /suspect [ID] [Wanteds] [Grund]");
    if(otherid == INVALID_PLAYER_ID)return SendClientMessage(playerid,Rot,"Der Spieler ist nicht Online.");
    SetPVarInt(playerid,"Wanteds",GetPlayerWantedLevel(playerid)+1);
    format(string,sizeof(string),"Beamter %s hat dir %d Wanteds gegeben. Grund: %s",SpielerName(playerid),amount,reason);
    SendClientMessage(otherid,Rot,string);
    format(string,sizeof(string),"Du hast %s %d Wanteds gegeben. Grund: %s",SpielerName(otherid),amount,reason);
    SendClientMessage(playerid,Hellgrün,string);
    return 1;
    }
    Ich Speichere meine Systeme auf Folgende Art:

    GetPVarInt--> Zum Auslesen
    SetPVarInt--< Zum Speichern


    Findet ihr in dem Befehl den Fehler?
    Ich finde Ihn nämlich grade Nicht...


    MFG
    Smoker2012

  • Naja, das mit dem PVarInt brauchst du nicht unbedingt, blos damit der Stern Rechts oben erscheint, solltest du SetPlayerWantedLevel machen.


    Wenn du das nicht möchtest, kannst du es weglassen. Bloß dann kannst du es nicht abfragen um es zu setten.


    Siehe dein Code:

    SetPVarInt(playerid,"Wanted",GetPlayerWantedLevel(playerid));


    #edit:


    Sondern eben

    SetPVarInt(playerid,"Wanted",GetPVarInt(playerid,"Wanted")+1);

  • Hallo.
    Ich habe den Befehl jetzt Bisschen verbessert.

    ocmd:su(playerid,params[])
    {
    if(!isPlayerInFrak(playerid,1))return SendClientMessage(playerid,Rot,"Du bist nicht In der Fraktion!");
    new player,string[128],reason[64],amount;
    if(sscanf(params,"uds",player,amount,reason))return SendClientMessage(playerid,Blau,"[Benutzung:] /su [ID] [Wanteds] [Grund]");
    if(player == INVALID_PLAYER_ID)return SendClientMessage(playerid,Rot,"Dieser Spieler ist nicht Online!");
    SetPVarInt(player,"Wanteds",GetPlayerWantedLevel(player)+1);
    format(string,sizeof(string),"Beamter %s hat dir %d Wanteds gegeben. Grund: %s",SpielerName(player),amount,reason);
    SendClientMessage(player,Rot,string);
    format(string,sizeof(string),"Du hast %s %d Wanteds gegeben. Grund: %s",SpielerName(player),amount,reason);
    SendClientMessage(playerid,Hellgrün,string);
    return 1;
    }
    Ich habe Jetzt das Setzen der Wanteds bisschen Anders gemacht.
    Ich hoffe mal, das Es so Funktionieren würde.
    Ich werde Es später mal testen.


    MFG
    Smoker2012

  • Du hast es wieder so wie vorher.


    Wenn du nur eine Abfrage ohne die rechte anzeige willst musst du:

    SetPVarInt(playerid,"Wanted,GetPVarInt(playerid,"Wanted)+1);



    machen. Aber du kannst nicht GetPlayerWantedLevel abfragen, wenn du nichtmal eins gesetzt hast.

  • Hallo Smoker,


    du musst einfach statt:

    SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid)+1);
    SetPVarInt(playerid,"Wanteds",GetPVarInt(playerid)+1);

    es so schreiben:

    SetPlayerWantedLevel(otherid,GetPlayerWantedLevel(otherid)+amount);
    SetPVarInt(otherid,"Wanteds",GetPVarInt(otherid)+amount);


    Also einmal das "+1" mit "amount" ersetzen, das du die Menge der Wanteds erst in deinem Befehl angibst.
    Und 2. Warum "playerid" ?? Du willst die Wanteds doch einem anderen Spieler geben.


    Ich hoffe ich konnte helfen.


    Mfg
    Jokertime

  • Hallo.
    Ich danke dir Für die Hilfe
    Aber Ich verstehe Nicht, Wie Ich es Einfügen muss. Da es Für mich "Durcheinander" Geschrieben wurde ist.
    Könntest du Eventuell es Mal in meinem Befehl zeigen?


    MFG
    Smoker2012

  • So das ist dein Befehl vorher:

    ocmd:su(playerid,params[])
    {
    if(!isPlayerInFrak(playerid,1))return SendClientMessage(playerid,Rot,"Du bist nicht In der Fraktion!");
    new player,string[128],reason[64],amount;
    if(sscanf(params,"uds",player,amount,reason))return SendClientMessage(playerid,Blau,"[Benutzung:] /su [ID] [Wanteds] [Grund]");
    if(player == INVALID_PLAYER_ID)return SendClientMessage(playerid,Rot,"Dieser Spieler ist nicht Online!");
    SetPVarInt(player,"Wanteds",GetPlayerWantedLevel(player)+1);
    format(string,sizeof(string),"Beamter %s hat dir %d Wanteds gegeben. Grund: %s",SpielerName(player),amount,reason);
    SendClientMessage(player,Rot,string);
    format(string,sizeof(string),"Du hast %s %d Wanteds gegeben. Grund: %s",SpielerName(player),amount,reason);
    SendClientMessage(playerid,Hellgrün,string);
    return 1;
    }


    Und so solltest es meiner Meinung nach sein:

    ocmd:su(playerid,params[])
    {
    if(!isPlayerInFrak(playerid,1))return SendClientMessage(playerid,Rot,"Du bist nicht In der Fraktion!");
    new player,string[128],reason[64],amount;
    if(sscanf(params,"uds",player,amount,reason))return SendClientMessage(playerid,Blau,"[Benutzung:] /su [ID] [Wanteds] [Grund]");
    if(player == INVALID_PLAYER_ID)return SendClientMessage(playerid,Rot,"Dieser Spieler ist nicht Online!");
    SetPlayerWantedLevel(player,GetPlayerWantedLevel(player)+amount);//diese Zeile muss hinzu und du musst das +1 mit + amount ersetzen
    SetPVarInt(player,"Wanteds",GetPlayerWantedLevel(player)+amount); //hier das selbe
    format(string,sizeof(string),"Beamter %s hat dir %d Wanteds gegeben. Grund: %s",SpielerName(playerid),amount,reason);//und hier "SpielerName(playerid) und nicht SpielerName(player)
    SendClientMessage(player,Rot,string);
    format(string,sizeof(string),"Du hast %s %d Wanteds gegeben. Grund: %s",SpielerName(player),amount,reason);
    SendClientMessage(playerid,Hellgrün,string);
    return 1;
    }


    Ich denke so müsste es jetzt funktionieren.


    Mfg
    Jokertime

  • Hier mal eine variante:



    ocmd:suspect(playerid,params[])
    {
    if(!isPlayerInStaatsFrakt(playerid))return SendClientMessage(playerid,ROT,"Du bist kein Beamter!");
    {
    new pID,grund[256],string[256];
    if(GetPVarInt(playerid,"Duty")==1)
    {
    if(sscanf(params,"is",pID,grund))return SendClientMessage(playerid,ROT,"/suspect [ID] [VERBRECHEN]");
    GivePlayerWanted(pID);
    format(string,sizeof(string),"%s hat dir ein Wanted wegen %s gegeben!",SpielerName(playerid),grund);
    SendClientMessage(pID,GELB,string);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(isPlayerInStaatsFrakt(i))
    {
    format(string,sizeof(string),"%s hat %s ein Wanted wegen %s gegeben!",SpielerName(playerid),SpielerName(pID),grund);
    SendClientMessage(i,GELB,string);
    }
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist nicht im Dienst!");
    }
    }
    return 1;
    }


    ggf. muss es an dein Script mit den gespeicherten+geladenen werten angepasst werden.

    Projektleiter

    Cleared to Land ist in der Script Werkstatt ;)