Problem mit OCMD

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
  • Moin,
    ich will ein Wanted Befehl machen, jedoch überträgt er den Grund nicht in den String, warum nicht?
    ocmd:w(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
    new pID,fID,grund;
    if(sscanf(params,"ui",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]");
    SetPVarInt(pID,"Wanteds",fID);
    new string[128];
    format(string,sizeof(string),"Du hast %i Wanteds bekommen, Grund:%s",fID,grund);
    SendClientMessage(pID,BLAU,string);
    return 1;
    }
    Es steht dort InGame nur:
    "Du hast ANZAHLDERWANTEDS bekommen,Grund: "
    Also das mit den Anzahl der Wanteds klappt, nur der Grund nicht.

  • Du musst diese zeile if(sscanf(params,"ui",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]"); mit dieser austauschen if(sscanf(params,"uis",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]");


    EDIT: Beavis war wohl schneller :)

  • ocmd:w(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
    new pID,fID,grund; // Grund = String also grund[Größe]
    if(sscanf(params,"ui",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]"); // hier fehlt als parameter der Grund, also (params,"uis[Größe]",pID,fID,grund))
    SetPVarInt(pID,"Wanteds",fID);
    new string[128];
    format(string,sizeof(string),"Du hast %i Wanteds bekommen, Grund:%s",fID,grund);
    SendClientMessage(pID,BLAU,string);
    return 1;
    }

  • SetPlayerWantedLevel(playerid, fID)


    Danke, aber das löst mein Problem ja nicht :D
    Ich hab jetzt folgendes drinne:
    ocmd:w(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
    new pID,fID,grund; // Grund = String also grund[Größe]
    if(sscanf(params,"uis",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]"); // hier fehlt als parameter der Grund, also (params,"uis[Größe]",pID,fID,grund))
    SetPVarInt(pID,"Wanteds",fID);
    new string[128];
    format(string,sizeof(string),"Du hast %i Wanteds bekommen, Grund:%s",fID,grund);
    SendClientMessage(pID,BLAU,string);
    SetPlayerWantedLevel(playerid, fID);
    return 1;
    }
    Und es klappt einfach nicht bzw. der Server stürzt dann ab.

  • Du musst auch meine Kommentare auch umsetzen damits klappt ..


    new pID,fID,grund[32]; // Grund = String also grund[Größe]
    if(sscanf(params,"uis[32]",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]");

  • TheDome


    ocmd:w(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
    new pID,fID,grund[128];
    if(sscanf(params,"uis",pID,fID,grund))return SendClientMessage(playerid,BLAU,"/w [ID] [Anzahl] [Grund]");
    new aktuwlvl = GetPlayerWantedLevel(pID);
    SetPlayerWantedLevel(pID,aktuwlvl+fID);
    new string[128];
    format(string,sizeof(string),"Du hast %i Wanteds bekommen, Grund:%s",fID,grund);
    SendClientMessage(pID,BLAU,string);
    SetPlayerWantedLevel(playerid, fID);
    return 1;
    }


    So sollte nun auch alles funktionieren....
    P.S Du solltest aber eine max. Grenze einbauen das man nicht mehr als 6 Wanteds bekommt :) Du kannst das ganze z.B auch auf 60 Wanteds hochstufen allerdings müsstest du dann auch die Wantedsanzeigen anpassen.


  • Das funktioniert schonmal dankeschön, aber eine Frage hätte ich da noch, es dürfen 2 Fraktionen Wanteds verteilen, wie mache ich das?
    Wie es mit STRCMP geht weiß ich, bei OCMD ist mir alles neu :wacko:
    Es dürfen Fraktion 1 und Fraktion 6 Wanteds verteilen.

  • TheDome dies ist doch relativ einfach...


    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");
    einfach ersetzen mit:
    if(!isPlayerInFrakt(playerid,1) || !isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");


    müsste so funktionieren.


    MfG

  • if(!isPlayerInFrakt(playerid,1) || !isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");


    Jetzt rate mal warum er das sagt ... -> SendClientMessage(playerid,ROT,"Du bist kein Polizist"); ändere einfach die Message

  • if(!isPlayerInFrakt(playerid,1) || !isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");


    Jetzt rate mal warum er das sagt ... -> SendClientMessage(playerid,ROT,"Du bist kein Polizist"); ändere einfach die Message


    ?
    Es dürfen die Fraktion 1 & 6 Wanteds geben, es geht aber nicht.
    Wenn man in Fraktion 1 oder 6 ist, kommt die Meldung Du bist kein Polizist, obwohl man einer ist

  • Achso, habe es falsch verstanden, sorry.
    Lass dir mal deine Fraktions ID ausgeben per Printf oder SendClientMessage, vielleicht bist du ja weder in der Fraktion 1 noch in der Fraktion 6.
    Zeig mal deine isPlayerInFrakt Funktion.

  • Daran wird es nicht liegen. Wenn es so ist:
    if(!isPlayerInFrakt(playerid,1) || !isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Polizist");

    Klappt es nicht, aber es klappt wenn ich nur eine Fraktion angebe, also:
    if(!isPlayerInFrakt(playerid,1)) return SendClientMessage(playerid,ROT,"Du bist kein Polizist");