Befehl in ocmd umwamdeln

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 könnte mir jemand sagen wie ich das in ocmd umwandel ?
    Habe es angefangen aber weis nicht wie ich abfrage ob er mats oder so eingibt
    ocmd:put(playerid,params[])
    {
    new x_nr[256];
    if(IsPlayerConnected(playerid))
    {
    if(PlayerToPoint(10.0,playerid,2133.82666016,-1787.04248047,12.52786732) || PlayerToPoint(10.0,playerid,2805.2058,-1418.9055,16.2500))
    {
    x_nr = strtok(cmdtext, idx);
    if(sscanf(params,"s",x_nr))
    SendClientMessage(playerid, COLOR_WHITE, "|__________________ Put __________________|");
    SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /put [NAME]");
    SendClientMessage(playerid, COLOR_GREY, "Verfügbare Namen: Mats, Drogen");
    SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|");
    return 1;
    }
    if(strcmp(x_nr,"Mats",true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /put mats [Menge]");
    format(string, sizeof(string), " Du hast %d Mats bei dir.", PlayerInfo[playerid][pMats]);
    SendClientMessage(playerid, COLOR_GRAD3, string);
    return 1;
    }
    new matss;
    matss = strval(tmp);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /put mats [Menge]");
    format(string, sizeof(string), " Du hast %d Materialien bei dir.", PlayerInfo[playerid][pMats]);
    SendClientMessage(playerid, COLOR_GRAD3, string);
    return 1;
    }
    if(matss > PlayerInfo[playerid][pMats])
    {
    SendClientMessage(playerid, COLOR_GRAD2, " So viele Materialien hast du nicht!");
    return 1;
    }
    PlayerInfo[playerid][pMats] -= matss;
    PlayerInfo[playerid][pBoxMats] += matss;
    format(string, sizeof(string), " %d Materialien in die Savebox gelegt!", matss);
    SendClientMessage(playerid, COLOR_GRAD4, string);
    return 1;
    }
    else if(strcmp(x_nr,"Drogen",true) == 0)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: /put drogen [Menge]");
    format(string, sizeof(string), " Du hast %d Drogen bei dir.", PlayerInfo[playerid][pDrugs]);
    SendClientMessage(playerid, COLOR_GRAD3, string);
    return 1;
    }
    new drugss;
    drugss = strval(tmp);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: /put drogen [Menge]");
    format(string, sizeof(string), " Du hast %d Drogen bei dir.", PlayerInfo[playerid][pDrugs]);
    SendClientMessage(playerid, COLOR_GRAD3, string);
    return 1;
    }
    if(drugss > PlayerInfo[playerid][pDrugs])
    {
    SendClientMessage(playerid, COLOR_GRAD2, " So viele Drogen hast du nicht!");
    return 1;
    }
    PlayerInfo[playerid][pDrugs] -= drugss;
    PlayerInfo[playerid][pBoxDrugs] += drugss;
    format(string, sizeof(string), " %d Drogen in die Savebox gelegt!", drugss);
    SendClientMessage(playerid, COLOR_GRAD4, string);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, " Du bist an keiner Savebox!");
    return 1;
    }
    }
    return 1;
    }

  • ocmd:put(playerid,params[])


    Daraus schließe ich mal, dass der Befehl bereits in der OCMD-Form geschrieben ist.
    Was genau ist also das Problem?


    if(strcmp(x_nr,"Mats",true) == 0)


    Ob der Spieler beispielsweise "Mats" als Parameter eingibt, wird hier auch abgefragt.


    Grüße,
    tonyalva

  • wie kann ich abfragen ob er befehl + mats eingibt also z.b /put mats 5

  • Dazu könntest du, sofern diese Variante nicht funktioniert, einen weiteren Parameter, nämlich einen Integer in der Zeile, in der du "sscanf" benutzt ergänzen, und die daraus resultierenden Abfragen dann natürlich verändern.


    Grüße,
    tonyalva

  • genauer bitte ...
    Der Beitrag ist zu kurz. Der Beitrag muss mindestens 10 Zeichen lang sein und 3 Wörter enthalten.

  • Ich bin neu in ocmd hab es heute angefangen könntest du mir das machen bitte ?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Dafür gibt es mehrere Tutorials im passenden Bereich.
    Die eine Zeile kann ich allerdings vorgeben, ja.


    if(sscanf(params,"s[12]d",parameter1,parameter2)) return // Code, der ausgeführt werden soll, wenn die Parameter nicht angegeben worden sind.


    Den Rest musst du allerdings selbst hinbekommen.


    Grüße,
    tonyalva

  • habs jetzt doch leider zeigt er mir das nicht an wenn ich nur /put eingebe


    if(sscanf(params,"s",x_nr))
    {
    SendClientMessage(playerid, COLOR_WHITE, "|__________________ Put __________________|");
    SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /put [NAME]");
    SendClientMessage(playerid, COLOR_GREY, "Verfügbare Namen: Mats, Drogen");
    SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|");
    return 1;
    }

  • Das ist so ja auch Falsch, mach das lieber mal so:


    if(sscanf(params,"s",x_nr))return SendClientMessage(playerid,WEISS,"blablabla");


    Hinter dem sscanf muss ein return sein, da er das ja senden soll, wenn nichts eingegeben wird und der Befehl dann nicht ausgeführt werden soll, sondern eben die Nachricht gesendet.

  • @ Gabsch: Totaler Blödsinn!
    Lies dir lieber erstmal durch, was return macht.
    @AC/DC: Lies dir den vorletzten Post nicht durch, bzw. behalte nichts davon im Gedächnis, weil nicht eine Zeile davon stimmt.
    Zu deinem Problem:
    Versuch es mal so. Ich habe es nicht testen können, da ich sscanf nicht habe.

    ocmd:put(playerid,params[])
    {
    if(IsPlayerConnected(playerid)) {
    if(PlayerToPoint(10.0,playerid,2133.82666016,-1787.04248047,12.52786732) || PlayerToPoint(10.0,playerid,2805.2058,-1418.9055,16.2500)) {
    new option[32],menge;
    if(sscanf(params,"s",option)&&sscanf(params,"si",option,menge)) {
    SendClientMessage(playerid, COLOR_WHITE, "|__________________ Put __________________|");
    SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /put [NAME]");
    SendClientMessage(playerid, COLOR_GREY, "Verfügbare Namen: Mats, Drogen");
    SendClientMessage(playerid, COLOR_WHITE, "|____________________________________________|");
    return 1;
    }
    if(!sscanf(params,"si",option,menge)) {
    if(!strcmp(option,"Mats",true)) {
    if(menge < 1) {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /put mats [Menge]");
    format(string, sizeof(string), " Du hast %d Mats bei dir.", PlayerInfo[playerid][pMats]);
    return SendClientMessage(playerid, COLOR_GRAD3, string);
    }
    if(menge > PlayerInfo[playerid][pMats]) return SendClientMessage(playerid, COLOR_GRAD2, " So viele Materialien hast du nicht!");
    PlayerInfo[playerid][pMats] -= menge;
    PlayerInfo[playerid][pBoxMats] += menge;
    format(string, sizeof(string), " %d Materialien in die Savebox gelegt!", menge);
    return SendClientMessage(playerid, COLOR_GRAD4, string);
    }
    else if(!strcmp(option,"Drogen",true)) {
    if(menge < 1) {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: /put drogen [Menge]");
    format(string, sizeof(string), " Du hast %d Drogen bei dir.", PlayerInfo[playerid][pDrugs]);
    return SendClientMessage(playerid, COLOR_GRAD3, string);
    }
    if(menge > PlayerInfo[playerid][pDrugs]) return SendClientMessage(playerid, COLOR_GRAD2, " So viele Drogen hast du nicht!");
    PlayerInfo[playerid][pDrugs] -= menge;
    PlayerInfo[playerid][pBoxDrugs] += menge;
    format(string, sizeof(string), " %d Drogen in die Savebox gelegt!", menge);
    return SendClientMessage(playerid, COLOR_GRAD4, string);
    }
    }
    }
    else return SendClientMessage(playerid, COLOR_RED, " Du bist an keiner Savebox!");
    }
    return 1;
    }

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.