Hallo Leute,
ich habe ein Problem mit meinem Undercover-Abschnitt in meinem SpielerUpdate-Timer.
Und zwar sollen Admins einen anderen 3D-Text an einem Undercover-Agenten sehen als normale Spieler.
Beispiel:
Ein FBI-Agent ist Undercover (Anstatt des Namen sehen normale Spieler die Agent-ID über den Kopf des Agenten, siehe 'string') und macht seine Arbeit.
Nun joint ein normaler Spieler auf den Server und der Timer "SpielerUpdate" sorgt dafür, dass er den Namen des FBI-Agenten nicht sehen kann, sondern das was im string steht.
Als nächstes joint ein Admin, Level 2 (oder höher) auf den Server und der Timer "SpielerUpdate" sorgt dafür, dass er den Namen und den string des FBI-Agenten sieht.
Momentan sehen normale Spieler bei einem Undercover-Agenten nichts (keinen Namen, keinen 3D-Text-Label) und
Admins ab Adminlevel 2 sehen an einem Undercover-Agenten alles, Namen und beide 3D-Text-Label.
Zudem Laggt der Server sobald man einen Undercover-Agenten, bzw. seinen String sieht.
Ich versuche so wenig Timer wie es nur geht zu nutzen und wenn möglich alles in einem Timer zu packen.
Die Zeilen:
new undercover[MAX_PLAYERS], Text3D:agentid;
public OnGameModeInit()
{
for(new i; i < MAX_PLAYERS; i ++)
{
SetTimerEx("SpielerUpdate", 1009, 1, "i", i);
}
return 1;
}
forward SpielerUpdate(i); public SpielerUpdate(i)
{
new playerid=i, State = GetPlayerState(playerid);
//Anfang-----------------------------------------------------------------------------------------------------------------------------------------------Anfang
for(new op = 0; op < MAX_PLAYERS; op++) //Die Schleife um den Namen des Agenten für andere Auszublenden.
if(IsPlayerConnected(playerid)) //Wenn der Spieler auf den Server joint, egal ob er schon eingeloggt ist oder nicht.
{
if(undercover[playerid] == 1) //Wenn der Agent Undercover ist.
{
new string[128];
if(SpielerInfo[op][pAdmin] <= 1) //Abfrage für normale Spieler.
{
ShowPlayerNameTagForPlayer(op, playerid, 0); //Blendet den Namen des Agenten für Normale Spieler aus.
format(string, sizeof(string), "Agent: %d\nFBI",SpielerInfo[playerid][pAgentID]); //Gibt die Agent-ID des Agenten wieder.
agentid = Create3DTextLabel(string, GRAU, 30.0, 40.0, 50.0, 30.0, 0); //Erstellt einen 3D-Text-Label den NUR normale Spieler sehen (Admins ab Adminlevel 2 also nicht.).
Attach3DTextLabelToPlayer(agentid, playerid, 0.0, 0.0, 0.0); //Klatscht den 3D-Text-Laben an den Agenten.
}
else if(SpielerInfo[op][pAdmin] >= 2) //Abfrage für Admins ab Level 2.
{
ShowPlayerNameTagForPlayer(op, playerid, 1); //Blendet den Namen des Agenten für Admins ab Adminlevel 2 ein.
format(string, sizeof(string), "UNDERCOVER\n\nAgent des\nFBI's"); //Informiert den Admin, dass der Spieler ein Undercover-Agent ist.
agentid = Create3DTextLabel(string, GRAU, 30.0, 40.0, 50.0, 30.0, 0); //Erstellt einen 3D-Text-Label den NUR Admins ab Adminlevel 2 sehen.
Attach3DTextLabelToPlayer(agentid, playerid, 0.0, 0.0, -0.5); //Klatscht den 3D-Text-Laben an den Agenten.
}
}
else if(undercover[playerid] == 0) //Wenn der Agent nicht Undercover ist.
{
ShowPlayerNameTagForPlayer(op, playerid, 1); //Blendet den Namen des Agenten für jeden ein.
Delete3DTextLabel(agentid); //Löscht den 3D-Text-Label.
}
}
//Ende-----------------------------------------------------------------------------------------------------------------------------------------------Ende
if(IsPlayerConnected(playerid) && GetPVarInt(playerid,"Eingeloggt") == 1)
{
if(State == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(playerid), string[32]; format(string,sizeof(string),"%s" ,VehiclesName[GetVehicleModel(vehicleid)-400]); TextDrawSetString(TachoCarName[playerid], string); TextDrawShowForPlayer(playerid, TachoCarName[playerid]);
new Float:health; GetVehicleHealth(GetPlayerVehicleID(playerid), health);
new vMototStatus[4]; format(vMototStatus,sizeof(vMototStatus),".");
if(motor[vehicleid] == 0) { TextDrawSetString(TachoMotorStatusAus[playerid], vMototStatus); TextDrawShowForPlayer(playerid, TachoMotorStatusAus[playerid]); TextDrawHideForPlayer(playerid, TachoMotorStatusAn[playerid]); }
else if(motor[vehicleid] == 1) { TextDrawSetString(TachoMotorStatusAn[playerid], vMototStatus); TextDrawShowForPlayer(playerid, TachoMotorStatusAn[playerid]); TextDrawHideForPlayer(playerid, TachoMotorStatusAus[playerid]); }
if(health == 1000) { new vZustand[13]; format(vZustand,sizeof(vZustand),"Zustand: %0.f",health/10); TextDrawSetString(TachoZustand[playerid], vZustand); TextDrawShowForPlayer(playerid, TachoZustand[playerid]); }
else { new vZustand[14]; format(vZustand,sizeof(vZustand),"Zustand: %0.f",health/10); TextDrawSetString(TachoZustand[playerid], vZustand); TextDrawShowForPlayer(playerid, TachoZustand[playerid]); }
new Float:Speed; GetVehicleSpeed(vehicleid, Speed);
if(Speed < 10) { new Sspeed[11]; format(Sspeed,sizeof(Sspeed),"Geschw.: %0.f",Speed); TextDrawSetString(TachoKMH[playerid], Sspeed); TextDrawShowForPlayer(playerid, TachoKMH[playerid]); }
else if(Speed < 100) { new Sspeed[12]; format(Sspeed,sizeof(Sspeed),"Geschw.: %0.f",Speed); TextDrawSetString(TachoKMH[playerid], Sspeed); TextDrawShowForPlayer(playerid, TachoKMH[playerid]); }
else if(Speed < 1000) { new Sspeed[13]; format(Sspeed,sizeof(Sspeed),"Geschw.: %0.f",Speed); TextDrawSetString(TachoKMH[playerid], Sspeed); TextDrawShowForPlayer(playerid, TachoKMH[playerid]); }
new vZP[2]; format(vZP,sizeof(vZP),"%%"); TextDrawSetString(TachoZustandProzent[playerid], vZP); TextDrawShowForPlayer(playerid, TachoZustandProzent[playerid]);
new SsKMH[4]; format(SsKMH,sizeof(SsKMH),"mph"); TextDrawSetString(TachoKMHKMH[playerid], SsKMH); TextDrawShowForPlayer(playerid, TachoKMHKMH[playerid]);
}
else
{
TextDrawHideForPlayer(playerid,TachoKMH[playerid]); TextDrawHideForPlayer(playerid,TachoKMHKMH[playerid]); TextDrawHideForPlayer(playerid,TachoCarName[playerid]); TextDrawHideForPlayer(playerid,TachoZustand[playerid]); TextDrawHideForPlayer(playerid,TachoZustandProzent[playerid]);
}
new hour, minute, second, clockstr[15], Year, Month, Day, datestr[15]; gettime(hour,minute,second); getdate(Year, Month, Day);
if(minute<10 && second<10)format(clockstr,sizeof clockstr,"%d:0%d:0%d",hour,minute,second);
else if(minute<10)format(clockstr,sizeof clockstr,"%d:0%d:%d",hour,minute,second);
else if(second<10)format(clockstr,sizeof clockstr,"%d:%d:0%d",hour,minute,second);
else format(clockstr,sizeof clockstr,"%d:%d:%d",hour,minute,second); TextDrawSetString(ServerUhr,clockstr); SetWorldTime(hour);
if(Month<10)format(datestr,sizeof datestr,"%d.0%d.%d",Day,Month,Year); else format(datestr,sizeof datestr,"%d.%d.%d",Day,Month,Year); TextDrawSetString(ServerDatum,datestr);
TextDrawShowForPlayer(playerid,ServerUhr);
TextDrawShowForPlayer(playerid,ServerDatum);
if(PlayerCuffed[playerid] != 0) { if(PlayerCuffedTime[playerid] != 0) { PlayerCuffedTime[playerid] -= 1; } else { PlayerCuffed[playerid] = 0; } }
if(tazerzeit[playerid] != 0) { if(TazerzeitCheck[playerid] != 0) { TazerzeitCheck[playerid] -= 1; } else { tazerzeit[playerid] = 0; } }
}
return 1;
}
Es wäre echt nett, wenn mir jemand helfen könnte!
Gruß
AlphaGen!