strcmp in ocmd umscripten | Dringend Hilfe!

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
  • Guten Abend.
    Ich wollte gern wissen wie ich diesen Befehl in ocmd umscripte? Bitte um schnelle hilfe!


    {
    new cmd[256], idx;
    cmd = strtok(cmdtext, idx);
    if(strcmp(cmd, "/v", true, 10) == 0)
    {


    new String[200];
    new tmp[256];
    new Float:x, Float:y, Float:z;


    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Tippe: {FFD200}/v {FFFFFF}[NAME] (z.B {FFD200}/v elegy)");


    new vehicle = GetVehicleModelIDFromName(tmp);


    if(vehicle < 400 || vehicle > 611) return SendClientMessage(playerid, COLOR_YELLOW, "{FFFFFF}ERROR:{FFD200} Dieses Auto existiert nicht!");


    new Float:a;
    GetPlayerFacingAngle(playerid, a);
    GetPlayerPos(playerid, x, y, z);


    if(IsPlayerInAnyVehicle(playerid) == 1)
    {
    GetXYInFrontOfPlayer(playerid, x, y, 8);
    }
    else
    {
    GetXYInFrontOfPlayer(playerid, x, y, 5);
    }
    new Float:X,Float:Y,Float:Z, Float:Angle,int1;
    GetPlayerPos(playerid, X,Y,Z);
    GetPlayerFacingAngle(playerid,Angle);
    if(PlayerVehicle[playerid] != 0) { DestroyVehicle(PlayerVehicle[playerid]); }
    PlayerVehicle[playerid] = CreateVehicle(vehicle, x, y, z, a+1, -1, -1, -1);
    LinkVehicleToInterior(PlayerVehicle[playerid],int1);
    PutPlayerInVehicle(playerid, PlayerVehicle[playerid], 0);


    format(String, sizeof(String), "{FFFFFF}Du hast ein {FFD200}%s {FFFFFF}Gespawnt.", aVehicleNames[vehicle - 400]);
    SendClientMessage(playerid,COLOR_YELLOW, String);
    return 1;
    }
    if (strcmp("/ruf", cmdtext, true, 10) == 0)
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid, X,Y,Z);
    PutPlayerInVehicle(playerid, PlayerVehicle[playerid], 0);
    return 1;
    }
    return 0;
    }#


    Hoffe ihr könnt mir helfen! Danke im vorraus.


    MfG

  • Was genau verstehst du dabei nicht die verwendung in dem fall von sscanf da der name ein string ist in dem fall musst du dann als parameter s verwenden sprich

    new vehicle[30];
    if(sscanf(params,"s",vehicle))


    was auch möglich wäre ist die string länge direkt nach s zu schreiben sprich s[30]


  • Tschuldige, das hat mir ein Kumpel geschrieben. Er sollte mir das eig. in ocmd schreiben, hat er aber nicht gemacht & jetzt ist er im Urlaub. Ich kann leider noch nicht so gut Scripten & wollte mir die Befehle erstmal ins Script klatschen, damit ich diese habe & mir anhand dessen andere Befehle scripten kann, da ich durch Tutorials meist nicht weiter komme..


    //edit: Eig. wollte er mir das auch erklären, aber er hat es dann doch nicht Geschafft & deshalb hab ich hier um Hilfe gebeten!

  • Tschuldige, das hat mir ein Kumpel geschrieben. Er sollte mir das eig. in ocmd schreiben, hat er aber nicht gemacht & jetzt ist er im Urlaub. Ich kann leider noch nicht so gut Scripten & wollte mir die Befehle erstmal ins Script klatschen, damit ich diese habe & mir anhand dessen andere Befehle scripten kann, da ich durch Tutorials meist nicht weiter komme..


    //edit: Eig. wollte er mir das auch erklären, aber er hat es dann doch nicht Geschafft & deshalb hab ich hier um Hilfe gebeten!




    ok :D mal so also noch eine frage du weisst wie der command genau funktioniert und für was was da ist und du weisst was ocmd und sscanf ist ?

  • ok also mit sscanf und strtok ist es möglich parameter in commands zu verwenden auf verschiedene arten nur ist sscanf schneller und auch ehrlich gesagt auch so gesehen einfach zu verwenden
    oder leichter.


    Bei sscanf hat es character welche die parameter angibt sprich


    Specifier(s) Name Example values
    i, d Integer 1, 42, -10
    c Character a, o, *
    l Logical true, false
    b Binary 01001, 0b1100
    h, x Hex 1A, 0x23
    o Octal 045 12
    n Number 42, 0b010, 0xAC, 045
    f Float 0.7, -99.5
    g IEEE Float 0.7, -99.5, INFINITY, -INFINITY, NAN, NAN_E
    u User name/id (bots and players) Y_Less, 0
    q Bot name/id ShopBot, 27
    r Player name/id Y_Less, 42


    was ist mit parameter gemeint ? Damit wird das gemeint was man hinter einem command eingibt sei es bei /kick die id oder bei einem ban befehl die id und den grund.
    Um sscanf zu verwenden brauchst du entweder das sscanf 2.6 version welches ein plugin ist oder du kannst auch den sscanf code nehmen und ins script packen
    siehe:
    http://forum.sa-mp.com/showthread.php?t=120356
    oder
    http://wiki.sa-mp.com/wiki/Sscanf_code


    weitere verwendung von sscanf findest du auch hier [ SCRIPTING ] sscanf 2.0 in bezug auf MYSQL etc...


    Nun kommen wir zu deinem command
    wo ich dir ja schon die verwendung vorgegeben habe


    new vehicle[30];
    if(sscanf(params,"s",vehicle)) return SendClientMessage(playerid, COLOR_WHITE, "Tippe: {FFD200}/v {FFFFFF}[NAME] (z.B {FFD200}/v elegy)");
    was man auch so verwenden kann


    if(sscanf(params,"s[30]",vehicle)) return SendClientMessage(playerid, COLOR_WHITE, "Tippe: {FFD200}/v {FFFFFF}[NAME] (z.B {FFD200}/v elegy)");[/pwn]du kannst ja mal bissle probieren deinen command umzuschreiben auf ocmd und testen und bei problemen halt nochmal hier posten
    edits

    Spoiler anzeigen
    //edit 1 + 2 BB codes haben etwas gespackt