/undercover Befehl Scripten

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Also man soll nur als Hitman /undercover machen können an einem Punkt.
    Dann kann man Zivi Skins wählen. So ca. 6 Zivi Skins.
    Und man Sollte den Namen , wenn man den Befehl eingibt nicht sehen können.
    Und das man an dem selben punkt einfach /undercover macht und der alte Skin wieder da ist , sowie der Name.

  • Nun gut,
    Fangen wir erstmal mit der Grundstrucktur an die so aussehen kann:
    if(strcmp(cmdtext,"/undercover",true) == 0)
    {
    return 1;
    }
    Als erstes müssen wir die Leader bzw. die Fraktionsabfrage vornehmen, denn es soll ja nicht jeder diesen Befehl nutzen können.
    Das macht man mit einer if Abfrage:
    if(SpielerInfo[playerid][Leader] == Hitman Zahl || SpielerInfo[playerid][Member] == Hitman Zahl)
    {


    }
    Jetzt ist gegeben das nur die Member und der Leader von den Hitman diesen Befehl nutzen können. Jetzt kommt das mit dem ShowPlayerNameTagForPlayer. Das sorgt dafür das der Name eines Spielers nicht angezeigt wird, bzw. verschwindet. Aber es soll ja für jeden nicht angezeigt werden, deswegen wird eine Schleife die durch jeden Spieler geht gemacht.
    for(new i = 0; i<MAX_PLAYERS; i++)
    {


    }
    Wofür braucht man die Schleife? Die benötigt man für die showplayerid bei ShowPlayerNameTagForPlayer. Nun kann man ShowPlayerNameTagForPlayer einfügen. Der Befehl sieht dann so aus:
    if(strcmp(cmdtext,"/undercover",true) == 0)
    {
    if(SpielerInfo[playerid][Leader] == Hitman Zahl || SpielerInfo[playerid][Member] == Hitman Zahl)
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    ShowPlayerNameTagForPlayer(playerid,i,0) //0 = Namen Hiden 1 = Namen Zeigen
    }
    }
    return 1;
    }
    Nun wird der Name des Spielers, der /undercover eingibt unsichtbar für jeden Spieler auf der Map.
    Bei wiederholten Befehlseingabe soll der Name ja wieder angezeigt werden. Das geht so, man erstellt eine neue Variable z. B. so eine:
    new HatMaske[MAX_PLAYERS];
    Nun kann man HatMaske auf 1 setzten wenn man die Maske aufsetzt.
    HatMaske[playerid] = 1;
    Nun muss man mit einer if Abfrage erfragen ob die Maske bzw. der Nametag an oder aus ist. Das macht man so:
    if(HatMaske[playerid] == 0)
    {
    //Wenn die Maske nicht auf ist
    }
    else if(HatMaske[playerid] == 1)
    {
    //Wenn die Maske auf ist
    }
    Der Befehl sieht dann so aus:
    if(strcmp(cmdtext,"/undercover",true) == 0)
    {
    if(SpielerInfo[playerid][Leader] == Hitman Zahl || SpielerInfo[playerid][Member] == Hitman Zahl)
    {
    if(HatMaske[playerid] == 0)
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    ShowPlayerNameTagForPlayer(playerid,i,0)
    }
    HatMaske[playerid] = 1;
    }
    else if(HatMaske[playerid] == 1)
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    ShowPlayerNameTagForPlayer(playerid,i,1)
    }
    HatMaske[playerid] = 0;
    }
    }
    return 1;
    }
    Nun zu dem Text, wenn jemand etwas schreibt aber die Maske auf hat. Das macht man unter OnPlayerText.
    if(HatMaske[playerid] == 1)
    {
    new string[128];
    format(string, sizeof(string), "- sagt: %s"text);
    //Dann halt deine Sache zum Text verschicken
    }
    Das mit der Skinauswahl kannst du ja noch selbst ergänzen, aber so geht das mit dem Namenstag hiden.
    MfG: T4125Gamer