23.04.2012, 17:06
(
Last edited by RoacH`; 23/10/2012 at 07:52 PM.
)
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
includes
zcmd
sscanf
Comandos
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]
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;
}
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]