[PETICION]Announce
#1

Bueno me gustaria un announce como los de gamemodetext o como se llame pero me sutaria con el

shady textdraw el que se mueve http://forum.sa-mp.com/index.php?topic=114586.0

porfavor mandarme el codigo por PM no confio en algunos despues en su server diran que a ellos se les ocurrio la idea

Gracias
Reply
#2

pawn Код:
#define ANUNCIO "Probando Anuncio" // йste es el anuncio que aparecerб

new Text:Anuncio;
new Text:Cuadro;

public OnFilterScriptInit() // o tambiйn puede ir en OnGameModeInit()
{
  Anuncio = TextDrawCreate(-300.0, 433.000, ANUNCIO);
  TextDrawBackgroundColor(Anuncio, 255);
  TextDrawFont(Anuncio, 1);
  TextDrawLetterSize(Anuncio, 0.500000, 1.000000);
  TextDrawColor(Anuncio, -1);
  TextDrawSetOutline(Anuncio, 0);
  TextDrawSetProportional(Anuncio, 1);
  TextDrawSetShadow(Anuncio, 1);
  Cuadro = TextDrawCreate(0.000000, 432.000000, "Cuadro");
  TextDrawBackgroundColor(Cuadro, 0);
  TextDrawFont(Cuadro, 1);
  TextDrawLetterSize(Cuadro, 0.500000, 1.300000);
  TextDrawColor(Cuadro, 0);
  TextDrawSetOutline(Cuadro, 0);
  TextDrawSetProportional(Cuadro, 1);
  TextDrawSetShadow(Cuadro, 1);
  TextDrawUseBox(Cuadro, 1);
  TextDrawBoxColor(Cuadro, 65535);
  TextDrawTextSize(Cuadro, 636.000000, 0.000000);
  SetTimer("Mover", 100, 1);//100 milisegundos ajusta el tiempo al que desees
  return 1;
}

forward Mover();
public Mover()
{
  static Float:pos = -300.00;
  pos += 10.00;//aquн lo que se moverб en el tiempo determinado
  if(pos >= 650.00) pos = -300.00;
  TextDrawHideForAll(Anuncio);
  TextDrawDestroy(Anuncio);
  Anuncio = TextDrawCreate(pos, 433.000, ANUNCIO);
  TextDrawBackgroundColor(Anuncio, 255);
  TextDrawFont(Anuncio, 1);
  TextDrawLetterSize(Anuncio, 0.500000, 1.000000);
  TextDrawColor(Anuncio, -1);
  TextDrawSetOutline(Anuncio, 0);
  TextDrawSetProportional(Anuncio, 1);
  TextDrawSetShadow(Anuncio, 1);
  TextDrawShowForAll(Anuncio);
  TextDrawShowForAll(Cuadro);
}
Creditos: Zamaroht por el TextDrawEditor, y a mн por que yo lo hice .

Puedes cambiar el color del texto o el color del cuadro. Vн el del video, pero es mбs facil con йste. Son menos lнneas y sуlo cambias un string.

Se vera asн:
Imagen
Saludos.
Reply
#3

la idea es compartir no querer cosas para uno mismo LOL (si no no tendria sentido compartir codigos xq los hice yo o los hoso X)
Reply
#4

xP gracias pero como lo hago en comando?

pero me gustaria que el admin escriba el anuncio
Reply
#5

modificacion al codigo de infierno:
pawn Код:
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

#define ANUNCIO "Probando Anuncio" // йste es el anuncio que aparecerб

new Text:Anuncio;
new Text:Cuadro;
new MoverT;

public OnPlayerCommandText(playerid, cmdtext[])
{
  dcmd(anuncio, 7, cmdtext);
  return 0;
}

dcmd_anuncio(playerid, params[]){
//Nota: si el jugador no es un admin de rcon no lo dejara usar el comando. Cambia esto en tu script x algo asi como el ladmin que tiene PlayerInfo[playerid][Level] para que los demas admins tambien lo puedan usar

  if(IsPlayerAdmin(playerid)){
    if(!strlen(params))return SendClientMessage(playerid, 0xF6F600F6, "USO: /anuncio <mensaje>");
    Anuncio = TextDrawCreate(-300.0, 433.000, ANUNCIO);
    TextDrawBackgroundColor(Anuncio, 255);
    TextDrawFont(Anuncio, 1);
    TextDrawLetterSize(Anuncio, 0.500000, 1.000000);
    TextDrawColor(Anuncio, -1);
    TextDrawSetOutline(Anuncio, 0);
    TextDrawSetProportional(Anuncio, 1);
    TextDrawSetShadow(Anuncio, 1);
    Cuadro = TextDrawCreate(0.000000, 432.000000, "Cuadro");
    TextDrawBackgroundColor(Cuadro, 0);
    TextDrawFont(Cuadro, 1);
    TextDrawLetterSize(Cuadro, 0.500000, 1.300000);
    TextDrawColor(Cuadro, 0);
    TextDrawSetOutline(Cuadro, 0);
    TextDrawSetProportional(Cuadro, 1);
    TextDrawSetShadow(Cuadro, 1);
    TextDrawUseBox(Cuadro, 1);
    TextDrawBoxColor(Cuadro, 65535);
    TextDrawTextSize(Cuadro, 636.000000, 0.000000);
    MoverT = SetTimer("Mover", 100, 1);//100 milisegundos ajusta el tiempo al que desees
    SetTimer("Killer", 3000, 0);//3000 milisegundos, es el tiempo que durara el anuncio.
    return 1;
  }else return SendClientMessage(playerid, 0xFF0000AA, "ERROR: Debes ser un administrador para poder usar este comando");
}

forward Mover();
public Mover()
{
  static Float:pos = -300.00;
  pos += 10.00;//aquн lo que se moverб en el tiempo determinado
  if(pos >= 650.00) pos = -300.00;
  TextDrawHideForAll(Anuncio);
  TextDrawDestroy(Anuncio);
  Anuncio = TextDrawCreate(pos, 433.000, ANUNCIO);
  TextDrawBackgroundColor(Anuncio, 255);
  TextDrawFont(Anuncio, 1);
  TextDrawLetterSize(Anuncio, 0.500000, 1.000000);
  TextDrawColor(Anuncio, -1);
  TextDrawSetOutline(Anuncio, 0);
  TextDrawSetProportional(Anuncio, 1);
  TextDrawSetShadow(Anuncio, 1);
  TextDrawShowForAll(Anuncio);
  TextDrawShowForAll(Cuadro);
}

forward Killer();
public Killer()
{
  TextDrawDestroy(Anuncio);
  TextDrawDestroy(Cuadro);
  KillTimer(MoverT);
}
Creditos: Zamaroht por el TextDrawEditor, Infierno x el trabajo, Yo x la mini modificacion(ni cuenta) xD

Espero que te funcione y te sirva
Reply
#6

Es mejor asн, por que si el anuncio estб muy largo se verб mal ja.
Quitas el define y agregas:

osea йste:

pawn Код:
#define ANUNCIO "Probando Anuncio"
por йste:

pawn Код:
new ANUNCIO[128] = "Probando Anuncio";
Y despuйs:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
  new
    tmp[128],
    cmd[128],
    idx;   

    cmd = strtok(cmdtext, idx);
    if(!strcmp(cmd,"/anuncio", true))
    {
      if(!IsPlayerAdmin(playerid)) return 0;
      tmp = strrest(cmdtext, idx);//
      if(!strlen(tmp)) return SendClientMessage(playerid, 0x00F600AA, "Usa /anuncio [texto]");
      format(ANUNCIO, 20, "%s", tmp);
      return 1;
    }
    return 0;
}
Y al final pones(si es que no lo tienes):

pawn Код:
stock strrest(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }
    new offset = index;
    new result[128];
    while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Asн continuarб avanzando sуlo que con el anuncio cambiado.

EDIT: strtok por strrest, Gracias a Karkanos :P
Reply
#7

a mi me sirvio le primero,los otros 2 ultimos no funcionaron.No sale errores pero no sale el texto..de todos modos esta muy bueno el aporte
Reply
#8

Quote:
Originally Posted by xenowort
a mi me sirvio le primero,los otros 2 ultimos no funcionaron.No sale errores pero no sale el texto..de todos modos esta muy bueno el aporte
Por que tienes que agregar el primero mбs el que puse despues osea el comando.
Reply
#9

Quote:
Originally Posted by Infierno
Quote:
Originally Posted by xenowort
a mi me sirvio le primero,los otros 2 ultimos no funcionaron.No sale errores pero no sale el texto..de todos modos esta muy bueno el aporte
Por que tienes que agregar el primero mбs el que puse despues osea el comando.
cierto un error mio,no me di cuenta xd
Reply
#10

gracias a todos
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)