/createrampe /deleterampe Aber wie?

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
  • geht

    if(strcmp(cmdtext, "/rampeweg", true, 9) == 0)
    {
    if(strlen(cmdtext) == 9) return SendClientMessage(playerid, 0xFF0000FF, "Benutze: {FAFAFA}/rampeweg [Slot]");
    else if(cmdtext[9] == ' ')
    {
    new i;
    tmp = strtok(cmdtext, idx);
    moneys = strval(tmp);
    new Float:x, Float:y, Float:z;
    GetObjectPos(rampe[moneys], x, y, z);
    for(new j = 0; j < sizeof(rampe); j++)
    {
    if(rampeID[j] == -1) continue;
    GetObjectPos(rampeID[moneys], x, y, z);
    }
    if(sscanf(cmdtext[10], "d", i)) return SendClientMessage(playerid, 0xFF0000FF, "Benutze: {FAFAFA}/rampeweg [Slot]");
    if(i < 0 || i >= sizeof(rampeID)) return SendClientMessage(playerid, 0xFF0000FF, "Es gibt nur rampen 0-150!");
    if(rampeID[i] == -1) return SendClientMessage(playerid, 0xFF0000FF, "Diese rampe existiert nicht!");
    if(!IsPlayerInRangeOfPoint(playerid, 4, x, y, z)) return SendClientMessage(playerid, 0xFF0000FF, "Du bist nicht in der Nähe der rampe!");


    DestroyObject(rampeID[i]);
    rampeID[i] = -1;
    rampeTime[i] = 0;
    new str[380];
    Delete3DTextLabel(rampeLabel[i]);
    format(str, sizeof(str), "{FAFAFA}Du hast rampe {FF6400}%d{FAFAFA} entfernt!)",i);
    SendClientMessage(playerid, 0xFF0000FF,str);
    }
    }


    geht nicht
    if(strcmp(cmdtext, "/lrampe", true, 7) == 0)
    {
    if(strlen(cmdtext) == 7) return SendClientMessage(playerid, 0xFF0000FF, "Benutze: {FAFAFA}/rampeweg [Slot]");
    else if(cmdtext[7] == ' ')
    {
    new i;
    tmp = strtok(cmdtext, idx);
    moneys = strval(tmp);
    new Float:x, Float:y, Float:z;
    GetObjectPos(rampe[moneys], x, y, z);
    for(new j = 0; j < sizeof(rampe); j++)
    {
    if(rampeID[j] == -1) continue;
    GetObjectPos(rampeID[moneys], x, y, z);
    }
    if(sscanf(cmdtext[10], "d", i)) return SendClientMessage(playerid, 0xFF0000FF, "Benutze: {FAFAFA}/rampeweg [Slot]");
    if(i < 0 || i >= sizeof(rampeID)) return SendClientMessage(playerid, 0xFF0000FF, "Es gibt nur rampen 0-150!");
    if(rampeID[i] == -1) return SendClientMessage(playerid, 0xFF0000FF, "Diese rampe existiert nicht!");
    if(!IsPlayerInRangeOfPoint(playerid, 4, x, y, z)) return SendClientMessage(playerid, 0xFF0000FF, "Du bist nicht in der Nähe der rampe!");


    DestroyObject(rampeID[i]);
    rampeID[i] = -1;
    rampeTime[i] = 0;
    new str[380];
    Delete3DTextLabel(rampeLabel[i]);
    format(str, sizeof(str), "{FAFAFA}Du hast rampe {FF6400}%d{FAFAFA} entfernt!)",i);
    SendClientMessage(playerid, 0xFF0000FF,str);
    }
    }



    @Jeffry

  • Das Problem war, dass du bei sscanf bei cmdtext eine 10 hattest, anstatt einer 8.
    Das ganze mit strtok kannst du weg lassen, das bringt nichts.
    Mache es so:
    if(strcmp(cmdtext, "/lrampe", true, 7) == 0)
    {
    if(strlen(cmdtext) == 7) return SendClientMessage(playerid, 0xFF0000FF, "Benutze: {FAFAFA}/rampeweg [Slot]");
    else if(cmdtext[7] == ' ')
    {
    new i;
    if(sscanf(cmdtext[8], "d", i)) return SendClientMessage(playerid, 0xFF0000FF, "Benutze: {FAFAFA}/rampeweg [Slot]");
    if(i < 0 || i >= sizeof(rampeID)) return SendClientMessage(playerid, 0xFF0000FF, "Es gibt nur rampen 0-150!");
    if(rampeID[i] == -1) return SendClientMessage(playerid, 0xFF0000FF, "Diese rampe existiert nicht!");
    new Float:x, Float:y, Float:z;
    GetObjectPos(rampeID[moneys], x, y, z);
    if(!IsPlayerInRangeOfPoint(playerid, 4, x, y, z)) return SendClientMessage(playerid, 0xFF0000FF, "Du bist nicht in der Nähe der rampe!");
    DestroyObject(rampeID[i]);
    rampeID[i] = -1;
    rampeTime[i] = 0;
    new str[145];
    Delete3DTextLabel(rampeLabel[i]);
    format(str, sizeof(str), "{FAFAFA}Du hast rampe {FF6400}%d{FAFAFA} entfernt!)",i);
    SendClientMessage(playerid, 0xFF0000FF,str);
    return 1;
    }
    }



    Das ergibt eh kein Sinn, wenn 9 Zeichen vorhanden sind soll die Meldungkommen /rampeweg Slot ?

    Wenn man nur den Befehl eingibt, ohne Parameter, dann soll die Info-Nachricht kommen. Das ist korrekt so.