SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 28/05/2013, 05:34 PM   #1
BielCOP
Banned
 
Join Date: Nov 2012
Location: Estado de SP
Posts: 1,123
Reputation: -8
Default Tunning GTA e Mais algumas Funçoes

Tunning GTA e Mais algumas Funçoes

Olá pessoal da Fórum SA-MP.

Venho vendo alguns tópicos antigos daqui da board PT/BR e da própria board gringa, em que consiste no Tunning Bugado.

Você nao sabe o que é o tunning bugado ? É isso:



Certamente isto já aconteceu com você.

Com este tutorial, você saberá acabar com este problema chato!

Objetivos

. Saber um pouco mais sobre as variáveis.
. Desbugar o Tunning do GTA.
. Aprender a usar novas publics.

Início

Adicione este código no topo do gamemode:

Code:
#include <a_samp>

new EmTunning[MAX_PLAYERS]; // Topo do Gamemode, após as Includes ou Defines.

Explicaçao

Criamos esta new para podermos proceder com nosso script.

Sem ela, nao teríamos o resultado final.

Para mais explicaçoes sobre o que criamos, clique aqui.

Utilizaçao das Publics

Usaremos três publics:

Quando o jogador se desconectar

Quando pressionar alguma tecla

Quando entrar ou sair do tunning

Códigos + Explicaçao

Code:
public OnPlayerDisconnect(playerid,reason)
{
	EmTunning[playerid] = 0;
	return 1;
}

No código acima, chamamos a public cuja responsável pelo disconnect do jogador.

Com isso, para evitar bug´s possíveis, setaremos o EmTunning à 0, ou seja, falso, ou seja, ele nao está no Tunning.

Lembrando que deveremos retornar à true, para que as alteraçoes façam efeito.

Uma boa dica e lembrança, é que 1 é verdadeiro e 0 é falso, nas linguagens de programaçao.

Code:
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
	if(newkeys == KEY_SECONDARY_ATTACK)
	{
	    if(IsPlayerInAnyVehicle(playerid))
	    {
			if(EmTunning[playerid] == 1)
			{
			    PutPlayerInVehicle(playerid,GetPlayerVehicleID(playerid),PLAYER_STATE_DRIVER);
		    	return 1;
			}
		}
	}
	return 1;
}

Com a public acima, efetuaremos açoes quando o jogador pressionar uma tecla, no caso, a tecla KEY_SECONDARY_ATTACK, mais conhecida como Enter ou F.

Para saber mais sobre as teclas, clique aqui.

Voltando ao assunto, a public nos permite efetuar tais açoes, como citadas acima.

Você também pode criar exeçoes, como:

Code:
if(IsPlayerInAnyVehicle(playerid)) // Caso ele esteja em um veículo

Ou definir algo mais complexo e também mais arriscado, como:

Code:
if(!IsPlayerInAnyVehicle(playerid)) Ban(playerid); // Caso ele nao esteja em um veículo, ele será banido

Lembrando que o ! antes da funçao, significa negaçao, ou seja: Nao (funçao).

Um exemplo disso é:

Code:
if(IsPlayerConnected(playerid)) // Caso esteja conectado

e

Code:
if(!IsPlayerConnected(playerid)) // Caso nao esteja conectado

Com o código acima, faremos a seguinte operaçao:

Code:
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
	if(newkeys == KEY_SECONDARY_ATTACK) // Caso a tecla pressionada for Enter ou F.
	{
	    if(IsPlayerInAnyVehicle(playerid)) // Caso ele esteja em um veículo
	    {
	        if(EmTunning[playerid] == 1) // Caso ele esteja no tunning
	        {
 				PutPlayerInVehicle(playerid,GetPlayerVehicleID(playerid),GetPlayerState(playerid)); // Colocará novamente o jogador no veículo, impedindo que o mesmo saia.
		    	return 1;
			}
		}
	}
	return 1;
}

Vale lembrar que é sempre bom tomar cuidado com a identaçao e com as retornaçoes em excesso.

Um código desta maneira:

Code:
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
	if(newkeys == KEY_SECONDARY_ATTACK) // Caso a tecla pressionada for Enter ou F.
	{
if(IsPlayerInAnyVehicle(playerid)) // Caso ele esteja em um veículo
	    {
	if(EmTunning[playerid] == 1) // Caso ele esteja no tunning
	        {
 			PutPlayerInVehicle(playerid,GetPlayerVehicleID(playerid),PLAYER_STATE_DRIVER); // Colocará novamente o jogador no veículo
		    	return 1;
			}
			return 1;
		}
		return 1;
	}
	return 1;
}

Nao é nescessário, além de ser mal organizado, dará warnings no compilador.

Para saber mais sobre os returns, clique aqui.

Code:
public OnEnterExitModShop(playerid,enterexit,interiorid)
{
	if(enterexit == 0)
	{
	    GameTextForPlayer(playerid,"~r~Seja bem vindo ao Tunning!",5000,3);
	    EmTunning[playerid] = 1;
	}
	else
	{
	    GameTextForPlayer(playerid,"~r~Volte sempre ao Tunning!",5000,3);
	    EmTunning[playerid] = 0;
	}
	return 1;
}

Com este código final, usaremos um GameText com o estilo 3, que no caso é:



Para saber mais sobre os GameText´s, clique aqui para ver os estilos de gametext e clique aqui para saber usar a os mesmos.

Explicando o código, teremos o mesmo assim:

Code:
public OnEnterExitModShop(playerid,enterexit,interiorid)
{
	if(enterexit == 0) // Caso ele já esteja fora do tunning
	{
	    GameTextForPlayer(playerid,"~r~Seja bem vindo ao Tunning!",5000,3); // Manda o gametext
	    EmTunning[playerid] = 1; // Seta que o jogador está no tunning
	}
	else // Outro, geralmente usado para getar outro valor destinado à um citado
	{
	    GameTextForPlayer(playerid,"~r~Volte sempre ao Tunning!",5000,3); // Manda o gametext
	    EmTunning[playerid] = 0; // Seta que o jogador nao está no tunning
	}
	return 1;
}

Também, como o esperado, setaremos que o jogador está ou nao está no tunning.

O enterexit define a tal funçao.

Para vocês entenderem melhor, peguem de exemplo este código, com uma nova variável.

Code:
new TunningBloqueado = 0; // Cria e seta que o tunning nao está bloqueado

public OnEnterExitModShop(playerid,enterexit,interiorid)
{
	if(enterexit == 0) // Caso ele esteja entrando no tunning
	{
		if(TunningBloqueado == 1) // Caso esteja bloqueado
		{
	    	SendClientMessage(playerid,0xBFBFBFAA,"O tunning está bloqueado!"); // Manda a tal mensagem
	    	Kick(playerid); // Dá um kick no jogador
	    	return 1;
		}
	}
	return 1;
}

Este acima é para casos mais específicos, onde o dono do servidor quer bloquear o tunning.

Você também pode criar dois comandos, desbloqueando ou bloqueando o mesmo.

Exemplo:

Code:
if(strcmp(cmdtext,"/bloqueartunning",true) == 0)
{
	if(IsPlayerAdmin(playerid)) // Verifica se é admin logado na RCON
	{
		if(TunningBloqueado == 0) // Se o tunning estiver desbloqueado
		{
	    	SendClientMessageToAll(0xBFBFBFAA,"Tunning bloqueado!"); // Manda a mensagem a todos
	    	TunningBloqueado = 1; // Bloqueia o tunning
	    	return 1;
		}
	}
	return 1;
}
if(strcmp(cmdtext,"/desbloqueartunning",true) == 0)
{
	if(IsPlayerAdmin(playerid)) // Verifica se é admin logado na RCON
	{
		if(TunningBloqueado == 1) // Se o tunning estiver bloqueado
		{
	    	SendClientMessageToAll(0xBFBFBFAA,"Tunning desbloqueado!"); // Manda a mensagem a todos
	    	TunningBloqueado = 0; // Desbloqueia o tunning
	    	return 1;
		}
	}
	return 1;
}

Caso você use ZCMD, adicione no final do gamemode:

Code:
CMD:bloqueartunning(playerid)
{
	if(IsPlayerAdmin(playerid)) // Verifica se é admin logado na RCON
	{
		if(TunningBloqueado == 0) // Se o tunning estiver desbloqueado
		{
	    	SendClientMessageToAll(0xBFBFBFAA,"Tunning bloqueado!"); // Manda a mensagem a todos
	    	TunningBloqueado = 1; // Bloqueia o tunning
	    	return 1;
		}
	}
	return 1;
}
CMD:desbloqueartunning(playerid)
{
	if(IsPlayerAdmin(playerid)) // Verifica se é admin logado na RCON
	{
		if(TunningBloqueado == 1) // Se o tunning estiver bloqueado
		{
	    	SendClientMessageToAll(0xBFBFBFAA,"Tunning desbloqueado!"); // Manda a mensagem a todos
	    	TunningBloqueado = 0; // Desbloqueia o tunning
	    	return 1;
		}
	}
	return 1;
}

Finalizando

Para finalizar, aqui está o código completo:

Code:
#include <a_Samp>

new EmTunning[MAX_PLAYERS];

public OnPlayerDisconnect(playerid,reason)
{
	EmTunning[playerid] = 0;
	return 1;
}
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
	if(newkeys == KEY_SECONDARY_ATTACK)
	{
	    if(IsPlayerInAnyVehicle(playerid))
	    {
			if(EmTunning[playerid] == 1)
			{
			    PutPlayerInVehicle(playerid,GetPlayerVehicleID(playerid),GetPlayerState(playerid));
		    	return 1;
			}
		}
	}
	return 1;
}
public OnEnterExitModShop(playerid,enterexit,interiorid)
{
	if(enterexit == 0)
	{
	    GameTextForPlayer(playerid,"~r~Seja bem vindo ao Tunning!",5000,3);
	    EmTunning[playerid] = 1;
	}
	else
	{
	    GameTextForPlayer(playerid,"~r~Volte sempre ao Tunning!",5000,3);
	    EmTunning[playerid] = 0;
	}
	return 1;
}

Agradeço a todos que leram este tutorial.

Se você realmente aprendeu algo com isso, repute caso queira.

Se nao quiser, fique à vontade para dar o - reputaçao.

O importante é que você avalie o mesmo

BY BIEL_COP

Last edited by BielCOP; 11/07/2013 at 12:58 PM.
BielCOP is offline   Reply With Quote
Old 28/05/2013, 06:13 PM   #2
AlucardSnow
Banned
 
Join Date: Jan 2013
Posts: 759
Reputation: 21
Default Re: Tunning GTA e Mais algumas Funçoes

Ual, quanto tempo demorou para digitar isso tudo?

Parabéns, parece ser um conteudo bom.
E se o player mudar as configurações dos botões e botar G para sair?
Ele vai sair kkkkkkkkkkkkkkkkkkkkkkk.
AlucardSnow is offline   Reply With Quote
Old 28/05/2013, 06:16 PM   #3
BielCOP
Banned
 
Join Date: Nov 2012
Location: Estado de SP
Posts: 1,123
Reputation: -8
Default Re: Tunning GTA e Mais algumas Funçoes

O próprio KEY_SECONDARY_ATTACK vai ser G

Ah, demorei 1 hora e meia.
BielCOP is offline   Reply With Quote
Old 28/05/2013, 06:25 PM   #4
Breno Da Silva Pereira
Huge Clucker
 
Breno Da Silva Pereira's Avatar
 
Join Date: Aug 2012
Posts: 282
Reputation: 5
Default Re: Tunning GTA e Mais algumas Funçoes

Valeu mesmo cara tava foda isso aqui tabem me ajudou muito
Breno Da Silva Pereira is offline   Reply With Quote
Old 28/05/2013, 06:34 PM   #5
BielCOP
Banned
 
Join Date: Nov 2012
Location: Estado de SP
Posts: 1,123
Reputation: -8
Default Re: Tunning GTA e Mais algumas Funçoes

Quote:
Originally Posted by Breno Da Silva Pereira View Post
Valeu mesmo cara tava foda isso aqui tabem me ajudou muito
Disponha
BielCOP is offline   Reply With Quote
Old 28/05/2013, 07:13 PM   #6
Mteck
High-roller
 
Mteck's Avatar
 
Join Date: Oct 2011
Location: Aparecida de Goiânia
Posts: 1,530
Reputation: 48
Default Re: Tunning GTA e Mais algumas Funçoes

Ai os BMG pira, Parabéns.
@Duvida, o Bloquear era necessário ?
__________________
Mteck is offline   Reply With Quote
Old 28/05/2013, 07:31 PM   #7
BielCOP
Banned
 
Join Date: Nov 2012
Location: Estado de SP
Posts: 1,123
Reputation: -8
Default Re: Tunning GTA e Mais algumas Funçoes

Nao, era só para ensinar mais um pouco sobre variáveis
BielCOP is offline   Reply With Quote
Old 28/05/2013, 08:43 PM   #8
Schocc
High-roller
 
Join Date: Mar 2012
Location: /home
Posts: 3,253
Reputation: 378
Default Re: Tunning GTA e Mais algumas Funçoes

Isso vai dar idéias para os novatos.
Schocc is offline   Reply With Quote
Old 11/07/2013, 12:58 PM   #9
BielCOP
Banned
 
Join Date: Nov 2012
Location: Estado de SP
Posts: 1,123
Reputation: -8
Default Re: Tunning GTA e Mais algumas Funçoes

Tutorial atualizado!
BielCOP is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] duvida em algumas funçoes :/ matanza87 Português/Portuguese 2 19/10/2012 08:28 PM
[Ajuda]Algumas funçoes leandroak Português/Portuguese 4 11/12/2011 06:15 PM
[DUVIDA] Como fazer um emprego e mais algumas caioenoiss Português/Portuguese 16 19/08/2011 10:35 PM
[Tutorial] Aprendendo Sobre Algumas Funções Recentes JonathanFeitosa Lançamentos/Releases 16 06/08/2011 03:12 AM
[TUT] Algumas Funções de String (Super Útil) ipsBruno Português/Portuguese 20 14/08/2010 01:28 AM


All times are GMT. The time now is 09:28 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.