Man könnte es noch verfeinern
#include <a_samp>
#define COLOR_BLACK 0x000000FF
#define COLOR_WHITE 0xFFFFFFAA
forward Desktop_Function(playerid);
enum _DesktopData {
Desktop_Check,
Desktop_Status,
Desktop_Timer,
bool:Desktop_Timer_Started,
Text3D:Desktop_SHOW
}
new DesktopData[MAX_PLAYERS][_Desktop_Data];
public OnPlayerConnect(playerid) {
DesktopData[playerid][Desktop_SHOW] = Create3DTextLabel("",0xFF6347AA,0,0,0,10.0,0,0);
return 1;
}
public OnPlayerDisconnect(playerid) {
if(DesktopData[playerid][Desktop_Timer_Started] == 1) { KillTimer(DesktopData[playerid][Desktop_Timer]); }
DesktopData[playerid][Desktop_Check] = 0,DesktopData[playerid][Desktop_Timer_Started] = 0,DesktopData[playerid][Desktop_Status] = 0,Delete3DTextLabel(DesktopData[playerid][Desktop_SHOW]);
return 1;
}
public Desktop_Function(playerid) {
if(DesktopData[playerid][Desktop_Check] > 0) {
DesktopData[playerid][Desktop_Status] = 0;
SetPlayerColor(playerid,COLOR_WHITE);
Update3DTextLabelText(DesktopData[playerid][Desktop_SHOW],0xFF6347AA,""),Attach3DTextLabelToPlayer(DesktopData[playerid][Desktop_SHOW],playerid,0,0,0);
}
if(DesktopData[playerid][Desktop_Check] <= 0) {
SetPlayerColor(playerid,COLOR_BLACK);
DesktopData[playerid][Desktop_Status] +=1;
new string[128];
format(string,sizeof(string),"Seit %d Sekunden auf dem Desktop bzw. AFK", DesktopData[playerid][Desktop_Status]);
Update3DTextLabelText(DesktopData[playerid][Desktop_SHOW],0xFF6347AA,string),Attach3DTextLabelToPlayer(DesktopData[playerid][Desktop_SHOW],playerid,0,0,0);
}
DesktopData[playerid][Desktop_Check] = 0;
return 1;
}
public OnPlayerUpdate(playerid) {
if(DesktopData[playerid][Desktop_Timer_Started] == 0) {
DesktopData[playerid][Desktop_Timer] = SetTimerEx("Desktop_Function",1000,1,"d",playerid);
DesktopData[playerid][Desktop_Timer_Started] = 1;
}
DesktopData[playerid][Desktop_Check] += 1;
return 1;
}