SA-MP Forums Archive
[FilterScript] Cвmera em Primeira Pessoa (Fora do veiculo) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [FilterScript] Cвmera em Primeira Pessoa (Fora do veiculo) (/showthread.php?tid=455776)



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...