CMD funzt nicht richtig

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


    ich hab hier nen cmd für Cops gemacht, mit dem man überprüfen kann, ob derjenige den man überprüft auch einen Führerschein hat. Nur iwie klappt das nicht und es wird immer angezeigt, ob derjenige der den cmd ausführt einen Führerschein hat :s


    man sollte die nachricht bekommen, ob derjenige eben einen Führerschein hat, wenn man in ein Polizeiauto einsteigt


    dcmd_checklic(playerid,params[])
    {
    if(PlayerData[playerid][Team] == 1 || PlayerData[playerid][Team] == 2)
    {
    new opfer,string[128];//oname[MAX_PLAYER_NAME];
    if(sscanf(params,"u",opfer)) return SendClientMessage(playerid,COLOR_YELLOW,"USAGE: /checklic [playerid]");
    if (!IsPlayerConnected(opfer)) return SendClientMessage(playerid, COLOR_YELLOW, "Invalid ID!");
    //if(opfer == playerid) return SendClientMessage(playerid, COLOR_YELLOW, "You can't jail yourself!");
    GetPlayerName(opfer,opfername,sizeof(opfername));
    if (GetDistanceBetweenPlayers(playerid,opfer) < 20)
    {
    format(string,sizeof(string),"Officer %s checks %s ID Card",PlayerName(playerid),opfername);
    ProxDetector(20, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
    checklic[playerid] = true;
    return 1;
    }
    else return SendClientMessage(playerid, COLOR_YELLOW, "Nobody in range!");
    }
    else return SendClientMessage(playerid, COLOR_RED, "ERROR: Government only!");
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(IsACopCar(vehicleid) && checklic[playerid] == true)
    {
    new opfer,string[128];
    GetPlayerName(opfer,opfername,sizeof(opfername));
    if(PlayerData[opfer][License] == 1)
    {
    format(string,sizeof(string),"[HQ] %s got a valid License",opfername);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    checklic[playerid] = false;
    return 1;
    }
    else
    {
    format(string,sizeof(string),"[HQ] %s has not got a valid License",opfername);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    checklic[playerid] = false;
    return 1;
    }
    }
    ...


    Wär cool, wenn jmd helfen kann :love: ;)


    Flo ;)

    2 Mal editiert, zuletzt von Flo_White ()

  • nich so?! ~.~


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(IsACopCar(vehicleid) && checklic[playerid] == true)
    {
    new string[128];
    GetPlayerName(playerid,opfername,sizeof(opfername));
    if(PlayerData[playerid][License] == 1)
    {
    format(string,sizeof(string),"[HQ] %s got a valid License",opfername);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    checklic[playerid] = false;
    return 1;
    }
    else
    {
    format(string,sizeof(string),"[HQ] %s has not got a valid License",opfername);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    checklic[playerid] = false;
    return 1;
    }
    }
    ...

  • Mach das so:
    ProxDetector(20, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
    checklic[opfer] = playerid+1;
    //--------------------------------------------
    f(IsACopCar(vehicleid) && checklic[playerid] >= 1)
    {
    new string[128];
    GetPlayerName(playerid,opfername,sizeof(opfername));
    if(PlayerData[playerid][License] == 1)
    {
    format(string,sizeof(string),"[HQ] %s got a valid License",opfername);
    SendClientMessage(checklic[playerid]-1,COLOR_LIGHTBLUE,string);
    checklic[playerid] = false;
    return 1;
    }
    else
    {
    format(string,sizeof(string),"[HQ] %s has not got a valid License",opfername);
    SendClientMessage(checklic[playerid]-1,COLOR_LIGHTBLUE,string);
    checklic[playerid] = false;
    return 1;
    }


  • bei dem bekomm ich warnings checklic[opfer] = playerid+1;
    und auch bei dem if(IsACopCar(vehicleid) && checklic[playerid] >= 1)
    SendClientMessage(checklic[playerid]-1,COLOR_LIGHTBLUE,string);
    SendClientMessage(checklic[playerid]-1,COLOR_LIGHTBLUE,string);

  • jetzt wo dus sagst ^^


    hatte noch new bool:checklic[MAX_PLAYERS]; habs jetzt zu new checklic[MAX_PLAYERS]; gemacht und es gibt keine warnings mehr :D


    €dit: wenn zB /checklic 1 mach und der Spieler keine License hat, dauert es bisschen, bis die Nachricht kommt, dass er keine hat. Wenn er aber eine License hat, kommt die Nachricht gar nicht :s

    Einmal editiert, zuletzt von Flo_White ()

  • hier:


    dcmd_checklic(playerid,params[])
    {
    if(PlayerData[playerid][Team] == 1 || PlayerData[playerid][Team] == 2)
    {
    new opfer,string[128];//oname[MAX_PLAYER_NAME];
    if(sscanf(params,"u",opfer)) return SendClientMessage(playerid,COLOR_YELLOW,"USAGE: /checklic [playerid]");
    if (!IsPlayerConnected(opfer)) return SendClientMessage(playerid, COLOR_YELLOW, "Invalid ID!");
    //if(opfer == playerid) return SendClientMessage(playerid, COLOR_YELLOW, "You can't jail yourself!");
    GetPlayerName(opfer,opfername,sizeof(opfername));
    if (GetDistanceBetweenPlayers(playerid,opfer) < 20)
    {
    format(string,sizeof(string),"Officer %s checks %s ID Card",PlayerName(playerid),opfername);
    ProxDetector(20, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
    checklic[opfer] = playerid+1;
    return 1;
    }
    else return SendClientMessage(playerid, COLOR_YELLOW, "Nobody in range!");
    }
    else return SendClientMessage(playerid, COLOR_RED, "ERROR: Government only!");
    }


    if(IsACopCar(vehicleid) && checklic[playerid] >= 1)
    {
    new string[128];
    GetPlayerName(playerid,opfername,sizeof(opfername));
    if(PlayerData[playerid][License] == 1)
    {
    format(string,sizeof(string),"[HQ] %s got a valid License",opfername);
    SendClientMessage(checklic[playerid]-1,COLOR_LIGHTBLUE,string);
    checklic[playerid] = false;
    return 1;
    }
    else
    {
    format(string,sizeof(string),"[HQ] %s has not got a valid License",opfername);
    SendClientMessage(checklic[playerid]-1,COLOR_LIGHTBLUE,string);
    checklic[playerid] = false;
    return 1;
    }
    }


    und ganz oben new checklic[MAX_PLAYERS];


    Edit: habs nochmal versucht, wenn er ne license hat, kommt die nachricht gar nicht :s

    Einmal editiert, zuletzt von Flo_White ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Kein Plan, was da falch ist, grenzen wir den Fehler einfach mal ein:
    if(IsACopCar(vehicleid) && checklic[playerid] >= 1)
    {
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"teil1");
    new string[128];
    GetPlayerName(playerid,opfername,sizeof(opfername));
    if(PlayerData[playerid][License] == 1)
    {
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"teil2");
    format(string,sizeof(string),"[HQ] %s got a valid License",opfername);
    SendClientMessage(checklic[playerid]-1,COLOR_LIGHTBLUE,string);
    checklic[playerid] = false;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"teil3");
    format(string,sizeof(string),"[HQ] %s has not got a valid License",opfername);
    SendClientMessage(checklic[playerid]-1,COLOR_LIGHTBLUE,string);
    checklic[playerid] = false;
    return 1;
    }
    }
    Je nach dem, welche Nachrichten kommen und welche nicht, liegt dort der/ein Fehler

  • also:


    wenn ich es bei mir mache und ich eine habe kommt: teil1, teil2 und das ich eben keine habe


    wenn ich es bei mir mache und ich keine habe kommt: teil1, teil3 und das ich eben keine habe


    wenn ich es bei jmd anders mache und kommt gar nix :s

  • Wenn ich das jetzt richtig verstehe:
    Du machst /checklic [Deine ID], dann kommt teil1 und teil2 (sofern dun Schein hast), aber wenn du nicht deine ID eingibst, dann kommen die Meldungen nicht?
    PS: Ich bin mir nicht sicher, aber kann es sein, dass sich das bei dcmd dann nicht überschneiden darf? Die Varaible heißt ja genau so, wie der cmd, nenn man eine davon um