28.05.2013, 17:34
(
Последний раз редактировалось BielCOP; 11.07.2013 в 12:58.
)
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:pawn Код:
#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
pawn Код:
public OnPlayerDisconnect(playerid,reason)
{
EmTunning[playerid] = 0;
return 1;
}
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.
pawn Код:
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;
}
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:
pawn Код:
if(IsPlayerInAnyVehicle(playerid)) // Caso ele esteja em um veнculo
pawn Код:
if(!IsPlayerInAnyVehicle(playerid)) Ban(playerid); // Caso ele nao esteja em um veнculo, ele serб banido
Um exemplo disso й:
pawn Код:
if(IsPlayerConnected(playerid)) // Caso esteja conectado
pawn Код:
if(!IsPlayerConnected(playerid)) // Caso nao esteja conectado
pawn Код:
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;
}
Um cуdigo desta maneira:
pawn Код:
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;
}
Para saber mais sobre os returns, clique aqui.
pawn Код:
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;
}
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:
pawn Код:
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;
}
O enterexit define a tal funзao.
Para vocкs entenderem melhor, peguem de exemplo este cуdigo, com uma nova variбvel.
pawn Код:
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;
}
Vocк tambйm pode criar dois comandos, desbloqueando ou bloqueando o mesmo.
Exemplo:
pawn Код:
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;
}
pawn Код:
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:pawn Код:
#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;
}
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