ID-Problem bei einem mehrfach benutzbaren CMD

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


    Der Titel ist nicht wirklich ganz aussagekräftig. Ich habe ein CMD, wo man nach dem CMD einen String eingeben kann und dahiner die ID (Sollte so sein). Jedoch passiert nicht wirklich etwa sund ich vermute stark, dass es am Aufbau liegt. Ich möchte gerne, dass es etwa wie folgt aussieht:


    /annehmen polizei ID
    etc....


    Der Anrufer/Kunde (hier id), bekommt dann eine Meldung, dass jemand den "Auftrag" annimmt.


    dcmd_annehmen(playerid, params[])
    {
    new str[256], id;
    if(sscanf(params, "s",str))
    {
    SendClientMessage(playerid, COLOR_WHITE, "Verwendung: /annehmen [Dienst] [ID]");
    SendClientMessage(playerid, COLOR_WHITE, "[Dienst][Spieler] = reperatur betankung heilung");
    SendClientMessage(playerid, COLOR_WHITE, "[Dienst][Fraktion] = polizei mediziner adac news taxi");
    return 1;
    }
    else
    {
    if(strcmp("polizei", str, true, strlen(str)) == 0)
    {
    if(sscanf(params, "su",str,id)) return SendClientMessage(playerid, COLOR_WHITE, "Verwendung: /annehmen polizei [ID]");
    else if(!GetPlayerFraktion(playerid, 1)) SendClientMessage(playerid, COLOR_GREY, "Du bist kein Polizist");
    else if(id == INVALID_PLAYER_ID || IsPlayerNPC(id)) SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler kann nicht erreicht werden");
    else if(PlayerAngebot[0][id] != 1) return SendClientMessage(playerid, COLOR_GREY, "Dieser Person wurde entweder schon geholfen oder sie braucht keine Hilfe");
    else
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(id, X,Y,Z);
    SetPlayerCheckpoint(playerid, X,Y,Z, 6);
    new string2[128], string3[128];
    format(string2,128,"Der Anrufer %s wartet dort auf dich",ReadName(id));
    SendClientMessage(playerid,COLOR_GREEN,string2);
    format(string3,128,"Der Taxifahrer %s befindet sich bereits auf dem Weg zu dir",ReadName(playerid));
    SendClientMessage(id,COLOR_GREEN,string3);
    PlayerAngebot[0][id] = 0;
    }
    return 1;
    }
    if(strcmp("mediziner", str, true, strlen(str)) == 0)
    {
    if(sscanf(params, "su",str,id)) return SendClientMessage(playerid, COLOR_WHITE, "Verwendung: /annehmen mediziner [ID]");
    else if(!GetPlayerFraktion(playerid, 6)) SendClientMessage(playerid, COLOR_GREY, "Du bist kein Sanitäter");
    else if(id == INVALID_PLAYER_ID || IsPlayerNPC(id)) SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler kann nicht erreicht werden");
    else if(PlayerAngebot[1][id] != 1) return SendClientMessage(playerid, COLOR_GREY, "Dieser Person wurde entweder schon geholfen oder sie braucht keine Hilfe");
    else
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(id, X,Y,Z);
    SetPlayerCheckpoint(playerid, X,Y,Z, 6);
    new string2[128], string3[128];
    format(string2,128,"Der Anrufer %s wartet dort auf dich",ReadName(id));
    SendClientMessage(playerid,COLOR_GREEN,string2);
    format(string3,128,"Der Sanitäter %s befindet sich bereits auf dem Weg zu dir",ReadName(playerid));
    SendClientMessage(id,COLOR_GREEN,string3);
    PlayerAngebot[1][id] = 0;
    }
    return 1;
    }
    }
    }


    Der SendMessage Code:
    public SendMessage(fraktion, color, string[])
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(GetPlayerFraktion(i, fraktion))
    {
    SendClientMessage(i, color, string);
    return 1;
    }
    }
    }
    return 0;
    }


    MfG dUDALUS

  • Pack das alles in eine sscanf Abfrage und danach kommen die Abfrage mit strcmp ob du Polizei angegeben hast und danach schaust du erst nach den anderen Parametern ;)