Pages

Ads 468x60px


[FilterScript] rEvento

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

pawn 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.