[Problem/Frage]3D Label Ein/Aus

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
  • Definier oben...
    new antispawnlabel[MAX_PLAYERS];
    ...dann machste bei OnPlayerSpawn
    antispawnlabel[playerid] = Create3DTextLabel("AntiSpawnKill",COLOR_RED,0,0,0,40.0);//Label wird erstellt (Text,Farbe,x,y,z,Drawdistance)
    Attach3DTextLabelToPlayer(antispawnlabel[playerid], playerid, 0.0, 0.0, 0.45);//Label wird an den SPieler gehängt


    ...und zu guter Letzt zerstörtst du es im public von deinem Timer:
    public NoSpawnKill(playerid)
    {
    PlayerSpawnKilled[playerid] = false;
    Delete3DTextLabel(antispawnlabel[playerid]);// (Label wird zerstört)
    return 1;
    }


    Hoffe ich konnte helfen ;)
    lg

  • so mal machen



    public OnPlayerSpawn(playerid)
    {
    PlayerSpawnKilled[playerid] = true;
    SetTimerEx("NoSpawnKill",(SPAWNKILLTIME * 10000),false,"d",playerid);
    antispawnlabel[playerid] = Create3DTextLabel("AntiSpawnSchutz",COLOR_YELLOW,0,0,0,70.5,1);//Label wird erstellt (Text,Farbe,x,y,z,Drawdistance)
    Attach3DTextLabelToPlayer(antispawnlabel[playerid], playerid, 0.0, 0.0, 0.45);//Label wird an den SPieler gehängt
    return 1;


    }

  • Wir haben es jetzt so:
    Es wird zwar angezeigt aber der Timer geht nicht, also es geht nicht wieder weg..



    #include <a_samp>


    #define MAX_SPAWNKILLS 1 // Kills bis Kick.
    #define SPAWNKILLTIME 10 // Wie lange Anti-Spawn-Kill
    #define COLOR_YELLOW 0xFFFF00AA


    new antispawnlabel[MAX_PLAYERS];


    new bool:PlayerSpawnKilled[MAX_PLAYERS];
    new PlayerSpawnKillWarns[MAX_PLAYERS];


    forward NoSpawnKill(playerid);
    forward Labelda();
    forward Labelweg();



    public OnPlayerConnect(playerid)
    {
    PlayerSpawnKilled[playerid] = false;
    PlayerSpawnKillWarns[playerid] = 0;
    return 1;
    }


    public OnGameModeInit()
    {
    SetTimer("Label",10000, false);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    PlayerSpawnKilled[playerid] = true;
    SetTimerEx("NoSpawnKill",(SPAWNKILLTIME * 10000),false,"d",playerid);
    antispawnlabel[playerid] = Create3DTextLabel("AntiSpawnSchutz",COLOR_YELLOW,0,0,0,70.5,1);//Label wird erstellt (Text,Farbe,x,y,z,Drawdistance)
    Attach3DTextLabelToPlayer(antispawnlabel[playerid], playerid, 0.0, 0.0, 0.45);//Label wird an den SPieler gehängt
    return 1;
    }




    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(PlayerSpawnKilled[playerid] == true)
    {
    new string[128];
    new killername[MAX_PLAYER_NAME];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(killerid,killername,sizeof(killername));
    GetPlayerName(playerid,playername,sizeof(playername));
    PlayerSpawnKillWarns[killerid]++;
    if(PlayerSpawnKillWarns[killerid] >= MAX_SPAWNKILLS)
    {
    format(string,sizeof(string)," [SPAWNKILL] %s wurde wegen Spawnkill gekickt.!",killername);
    SendClientMessageToAll(0xFF0000FF,string);
    Kick(killerid);
    }
    else
    {
    format(string,sizeof(string)," [SPAWNKILL] Du hast soeben %s am Spawn gekillt!",playername);
    SendClientMessage(killerid,0xFF0000FF,string);
    format(string,sizeof(string)," [SPAWNKILL] Pass auf, das war deine %d. von %d Warnungen!",PlayerSpawnKillWarns[killerid],MAX_SPAWNKILLS);
    SendClientMessage(killerid,0xFF0000FF,string);
    }
    }
    return 1;
    }


    public NoSpawnKill(playerid)
    {
    PlayerSpawnKilled[playerid] = false;
    SetTimer("Label",10000, false);
    Delete3DTextLabel(antispawnlabel[playerid]);// (Label wird zerstört)
    return 1;
    }

  • SetTimer("Label",10000, false);
    WOzu brauchst du das?


    Außerdem hast du doch bei OnPlayerSpawn den Timer auf
    Spawnkilltime * 10000
    Spawnkilltime ist bei dir auf 10 definiert. D.H. 10 * 10000. Der Text verschwindet also erst nach 100 Sekunden ;)
    Du kannst das
    #define SPAWNKILLTIME 10
    eigentlich entfernen und dafür beim Timer einfach 10000 stehen lassen für deine 10 Sekunden.


    Verstanden? :)