[FilterScript] rEvento
#1

Olб pessoal , estou aqui para a postagen do meu mas novo filterscript de eventos, bom sei que jб existe uma grande quantia de filterscripts no qual alguns estгo bugados ou atй mesmo com links off, sei que foi lanзado semana passada um filterscript de evento mas gosto sempre de deixar essa board atualizada, esse filterscript foi testado com 5 jogadores no qual nгo achamos nenhum tipo de bug. Caso queiram dar suas sugestхes fique livre, aceito criticas construtivas .

Download
PHP Code:
#include    <   a_samp  >
#include    <   zcmd    >
#include    <   sscanf2 >
#if defined MAX_PLAYERS_EVENTO
#undef MAX_PLAYERS_EVENTO
#endif
#define MAX_PLAYERS_EVENTO    (60) //Mude para o maximo de players em seu servidor.
new Float: Pos         [ 3 ] ;
new 
str             [ 128 ] ;
new 
Evento ;
new 
EventoEt;
new 
Nome             [ MAX_PLAYER_NAME ] ;
new 
Kills             [ MAX_PLAYERS_EVENTO ] ;
new 
EventoV         [ MAX_PLAYERS_EVENTO ] ;
new 
bool: Ativo     [ MAX_PLAYERS_EVENTO ] ;
new 
bool: entrarE     [ MAX_PLAYERS_EVENTO ] ;
public 
OnPlayerDisconnect ( playerid , reason )
{
    if ( 
entrarE [ playerid ] == true )
    {
        
GetPlayerName ( playerid , Nome , sizeof ( Nome ) ) ;
        
format ( str , sizeof ( str ) , "[EVENTO]: %s saiu do evento." , Nome ) ;
        
SendClientMessageToAll ( 0xFF0000AA , str ) ;
        
DestroyVehicle ( EventoV [ playerid ] ) ;
        
EventoEt-- ;
        
entrarE [ playerid ] = false ;
        
Kills [ playerid ] = 0 ;
     }
    return 
1;
}
CMD :aevento ( playerid , params [ ] )
{
    new 
eventnome [ 31 ] ;
    if ( !
IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "Vocк nгo tem permissгo." ) ;
    if ( 
Evento == 1 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Jб tem um evento em andamento." ) ;
    if ( 
sscanf ( params , "s[30]" , eventnome ) ) return SendClientMessage ( playerid , 0xFF0000AA , "/aevento [nome]" ) ;
    
format(str, sizeof(str), "Evento ''%s'' aberto. use: /irevento" , eventnome ) ;
    
SendClientMessageToAll ( 0xFF0000AA , str ) ;
    
GetPlayerPos ( playerid , Pos [ 0 ] , Pos [ 1 ] , Pos [ 2 ] ) ;
    
Evento = 1 ;
    return 
1 ;
}
CMD :irevento ( playerid , params [ ] )
{
    if ( 
Evento == 0 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Nenhum evento ativo." ) ;
    if ( 
entrarE [ playerid ] == true ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Vocк jб estб no evento." ) ;
    if ( 
Ativo [ playerid ] == true ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Evento jб comeзou." ) ;
       
GetPlayerName ( playerid , Nome , sizeof ( Nome ) ) ;
       
format(str, sizeof(str), "[EVENTO]: %s entrou no evento." , Nome ) ;
       
SendClientMessageToAll ( 0xFF0000AA , str ) ;
       
SetPlayerPos ( playerid , Pos [ 0 ] , Pos [ 1 ] , Pos [ 2 ] ) ;
       
entrarE [ playerid ] = true ;
       
EventoEt++ ;
       
SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Aguarde o administrador comeзar o evento." ) ;
       
TogglePlayerControllable ( playerid , 0 ) ;
    return 
1 ;
}
CMD :starevento ( playerid , params [ ] )
{
    if ( !
IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "Vocк nгo tem permissгo." ) ;
    if ( 
Evento == 0 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Nenhum evento ativo." ) ;
    if ( 
entrarE [ playerid ] == false ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Vocк nгo estб em um evento." ) ;
    if ( 
Ativo [ playerid ] == true ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Evento jб comeзou." ) ;
    
format ( str , sizeof ( str ) , "[EVENTO]: Evento comeзou com %d players." , EventoEt ) ;
    
SendClientMessageToAll ( 0xFF0000AA , str ) ;
    for ( new 
x = 0 , i = MAX_PLAYERS_EVENTO ; x != i ; ++x ) if ( IsPlayerConnected ( x ) && entrarE [ x ] == true)
     {
        
Ativo [ x ] = true ;
        
TogglePlayerControllable ( x , 1 ) ;
    }
    
SendClientMessageToAll ( 0xFF0000AA , "[EVENTO]: Administrador comeзou o evento." ) ;
    for ( new 
r = 0 , i = MAX_PLAYERS ; r != i ; ++r ) Ativo [ r ] = true ;
    return 
1 ;
}
CMD :fecevento ( playerid , params [ ] )
{
    if ( !
IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "Vocк nгo tem permissгo." ) ;
    if ( 
Evento == 0 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Nenhum evento ativo." ) ;
    for ( new 
x = 0 , i = MAX_PLAYERS_EVENTO ; x != i ; ++x ) if ( IsPlayerConnected ( x ) && entrarE [ x ] == true)
     {
        
DestroyVehicle ( EventoV [ x ] ) ;
        
entrarE [ x ] = false ;
        
Ativo [ x ] = false ;
        
Kills [ x ] = 0 ;
        
SpawnPlayer ( x ) ;
    }
     for ( new 
r = 0 , i = MAX_PLAYERS ; r != i ; ++r ) entrarE [ r ] = false , Evento = 0 ;
    
SendClientMessageToAll ( 0xFF0000AA , "[EVENTO]: Administrador fechou o evento." ) ;
    return 
1 ;
}
CMD :sevento ( playerid , params [ ] )
{
    if ( 
Evento == 0 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Nenhum evento ativo." ) ;
    if ( 
entrarE [ playerid ] == false ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Vocк nгo estб em um evento." ) ;
    
SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Vocк saiu do evento." ) ;
    
GetPlayerName ( playerid , Nome , sizeof ( Nome ) ) ;
    
format ( str , sizeof ( str ) , "[EVENTO]: %s saiu do evento." , Nome ) ;
    
SendClientMessageToAll ( 0xFF0000AA , str ) ;
    
SpawnPlayer ( playerid ) ;
    
DestroyVehicle ( EventoV [ playerid ] ) ;
    
EventoEt-- ;
    
entrarE [ playerid ] = false ;
    
Kills [ playerid ] = 0 ;
     return 
1 ;
}
CMD :arevento ( playerid , params [ ] )
{
    new 
armaid, mun;
    if ( !
IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "Vocк nгo tem permissгo." ) ;
    if ( 
Evento == 0 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Nenhum evento ativo." ) ;
    if ( 
entrarE [ playerid ] == false ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Vocк nгo estб em um evento." ) ;
    if ( 
sscanf ( params , "ii" , armaid , mun ) ) return SendClientMessage ( playerid , 0xFF0000AA , "/arevento [armarid] [muniзгo]" ) ;
    if ( 
armaid < 1 || armaid == 19 || armaid == 20 || armaid == 21) return SendClientMessage ( playerid , 0xFF0000AA , "id invalido." ) ;
       for ( new 
x = 0 , i = MAX_PLAYERS_EVENTO ; x != i ; ++x ) if ( IsPlayerConnected ( x ) && entrarE [ x ] == true)
    {
        
//ResetPlayerWeapons ( x ) ;
        
GivePlayerWeapon ( x , armaid , mun ) ;
    }
    
format(str, sizeof(str), "[EVENTO]: Administrador deu para todos no evento: armaid: %d muniзгo: %d" , armaid , mun ) ;
    
SendEventMessage ( 0xFF0000AA , str ) ;
    return 
1 ;
}
CMD :rsevento ( playerid , params [ ] )
{
    if ( !
IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "Vocк nгo tem permissгo." ) ;
    if ( 
Evento == 0 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Nenhum evento ativo." ) ;
    if ( 
entrarE [ playerid ] == false ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Vocк nгo estб em um evento." ) ;
    for ( new 
x = 0 , i = MAX_PLAYERS_EVENTO ; x != i ; ++x ) if ( IsPlayerConnected ( x ) && entrarE [ x ] == true)
     {
        
ResetPlayerWeapons ( x ) ;
    }
    
SendEventMessage ( 0xFF0000AA , "[EVENTO]: Administrador resetou a arma de todos no evento." ) ;
    return 
1 ;
}
CMD :vievento ( playerid , params [ ] )
{
    new 
vidaid;
    if ( !
IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "Vocк nгo tem permissгo." ) ;
    if ( 
Evento == 0 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Nenhum evento ativo." ) ;
    if ( 
entrarE [ playerid ] == false ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Vocк nгo estб em um evento." ) ;
    if ( 
sscanf ( params , "i" , vidaid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "/vievento [quantia]" ) ;
    if ( 
vidaid < 0 || vidaid > 100) return SendClientMessage ( playerid , 0xFF0000AA , "quantia invalida." ) ;
       for ( new 
x = 0 , i = MAX_PLAYERS_EVENTO ; x != i ; ++x ) if ( IsPlayerConnected ( x ) && entrarE [ x ] == true)
    {
        
SetPlayerHealth ( x , vidaid ) ;
    }
    
format(str, sizeof(str), "[EVENTO]: Administrador deu para todos no evento vida: %d" , vidaid ) ;
    
SendEventMessage ( 0xFF0000AA , str ) ;
    return 
1 ;
}
CMD :coevento ( playerid , params [ ] )
{
    new 
coleteid;
    if ( !
IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "Vocк nгo tem permissгo." ) ;
    if ( 
Evento == 0 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Nenhum evento ativo." ) ;
    if ( 
entrarE [ playerid ] == false ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Vocк nгo estб em um evento." ) ;
    if ( 
sscanf ( params , "i" , coleteid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "/coevento [quantia]" ) ;
    if ( 
coleteid < 0 || coleteid > 100) return SendClientMessage ( playerid , 0xFF0000AA , "quantia invalida." ) ;
       for ( new 
x = 0 , i = MAX_PLAYERS_EVENTO ; x != i ; ++x ) if ( IsPlayerConnected ( x ) && entrarE [ x ] == true)
    {
        
SetPlayerArmour ( x , coleteid );
    }
    
format(str, sizeof(str), "[EVENTO]: Administrador deu para todos no evento colete: %d" , coleteid ) ;
    
SendEventMessage ( 0xFF0000AA , str ) ;
    return 
1 ;
}
CMD :veevento ( playerid , params [ ] )
{
    new 
veiculo , cor1 , cor2 ;
    new 
Float:ppos [ 3 ] ;
    if ( !
IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "Vocк nгo tem permissгo." ) ;
    if ( 
Evento == 0 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Nenhum evento ativo." ) ;
    if ( 
entrarE [ playerid ] == false ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Vocк nгo estб em um evento." ) ;
    if ( 
sscanf ( params , "iii" , veiculo , cor1 , cor2 ) ) return SendClientMessage ( playerid , 0xFF0000AA , "[ERRO]: /veevento [vehicleid] [cor1] [cor2]." ) ;
    if ( 
veiculo < 400 || veiculo > 611) return SendClientMessage ( playerid , -1 , "[ERRO]: id invalido.");
       for ( new 
x = 0 , i = MAX_PLAYERS_EVENTO ; x != i ; ++x ) if ( IsPlayerConnected ( x ) && entrarE [ x ] == true)
    {
          
GetPlayerPos ( x , ppos [ 0 ] , ppos [ 1 ] , ppos [ 2 ] ) ;
        
DestroyVehicle ( EventoV [ x ] ) ;
        
EventoV [ x ] = CreateVehicle ( veiculo , ppos [ 0 ] , ppos [ 1 ] , ppos [ 2 ] , 360, cor1 , cor2 , -1 ) ;
        
PutPlayerInVehicle ( x , EventoV [ x ] , 0 ) ;
    }
    
SendEventMessage ( 0xFF0000AA , "[EVENTO]: Administrador deu para todos no evento veiculo." ) ;
    return 
1 ;
}
CMD :delevento ( playerid , params [ ] )
{
    if ( !
IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid , 0xFF0000AA , "Vocк nгo tem permissгo." ) ;
    if ( 
Evento == 0 ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Nenhum evento ativo." ) ;
    if ( 
entrarE [ playerid ] == false ) return SendClientMessage ( playerid , 0xFF0000AA , "[EVENTO]: Vocк nгo estб em um evento." ) ;
    for ( new 
x = 0 , i = MAX_PLAYERS_EVENTO ; x != i ; ++x ) if ( IsPlayerConnected ( x ) && entrarE [ x ] == true)
     {
        
DestroyVehicle ( EventoV [ x ] ) ;
    }
    
SendEventMessage ( 0xFF0000AA , "[EVENTO]: Administrador deletou todos os veiculos do evento." ) ;
    return 
1 ;
}
public 
OnPlayerSpawn ( playerid ) if ( entrarE [ playerid ] == true ) SetPlayerPos ( playerid , Pos [ 0 ] , Pos [ 1 ] , Pos [ 2 ] ) ;
public 
OnPlayerDeath ( playerid , killerid )
{
    if ( 
killerid == INVALID_PLAYER_ID ) if ( entrarE [ playerid ] == true )
    {
         
GetPlayerName ( playerid , Nome , sizeof ( Nome ) ) ;
        
format(str, sizeof(str), "[EVENTO]: '%s' se matou no evento." , Nome ) ;
        
SendEventMessage ( 0xFF0000AA , str ) ;
    }
    else {
        if ( 
entrarE [ killerid ] == true && entrarE [ playerid ] == true )
        {
            new 
nOme [ MAX_PLAYER_NAME ] ;
            
GetPlayerName ( killerid , Nome , sizeof ( Nome ) ) ;
            
GetPlayerName ( playerid , nOme , sizeof ( nOme ) ) ;
               
format(str, sizeof(str), "[EVENTO]: '%s' matou '%s' no evento." , Nome , nOme ) ;
            
SendEventMessage ( 0xFF0000AA , str ) ;
            
Kills [ killerid ] ++ ;
        }
     }
    if ( 
Kills [ killerid ] == 20 && entrarE [ killerid ] == true )
    {
         for ( new 
x = 0 , i = MAX_PLAYERS_EVENTO ; x != i ; ++x ) if ( IsPlayerConnected ( x ) && entrarE [ x ] == true)
        {
            
format(str, sizeof(str), "[EVENTO]: '%s' ganhou o evento com 20 kills." , Nome ) ;
            
SendClientMessageToAll ( 0xFF0000AA , str ) ;
             
Ativo [ x ] = false ;
            
Evento = 0 ;
            
entrarE [ x ] = false ;
        }
    }
    return 
1 ;
}
stock SendEventMessage ( color , string [ ] )
{
    for ( new 
x = 0 , i = MAX_PLAYERS_EVENTO ; x != i ; ++x ) if ( IsPlayerConnected ( x ) && entrarE [ x ] == true)
        return 
SendClientMessage ( x , color , string ) ;
    return 
1;
} 
includes
zcmd
sscanf

Comandos
Code:
Comandos para administradores:
/aevento [nome] - Criaзгo do evento.
/starevento - Comeзar o evento.
/fecevento - Fechar evento.
/arevento [weaponid] [ammo] - Dar armas para todos no evento.
/rsevento - Resetar armas do evento.
/vievento [health] - Health para todos no evento.
/coevento [armor] - Armor para todos no evento. 
/veevento [vehicleid] [cor1] [cor2] - Veiculo para todos no evento.
/delevento - Deletar veiculos de todos no evento.
Comandos para players:
/irevento - Entrar no evento.
/sevento - Sair do evento.


Obs: Novas atualizaзхes virгo por ai .

Updates
[23-04-2012] - Algumas optimizaзхes, novos comandos administrativos ( /veevento, /delevento ).
[25-04-2012] - Alguns bugs foram corrigidos, acrecentado algumas optimizaзхes.
[28-04-2012] - Macros foram retirados, alguns checks desnecessarios foram retirados.
[/FONT]
Reply
#2

Imagens? '-'
Reply
#3

Quote:
Originally Posted by [LF]PlaYer
View Post
Imagens? '-'
Mas breve possivel colocarei imagens to sem tempo. (Trampando aqui).
Reply
#4

Quote:
Originally Posted by RoacH`
View Post
Mas breve possivel colocarei imagens to sem tempo. (Trampando aqui).
Ah Ok .

Pelo codigo parece estar bom , bom trabalho
Reply
#5

Parece Bom
Reply
#6

Legal !
Reply
#7

Ficou bom, Uma sugestгo que muitas pessoas pedem, Sistema de veiculo para evento, ex: /criarveiculoe ( Cria o veiculo para o evento ) e depois para deletar os veiculos do evento /deletarveiculoe , um comando util para nгo ficar deletando os veiculos 1 por 1 .
Reply
#8

Quote:
Originally Posted by [LF]PlaYer
View Post
Ah Ok .

Pelo codigo parece estar bom , bom trabalho
Quote:
Originally Posted by Deanx
View Post
Parece Bom
Quote:
Originally Posted by leosivi
View Post
Legal !
Obrigado .

Quote:
Originally Posted by [NVC]iTrevaS
View Post
Ficou bom, Uma sugestгo que muitas pessoas pedem, Sistema de veiculo para evento, ex: /criarveiculoe ( Cria o veiculo para o evento ) e depois para deletar os veiculos do evento /deletarveiculoe , um comando util para nгo ficar deletando os veiculos 1 por 1 .
Colocado ^^
Reply
#9

Quote:
Originally Posted by [NVC]iTrevaS
View Post
Ficou bom, Uma sugestгo que muitas pessoas pedem, Sistema de veiculo para evento, ex: /criarveiculoe ( Cria o veiculo para o evento ) e depois para deletar os veiculos do evento /deletarveiculoe , um comando util para nгo ficar deletando os veiculos 1 por 1 .
Boa ideia. Tipo vou dar um ideia melhor em cima dessa, tipo cria-se o carro antes de comeзa o evento e na hora que o player digita-se /IrEvento jб ia direto para o veнculo.
-
FilterScript 10/10
Gostei muito.
Reply
#10

Legal Gostei
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)