[FilterScript] Cвmera em Primeira Pessoa (Fora do veiculo)
#1

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.
Reply
#2

Barra invertida em keystatechange? Ta nй... Bom trabalho mas me diz ai como fizestes para achar o id desta tecla...
Reply
#3

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...
Reply
#4

Bom trabalho
Reply
#5

Ficou legal , se tivesse explicaзхes , poderia ser um tutorial kkk..
Parabйns ai
Reply
#6

Bem Legal mano Bom trabalho, usarei em meu servidor e deixarei os creditos claro.
Reply
#7

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;
}
Reply
#8

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....
Reply
#9

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?
Reply
#10

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


Forum Jump:


Users browsing this thread: 1 Guest(s)