Destaque - SVR 10 - Montagens
Chat do Game Dicas


Novidades

Aviso quando o player entrar no servidor

Por # Victor Martins em 1 Comentário
Eae galera da rockfeller blz? vim trazer um código que avisa 
quando o player entra no servidor
 
public OnPlayerConnect(playerid)
{
  new entrouname[MAX_PLAYER_NAME], stringentrouname[128];
  GetPlayerName(playerid, entrouname, sizeof(entrouname));
  format(stringentrouname, sizeof(stringentrouname), "%s Entrou no servidor!",entrouname);
  SendClientMessageToAll(0xFFFF00AA, stringentrouname);
 
  return 1;
}

public OnPlayerDisconnect(playerid)
{
  new saiuname[MAX_PLAYER_NAME], stringsaiuname[128];
  GetPlayerName(playerid, saiuname, sizeof(saiuname));
  format(stringsaiuname, sizeof(stringsaiuname), "%s Saiu do servidor!",saiuname);
  SendClientMessageToAll(0xFF0000AA, stringsaiuname);
 
  return 1;
}

[TUTO] Tempo em Race

Por # Victor Martins em 0 Comentários
Bom Normalmente Muita Gente quer saber como se cria tempos para races, bom não é algo dificil, muita gente acha que é com SetTimer mas na verdade...
Topo GM:
new Corrida[MAX_PLAYERS];
EXPLICAÇÃO:
new Corrida -> Esta Array irá definir que 'Corrida', é uma array especial chamada 'Array unidimensionai' que vão de 0 a 999 exemplonew string[999];
MAX_PLAYERS -> é uma constante na qual define o máximo de players p/ servidor, melhor que ficar colocando nómero de slots não? limite de 500

Então Vamos a Iniciar a Cronometrarem, Normalmente após descongelar/terminar tempo
Corrida[playerid] = GetTickCount();
EXPLICAÇÃO:
Corrida -> é a array definida anteriormenteplayerid ->seria quem sofre a ação no caso o 'playerid' (próprio player)

Vamos Então parar a Contagem para Publicar os tempos(Normalmente ao Chegar no Ultimo Check):

new Min,Sec,MS;
ConvertTime(Corrida[playerid],Min,Sec,MS);
new name[MAX_PLAYER_NAME],string[128];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"%s terminou o drift em %d:%d.%d, Parabéns \n!",name,Min,Sec,MS/100);
SendClientMessageToAll(COR,string);
ConvertTime -> Stock que usaremos logo abaixo, usada para converter milionésimos de segundos em Hora,Minuto,Segundoname -> Array que indica o numero maximo de nomes, ali no caso nossa constante esta MAX_PLAYER_NAME ou seja todos Maximos de Nomesstring -> Usado para definir o numero de caracteres que tera a mensagem (format) este limite no SA:MP é de 128GetPlayerName -> Pegará Nome do player para coloca-lo em %s na mensagemformat -> Formato que enviaremos a stringSendClientMessageToAll -> Enviará a mensagem formatada a todos player conectados

Agora Vamos a Stock ConvertTimer:(Final GM)
stock ConvertTime(Milliseconds,&rMin,&rS,&rMS)
{
rMin=Milliseconds/60000;
Milliseconds-=rMin*60000;
rS=Milliseconds/1000;
Milliseconds-=rS*1000
rMS=Milliseconds;
}

EXPLICAÇÃO:
Bom Basicamente essa stock faz alguns calculos
/ Divdi* Mutiplica-se
Assim Chegando ao Resultado pois 1000 Milisegundos = 1 Segundos


Criando Um Gang War Simples

Por # Victor Martins em 0 Comentários
E ai pessoal Da Rockfeller beleza? Nesse tutorial vou explicar como fazer um gang war bem simples, ou seja, não vai ter gang zones, nem sistema de salvar score e dinheiro, nem minigames, nem nada de muit avançado, só para todos terem uma base.

1.:: Criando gangs ::.

No topo do seu gamemode você precisa definir a gang e o id dela:

#define GROVE 1 // o id da gang GROVE vai ser 1
#define BALLAS 2

Ainda no topo do gamemode você precisa criar uma array para setar a gang no seu gamemode:

new Gang[MAX_PLAYERS];

No OnGameModeInit você precisa colocar todos os AddPlayerClass, vamos por como exemplo a skin da grove em primeiro:

AddPlayerClass(107,2478.2656,-1633.4364,13.4048,183.2906,24,120,25,150,28,999); //grove

Agora no OnPlayerRequestClass você precisa fazer com que a skin da grove seja da grove:

if(classid == 0) // como a primeira skin é da grove vamos colocar o numero zero aqui que significa que se você escolher a primeira skin você irá ser da gang da grove
{
Gang[playerid] = GROVE; //seta a gang, por isso criamos aquela array você pode usar o numero dela também que é 1
GameTextForPlayer(playerid,"grove",6000,6); // aparece o nome da gang quando você estiver na skin da grove
}
else if(classid == 1) //segunda skin dos AddPlayerClass
{
Gang[playerid] = BALLAS; //seta a gang ballas
GameTextForPlayer(playerid,"ballas",6000,6); nome da gang na tela
}
return 1;
}

Agora no OnPlayerRequestSpawn você precisa fazer com que cada gang tenha uma cor própria:

if(Gang[playerid] == GROVE)// se o time for grove a cor será verde
{
SetPlayerColor(playerid, 0x33AA33AA);//seta a cor verde em hexadecimal
}
else if(Gang[playerid] == BALLAS)//se o time for ballas a cor será roxo
{
SetPlayerColor(playerid, 0x9900FFAA);//seta a cor roxo em hexadecimal
}

Pronto já está criada suas gangs!

2.:: Criando comando de mostrar status(kills,mortes,teamkills) do player::.

No topo do seu gamemode crie uma array para armazenar os assassinatos que o player fez:

new Kills[MAX_PLAYERS];

Agora para mortes:

new Mortes[MAX_PLAYERS];

Agora para Team Kills:

new TK[MAX_PLAYERS];

Agora vamos fazer o comando. No OnPlayerCommandText crie o comando que vai mostrar os status do player:

if (strcmp("/status", cmdtext, true, 10) == 0) // quando alguem digitar /status vai aparecer todos os status no chat
{
new stringkills[256]; //string para mostrar o numero de kills na mensagem
new stringmortes[256]; //string para mostrar o numero de mortes na mensagem
new stringtk[256]; //string para mostrar o numero de Tema Kills na mensagem
SendClientMessage(playerid,COR_VERDE,"Seus status:");
format(stringkills,sizeof(stringkills),"Kills: %d", Kills[playerid]); //no %d vai aparecer o numero de kills que você fez
SendClientMessage(playerid,0xFF9933AA, stringkills); // faz com que mostre no chat a mensagem que foi feita a cima por meio da string de kills
format(stringmortes,sizeof(stringmortes),"Mortes: %d", Mortes[playerid]); // o mesmo que a mensagem anterior
SendClientMessage(playerid, 0xFF9933AA, stringmortes);// o mesmo que a mensagem anterior
format(stringtk,sizeof(stringtk),"Team Kills: %d", TK[playerid]);// o mesmo que a mensagem anterior
SendClientMessage(playerid, 0xFF9933AA, stringtk);// o mesmo que a mensagem anterior
return 1;
}

*OBS: Para aumentar o numero de kills, mortes e Team Kills, leia o 3º passo que estará explicando.

3.:: Criando sistema de Anti Team Kill::.

Como em todo gang war sempre tem o palhaço que mata alguem da própria gang. Agora veremos como fazer um sistema de Anti Team Kill que quando o jogador matar alguem da própria gang ele vai ser teleportado para prisão e ficará lá até ser morto por causa de tanta porrada que vai levar dos outros presos.

Agora no OnPlayerDeath precisamos criar o sistema:

Mortes[playerid]++; //se o player morrer os status de mortes dele aumenta +1
if(killerid == INVALID_PLAYER_ID) {
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason); // aparece quem matou, com o que e quem morreu
}
else if(Gang[playerid] == Gang[playerid]) // verifica se quem morreu é da mesma gang, se for ele será preso
{
SendClientMessage(killerid, 0xFF0000AA, "Não mate pessoas da mesma time que você! Você vai ficar preso até morrer"); // mesagem que vai ser enviada para o assassino
SetPlayerPos(killerid, 263.7945,77.4532,1001.0391); //isso teleportará o assassino até uma cela fexada na prisão
SetPlayerScore(killerid,GetPlayerScore(killerid) -1); // o score dele diminue -1
GivePlayerMoney(killerid, -500); // ele perde -500 de dinheiro
TK[killerid]++; //os status de team kill do assassino aumenta +1
Mortes[playerid]++;//aumenta os status de mortes do player que morreu em +1
}
else if(Gang[playerid] != Gang[playerid]) // caso o player tenha matado outro player que NÃO seja da mesma gang que ele, ele ganhará +1 de score e $500
{
SetPlayerScore(killerid,GetPlayerScore(killerid) +1); // aumenta o score do assassino em +1
GivePlayerMoney(killerid, 500);//aumenta o dinheiro do assassimo em $500
Kills[killerid]++;// aumenta os status de assassinatos do assassino em +1
Mortes[playerid]++;//aumenta os status de mortes do player que morreu em +1
}

[TUTO] Definindo cores

Por # Victor Martins em 0 Comentários
Salve galera.Hoje eu vou ensina-los como descobrir e definir as cores no Pawno.Ao contrario do que muita gente pensa,as cores no Pawno não são nada mais do que as cores html com alguns complementos.
Por exemplo:
#define COLOR_RED 0xFF0000AA
0xFF0000AA é a cor vermelha (COLOR_RED).Se você tirar o 0x e o AA , ficamos com FF0000 ,que não é nada mais do que uma cor hexadecimal,que é também conhecida como cor HTML.
Definindo as cores
Código hexadecimal : #FFFAFA.
Basta tirar o # e adicionar o 0x na frente.
Na parte de tras,basta adicionar duas letras.
Por exemplo:
0xFFFAFAHH ou
0xFFFAFAAA ou
0xFFFAFAXX
Depois que deixamos ela pronta para o Pawno,Abrimos o Pawno e colocamos no inicio:

#define COLOR_SNOW 0xFFFAFA

Para se ter uma boa idéia das cores,basta procurar no Google Tabela de cores HTML que vai aparecer bastante delas.Eu gosto da tabela do MXStudio , mas você escolhe a sua :-)

TUTORIAL BY VICTOR_ROCKFELLER

[TUTO] Fuso horário em TEXTDRAWN

Por # Victor Martins em 0 Comentários
Pessoal Vim Postar Esse Tutorial Que Achei Bom e vi que não tinha na HomeHots então resolvi postar ( LUCAS )


//EXEMPLO

//topo
new Text:Relogio; //padrao para criar o text draw... new Text:NOME;
forward RelogioAtu(); //usaremos logo abaixo


//GAMEMODEINIT / SCRIPTINIT
SetTimer("RelogioAtu",1000,true); //SetTimer que ira atualizar o relogio (1 em 1 segundo)
HoraNoText(); //logo abaixo iremos utilizar essa stock

//ONPLAYERDISCONNECT
TextDrawDestroy(Relogio); //ira destruir o text draw

//ONPLAYERCONNECT
TextDrawShowForPlayer(playerid, Relogio); //Ira MOSTRAR o text draw ao player

//FINAL
public RelogioAtu()
{
TextDrawSetString(Relogio, Hora()); //ira colocar a string 'HORA' dentro do text draw
}

//
stock HoraNoText()
{
Relogio = TextDrawCreate(1.0, 433.0, Hora()); //ira criar o text drawn nas cordenadas 1.0, 433.0 com a string 'HORA'
TextDrawBackgroundColor(Relogio, 255); //cor no fundo das letras (255 = nem uma)
TextDrawFont(Relogio, 1); //style da fonte
TextDrawUseBox(Relogio, 1); //0 nao usa BOX e 1 usa BOX
TextDrawBoxColor(Relogio, 0x000000AA); //Cor da box (preto no caso)
TextDrawLetterSize(Relogio, 0.2999, 1.4); //tamanho da letra
TextDrawSetOutline(Relogio, 1); //nunca descobri que porra e essa, sempre uso em 1
TextDrawSetProportional(Relogio, 1); //nunca descobri que porra e essa, sempre uso em 1
TextDrawSetShadow(Relogio, 1); //nunca descobri que porra e essa, sempre uso em 1
for(new i; i}

stock Hora()
{
new time[256]; //string
new Hor,Minuto,Segundo; //news da hora
gettime(Hor,Minuto,Segundo); //formatando o geito que sera o tempo (no caso HORA:MINUTO:SEGUNDOS
format(time,sizeof(time),"~r~| TEXTO )..( . Hora: %0d:%0d:%0d . ~r~|",Hor,Minuto,Segundo); //format do text (o que vai ta escrito)
return time; //retorna o format.
}

//voce pode usar com FUSO HORARIO....

//TOPO
#define FUSO 0 //fuso horário (CASO SEJE 1 IRÁ ADICIONAR 1 HORA)

//stock Hora()
Hor += FUSO; //como a define esta 0, nao adicionara NADA.


TUTORIAL BY VICTOR_ROCKFELLER

[TUTO] Adicionando carros tunados

Por # Victor Martins em 0 Comentários
Primeiramente vamos criar um New que vai ser usado a seguir :

pawn Code:
new elegy;

Obs: elegy eu usei só para dar exemlpo, Você pode usar outros nomes.

Agora no OnGameModeInit

pawn Code:
Elegy =AddStaticVehicle(562,-315.2929,1515.3479,74.9975,0.7103,53,53);

Obs²: Essa Coordenada usei só para dar exemplo tembem.

Agora a parte de tunagem

NO OnGameModeInit
pawn Code:
ChangeVehiclePaintjob(elegy,1);     AddVehicleComponent(elegy,1037);     AddVehicleComponent(elegy,1171);     AddVehicleComponent(elegy,1148);     AddVehicleComponent(elegy,1035);//AeroFolio     AddVehicleComponent(elegy,1146);     AddVehicleComponent(elegy,1078); //Rodas     AddVehicleComponent(elegy,1010); //Nitro 10x     AddVehicleComponent(elegy,1087); //Hydraulicas

Atenção : Se você quiser add Outro carro é só Fazer igual o tuto Só com outro nome no lugar do elegy

Explicação:


Elegy =  : Define Qual as Parte do carro e o New
AddVehicleComponent : Define Componentes do carro.




TUTORIAL BY VICTOR_ROCKFELLER

[TUTO] EXPULSAR PASSAGEIRO

Por # Victor Martins em 0 Comentários
Codigo está Ai !!

public OnPlayerCommandText(playerid, cmdtext[])

{


if(strcmp(cmd, "/expulsar", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new State;
if(IsPlayerInAnyVehicle(playerid))
{
State=GetPlayerState(playerid);
if(State!=PLAYER_STATE_DRIVER)
{
SendClientMessage(playerid,Vermelho," Voce nao e o motorista do carro !");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, Vermelho, "Use: /expulsar [ id ]");
return 1;
}
new playa;
playa = ReturnUser(tmp);
new test;
test = GetPlayerVehicleID(playerid);
if(IsPlayerConnected(playa))
{
if(playa != INVALID_PLAYER_ID)
{
if(playa == playerid) { SendClientMessage(playerid, Vermelho, "Voce nao pode se expulsar."); return 1; }
if(IsPlayerInVehicle(playa,test))
{
new PName[MAX_PLAYER_NAME];
GetPlayerName(playerid,PName,sizeof(PName));
GetPlayerName(playa, giveplayer, sizeof(giveplayer));
format(string, sizeof(string), "* Voce expulso o(a) %s para fora do carro!", giveplayer);
SendClientMessage(playerid, Azul_Escuro, string);
format(string, sizeof(string), "* Voce foi retirado do carro por %s !", PName);
SendClientMessage(playa, Azul, string);
RemovePlayerFromVehicle(playa);
}
else
{
SendClientMessage(playerid, Vermelho, " Este jogador não está em seu carro !");
return 1;
}
}
}
else
{
SendClientMessage(playerid, Vermelho, " ID/Nick - Invalido!");
}
}
else
{
SendClientMessage(playerid, Vermelho, " Voce precisa estar em um carro para usar este comando !");
}
}
return 1;
}

Creditos : Victor_Rockfeller