OCMD 2Wörter Befehl?

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


    Kann man mit OCMD einen Befehl bestehend aus 2 Wörtern scripten?
    Ich habe einen /accept repair befehl gescripted aber wenn ich zwischen accept und repair ein Leerzeichen mache bekomm ich haufen Errors sonst nicht


    ocmd:accept repair(playerid,params[])
    {
    if(Anfrage[playerid] == 2)
    {
    new string1[128],string2[128];
    Anfrage[playerid] = 0;
    format(string1,sizeof(string1),"Du hast das Angebot von %s angenommen und dein Fahrzeug wurde repariert",Spielername(AnfrageID[playerid]));
    format(string2,sizeof(string2),"%s hat dein Angebot angenommen",Spielername(playerid));
    SCM(playerid,orange2,string1);
    SCM(AnfrageID[playerid],orange2,string2);
    AnfrageID[playerid] = 0;
    RepairVehicle(GetPlayerVehicleID(playerid));
    }
    else
    {
    SCM(playerid,hellrot,"Du hast kein Angebot erhalten");
    }
    return 1;
    }

  • Das geht nicht. Wieso es nicht geht liegt schon an der Methode wie bei ocmd,zcmd und arbeiten. Es werden public Funktionen angelegt für die Befehle.
    Das eine Funktion wie diese nicht funktioniert,könnt ihr gerne selber nachprüfen:
    public mit leerzeichen() {
    return 1;
    }


    /accept wäre der Befehl, repair der weitere Parameter.
    [TUT] dcmd + sscanf + ZCMD - Einfache Befehl-Verarbeitung
    Mit SSCANF könntest du den Parameter auslesen.


  • ocmd:accept(playerid,params[])
    {
    new lolololo[20];
    if(sscanf(params,"s",lolololo))return SendClientMessage(playerid,BLAU,"Info: /accept [repair]");
    if(strcmp(lolololo,"repair",true)==0)
    {
    if(Anfrage[playerid] == 2)
    {
    new string1[128],string2[128];
    Anfrage[playerid] = 0;
    format(string1,sizeof(string1),"Du hast das Angebot von %s angenommen und dein Fahrzeug wurde repariert",Spielername(AnfrageID[playerid]));
    format(string2,sizeof(string2),"%s hat dein Angebot angenommen",Spielername(playerid));
    SCM(playerid,orange2,string1);
    SCM(AnfrageID[playerid],orange2,string2);
    AnfrageID[playerid] = 0;
    RepairVehicle(GetPlayerVehicleID(playerid));
    }
    else
    {
    SCM(playerid,hellrot,"Du hast kein Angebot erhalten");
    }
    }
    return 1;
    }

    relativ einfach mit sscanf

  • Habs geschafft ;)
    Ich habs jetzt so gemacht
    ocmd:accept(playerid,params[])
    {
    new text[8];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,rot,"Benutze /accept repair");
    if(strfind("/accept repair","repair",true) != -1)
    {
    if(Anfrage[playerid] == 2)
    {
    new string1[128],string2[128];
    Anfrage[playerid] = 0;
    format(string1,sizeof(string1),"Du hast das Angebot von %s angenommen und dein Fahrzeug wurde repariert",Spielername(AnfrageID[playerid]));
    format(string2,sizeof(string2),"%s hat dein Angebot angenommen",Spielername(playerid));
    SCM(playerid,orange2,string1);
    SCM(AnfrageID[playerid],orange2,string2);
    RepairVehicle(GetPlayerVehicleID(playerid));
    GivePlayerMoney(AnfrageID[playerid],Ueberweiser[playerid]);
    GivePlayerMoney(playerid,-Ueberweiser[playerid]);
    Ueberweiser[playerid] = 0;
    AnfrageID[playerid] = 0;
    }
    else
    {
    SCM(playerid,hellrot,"Du hast kein Angebot erhalten");
    }
    }
    return 1;
    }

    Aber wäre es bei deinem nicht egal was man für einen string eingibt? also z.B /accept hure oder so :D
    Wenn nicht erkläre es mir^^

  • Was du dort gemacht hast MrMoney funktioniert nicht:


    if(strfind("/accept repair","repair",true) != -1)
    Das ist totaler Quatsch.
    Ist doch klar,dass er das Wort "repair" immer in "/accept repair" finden wird. Genau genommen findet er es an Position 8.

  • Sorry ich hab mich dem SAMP Wiki da etwas falsch bedient
    Ich dachte ich müsste strfind benutzen
    Ich habs nicht so mit den verschiedenen str... Sachen weil ich fürh mit OCMD angefangen habe und daher kaum strcmp... brauchte


    /edit:

    Was du dort gemacht hast MrMoney funktioniert nicht:


    if(strfind("/accept repair","repair",true) != -1)
    Das ist totaler Quatsch.
    Ist doch klar,dass er das Wort "repair" immer in "/accept repair" finden wird. Genau genommen findet er es an Position 8.

    Aber wenn ich es folgendermaßen mache geht es
    ocmd:accept(playerid,params[])
    {
    new text[8];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,rot,"Benutze /accept repair");
    if(strfind(text,"repair",true) != -1)
    //if(strcmp(text,"repair",true)==0)
    {
    if(Anfrage[playerid] == 2)
    {
    new string1[128],string2[128];
    Anfrage[playerid] = 0;
    format(string1,sizeof(string1),"Du hast das Angebot von %s angenommen und dein Fahrzeug wurde repariert",Spielername(AnfrageID[playerid]));
    format(string2,sizeof(string2),"%s hat dein Angebot angenommen",Spielername(playerid));
    SCM(playerid,orange2,string1);
    SCM(AnfrageID[playerid],orange2,string2);
    RepairVehicle(GetPlayerVehicleID(playerid));
    GivePlayerMoney(AnfrageID[playerid],Ueberweiser[playerid]);
    GivePlayerMoney(playerid,-Ueberweiser[playerid]);
    Ueberweiser[playerid] = 0;
    AnfrageID[playerid] = 0;
    }
    else
    {
    SCM(playerid,hellrot,"Du hast kein Angebot erhalten");
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von MrMonkey ()