SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] Segurando objetos e interagindo

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11378
    Moedas : 1031976
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    [Tutorial] Segurando objetos e interagindo Empty [Tutorial] Segurando objetos e interagindo

    Mensagem por Weslley_Script Qua 5 Abr 2023 - 12:11

    Olá, é meu primeiro tutorial entгo peзo que tenha compreensгo e apontem qualquer falha ou explicaзгo que possa ter ficado difнcil de entender.
    Longe de ser um assunto complexo, mas é algo que pode auxiliar muitos novos a alçar vфos maiores com base no que o tutorial oferece.


    Esse sistema de interação com objetos pode servir muito bem para servidores RPG, de sobrevivência ou qualquer outro servidor que queira adicionar um toque a mais para que os jogadores tenham uma maior imersão.
    Alguns servidores possuem sistema de fome e sede e utilizam comandos para que o player possa experimentar essas necessidades, como /comer, /beber e etc.
    Uma forma mais imersiva de se utilizar esses sistemas pode ser alcançada colocando objetos que podem ser consumidos pelo jogador diretamente em seus mгos, e entгo usando as animaзхes para trazer seus efeitos.
    Para isso, vamos utilizar principalmente o callback OnPlayerKeyStateChange , como as funções SetPlayerAttachedObject e ApplyAnimation .
    Secundárias: EditAttachedObject , OnPlayerEditAttachedObject e OnPlayerDisconnect .
    IMPORTANTE: Esse tutorial possui comandos utilizando o include I-ZCMD .
    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-=-=-=-=-=-=-=-=-=-=-=- ESCOLHENDO
    SEU OBJETO
    Isso fica aberto à sua criatividade.
    Eu utilizo o site Prineside para pegar os IDs dos objetos que gostariam de ter no servidor para interação. Como exemplo, vamos utilizar o copo de café. ID 19835.

    COLOCANDO O OBJETO NAS MÁOS DO PLAYER
    O momento em que o objeto será colocado nas mãos do jogador também depende do seu modo de jogo. Se você possui um sistema de inventório, por exemplo, você pode fazer o objeto aparecer somente caso o jogador possua tal item.
    Como exemplo, vamos utilizar um comando para fazer o copo de café aparecer nas mãos do nosso player.
    Primeiro, vamos criar três variáveis.
    PHP como:

    Código:
    new Cafe[MAX_PLAYERS], Bebendo[MAX_PLAYERS], Consumindo[MAX_PLAYERS]; 

    IMPORTANTE: NГO SE ESQUEЗA DE LIMPAR ESSAS VARIБVEIS QUANDO O PLAYER DESCONECTAR!
    Motivo: Caso o jogador com ID 2 desconecte com um copo na mão, sua variedade Café, Bebendo e Consumindo ficaria 1. E então, quando um novo jogador com ID 2 se conectar, ele não poderia utilizar o nosso comando para segurar o copo de café .
    PHP como:

    Código:
    public OnPlayerDisconnect(playerid, reason){
        Cafe[playerid] = 0;
        Consumindo[playerid] = 0;
        Bebendo[playerid] = 0;
        return 1;


    No nosso exemplo, o copo de café irá aparecer quando o comando /cafe for executado.
    PHP como:

    Código:
    CMD:cafe(playerid,params[]){
        if(Cafe[playerid] == 1) return SendClientMessage(playerid,0xFFFFFFFF,"Vocк jб tem um copo de cafй na mгo!");
        if(Consumindo[playerid] == 1) return SendClientMessage(playerid,0xFFFFFFFF,"Vocк jб estб com algo nas mгos!");
        Cafe[playerid] = 1;
        Consumindo[playerid] = 1;
        Bebendo[playerid] = 1;
        SendClientMessage(playerid,0xFFFFFFFF,"Agora vocк estб segurando um copo de Cafй Pelй.");
        SetPlayerAttachedObject(playerid, 2, 19835, 5, 0.1, 0.07, 0.04, 180.0, 0.0, 0.0, 1.0, 1.0, 1.0);
        return 1;


    Se o player já estiver com um copo de café na mó, a variável Cafe estará com valor 1, e uma mensagem de erro aparecerá. O mesmo acontece caso ele já esteja consumindo outro item.
    Caso o jogador não esteja consumindo nada, suas variáveis ​​Cafe, Consumindo e Bebendo terão valor 1, ele receberá uma mensagem informando que está segurando o copo de café na mão, e então terá o objeto colocado em suas mãos com a função SetPlayerAttachedObject.

    O número 2 em nossa função se refere ao INDEX(slot) no qual o objeto está salvo. HÁ 10 slots para colocar objetos no player (0-9).
    19835 :copyright: o Model ID que escolhemos no site Prineside, o copo de café.
    O número 5 se refere ao Bonedo player em que serÁ colocado nosso copo. Bone 5 seria a mгo esquerdo, a razгo para isso й a animaзгo que usaremos em seguida para fazermos o jogador tomar o cafй no copo.
    Os outros números são as coordenadas de posicionamento do nosso objeto no osso do jogador em questão. Esse posicionamento foi obtido com a função EditAttachedObject, que pode ser utilizada a partir do momento em que um objeto já está colocado no player.
    Um exemplo de comando para ajustar o posicionamento de objetos sérios:
    PHP como:

    Código:
    CMD:edit(playerid,params[]){
        EditAttachedObject(playerid, 2);
        return 1;


    O número 2 representa o INDEX(slot) do objeto colocado que queremos editar.
    Para obter o posicionamento do objeto quando você achar a melhor posição e então colocar as coordenadas no seu script, utilize o código presente nessa página: OnPlayerEditAttachedObject . As coordenadas ficarão disponíveis no painel de controle/server_log.txt do seu servidor.

    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-=-=-=-=-=-=-=-=-=-=-=- OBJETO EM
    MÓOS, E AGORA?
    Para o jogador efetivamente comer ou beber, vamos apertar o botão da mira (normalmente botão direito do mouse (RMB)).
    Vamos definir o que seria o ato de pressionar o botão.
    PHP como:

    Código:
    #define PRESSED(%0) \
        (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) 

    E entгo:
    PHP como:

    Código:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
        if(PRESSED(KEY_HANDBRAKE) && Consumindo[playerid] == 1){
            if(Bebendo[playerid] == 1){
                ApplyAnimation(playerid, "VENDING", "VEND_Drink2_P", 4.1, 0, 1, 1, 1, 1, 1);
                Consumindo[playerid]++;
                if(Cafe[playerid] == 1){
                    if(Consumindo[playerid] >= 7){
                        switch(random(4)){
                            case 0:{
                                SendClientMessage(playerid,0xFFFFFFFF,"Seu copo de Cafй Pelй acabou.");
                                RemovePlayerAttachedObject(playerid, 2);
                                Consumindo[playerid] = 0;
                                Bebendo[playerid] = 0;
                                Cafe[playerid] = 0;
                            }
                            default:{
                            }
                        }
                    }
                }
            }
        }
        return 1;


    Caso nosso player esteja consumindo alguma coisa, pressione o botão direito do mouse, e que ele esteja consumindo seja uma bebida, ele fará uma animação para levar o copo ou garrafa em seu rosto, como se estivesse bebendo, 1 ponto da variável Consumindo será adicionado . Caso essa bebida seja Café e os pontos de consumo iguais ou superiores a 7, ele terá uma chance em 4 de terminar a bebida quando apertar o botão direito do mouse para consumir totalmente.
    O que define o botão direito do mouse :copyright: KEY_HANDBRAKE . Você pode escolher uma outra KEY , sem ser o botão de mira, nessa página: Keys .
    Caso você esteja fazendo um sanduíche, hambúrguer ou algum objeto de comer, você pode ver outra animação sem ser a "VEND_Drink2_P" nessa página: Animations .
    switch(random(4)) abre 4 possibilidades aleatórias (case 0, 1, 2 e 3. Default: , neste caso, engloba o case 1, 2 e 3. O que significa que há 25% de chance da bebida acabar apуs o jogador bebe 7 vezes ou mais.).

    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -=-=-=-=-=-=-=-=-=-=-=-=-
    UTILIDADES
    Você pode usar esse sistema para fazer o jogador comer, beber, fumar, tomar remédios, doente, se drogar de alguma forma e também dar efeitos para o jogador. Por que o jogador nгo pode recuperar a vida a cada gole que dб em uma garrafa de бgua, ou atй mesmo ficar cada vez mais bкbado a cada gole que dб na cerveja?
    O resto fica a carga da sua criatividade.

    Muito obrigado a todos que acompanham este tutorial atй o fim.
    Aguardo críticas, sugestões ou elogios (se merecer), haha.
    Abraços.



    [Tutorial] Segurando objetos e interagindo D07Xwqb
    [Tutorial] Segurando objetos e interagindo Yjab9HN

      Data/hora atual: Ter 7 maio 2024 - 6:07