dcmd/strcmp

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
  • DCMD oder STRCMP? 40

    1. strcmp (16) 40%
    2. dcmd (24) 60%

    Hi!
    Wollte mal fragen was der Unterschied zwischen dcmd und strcmp ist, da manche finden dass dcmd um soviel besser ist...


    DCMD
    dcmd_befehl(playerid,params[])



    STRCMP
    if(strcmp(cmd,"/befehl",true) == 0


    Für mich wäre da der einzige unterschied dass es kleiner ist :S

    Einmal editiert, zuletzt von Firefox ()

  • 1. Schneller
    2. Einfacher
    3. Mehrere Funktionen in einem :D

  • Könnte mir pls dann einer einen Beispiel Befehl scripten?
    Kenn mich nicht so aus mit dcmd
    also jetzt z.b.: diesen befehl in dcmd scripten:


    if(strcmp(cmd, "/mountchillad", true) == 0 || strcmp(cmd, "/mc", true) == 0)
    {
    SetPlayerPos(playerid,-2316.8604,-1679.5052,489.8984);
    SetVehiclePos(GetPlayerVehicleID(playerid),-2316.8604,-1679.5052,489.8984);
    return 1;
    }

  • dcmd verwendet ein Makro sprich Makros sind für das ersetzen der Werte da so wird in wirklichkeit der Code dort ausgeführt sprich vom Compiler eingesetzt


    #define foreach(%1) for(new %1 = 0;%1<MAX_PLAYERS;%1++) if(IsPlayerConnected(%1) && !IsPlayerNPC(%1))



    foreach(player)
    {
    // Schleife
    }


    das gleich und ähnlich wird in dcmd übernommen darin wird ebenfalls StringCompare verwendet sprich darin liegt kein großer unterschied

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • dcmd_mc(playerid,prm[])return dcmd_mountchillad(playerid,prm);
    dcmd_mountchillad(playerid,prm[])
    {
    #pragma unused prm
    SetPlayerPos(playerid,-2316.8604,-1679.5052,489.8984);
    SetVehiclePos(GetPlayerVehicleID(playerid),-2316.8604,-1679.5052,489.8984);
    return 1;
    }

  • O.O
    Also einfacher ist das jetzt nicht gerade :P


    Trotzdem danke, opa :)

  • Wenn man sich damit befasst, ist es sicher leicht. ;)
    Nutze jedenfalls strcmp, ist um einiges einfacher für mich.

    Greetz [Spirit]
    [font='Tahoma, Arial, Helvetica, sans-serif']


    [size=8]*** Ultimate GF RolePlay v0.5.0 ***
    *** Release & © by [Spirit] 2009 - 2011 ***
    *** Scriptstatus - |||||[color=#ff0000]|||||
    ***

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • ich nutze beides,aber strcmp nutze ich nur für commands ohne parameter.


    ganz ehrlich leute, habt ihr mal einen command wie /goto <id> in dcmd und in strcmp gescriptet?


    in dcmd schaut so ein cmd ungefähr so aus:


    dcmd_goto(playerid, params[])
    {
    new
    id, Float:bspX, Float:bspY, Float:bspZ;
    if (sscanf(params, "u", id )) SendClientMessage(playerid, 0xFF0000AA, "Verwendung: \"/goto <playerid>\"");
    else if (id == INVALID_PLAYER_ID) SendClientMessage(playerid, 0xFF0000AA, "Player mit der richigen ID nicht gefunden.");
    else
    {
    if(IsPlayerAdmin(playerid))
    {
    GetPlayerPos(id, Float:bspX, Float:bspY, Float:bspZ);
    SetPlayerPos(playerid, Float:bspX, Float:bspY, Float:bspZ);
    }
    }
    return 1;
    }


    + eine zeile für dcmd(goto, 4, cmdtext)


    ungetestet, gibt aber keine errors



    mit strcmp schaut das ganze so aus (haltet euch fest :D)


    if(!strcmp(cmd, "/goto", true))
    {
    new Float:pX,Float:pY,Float:pZ,tmp[128];
    if (IsPlayerAdmin(playerid))
    {
    tmp = strtok(cmdtext, index);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, grün, "Hilfe: /goto [ID]");
    SendClientMessage(playerid, rot, "FUNKTION: Kann dich zu einem Spieler Porten.");
    return 1;
    }
    new giveplayerid = strval(tmp);
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    GetPlayerPos(giveplayerid,pX,pY,pZ);
    SetVehiclePos(GetPlayerVehicleID(playerid),pX,pY,pZ+2);
    }
    else
    {
    GetPlayerPos(giveplayerid,pX,pY,pZ);
    SetPlayerPos(playerid,pX,pY,pZ+2);
    }
    SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
    }
    else if(giveplayerid == INVALID_PLAYER_ID)
    {
    format(tmp, sizeof(tmp), "%d ist nicht im Server.", giveplayerid);
    SendClientMessage(playerid, rot, tmp);
    }
    }
    else SendClientMessage(playerid, rot, "Du bist kein Admin.");
    return 1;
    }



    das eine sind 35 zeilen (strcmp) das andere 17 (dcmd) bei parameter commands ist mir dcmd eindeutig lieber :D

  • Ich bevorzuge DCMD.
    Dort sind Commands mit Parametern ziemlich leicht ^^.


  • soll das ein witz sein? du verwendest ja auch viel weniger sachen bei dcmd, nebenbei hast du auch einen richtig umständlichen strcmp genommen :sleeping:
    ich kommentier mal alles bei strcmp aus was bei dmcd auch nicht dabei ist


    //edit sehe gerade das du auch viel in eine zeile geschrieben hast. das kannst du bei strcmp auch machen...