No funciona estos textos
#1

Bueno, estaba creando un sistema de rangos, y dandole muchas vueltas de porque no me funcionaba, y nada, no logrй solucionarlo, los problemas son los siguientes:



Asн no funciona, no me aparece el text.

pawn Код:
new Malo[MAX_PLAYERS];
new Text3D:Agresivo[MAX_PLAYERS];

new Maldad = Info[playerid][pKarmaMenos];
    if(Maldad >= 100 && Maldad <= 149)
    {
    Info[playerid][pKarmaMas] = 0;
    Delete3DTextLabel(Malo[playerid]);
    Agresivo[playerid] = Create3DTextLabel("Agresivo",0xFFA200FF,30.0,40.0,5.0,40.0,1);
    Attach3DTextLabelToPlayer(Agresivo[playerid], playerid, 0.0, 0.0, 0.3);
    }
    if(Maldad >= 150 && Maldad <= 199)
    {
    Info[playerid][pKarmaMas] = 0;
    Delete3DTextLabel(Agresivo[playerid]);
    Malo[playerid] = Create3DTextLabel("Malo",0xFF7D00FF,30.0,40.0,5.0,40.0,1);
    Attach3DTextLabelToPlayer(Malo[playerid], playerid, 0.0, 0.0, 0.3);
    }

Y asi si me funciona, pero al spawnear, se me queda el otro texto, osea los dos juntos, malo y agresivo, їQuй es lo que tengo mal?

Acб el que funciona pero bugea el texto:

pawn Код:
new Malo[MAX_PLAYERS];
new Text3D:Agresivo[MAX_PLAYERS];

new Maldad = Info[playerid][pKarmaMenos];
    if(Maldad >= 100 && Maldad <= 149)
    {
    Info[playerid][pKarmaMas] = 0;
    //Delete3DTextLabel(Malo[playerid]);
    Agresivo[playerid] = Create3DTextLabel("Agresivo",0xFFA200FF,30.0,40.0,5.0,40.0,1);
    Attach3DTextLabelToPlayer(Agresivo[playerid], playerid, 0.0, 0.0, 0.3);
    }
    if(Maldad >= 150 && Maldad <= 199)
    {
    Info[playerid][pKarmaMas] = 0;
    //Delete3DTextLabel(Agresivo[playerid]);
    Malo[playerid] = Create3DTextLabel("Malo",0xFF7D00FF,30.0,40.0,5.0,40.0,1);
    Attach3DTextLabelToPlayer(Malo[playerid], playerid, 0.0, 0.0, 0.3);
    }
Reply
#2

Solucionado con timer.
Reply
#3

no necesitas timer ni usar dos Create3DTextLabel para el mismo fin, es que no actualizas el texto, para eso se utiliza Update3DTextLabelText .

saludos.


https://sampwiki.blast.hk/wiki/Update3DTextLabelText_ES

pawn Код:
new Text3D:Agresivo[MAX_PLAYERS];
pawn Код:
// esto lo creas una sola vez en OnGameModeInit (con un bucle), o en OnPlayerConnect / OnPlayerSpawn o donde desees crearlo.
Delete3DTextLabel(Agresivo[playerid]);
Agresivo[playerid] = Create3DTextLabel("_",-1,30.0,40.0,5.0,40.0,1);
Attach3DTextLabelToPlayer(Agresivo[playerid], playerid, 0.0, 0.0, 0.3);
pawn Код:
// esto lo colocas en donde verificaraa los golpes causados, ejemplo: OnPlayerTakeDamage
new Maldad = Info[playerid][pKarmaMenos];
if(Maldad >= 100 && Maldad <= 149){
    Info[playerid][pKarmaMas] = 0;
    Update3DTextLabelText(Agresivo[playerid], 0xFFA200FF, "Agresivo");
}
if(Maldad >= 150 && Maldad <= 199){
    Info[playerid][pKarmaMas] = 0;
    Update3DTextLabelText(Agresivo[playerid], 0xFF7D00FF, "Malo");
}

// o mucho mejor : ...

switch(Info[playerid][pKarmaMenos]){
    case 100..149:{ Info[playerid][pKarmaMas] = 0; Update3DTextLabelText(Agresivo[playerid], 0xFFA200FF, "Agresivo"); }
    case 150..199:{ Info[playerid][pKarmaMas] = 0; Update3DTextLabelText(Agresivo[playerid], 0xFF7D00FF, "Malo"); }
}
Reply
#4

Te muestro el siguiente problema, tenia los timers, y bueno se actualizaba cada X tiempo, pero solo mi rango, al resto que se conectaron no les salia el texto en la cabeza, es como si solo a un user le saliera, al primero que se conectara, acб te muestro el ejemplo:

pawn Код:
new Text3D:Ejemplo[MAX_PLAYERS];

//Ejemplo
    new Ejemplo2 = Info[playerid][Ejemplo];
    if(Ejemplo2>= 100 && Ejemplo2<= 149)
    {
    Timer_Ejemplo[playerid] = SetTimerEx("Ejemplo",1000,0,"i",playerid);
    }

forward Ejemplo(playerid);
public Ejemplo(playerid)
{
Ejemplo[playerid] = Create3DTextLabel("Ejemplo",0xFFA200FF,30.0,40.0,5.0,40.0,1);
Attach3DTextLabelToPlayer(Ejemplo[playerid], playerid, 0.0, 0.0, 0.3);
KillTimer(Timer_Ejemplo[playerid]);
return 1;
}
Reply
#5

Hize una prueba ahorita, lo que pasa es lo siguiente, yo pongo el comando /ejemplo y me sale el texto en la cabeza, ahi se queda, pero si viene otro y usa /ejemplo, le sale el texto a el y se le queda pero ami se me va, es como si me lo quitara.
Reply
#6

usa CreatePlayer3DTextLabel
Reply
#7

Ao, ya use ese pero el texto se queda en el sitio, me muevo pero el texto no...
Reply
#8

@ Metzone es que etas creando, creando, creando etc.. Create3DTextLabel cada un segundo, debes creado una sola vez y actualizar el texto con Update3DTextLabelText, como ya te dije.

http://forum.sa-mp.com/showpost.php?...20&postcount=3

@ aoEXE CreatePlayer3DTextLabel es para label normales colocados en el suelo que sera visualizado solo por tal jugador, no atados al jugador.

saludos.
Reply
#9

Lo hare como dices otacon, pero todos los users tendrian un textdraw... ya que cada uno al spawnear crea uno.
Reply
#10

Otacon, el mismo problema, solo le sale al primer user que se conecta, al resto no, osea como si solo se pudiera crear un texto a una sola persona.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)