Introduзгo Olб tudo
bom?
Eu não sou muito experiente então não venha com chingamentos e ofensas pois não vou nem ligar..
Vamos usar neste sistema as seguintes includes que podem ser encotradas no tio ******:
DOF2 - ZCMD - SSCANF
C omeзando
Primeiro vamos criar uma variável para hospedar o nível de administrador e a variável que irá hospedar se o administrador estiver trabalhando ou não. (caso nгo saiba oque й uma variбvel vocк precisa saber o basico antes deste tutorial, entгo procure o tutorial do garfild.)
peão Код:bom?
Eu não sou muito experiente então não venha com chingamentos e ofensas pois não vou nem ligar..
Vamos usar neste sistema as seguintes includes que podem ser encotradas no tio ******:
DOF2 - ZCMD - SSCANF
C omeзando
Primeiro vamos criar uma variável para hospedar o nível de administrador e a variável que irá hospedar se o administrador estiver trabalhando ou não. (caso nгo saiba oque й uma variбvel vocк precisa saber o basico antes deste tutorial, entгo procure o tutorial do garfild.)
- Código:
novo Administrador [ MAX_PLAYERS ] ;
/*
Explicação:
new = Cria a variável.
Administrador = Nome da variável.
MAX_PLAYERS = Número máximo de players do servidor.
*/
new Trabalhando [ MAX_PLAYERS ] ;
// A Explicação da primeira variável se encaixa nessa também..
Agora vamos entender algumas funções do DOF2:
peão Код:- Código:
DOF2_GetString // Pega um valor de uma string (como o valor %s).
DOF2_SetString // Define um valor de uma string.
DOF2_GetInt // Obtém um valor numérico.
DOF2_SetInt // Define um valor numérico.
DOF2_CreateFile // Cria um arquivo.
DOF2_FileExists // Checa se um arquivo existe.
DOF2_SaveFile // Salva um arquivo.
Agora vamos usar um callback(public) OnPlayerConnect para criar/carregar os dados da pasta [b]Admins/NOME DO PLAYER.ini
[/b]
peão Код:[/b]
- Código:
public OnPlayerConnect ( playerid ) {
Trabalhando [ playerid ] = 0 ; // Caso o player seja administrador entrar em modo jogo..
new file [ 70 ] ; // Variavel que irá hospedar os dados do player.
novo snd [ MAX_PLAYER_NAME ] ; // Variavel que irá hospedar o nome do player.
GetPlayerName ( playerid, snd, sizeof snd ) ; // Funзгo que geta o nome do player e hospeda na variavel snd.
formatar( arquivo, tamanho do arquivo, "Admins/%s.ini" ,snd ) ; // Irá hospedar os dados do arquivo Admins/nomedoplayer.ini na variavel file.
if ( DOF2_FileExists ( file ) ) { // Se o arquivo existir..
Administrador [ playerid ] = DOF2_GetInt ( file, "Admin" ) ;
/*
Aqui vai hospedar o valor da linha 'Admin' do arquivo hospedado na variável 'file' na variável Administrador que criou no comeзo..
*/
- Código:
}
else if ( !DOF2_FileExists ( file ) ) { // Se o arquivo não existir..
DOF2_CreateFile ( file ) ; // Cria o arquivo hospedado na variavel file.
DOF2_SetInt ( arquivo, "Administrador" , 0 ) ; // Seta a linha 'Admin' para o valor '0' que seria sem admin.
DOF2_SalvarArquivo ( ) ; // Irá salvar o arquivo acima.
Administrador [ playerid ] = DOF2_GetInt ( arquivo, "Admin" ) ;
/*
Acima criamos e carregamos o arquivo ao mesmo tempo..
*/
- Código:
}
return true;
}
Agora vamos para a última parte que são os comandos!
É bem simples, basta usar a seguinte função nos comandos:
peão Код:É bem simples, basta usar a seguinte função nos comandos:
- Código:
if ( Administrador [ playerid ] == 0 ) return SendClientMessage ( playerid,0xC0C0C0AA, "Você não é um administrador!" ) ;
// Isso checa se o jogador que executou o comando é administrador ou nгo..
Agora basta criar sua criatividade
Olhe 3 comandos (/admins - /trabalhar - /kick) sem explicações(й sу uma base para você)..
peão Код:Olhe 3 comandos (/admins - /trabalhar - /kick) sem explicações(й sу uma base para você)..
- Código:
[left]CMD : admins ( playerid,params [ ] ) {
#pragma parâmetros não utilizados
nova string [ 128 ] ;
for ( new x = 0 ; x < MAX_PLAYERS; x ++ ) {
if ( Administrador [ i ] >= 1 ) {
format ( string, sizeof string, "• Admin: %s Nivel: [Normal] Modo: [%s ]" , Trabalhando [ i ] ? ( "Trabalhando" ) : ( "Jogando" ) ) ;
SendClientMessage ( playerid, -1 , string ) ; } if ( IsPlayerAdmin ( i ) ) { format ( string, sizeof string, "• Admin: %s Nivel: [RCON] Modo: [%s]" ,Trabalhando [ i ] ? ( "Trabalhando" ) : ( "Jogando" ) ) ; SendClientMessage
( playerid, -1 , string ) ;
}
}
retorna 1 ;
}
CMD : trabalhar ( playerid,params [ ] ) {
#pragma não utilizado params
new string [ 128 ] , snd [ MAX_PLAYER_NAME ] ;
GetPlayerName ( playerid, snd, sizeof snd ) ;
if ( Administrador [ playerid ] == 0 || !IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid,0xC0C0C0AA, "Você não é um administrador!" ) ;
if ( Trabalhando [ playerid ] == 0 ) {
SetPlayerHealth ( playerid, cellmax ) ;
Trabalhando [ playerid ] = 1 ;
}
else if ( Trabalhando [ playerid ] == 1 ) {
SetPlayerHealth ( playerid, 100 ) ;
Trabalhando [ playerid ] = 0 ;
}
format ( string, sizeof string, ">> O Administrador %s acaba de %s." ,snd,Trabalhando [ playerid ] ? ( "entrar no modo de trabalho" ) : ( "saiu do modo de trabalho" ) ) ;
SendClientMessageToAll ( -1 , string ) ;
retornar 1 ;
}
CMD : kick ( playerid,params [ ] ) {
novo id,motivo [ 128 ] , string [ 128 ] , snd [ MAX_PLAYER_NAME ] ;
if ( Administrador [ playerid ] == 0 || ! IsPlayerAdmin ( playerid ) ) return SendClientMessage ( playerid,0xC0C0C0AA, "Você não é um administrador!" ) ;
se ( trabalhando[ playerid ] == 0 ) return SendClientMessage ( playerid, 0xC0C0C0AA, "Usar: /trabalhar" ) ;
if ( sscanf ( params, "us" ,id,motivo ) ) return SendClientMessage ( playerid, 0xC0C0C0AA, "Use: /kick [playerid] [motivo]" ) ;
GetPlayerName ( id,snd, sizeof snd ) ;
format ( string, sizeof string, ">> O jogador %s foi chutado por %s.",snd,motivo ) ;
SendClientMessageToAll ( -1 , string ) ;
Chute ( id ) ;
retornar 1 ;
}[/left]
Espero que gostem! Abraços HumildadeAgain.