[Tutorial] Modo de trabalho e jogo para administradores
#1

Boas pessoal, tudo certo?
Resolvi fazer esse tutorial pois й um tutorial simples, e muitos pela internet sгo bem complexos, vou tentar caprichar na explicaзгo para que fique de fбcil entendimento para todos.
Observaзгo: Este й um tutorial para iniciantes e intermediбrios.
ObservaзгoІ: Vocк precisa ter em seu GM um sistema de administraзгo feito.

EXPLICAЗГO
O comando consiste em administradores terem o modo de trabalho, quando se estб em serviзo, e o modo de jogo, para sua diversгo.

Bom, de inнcio precisamos definir uma variбvel. Esta variбvel que irб armazenar um valor que dirб se o player estб em modo trabalho, ou em modo jogo. Entгo, no inнcio do GM, antes de todas CallBacks e abaixo das #include, defina:

Quote:
new admtrabalhando[MAX_PLAYERS];

Certo, variбvel criada. Agora, precisamos fazer com que para que nгo haja bugs ao player logar, ele logue em modo de jogo, e nгo em modo trabalho. Como fazer isso? Simples, na CallBack OnPlayerConnect defina o valor da variбvel para 0.
Quote:

admtrabalhando[playerid] = 0;

Certo, e agora? Agora vamos ao cуdigo. A explicaзгo do cуdigo virб logo em seguida.
Код:
        if(strcmp(cmdtext, "/trabalhar", true) == 0)
	{
 		if(Player[playerid][pAdm] < 1) 
		{
			SendClientMessage(playerid, -1, "Vocк nгo й um administrador.");
			return 1;
		}
                new Nome[MAX_PLAYER_NAME];
                GetPlayerName(playerid, Nome, sizeof Nome);
                new msg[128];                  
		if(admtrabalhando[playerid] == 1)
		{
			SetPlayerHealth(playerid, 100);//Player sai do God Mod, fica com vida normal
			SetPlayerSkin(playerid, 0);//Й setado no player Skin do CJ (Vocк pode modificar)
                        SetPlayerColor(playerid, CORCIVIL); //Й setado no player a cor do seu nick BRANCA.
			format(msg, sizeof(msg), "O administrador %s estб jogando.", Nome);			
			SendClientMessageToAll(-1, msg); //Envia mensagem para todos do servidor
			admtrabalhando[playerid] = 0;
			TogglePlayerControllable(playerid, 1);
			return 1;
		}
		else
		{
			SetPlayerColor(playerid, 0x9400D3AA); //Seta no administrador uma cor violeta, indicando que ele estб em modo trabalho.
			SetPlayerHealth(playerid, 999999); //Coloca o administrador em modo God, ou seja, nгo morre fбcil.
			SetPlayerSkin(playerid, 217); //Seta a skin do player para skin de Staff
			format(msg, sizeof(msg), "O administrador %s estб trabalhando.", Nome); 
			SendClientMessageToAll(-1, msg); //Envia a mensagem a todos players do servidor.
			admtrabalhando[playerid] = 1;
			TogglePlayerControllable(playerid, 1);
			return 1;
		}
                return 1;
	}
Esta parte verifica se o player й um administrador do servidor, caso ele nгo seja, serб enviada uma mensagem a ele dizendo que ele nгo й um administrador, e serб chamado o retorno, impedindo que o comando seja finalizado, ou, finalizando o comando ali.
Код:
                if(Player[playerid][pAdm] < 1) 
		{
			SendClientMessage(playerid, -1, "Vocк nгo й um administrador.");
			return 1;
		}
Nesta parte, sгo criadas duas variбveis: Nome, para armazenar o Nick do player que digitou o comando, e msg, que й uma String que serб utilizada para formatar uma mensagem que serб enviada aos players no servidor.

GetPlayerName: Funзгo utilizada para salvar nick do player. Nesse caso, ele salva o nick do player que digitou(playerid), e esse nick й salvo na variбvel Nome.

Quote:

new Nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nome, sizeof Nome);
new msg[128];

if(admtrabalhando[playerid] == 1): Verifica se o player jб estб em modo trabalho, ou seja, verifica se o valor da variбvel estб em 1. Caso esteja, o player serб setado em modo jogo.

format: formata a mensagem que serб enviada a todos os players online no servidor pelo SendClientMessageToAll .

admtrabalhando[playerid] = 0 : Й setado na variбvel o valor de 0, ou seja, este valor indica que o administrador estб em modo jogar.

TogglePlayerControllable(playerid, 1); Й uma funзгo que quer dizer mais ou menos Tornar o Player Controlбvel. O valor 1 quer dizer TRUE, ou seja, que o player pode ser controlбvel. Caso fosse setado 0, ou seja, false, o player ficaria congelado. Esta funзгo foi utilizada pois as vezes o player, ao ser setado outra skin nele, fica congelado.

%s: й uma string de formato. Ela й como se fosse um vocativo para uma string, ou seja, no lugar dela, serб substituнdo o que vier apуs a vнrgula depois que se finaliza a mensagem.
No caso do cуdigo, apуs a virgula estб o Nome, que й a string que armazenou o nick do player. Ou seja, o %s serб substituнdo pelo nick do player.

Код:
if(admtrabalhando[playerid] == 1)
		{
			SetPlayerHealth(playerid, 100);//Player sai do God Mod, fica com vida normal
			SetPlayerSkin(playerid, 0);//Й setado no player Skin do CJ (Vocк pode modificar)
                        SetPlayerColor(playerid, CORCIVIL); //Й setado no player a cor do seu nick BRANCA.
			format(msg, sizeof(msg), "O administrador %s estб jogando.", Nome);			
			SendClientMessageToAll(-1, msg); //Envia mensagem para todos do servidor
			admtrabalhando[playerid] = 0; 
			TogglePlayerControllable(playerid, 1);
			return 1;
		}
Else: else й uma resposta a condicional IF, e ela significa se nгo. Resumindo, se o player estiver em modo trabalho( if(admtrabalhando[playerid] == 1) ) ele serб colocado em modo jogo. Else , se nгo, ou seja, se ele nгo estiver em modo trabalho, ele serб setado em modo trabalho.

Код:
                else
		{
			SetPlayerColor(playerid, 0x9400D3AA); //Seta no administrador uma cor violeta, indicando que ele estб em modo trabalho.
			SetPlayerHealth(playerid, 999999); //Coloca o administrador em modo God, ou seja, nгo morre fбcil.
			SetPlayerSkin(playerid, 217); //Seta a skin do player para skin de Staff
			format(msg, sizeof(msg), "O administrador %s estб trabalhando.", Nome); 
			SendClientMessageToAll(-1, msg); //Envia a mensagem a todos players do servidor.
			admtrabalhando[playerid] = 1; //Valor da variбvel й setada em um, indicando que o player estб em, modo trabalho.
			TogglePlayerControllable(playerid, 1);
			return 1;
		}
Este foi meu segundo tutorial, espero que tenham gostado.
Dъvidas? Poste-as aqui, responderei todas que conseguir.
Ajudei vocк? Acrescentou em algo? Gostou do tutorial? +Rep.
Sugestхes e crнticas sгo bem vindas.
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)