[FilterScript] Relogio
#1

Fiz este filterscript para algumas pessoas que usam o Relogio do GTAOFF no samp.

DIFERENCA:
Код:
Para cada jogador, o Relogio do GTA OFF no samp aparece uma hora diferente. Este nгo!
Imagem:


Aqui esta o codigo:
pawn Код:
/*--------------------------------------------------------------------
  -----------------------[ Relogio by Dr_Pawn ]-----------------------
  ------------------------------------------------------------------*/


/*------------------------------------------------------------ INCLIDE/DEFINES*/

#include <a_samp>

/*-------------------------------------------------------------------- FORWARD*/

forward LigarRelogio();
forward DesligarRelogio();
forward HorasRelogio();

/*------------------------------------------------------------------------ NEW*/

new Text:Relogio;
new RelogioFunc[3];
new RelogioLigado;

/*--------------------------------------------------------------- FILTERSCRIPT*/

public LigarRelogio()
{
    Relogio = TextDrawCreate(562.500000, 5.000000, "23:59");
    TextDrawBackgroundColor(Relogio, 255);
    TextDrawFont(Relogio, 2);
    TextDrawLetterSize(Relogio, 0.250000, 1.700000);
    TextDrawColor(Relogio, -1);
    TextDrawSetOutline(Relogio, 1);
    TextDrawSetProportional(Relogio, 1);
    RelogioFunc[0] = 12;
    RelogioFunc[1] = -1;
    HorasRelogio();
    RelogioFunc[2] = SetTimer("HorasRelogio", 1000, true);
    return 1;
}

public DesligarRelogio()
{
    TextDrawHideForAll(Relogio);
    TextDrawDestroy(Relogio);
    RelogioFunc[0] = 23;
    RelogioFunc[1] = 59;
    KillTimer(RelogioFunc[2]);
    return 1;
}

public HorasRelogio()
{
    new string[256];
    RelogioFunc[1] ++;
    if(RelogioFunc[1] == 60)
    {
        RelogioFunc[0] ++;
        RelogioFunc[1] =0;
    }
    if(RelogioFunc[0] == 24)
    {
        RelogioFunc[0] =0;
    }
    SetWorldTime(RelogioFunc[0]);
    if(RelogioFunc[1] < 10 && RelogioFunc[0] >= 10)
    {
        format(string, sizeof(string), "%d:0%d", RelogioFunc[0], RelogioFunc[1]);
    }
    else if(RelogioFunc[0] < 10 && RelogioFunc[1] >= 10)
    {
        format(string, sizeof(string), "0%d:%d", RelogioFunc[0], RelogioFunc[1]);
    }
    else if(RelogioFunc[1] < 10 && RelogioFunc[0] < 10)
    {
        format(string, sizeof(string), "0%d:0%d", RelogioFunc[0], RelogioFunc[1]);
    }
    else
    {
        format(string, sizeof(string), "%d:%d", RelogioFunc[0], RelogioFunc[1]);
    }
    TextDrawSetString(Relogio, string);
    return 1;
}

public OnFilterScriptInit()
{
    print("---------- ------- --------- ----------");
    print("---------- Relogio Carregado ----------");
    print("---------- ------- --------- ----------");
    return 1;
}

public OnFilterScriptExit()
{
    DesligarRelogio();
    return 1;
}

public OnPlayerConnect(playerid)
{
    TextDrawShowForPlayer(playerid, Relogio);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    TextDrawHideForPlayer(playerid, Relogio);
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256], idx, tmp[256], sendername[MAX_PLAYER_NAME], string[256];
    cmd = strtok(cmdtext, idx);
    GetPlayerName(playerid, sendername, sizeof(sendername));

    if(strcmp(cmd, "/ligarrelogio", true) == 0)
    {
        if(IsPlayerAdmin(playerid))// Seu sistema de admin aqui.
        {
            if(RelogioLigado == 0)
            {
                LigarRelogio();
                TextDrawShowForAll(Relogio);
                format(string, sizeof(string), "[ADMIN] %s ligou o relogio.", sendername);
                SendClientMessageToAll(0xDDDD00AA, string);
                RelogioLigado = 1;
                return 1;
            }
            else
            {
                SendClientMessage(playerid, 0xAAAAAAAA, "O Relogio ja esta ligado.");
                return 1;
            }
        }
        else
        {
            SendClientMessage(playerid, 0xAAAAAAAA, "Vocк nгo й admin.");
            return 1;
        }
    }

    if(strcmp(cmd, "/desligarrelogio", true) == 0)
    {
        if(IsPlayerAdmin(playerid))// Seu sistema de admin aqui.
        {
            if(RelogioLigado == 1)
            {
                DesligarRelogio();
                format(string, sizeof(string), "[ADMIN] %s desligou o relogio.", sendername);
                SendClientMessageToAll(0xDDDD00AA, string);
                RelogioLigado = 0;
                return 1;
            }
            else
            {
                SendClientMessage(playerid, 0xAAAAAAAA, "O Relogio ja esta desligado.");
                return 1;
            }
        }
        else
        {
            SendClientMessage(playerid, 0xAAAAAAAA, "Vocк nгo й admin.");
            return 1;
        }
    }
   
    if(strcmp(cmd, "/setarhora", true) == 0)
    {
        if(IsPlayerAdmin(playerid))// Seu sistema de admin aqui.
        {
            if(RelogioLigado == 1)
            {
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, 0xAAAAAAAA, "USE: /SetarHora [HORA] [MINUTOS]");
                    return 1;
                }
                new H = strval(tmp);
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, 0xAAAAAAAA, "USE: /SetarHora [HORA] [MINUTOS]");
                    return 1;
                }
                new M = strval(tmp);
                if(H < 0 || H > 23 || M < 0 || M > 59)
                {
                    SendClientMessage(playerid, 0xAAAAAAAA, "USE: /SetarHora [0-23] [0-59]");
                    return 1;
                }
                RelogioFunc[0] = H;
                RelogioFunc[1] = M-1;
                HorasRelogio();
                KillTimer(RelogioFunc[2]);
                RelogioFunc[2] = SetTimer("HorasRelogio", 1000, true);
                format(string, sizeof(string), "[ADMIN] %s setou a hora para %d:%d.", sendername, H, M);
                SendClientMessageToAll(0xDDDD00AA, string);
                return 1;
            }
            else
            {
                SendClientMessage(playerid, 0xAAAAAAAA, "O Relogio nгo esta ligado.");
                return 1;
            }
        }
        else
        {
            SendClientMessage(playerid, 0xAAAAAAAA, "Vocк nгo й admin.");
            return 1;
        }
    }
    return 0;
}

strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
Ele pode nгo ser muito util, mas eu acho que valeu o esforco.
Reply
#2

Me parece ser bom
Talvez usarei ele em meu servidor ^^
9/10
Reply
#3

Parabйns pelo post.
E se voce que fez, parabйns pelo cуdigo.
dava pra deixar ele mais simples e eficaz mas tб bom pelo que vi =) Gostei.
Reply
#4

Eu uso o do sa-mp mesmo que jб vem quando baixa... Ele arruma o tempo certinho se tб 8 horas da noite fica de noite e tal. Mas nгo deixa de ser bom 9/10.
Reply
#5

Muito bom , mas para quem mora em local de fudo horбrio diferente vai perceber!
Reply
#6

Vlw gente!!

Quote:
Originally Posted by Josma_cmd
Посмотреть сообщение
Parabйns pelo post.
E se voce que fez, parabйns pelo cуdigo.
dava pra deixar ele mais simples e eficaz mas tб bom pelo que vi =) Gostei.
O codigo й meu, so esqueci de coloca os creditos =X
Reply
#7

Gostei legal... Poderia por umas ss =D..
Reply
#8

Quote:
Originally Posted by [GRB]Stakline
Посмотреть сообщение
Gostei legal... Poderia por umas ss =D..
Vlw! Coloquei a SS agora!!
Reply
#9

Quote:
Originally Posted by Dr_Pawno
Посмотреть сообщение
Vlw! Coloquei a SS agora!!
Que rapido... Agora sim =D
Reply
#10

Como eu sempre digo. Elogios & Criticas fazem parte de uma opiniгo, respeite ambos.
  • Acredito que esta idйia do relуgio jб um pouco velha, existem "n" estilos e tipos de relуgios aqui, entretanto, o que vale й sua intenзгo. Achei interessante. Porйm hб coisas neste cуdigo que nгo sгo "agradбveis", como o uso inapropriado de cйlulas dentro de uma string. Nгo hб a necessidade de usar 256 cйlulas quando vocк apenas precisa de 10. E, ao trabalhar com strtok (O que jб nгo й mais eficiente) todos acreditam que devem usar 256 cйlulas para todas as strings relacionadas. Vale lembrar que o chat SA-MP aceita apenas 124, entгo, nгo hб tal necessidade, e seus comandos nгo ultrapassam mais de 100 caracteres acredito eu!
Iniciante ou nгo, й sempre bom aprendermos da maneira correta desde o comeзo. Apenas uma opiniгo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)