Hallo, Community!
Vorab möchte ich sagen, dass dieses Masken System für jedes Script angepasst werden muss!
Für Support des Maskensystems bin ich nicht zuständig!
Man könnte dieses Maskensystem für einen Reallife Server gebrauchen oder für jede andere Art des versteckten Namens.
Ich werde warscheinlich nicht mehr in diesen Thread gehen, da ich vorerst inaktiv werden.
Ich bitte um Verständniss. Erklärungen stehen hinter den Befehlen
Fangen wir an:
//Als aller erstes brauchen wir eine Variable für jeden Spieler, damit die Maske zum späteren Zeitpunkt keine Probleme hat.
//Diese Variable erstellen wir mit:
new Maske[MAX_PLAYERS];
//Beim nächsten Schritt, setzen wir die Maske bei "OnPlayerConnect" und "OnPlayerSpawn" auf 0, damit die Maske beim Connecten & beim
//Spawnen nicht benutzt wird.
//Dies machen wir mit folgendem Text:
Maske[playerid] = 0;
//Als nächtes müssen wir dafür sorgen, dass bei der Maske Leben abgezogen wird, sobald man verletzt wird.
//Dazu benutze ich OnPlayerUpdate
//Wer diese Funktion zu aufwändig findet, kann sich auch einen Timer erstellen! Dazu folgt keine Anleitung!
public OnPlayerUpdate(playerid)
{
if(Maske[playerid] == 1)
{
new string[128], Float:hp, Float:am; //Wie brauchen diese Zeile, damit das HP ausgegeben und abgefragt werden kann!
GetPlayerHealth(playerid,hp);//Hier fragen wir das Leben ab
GetPlayerArmour(playerid,am);//Hier wird die Rüstung abgefragt
floatround(hp,floatround_tozero);//Das ganze wird gerundet
floatround(am,floatround_tozero);//Erneut gerundet
format(string,sizeof(string),"Unbekannter\nL:%.0f R:%.0f",hp,am);//Der Name undbekannt wird gesetzt, Leben & Rüstung wird eingesetzt
SetPlayerChatBubble(playerid,string,rot,40.0,10000);//Das ganze steht über dem Namen
}
return 1;
}
//Gehen wir zu OnPlayerStreamIn
//Sobald ein Spieler bei einem anderen Spieler erscheint, werden ihm die Rüstung, die Maske, das Leben und der Name erneut gesetzt
if(Maske[forplayerid]==1)
{
SetPlayerAttachedObject(forplayerid, 1, 19036, 2, 0.107, 0.035, 0.0, 90, 90, 0);//Object wird auf den Character gesetzt
ShowPlayerNameTagForPlayer(playerid,forplayerid,false);//Der Name verschwindet
}
//Der eigentliche Befehl:
ocmd:maske(playerid,params[])//Das, was eingegeben wird
{
if(SpielerInfo[playerid][pTeam] != 2)return SendClientMessage(playerid,rot,"Fehler: Du bist nicht bei den Terroristen.");//Die Abfrage der Fraktion
if(Maske[playerid]==1)//wenn die Maske schon auf dem Gesicht war
{
GameTextForPlayer(playerid,"~r~Du setzt deine Maske ab.",100,0);//Eine Nachricht an den Spieler
Maske[playerid] = 0;//Variable wird auf "Abgesetzt" gestellt
RemovePlayerAttachedObject(playerid, 1);//Die Maske wird vom Gesicht genommen
for(new i=0; i<MAX_PLAYERS; i++)//Schleife durch alle Spieler
{
ShowPlayerNameTagForPlayer(i,playerid,true);//Name wird wieder gezeigt
}
}
else if(Maske[playerid]==0)//Wenn er keine Maske auf hatte
{
new Float:health, Float:armour, string[128];//Leben & Rüstung wird abgefragt
GetPlayerHealth(playerid,health);//Lebensabfrage
GetPlayerArmour(playerid,armour);//Rüstungsabfrage
floatround(health,floatround_tozero);//Runden
floatround(armour,floatround_tozero);//Runden
format(string,128,"Unbekannter\nL:%.0f R:%.0f",health,armour);//Leben & Rüstung wird formatiert
SetPlayerChatBubble(playerid,string,rot,40.0,10000);//Leben wird über den Kopf gesetzt
GameTextForPlayer(playerid,"~r~Du setzt deine Maske auf.",100,0);//Nachricht an den Spieler
Maske[playerid] = 1;//Maske wird auf "tragen" gesetzt
SetPlayerAttachedObject(playerid, 1, 19036, 2, 0.107, 0.035, 0.0, 90, 90, 0);//Objekt erscheint
for(new i=0; i<MAX_PLAYERS; i++)//Schleife durch alle Spieler
{
ShowPlayerNameTagForPlayer(i,playerid,false);//Name verschwindet
}
}
return 1;
}