SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 02/11/2017, 04:20 AM   #1
Gguiz
Huge Clucker
 
Gguiz's Avatar
 
Join Date: Dec 2015
Location: Brazil
Posts: 379
Reputation: 20
Default Sistema de afk por tempo

FilterScript

Hoje trago um sistema de afk com tempo, pesquisei muito no search e não achei nada relacionado a isso,
ou sistemas desatualizados. Não é muito um FilterScript mas pode ser útil para vários novatos que
estão começando.


INTRODUÇÃO:
O que é um sistema de afk? Simplesmente um comando que indica que o jogador está ausente/inativo em seu servidor. Não é algo muito difícil de se compreender, é bem básico pra ser sincero.


COMANDOS:

O meu sistema disponibiliza pra você os seguintes comandos:
/afk - Faz com que o jogador entre no modo ausente.
/afksair - Faz com que o jogador saia do modo ausente.
/meutempoafk - Mostra o seu tempo ausente, apenas para você.
/ausentes - Mostra todos os jogadores que estão ausentes e o tempo.


NECESSÁRIO:

Para utilizar o sistema, você precisa ter as seguintes includes:
#include <a_samp>
#include <Pawn.CMD>

Estarei disponibilizando o download das duas.


DOWNLOAD:




Observação: Em breve estarei disponibilizando mais funções que pode ser usadas com esse sistema.
Qualquer sugestão/crítica será bem vinda!


@Atualizado dia 19/11/2017

Corrigido o erro de quando o jogador desconecta no modo ausente, o tempo fica contando.

@Atualizado dia 22/12/2017

Foi atualizado o processamento de comandos, removido o zcmd e adicionado o Pawn.CMD, um processador de comandos muito mais rápido e útil.

Tópico oficial do Pawn.CMD
http://forum.sa-mp.com/showthread.php?t=608474

Last edited by Gguiz; 22/12/2017 at 10:01 PM.
Gguiz is offline   Reply With Quote
Old 02/11/2017, 10:27 AM   #2
RogerX
Little Clucker
 
RogerX's Avatar
 
Join Date: Mar 2017
Location: Marte
Posts: 41
Reputation: 6
Default Re: Sistema de afk por tempo

Legal
__________________
Meus Projetos


Mapas






FilterScript's




GameModes
RogerX is offline   Reply With Quote
Old 02/11/2017, 11:15 AM   #3
Don_Speed
High-roller
 
Don_Speed's Avatar
 
Join Date: Sep 2011
Location: Curitiba / PR
Posts: 3,272
Reputation: 266
Default Re: Sistema de afk por tempo

SetTimer global desnecessario , você criou uma stock para getar o nome dos jogadores e mesmo assim em alguns pontos com loop você criou outra variavel para getar o nome .
PHP Code:
pInfo[playerid][tempoafk] = false
Acho que você nem compilou , acho que isto vai dar um aviso ao compilar .

Mas e tentando que se aprende , boa .

Não testei talvez tenha algum erro , estou sem os programas no pc para testar mas pode ser uma base para você poder melhorar .
PHP Code:
#include          a_samp
#include          zcmd
enum   pafk {
       
Timer,
       
Tempo,
       
bool:AFK
}
new 
SistemaAFK[MAX_PLAYERS][pafk];
public 
OnFilterScriptInit()
{
    return 
1;
}

public 
OnFilterScriptExit()
{
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
SistemaAFK[playerid][Tempo] = 0;
    
SistemaAFK[playerid][AFK] = false;
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    
SistemaAFK[playerid][Tempo] = 0;
    
SistemaAFK[playerid][AFK] = false;
    return 
1;
}
public 
OnPlayerCommandPerformed(playeridcmdtext[], success)
{
    if(
success){
        if(
SistemaAFK[playerid][AFK] == true)return SendClientMessage(playerid, -1"Senhor esta ausente.");}
    return 
true;
}
command(afkplayeridparams[])
{
    if(
SistemaAFK[playerid][AFK] == false)
    {
        
TogglePlayerControllable(playeridfalse);
        
        
SendClientMessage(playerid, -1"Use: /afk, para sair do modo ausente");
        
        
SistemaAFK[playerid][AFK] = true;
        
        
SistemaAFK[playerid][Timer] =  SetTimerEx("CheckAFK"1000true"i"playerid);
    }
    else
    {
        
TogglePlayerControllable(playeridtrue);

        
SendClientMessage(playerid, -1"Use: /afk, para entrar no modo ausente");

        
SistemaAFK[playerid][AFK] = false;
        
        
KillTimer(SistemaAFK[playerid][Timer]);
    }
    return 
true;
}
command(listaplayeridparams[])
{
   new 
pimbando[128];
   for (new 
ds;ds <MAX_PLAYERSds++)
   {
       if(
SistemaAFK[ds][AFK] == true)
       {
           
format(pimbandosizeof(pimbando), "%s O jogador %s está ausente por: [%s]\n"pimbandoDonPegaNome(ds), Convert(SistemaAFK[ds][Tempo]));
       }
   }
   if (
strlen(pimbando) > 0)
        
ShowPlayerDialog(playerid99DIALOG_STYLE_MSGBOX"Jogadores ausentes:"pimbando"FECHAR"#);
    
else
        
SendClientMessage(playerid0xFF0000FF"{FF0000}Não há jogadores ausentes.");
   return 
true;
}
forward CheckAFK(playerid);
public 
CheckAFK(playerid)return SistemaAFK[playerid][Tempo]++;
stock DonPegaNome(playerid)
{
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnamesizeof(name));
    return 
name;
}
stock Convert(number)
{
    new 
hours 0mins 0secs 0string[100];
    
hours floatround(number 3600);
    
mins floatround((number 60) - (hours 60));
    
secs floatround(number - ((hours 3600) + (mins 60)));
    new 
days 0;

    if(
hours >= 24)
    {
        
days floatround((hours/24), floatround_floor);
        
hours hours 24;
    }

    if(
days 0)
    {
        
format(string100"%ddias, %dh %dm e %ds"dayshoursminssecs);
    }
    else if(
hours 0)
    {
        
format(string100"%dh %dm e %ds"hoursminssecs);
    }
    else
    {
        
format(string100"%dm e %ds"minssecs);
    }
    return 
string;

__________________
Youtubar
Discord : Don_Speed#6282
Don_Speed is offline   Reply With Quote
Old 02/11/2017, 12:04 PM   #4
Naine
Big Clucker
 
Naine's Avatar
 
Join Date: Feb 2016
Posts: 105
Reputation: 38
Default Re: Sistema de afk por tempo

Se eu fosse usar, eu faria dessa forma;


PHP Code:
// são dois arquivos. caso alguém não tenha entendido.

/*
#  db   db d88888b  .d8b.  d8888b. d88888b d8888b.    d888888b d8b   db  .o88b. 
#  88   88 88'     d8' `8b 88  `8D 88'     88  `8D      `88'   888o  88 d8P  Y8 
#  88ooo88 88ooooo 88ooo88 88   88 88ooooo 88oobY'       88    88V8o 88 8P      
#  88~~~88 88~~~~~ 88~~~88 88   88 88~~~~~ 88`8b         88    88 V8o88 8b      
#  88   88 88.     88   88 88  .8D 88.     88 `88. db   .88.   88  V888 Y8b  d8 
#  YP   YP Y88888P YP   YP Y8888D' Y88888P 88   YD VP Y888888P VP   V8P  `Y88P' 
*/

#if defined _inc_header
    #undef _inc_header
#endif

#include <YSI\y_groups>
#include <YSI\y_commands>
#include <YSI\y_hooks>

new 
    
Group:Group_AFK,
    
Player_Name[MAX_PLAYERS][MAX_PLAYER_NAME],
    
Player_TimeAfk[MAX_PLAYERS];


/* 
#  d88888b d8b   db d8888b.       .d88b.  d88888b      d88888b d888888b db      d88888b 
#  88'     888o  88 88  `8D      .8P  Y8. 88'          88'       `88'   88      88'     
#  88ooooo 88V8o 88 88   88      88    88 88ooo        88ooo      88    88      88ooooo 
#  88~~~~~ 88 V8o88 88   88      88    88 88~~~        88~~~      88    88      88~~~~~ 
#  88.     88  V888 88  .8D      `8b  d8' 88           88        .88.   88booo. 88.     
#  Y88888P VP   V8P Y8888D'       `Y88P'  YP           YP      Y888888P Y88888P Y88888P 
*/


// [...]
// [...]
// [...]


/*
#  d888888b .88b  d88. d8888b. db         d888888b d8b   db  .o88b. 
#    `88'   88'YbdP`88 88  `8D 88           `88'   888o  88 d8P  Y8 
#     88    88  88  88 88oodD' 88            88    88V8o 88 8P      
#     88    88  88  88 88~~~   88            88    88 V8o88 8b      
#    .88.   88  88  88 88      88booo. db   .88.   88  V888 Y8b  d8 
#  Y888888P YP  YP  YP 88      Y88888P VP Y888888P VP   V8P  `Y88P' 
*/

#if defined _inc_impl
    #undef _inc_impl
#endif

hook OnGameModeInit()
{
    
Group_AFK Group_Create("AFK");
    return 
true;
}

hook OnPlayerConnect(playerid)
{
    
GetPlayerName(playeridPlayer_Name[playerid], MAX_PLAYER_NAME);
    return 
true;
}

YCMD:ausentes(playeridparams[], help
{

    new
        
tmp_str[128];

    
SendClientMessage(playerid, -1"Exibindo jogadores ausentes:");

    foreach(new 
GroupMember(Group_AFK))
    {
        
format(tmp_strsizeof tmp_str"  %s - %i"Player_Name[playerid], gettime() - Player_TimeAfk[playerid]);
        
SendClientMessage(playerid, -1tmp_str);
    }

    return 
true;
}

YCMD:afk(playeridparams[], help
{
    if(
Group_GetPlayer(Group_AFKplayerid))
    {
        
Group_SetPlayer(Group_AFKplayeridfalse);
        
SendClientMessage(playerid, -1"Você não esta mais afk.");
    }
    else
    {
        
Group_SetPlayer(Group_AFKplayeridtrue);
        
SendClientMessage(playerid, -1"Agora você esta ausente.");

        
Player_TimeAfk[playerid] = gettime();
    }
    return 
true;
}

/* 
#  d88888b d8b   db d8888b.       .d88b.  d88888b      d88888b d888888b db      d88888b 
#  88'     888o  88 88  `8D      .8P  Y8. 88'          88'       `88'   88      88'     
#  88ooooo 88V8o 88 88   88      88    88 88ooo        88ooo      88    88      88ooooo 
#  88~~~~~ 88 V8o88 88   88      88    88 88~~~        88~~~      88    88      88~~~~~ 
#  88.     88  V888 88  .8D      `8b  d8' 88           88        .88.   88booo. 88.     
#  Y88888P VP   V8P Y8888D'       `Y88P'  YP           YP      Y888888P Y88888P Y88888P 
*/ 
bom trabalho, mano.
__________________
i5-7400 @ 3.0 GHz
B250M-PLUS/BR
GTX 1050 Ti
8 GB DDR4 @ 2400 MHz
Naine is offline   Reply With Quote
Old 02/11/2017, 01:20 PM   #5
ScripitrFaunu
Big Clucker
 
ScripitrFaunu's Avatar
 
Join Date: Jul 2017
Posts: 90
Reputation: 13
Default Re: Sistema de afk por tempo

Mais ou menos, talvez use.
ScripitrFaunu is offline   Reply With Quote
Old 02/11/2017, 03:47 PM   #6
Gguiz
Huge Clucker
 
Gguiz's Avatar
 
Join Date: Dec 2015
Location: Brazil
Posts: 379
Reputation: 20
Default Re: Sistema de afk por tempo

Quote:
Originally Posted by RogerX View Post
Legal
Obrigado!

Quote:
Originally Posted by Don_Speed View Post
SetTimer global desnecessario , você criou uma stock para getar o nome dos jogadores e mesmo assim em alguns pontos com loop você criou outra variavel para getar o nome .
PHP Code:
pInfo[playerid][tempoafk] = false

Realmente, teve alguns pontos que minha stock foi insuficiente para mostrar os jogadores ausentes, aí gerei uma nova variável no loop. Poderia ter criado um SetTimerEx, não sei o porque não fiz isso.

Quando coloquei
PHP Code:
pInfo[playerid][tempoak] = false
dentro do sistema, isso fez com que o tempo começasse a contar assim que o jogador entrasse no modo ausente.

Quote:
Originally Posted by Don_Speed View Post
Acho que você nem compilou, acho que isto vai dar um aviso ao compilar. Mas e tentando que se aprende
Se não tivesse compilado, acha que eu postaria? Não estou sendo grosseiro.
É com os erros que se aprende a fazer o certo.




Quote:
Originally Posted by Don_Speed View Post
Não testei talvez tenha algum erro , estou sem os programas no pc para testar mas pode ser uma base para você poder melhorar.
Obrigado, vou me esforçar para melhorar.

Quote:
Originally Posted by Naine View Post
Se eu fosse usar, eu faria dessa forma;
Interessante!

Quote:
Originally Posted by Cycle View Post
Poderia ter utilizado um SetPlayChatBubble para notificar aos que não visualizarem o chatbox e se aproximarem do player. Nada tão surpreendente, vejo constantemente esse "sistema", porém parabéns pela força de vontade.
Inicialmente eu fiz com um SetPlayChatBubble, mas não tinha ninguém pra testar comigo, não iria por algo sem ao menos ter testado, obviamente.

Sim, este sistema é muito presente no fórum SA-MP, porém como eu havia dito, "Não achei nada relacionado a isso", ou seja, nada que mostrasse o tempo do jogador ausente. A maioria dos sistema afk do fórum estão desatualizados, 2014 para baixo.

Quote:
Originally Posted by ScripitrFaunu View Post
Mais ou menos, talvez use.
Obrigado!
Attached Images
File Type: png edit.png (5.1 KB, 308 views)

Last edited by Gguiz; 02/11/2017 at 04:42 PM.
Gguiz is offline   Reply With Quote
Old 02/11/2017, 06:38 PM   #7
Benner
Big Clucker
 
Benner's Avatar
 
Join Date: Oct 2017
Location: Brazil
Posts: 63
Reputation: 4
Thumbs up Re: Sistema de afk por tempo

Sinceramente o seu sistema não é nada diferente dos demais só muda que esta utilizando ZCMD , na minha opnião qualquer pessoa poderia pegar um FS antigo e otimizar, se você queria trazer algo novo(Não conseguiu), deveria ter feito sem os cmd de deixar AFK fazendo assim um timer que verifica se o player esta parado a muitos minutos e deixando ele AFK.
__________________
O silêncio é de ouro e muitas vezes é a resposta.
Benner is offline   Reply With Quote
Old 02/11/2017, 06:45 PM   #8
Gguiz
Huge Clucker
 
Gguiz's Avatar
 
Join Date: Dec 2015
Location: Brazil
Posts: 379
Reputation: 20
Default Re: Sistema de afk por tempo

Quote:
Originally Posted by Benner View Post
Sinceramente o seu sistema não é nada diferente dos demais só muda que esta utilizando ZCMD , na minha opnião qualquer pessoa poderia pegar um FS antigo e otimizar, se você queria trazer algo novo(Não conseguiu), deveria ter feito sem os cmd de deixar AFK fazendo assim um timer que verifica se o player esta parado a muitos minutos e deixando ele AFK.
Você leu o que eu escrevi? se não, leia.
Quote:
Originally Posted by Gguiz View Post
Não é muito um FilterScript mas pode ser útil para vários novatos que
estão começando.
Minha intenção não foi criar algo novo e sim optimizar algo que está desatualizado no search. Principalmente porquê meu público alvo foi para os que estão começando a mexer com pawno.

@Edit

Momento nenhum eu quis criar algo surpreendente e nem novo. Se qualquer um sabe fazer isso, então mande um novato fazer um sistema de afk, quando ele fizer você me procura. Você não compreendeu muito o que eu quis passar aqui, desde o começo sabia que tinha vários relacionados a isso no search, eu pesquisei - mesmo assim prosseguir e passei um pouco do meu conhecimento para a galera. Sua crítica foi construtiva, porém mal interpretada em relação ao que eu quis passar. Note que em nenhum momento falei que ia surpreender alguém com algo novo, muito pelo contrário.

Mesmo assim, obrigado por sua crítica!
Gguiz is offline   Reply With Quote
Old 02/11/2017, 06:48 PM   #9
Benner
Big Clucker
 
Benner's Avatar
 
Join Date: Oct 2017
Location: Brazil
Posts: 63
Reputation: 4
Default Re: Sistema de afk por tempo

Quote:
Originally Posted by Gguiz View Post
Você leu o que eu escrevi? se não, leia.

Minha intenção não foi criar algo novo e sim optimizar algo que está desatualizado no search. Principalmente porquê meu público alvo foi para os que estão começando a mexer com pawno.
Leia a minha resposta novamente.
__________________
O silêncio é de ouro e muitas vezes é a resposta.
Benner is offline   Reply With Quote
Old 02/11/2017, 09:45 PM   #10
CezarBR
Big Clucker
 
CezarBR's Avatar
 
Join Date: Jul 2016
Location: Brasil-Minas Gerais
Posts: 140
Reputation: 2
Default Re: Sistema de afk por tempo

Adorei os nomes das variáveis "viada" "pimbando", stock pimba kkkkkkkkkkkk genial !!
__________________
Só sei que nada sei ~ Sócrates
CezarBR is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Pedido] Sistema de tempo shittt Português/Portuguese 3 24/07/2013 05:05 PM
[FilterScript] Sistema de Tempo 2.0 @LucasVinicius Lançamentos/Releases 12 29/06/2013 08:51 PM
[Pedido] Sistema de vip com tempo iTzDemon Português/Portuguese 2 27/06/2013 08:40 PM
[FilterScript] Sistema de tempo RebeloX Lançamentos/Releases 22 16/12/2011 08:34 PM
[FilterScript] Sistema AFK [Com tempo] Caio_Cartaxo Lançamentos/Releases 7 06/11/2010 04:12 PM


All times are GMT. The time now is 05:02 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.