#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;
}
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.
Mas breve possivel colocarei imagens to sem tempo. (Trampando aqui).
|
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 .
|
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 .
|