[Tutorial] hacer que cambie el textdraw con timers
#1

Hola..hoy les hablare de como hacer para que el textdraw cambie por medio de timers (osea las letras)

bueno usaremos los siguientes script y callback.
pawn Код:
forward

public OnGamemodeiInit()
{

return 1;
}
SetTimer("nombre del forward",tiempo);

TextDrawSetString(id,"nombre");
1є-paso

crea tu textdraw si no sabes aca esta un tuto.
https://sampforum.blast.hk/showthread.php?tid=153643

si se te hace muy complicado aca hay un fs(filterscript) especialisado para crear textdraw hecho por zamoroht.

https://sampforum.blast.hk/showthread.php?tid=118518

2є-paso

Despues de crear el textdraw..

creas un forward de esta manera...

pawn Код:
forward miforward();
forward miforward2();

aqui les quedaria algo asi
ejemplo;

pawn Код:
forward DM();
forward FreeRoam();


3є-paso
luego de crearlo vamos al siguiente paso que seria el siguiente :

pawn Код:
public miforward()
{
TextDrawSetString(id,"nombre"); //en el id va la id del textdraw y bueno en el nombre va el nombre de la textdraw..
return 1;
}
y el siguiente
pawn Код:
public miforward2()
{
TextDrawSetString(id,"nombre");
return 1;
}
en mi caso quedaria de esta manera ;
pawn Код:
public DM()
{
TextDrawSetString(Textdraw0,"((DM))");
return 1;
}
pawn Код:
public FreeRoam()
{
TextDrawSetString(Textdraw2,"[[FREEROAM]]");
return 1;
}


4є-paso
Iremos a "OnGamemodeInit" y colocamos lo siguiente
pawn Код:
public OnGamemodeInit()
{
SetTimer("miforward",milisegundos,true);//en lo primero va su forward en lo 2do van los milisegundos(los timers se definen por milisegundos),y en lo ultimo va true/falce dependiendo, en mi caso es (true).

SetTimer("miforward2",milisegundos,true);

// 1  segundos = 1000 milisegundos
// 5  segundos = 5000 milisegundos
// 10 segundos = 10000 milisegundos
// 30  segundos = 30000 milisegundos
// 1 minuto = 60000 milisegundos
// 5 minuto = 300000 milisegundos
return 1;
}

en mi caso seria asi ejemplo;

pawn Код:
public OnGamemodeInit()
{
SetTimer("DM",5000,true);
//siempre para que pueda cambiar los milisegundos debe ser dos veces o mas mayor que el otro
SetTimer("FreeRoam",1500,true);
return 1;
}

Y PARA LOS QUE NO LES GUSTA HACER TANTO SCRIPT DE ESTA MANERA SERIA TAN BIEN;

pawn Код:
public OnGameModeInit()
{
SetTimer("CambiarString",5000,true);
}

forward CambiarString(); public CambiarString()
{
    static i;
    i++;
    switch(i)
    {
    case 1: TextDrawSetString(textdrawid,"Nuevo string para el textdraw");
    case 2: TextDrawSetString(textdrawid,"Nuevo string2 para el textdraw");
    case 3: TextDrawSetString(textdrawid,"Nuevo string3 para el textdraw");
    case 4: TextDrawSetString(textdrawid,"Nuevo string4 para el textdraw");
    case 5:
    {
        TextDrawSetString(textdrawid,"Nuevo string5 para el textdraw");
        i=0; // Se resetea el static para que cuando vuelva ha ser llamado el callback cambie el string del textdraw por el pimero
    }
    }

}













bueno eso seria todo
el resultado final seria el siguiente.....



[ame="http://www.youtube.com/watch?v=1wof-FJ7H9c"]http://www.youtube.com/watch?v=1wof-FJ7H9c[/ame]





si les sirvio o tienen alguna duda o problema preguntan por aca....
espero que les guste el tuto y que se entienda XDD..
nota;si estoy equivocado en algo corrijanlo..
Reply
#2

pawn Код:
public OnGamemodeiInit()
{

return ;1 //їNo seria "return 1;" ?
}

No entendi muy bien, pero gracias por el aporte cesar_******
Reply
#3

De la forma en que tu lo haces consumes mas recursos, te dejo un ejemplo de como hacerlo con 1 switch, 1 forward y 1 static, de esta forma consumiras muy pocos recursos

pawn Код:
#include <a_samp>


public OnFilterScriptInit()
{
SetTimer("CallStatic",1000,true);
}

forward CallStatic(); public CallStatic()
{
    static i;
    i++;
    switch(i)
    {
    case 1: printf("%d",i);
    case 2: printf("%d",i);
    case 3: printf("%d",i);
    case 4: printf("%d",i);
    case 5:
    {
        printf("%d",i);
        i=0;
    }
    }

}
Si no me entiendes dime y te dare un ejemplo mas entendible pero de la misma forma

EDIT: Cuando te dije como hacer esto por msn te lo dije con forwards por que es mas facil ( para nuevos )
Reply
#4

pero igual sirve o no XDDD
Reply
#5

Si, pero yo lo digo para que despues hagas codigos mas eficientes, te dejare como lo haria yo
pawn Код:
public OnGameModeInit()
{
SetTimer("CambiarString",5000,true);
}

forward CambiarString(); public CambiarString()
{
    static i;
    i++;
    switch(i)
    {
    case 1: TextDrawSetString(textdrawid,"Nuevo string para el textdraw");
    case 2: TextDrawSetString(textdrawid,"Nuevo string2 para el textdraw");
    case 3: TextDrawSetString(textdrawid,"Nuevo string3 para el textdraw");
    case 4: TextDrawSetString(textdrawid,"Nuevo string4 para el textdraw");
    case 5:
    {
        TextDrawSetString(textdrawid,"Nuevo string5 para el textdraw");
        i=0; // Se resetea el static para que cuando vuelva ha ser llamado el callback cambie el string del textdraw por el pimero
    }
    }

}
Como te dije, con esto te arroras lineas de script y recursos.
EDIT: Si lo haces asi estare contento
Reply
#6

Quote:
Originally Posted by cesar_******
Посмотреть сообщение
pero igual sirve o no XDDD
Si sirve, pero como josta dijo, consume mбs recursos...
Reply
#7

ah bien ya me fije XDDD.....

claro que de esa forma yo no sabia XDDD....solo sabia de la que hice.....
Reply
#8

Quote:
Originally Posted by cesar_******
Посмотреть сообщение
ah bien ya me fije XDDD.....

claro que de esa forma yo no sabia XDDD....solo sabia de la que hice.....
Agregala al post para las personas que no quieran hacer tanto script
Reply
#9

dale si va XD.......
Reply
#10

Aquн ninguno acertу en cuanto a optimizaciуn...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)