Cвmera em Primeira Pessoa (Fora do veiculo) -
Bruno13 - 03.08.2013
Introduзгo
Olб a todos do fуrum sa-mp.
Hoje vim aqui postar meu primeiro filterscript, bom primeiro nгo
mas sim o primeiro que posto...
Ele se trata de cвmera em primeira pessoa, porйm nгo й dentro
do veiculo com jб existe, й como se fosse aquele tal mod que tem,
sу que nгo precisa do mod(ava), e estarei postando parte por parte
para vocк conseguir colocar em seu GM, pois o cуdigo й bem pequeno,
e acho que nгo seria necessбrio mais um filterscript ai hein...hehehe.
Inserindo cуdigo
Vamos a primeira parte, localize no seu GameMode o lugar onde esta as defines, e cole esse cуdigo(caso jб tenha essas cores ou irб usar outras que jб estгo definidas, nem precisa colocar essas defines):
pawn Код:
#define VERMELHO 0xAA3333AA
#define VERDE 0x00A200FF
Agora as variбveis:
pawn Код:
new pUsarCamera[MAX_PLAYERS];
new pPrimeiro[MAX_PLAYERS];
new firstperson[MAX_PLAYERS];
Certo agora iremos na public OnPlayerCommandText, e iremos inserir esse cуdigo abaixo:
pawn Код:
new cmd[256];
if (strcmp(cmd, "/camera", true) == 0)
{
if(pUsarCamera[playerid] == 0)
{
SendClientMessage(playerid, -1, "Pronto! Agora vocк podera usar camera em primeira pessoa!");
SendClientMessage(playerid, -1, "Para usar pressione e tecla de barra invertida ou use /primeiro.");
pUsarCamera[playerid] = 1;
}
else if(pUsarCamera[playerid] == 1)
{
if(pPrimeiro[playerid] == 0)//camera desligada
{
SendClientMessage(playerid, VERMELHO, "Ativaзгo desligada! Vocк desabilitou a camera em primeira pessoa.");
pUsarCamera[playerid] = 0;
}
else
{
SendClientMessage(playerid, VERDE, " Sua camera esta ativada, desative-a antes.");
}
}
return true;
}
if(strcmp(cmd, "/primeiro", true) == 0)
{
if(pUsarCamera[playerid] == 1)
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid,VERDE,"Vocк nгo pode usar essa camкra em um veiculo!");
}
if(pPrimeiro[playerid] == 0)
{
CameraPrimeira(playerid,1);
GameTextForPlayer(playerid, "~w~camera~g~ ligada", 5000, 6);
pPrimeiro[playerid] = 1;//ligou a camera
}
else
{
pPrimeiro[playerid] = 0;
GameTextForPlayer(playerid, "~w~camera~r~ desligada", 5000, 6);
CameraPrimeira(playerid,0);
}
}
else
{
SendClientMessage(playerid, VERDE, "Para poder usar camera em primeira pessoa tera que usar /camera antes!");
}
return 1;
}
Ok, agora vamos na outra public OnPlayerKeyStateChange, que ira ser a funзгo para podermos ativar a cвmera apertando teclas(Tecla que coloquei foi de Barra invertida: \):
OBS: Vocк pode alterar o id da tecla, mudando o id de 1 para a que escolher.
pawn Код:
if(newkeys == 1 && GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
{
if(pUsarCamera[playerid] == 1)
{
if(pPrimeiro[playerid] == 0)
{
CameraPrimeira(playerid,1);
pPrimeiro[playerid] = 1;
GameTextForPlayer(playerid, "~w~camera~g~ ligada", 5000, 6);
}
else if(pPrimeiro[playerid] == 1)
{
pPrimeiro[playerid] = 0;
CameraPrimeira(playerid,0);
GameTextForPlayer(playerid, "~w~camera~r~ desligada", 5000, 6);
}
}
}
Agora vamos a parte final, que e a Stock, que serб chamada para poder ativar a cвmera, eu costumo deixar no fim do GameMode, mas vocк que escolhe, sу tome cuidado para nгo colocar dentro de outras funзхes como as public, stocks...
pawn Код:
stock CameraPrimeira(playerid,type)
{
if(type == 0)
{
SetCameraBehindPlayer(playerid);
DestroyObject(firstperson[playerid]);
}
else if(type == 1)
{
firstperson[playerid] = CreateObject(19300, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
AttachObjectToPlayer(firstperson[playerid],playerid, 0.0, 0.27, 0.7, 0.0, 0.0, 0.0);
AttachCameraToObject(playerid, firstperson[playerid]);
}
return type;
}
Bugs
Bom, infelizmente assim foi o melhor que consegui deixar, pois o attach que cria ele meio que quando vira o mouse para olhar pra traz da pra ver por dentro do corpo da skin, porйm se colocasse mais para a frente nгo daria porque nгo apareceria as armas da mгo dele e tal...Mas se alguem quiser ajustar й sу modificar a posiзгo Y do attach que estб na stock.
Final
Bom galera й isso, esse cуdigo tinha feito para mim, porйm acabei achando que nгo tinha muita graзa(rsrs) entгo vim traze-lo a vocкs, pois jб vi gente pedindo cвmera mas fora do veiculo, entгo ta ai...
Crйditos: Bruno_13
Obrigado espero que gostem, atй a prуxima
@EDIT
Mudado de
return 1 para
return type.
Re: Cвmera em Primeira Pessoa (Fora do veiculo) -
n0minal - 03.08.2013
Barra invertida em keystatechange? Ta nй... Bom trabalho mas me diz ai como fizestes para achar o id desta tecla...
Re: Cвmera em Primeira Pessoa (Fora do veiculo) -
Bruno13 - 03.08.2013
Quote:
Originally Posted by n0minal
Barra invertida em keystatechange? Ta nй... Bom trabalho mas me diz ai como fizestes para achar o id desta tecla...
|
Vlw. Bom eu usei essa imagem:
Mas eu acho que deve ter mais do que esses id's...
Re: Cвmera em Primeira Pessoa (Fora do veiculo) -
P1c4550 - 03.08.2013
Bom trabalho
Re: Cвmera em Primeira Pessoa (Fora do veiculo) -
darkxdll - 03.08.2013
Ficou legal , se tivesse explicaзхes , poderia ser um tutorial kkk..
Parabйns ai
Re: Cвmera em Primeira Pessoa (Fora do veiculo) -
lucaspilar - 03.08.2013
Bem Legal mano Bom trabalho, usarei em meu servidor e deixarei os creditos claro.
Re: Cвmera em Primeira Pessoa (Fora do veiculo) -
Don_Speed - 03.08.2013
pawn Код:
stock CameraPrimeira(playerid,type)
{
if(type == 0)
{
SetCameraBehindPlayer(playerid);
DestroyObject(firstperson[playerid]);
}
else if(type == 1)
{
CancelSelectTextDraw(playerid);
firstperson[playerid] = CreateObject(19300, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
AttachObjectToPlayer(firstperson[playerid],playerid, 0.0, 0.27, 0.7, 0.0, 0.0, 0.0);
AttachCameraToObject(playerid, firstperson[playerid]);
}
return type;
}
Re: Cвmera em Primeira Pessoa (Fora do veiculo) -
Bruno13 - 03.08.2013
Quote:
Originally Posted by Don_Speed
pawn Код:
stock CameraPrimeira(playerid,type) { if(type == 0) { SetCameraBehindPlayer(playerid); DestroyObject(firstperson[playerid]); } else if(type == 1) { CancelSelectTextDraw(playerid); firstperson[playerid] = CreateObject(19300, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); AttachObjectToPlayer(firstperson[playerid],playerid, 0.0, 0.27, 0.7, 0.0, 0.0, 0.0); AttachCameraToObject(playerid, firstperson[playerid]); } return type; }
|
Bah poisй nem tinha me tocado, й que eu ainda estou comeзando em pawn, mas valeu, pensei que nгo mudaria muito se fosse 1 para type....
Re: Cвmera em Primeira Pessoa (Fora do veiculo) -
xxRaioxx - 04.08.2013
Quote:
Originally Posted by Bruno13
Introduзгo Certo agora iremos na public OnPlayerCommandText, e iremos inserir esse cуdigo abaixo:
pawn Код:
new cmd[256]; if (strcmp(cmd, "/camera", true) == 0) { if(pUsarCamera[playerid] == 0) { SendClientMessage(playerid, -1, "Pronto! Agora vocк podera usar camera em primeira pessoa!"); SendClientMessage(playerid, -1, "Para usar pressione e tecla de barra invertida ou use /primeiro."); pUsarCamera[playerid] = 1; } else if(pUsarCamera[playerid] == 1) { if(pPrimeiro[playerid] == 0)//camera desligada { SendClientMessage(playerid, VERMELHO, "Ativaзгo desligada! Vocк desabilitou a camera em primeira pessoa."); pUsarCamera[playerid] = 0; } else { SendClientMessage(playerid, VERDE, " Sua camera esta ativada, desative-a antes."); } } return true; } if(strcmp(cmd, "/primeiro", true) == 0) { if(pUsarCamera[playerid] == 1) { if(IsPlayerInAnyVehicle(playerid)) { SendClientMessage(playerid,VERDE,"Vocк nгo pode usar essa camкra em um veiculo!"); } if(pPrimeiro[playerid] == 0) { CameraPrimeira(playerid,1); GameTextForPlayer(playerid, "~w~camera~g~ ligada", 5000, 6); pPrimeiro[playerid] = 1;//ligou a camera } else { pPrimeiro[playerid] = 0; GameTextForPlayer(playerid, "~w~camera~r~ desligada", 5000, 6); CameraPrimeira(playerid,0); } } else { SendClientMessage(playerid, VERDE, "Para poder usar camera em primeira pessoa tera que usar /camera antes!"); } return 1; }
|
Eu uso ZCMD como faz esses comandos?
Re: Cвmera em Primeira Pessoa (Fora do veiculo) -
Bruno13 - 04.08.2013
Quote:
Originally Posted by xxRaioxx
Eu uso ZCMD como faz esses comandos?
|
Nunca usei zcmd (apesar de ser melhor), mas creio que para esses comandos ai й sу pegar a parte entre a primeira chave atй a ultima e mudar apenas o formato de como й o zcmd...