/wort wort wort undsoweiter

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 Breadfish,


    weil jemand wie das geht (das = überschrift)?


    ich will grad ein makler-"system" machen und dazu wäre es ganz nützlich wenn man mehrehe wörter als "parameter" dort eingeben könnte.


    also z.B. bie /port


    man gibt /port ein und bekommt die möglichkeiten.
    bei /port ort(z.B. BSN) wird man dann zum BSN geportet


    also quasie: /port BSN


    jemand eine idee? :)


    ich habe das beim /haussell befehl so probiert, aber da mecker er rum, weil er "cmdtext" nicht kennt...

    Spoiler anzeigen
    dcmd_haussell(playerid,params[])
    {
    if(HavePlayerJob(playerid,6))
    {
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    new SellerID,BuyerID,preis;
    new s[128],n[128],m[128],pfad[50];
    if(sscanf(params,"uui",SellerID,BuyerID,preis))return SendClientMessage(playerid,COLOR_WHITE,"Benutze: /haussell [Verkäufer(ID)] [Käufer(ID)] [Preis]");
    if(strcmp(HausInfo[haus][Haus_Besitzer],SpielerName(SellerID),false) == 0)
    {
    if(GetPlayerMoney(BuyerID) >= preis)
    {
    format(s,sizeof(s),"Du hast %s das Angebot gemacht, das Haus von %s [ID: %i] für %i$ zu kaufen.",SpielerName(BuyerID),SpielerName(SellerID),haus,preis);
    format(n,sizeof(n),"%s möchte dir das Haus von %s [ID %i] für %i$ verkaufen.",SpielerName(playerid),SpielerName(SellerID),haus,preis);
    format(m,sizeof(m),"%s möchte dein Haus [ID: %i] für %i$ an %s verkaufen.",SpielerName(playerid),haus,preis,SpielerName(BuyerID));
    SendClientMessage(SellerID,COLOR_LBLUE,m);
    SendClientMessage(BuyerID,COLOR_LBLUE,n);
    SendClientMessage(playerid,COLOR_LBLUE,s);
    SendClientMessage(SellerID,COLOR_LBLUE,"Benutze, um das Angebot anzunehmen, /accept. Um es abzulehnen benutze /cancel");
    SendClientMessage(BuyerID,COLOR_LBLUE,"Benutze, um das Angebot anzunehmen, /accept. Um es abzulehnen benutze /cancel");
    if(strcmp(cmdtext,"/accept",true)==0)
    {
    format(pfad,50,"/Häuser/%d.txt",haus);
    dini_Set(pfad,"Besitzer",SpielerName(BuyerID));
    KillHaus(haus);
    LoadHaus(haus);
    }
    else if(strcmp(cmdtext,"/cancel",true)==0)
    {

    }
    }
    else SendClientMessage(playerid,COLOR_RED,"Der Käufer hat nicht genug Geld.");
    SendClientMessage(BuyerID,COLOR_RED,"Du hast nicht genug Geld, um das Haus zu kaufen.");
    }
    else SendClientMessage(playerid,COLOR_RED,"Dieses Haus gehört nicht dem Verkäufer.");
    }
    }
    return 1;
    }


    MfG
    Cr4sh

    Mit freundlichen Grüßen,
    Cr4sh


  • dcmd_lizenzgeben(playerid,params[]){ if(SpielerInfo[playerid][Fraktion] == 4 || SpielerInfo[playerid][Adminlevel] > 3) { if(sscanf(params,"usi",pID,Schein,preis)) { if(!strlen(Schein)) { SendClientMessage(playerid,Weis,"Benutze /lizenzgeben [playerid] [Lizenzname] [Preis]"); SendClientMessage(playerid,Weis,"Auto || Motorrad || Flug || Boot || Angel || Roller || LKW"); if(SpielerInfo[playerid][Adminlevel] > 3) { SendClientMessage(playerid,Weis,"Alle"); } return 1; } } else { if(strcmp(Schein,"Auto",true) == 0) {


    Hier ein Beispiel, sry habe net herrausgefunden wie man das macht, dass das ganze untereinander steht.


  • if(strcmp(cmd, "/aaa", true) == 0)
    {
    new x_nr[258];
    x_nr = strtok(cmdtext, idx);
    if(!strlen(x_nr))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /aaa [Name]");
    SendClientMessage(playerid, COLOR_WHITE, "** AAA NAMEN ** BSN");
    return 1;
    }
    if(strcmp(x_nr, "BSN", true) == 0)
    {
    SetPlayerPos...
    }
    return 1;
    }



    So ungefähr?


    // EDIT 1: Angepasst!

  • Nochmal danke für die Antworten :)


    RedAge: if(!strlen(Schein))


    was hat das dabei für einen sinn?



    @Barney': x_nr = strtok(cmdtext, idx);


    Kannst du das ein bisschen erklären? :)



    /edit: und das in ein "dcmd-befehl" einbauen. wäre das möglich?

    Mit freundlichen Grüßen,
    Cr4sh



  • @Barney': x_nr = strtok(cmdtext, idx);


    Kannst du das ein bisschen erklären? :)


    Dieses x_nr ist einfach nur sogesehen "definiert". Es soll als Error meldung dargestellt werden, falls der Befehl nicht richtig sit


    cmdtext = /aaa
    idx = BSN


    Um das aufzurufen kommt halt in das "if(strcmp(x_nr, "BSN", true) == 0)" das x_nr statt dem cmdtext.



    Klar ist das möglich als DCMD zu verfassen. Nur ich kenn mich mit DCMD nicht aus.

  • Also würde man im endeffekt /aaa BSN eingeben?


    RedAge: Einfach in deiner .pwn Datei richtig einrücken und untereinander schreiben und dann zwischen sie beiden codes ([pwn ] und [/pwn ]) einfügen.
    Anderfalls noch unter Einstellungen die "BB Codes" aktivieren.

    Mit freundlichen Grüßen,
    Cr4sh


  • Gut. Vielen Dank für deine Hilfe :)


    Ich lese wir grad das Tutorial durch und ich hoffe, das ich das so hinbekomme, wie ich mir das vorstelle :)



    /edit: Also das Tutorial hat mir jetzt eig nur das gezeigt, was ich schon kann (dcmd-Befehle erstellen mit Zahlen als Parametern)


    Ich möchte jetzt aber "Wörter als Parameter" verwenden. Vllt sonst noch jemand eine Idee?


    Oder jemand, der mir folgendes erklären kann?:


    · strtok
    · strlen
    · cmd (text)
    · idx

    Mit freundlichen Grüßen,
    Cr4sh


    Einmal editiert, zuletzt von Cr4sh ()

  • Hier ein kleines Beispiel:





    dcmd_deinbefehl(playerid,params[])


    {
    new Schein[256],string[128],string2[128],preis;
    if(SpielerInfo[playerid][Fraktion] == 4 || SpielerInfo[playerid][Adminlevel] > 3)
    {
    if(sscanf(params,"usi",pID,Schein,preis))
    {
    if(!strlen(Schein))
    {
    SendClientMessage(playerid,Weis,"Benutze /lizenzgeben [playerid] [Lizenzname] [Preis]");
    SendClientMessage(playerid,Weis,"Auto || Motorrad || Flug || Boot || Angel || Roller || LKW");
    if(SpielerInfo[playerid][Adminlevel] > 3)
    {
    SendClientMessage(playerid,Weis,"Alle");
    }
    return 1;
    }
    }
    //damit schreibst du der person die möglichkeiten die er besitzt einzugeben, und hiermit frägst du ab ob er eins der wörter eingegeben hat:

    if(strcmp(Schein,"Auto",true) == 0)
    {



    Sry an alle, aber mit dem pwn button schreib ich irgendwie immernoch nur in einer Zeile

  • Mal für dich richtig gemacht:



    dcmd_deinbefehl(playerid,params[])
    {
    new Schein[256],string[128],string2[128],preis;
    if(SpielerInfo[playerid][Fraktion] == 4 || SpielerInfo[playerid][Adminlevel] > 3)
    {
    if(sscanf(params,"usi",pID,Schein,preis))
    {
    if(!strlen(Schein))
    {
    SendClientMessage(playerid,Weis,"Benutze /lizenzgeben [playerid] [Lizenzname] [Preis]");
    SendClientMessage(playerid,Weis,"Auto || Motorrad || Flug || Boot || Angel || Roller || LKW");
    if(SpielerInfo[playerid][Adminlevel] > 3)
    {
    SendClientMessage(playerid,Weis,"Alle");
    }
    }
    }
    }
    return 1;
    }

  • Danke nochmal an beide :)


    Aber zu dem Beispiel:


    Wenn ich jetzt
    /deinbefehl
    eingeben würde, dann würden die ganzen möglichkeiten kommen und wenn ich
    /deinbefehl Schein
    eingeben würde, dann würde nur was passieren, wenn das wort hinter
    /deinbefehl
    Schein ist, oder wie?


    //edit: RedAge: Dein edit vom vorherigen Text hats klar gemacht :)
    Ich probiere jetzt mal rum und falls ich das nicht richtig hinbekomme, dann melde ich mich nochmal :)

    Mit freundlichen Grüßen,
    Cr4sh