SSGamers - 13 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

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

SSGamers - 13 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

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

4 participantes

    [Tutorial] Sistema Fome e Sede.

    Victor_synD
    Victor_synD
    --> Postador Iniciante
    --> Postador Iniciante


    Celular : 62984699261
    Mensagens : 2
    Moedas : 2910
    Data de inscrição : 08/12/2016
    Idade : 25

    [Tutorial] Sistema Fome e Sede. Empty [Tutorial] Sistema Fome e Sede.

    Mensagem por Victor_synD Sex 9 Dez 2016 - 10:11

    Oi 'w'

    Esse é meu primeiro tutorial aqui, então se ficar ruim, pega leve.
    Bom, como dá pra ver no título, vou fazer um tutorial de um sistema fome e sede, daqueles tipo BPC, BPF, e o Palavrão bloqueado a 4...
    Não vou ensinar com barra de progresso por que já são 01:20 da manhã e eu estou com uma preguiça monstra.


    Bom, pra fazer essa Palavrão bloqueado, tu vai precisar de:
    I - 1 Gamemode (acho que é meio óbvio).
    II - 1 Include de Salvamento em .ini (Vou usar dini).
    III - 2 Textdraws (1 pra fome e 1 pra sede).
    [Tutorial] Sistema Fome e Sede. FAWK1fj


    Presumindo que todos saibam colocar as textdraws, vou pular esta parte.
    Minhas textdraws estão definidas em: TextDraw_Fome[MAX_PLAYERS][2] e TextDraw_Sede[MAX_PLAYERS][2].


    -Pra começar iremos criar os timers para abaixar a fome e a sede.

    Definimos os timers:
    Código:
    new TimerFome[MAX_PLAYERS];
    new TimerSede[MAX_PLAYERS];

    Definimos a variável de cada um:
    Código:
    new QtdFome[MAX_PLAYERS];
    new QtdSede[MAX_PLAYERS];


    -e logo após criamos as callbacks para o timer funcionar:

    Código:
    forward PerderFome(playerid);
    public PerderFome(playerid);
    {
        QtdFome[playerid] -= 1;
    }
    forward PerderSede(playerid);
    public PerderSede(playerid);
    {
        QtdSede[playerid] -= 1;
    }


    -Só que temos um probleminha, temos que criar a pasta de salvamento da fome e sede:

    Criando a pasta ao entrar:
    Código:
    public OnPlayerConnect(playerid)
    {
        new str[128];
        format(str, sizeof(str), "FomeSede/%s.ini", Nome(playerid)); //função que eu criei pra resgatar o nick do player.
        if(!dini_Exists(str))
        {
            dini_Create(str);
            dini_intSet(str, "Fome", 100);
            dini_intSet(str, "Sede", 100);
        }
        QtdFome[playerid] = dini_Int(str, "Fome");
        QtdSede[playerid] = dini_Int(str, "Sede");    
    }

    e pra salvar:
    Código:
    public OnPlayerDisconnect(playerid, reason)
    {
        new str[128];
        format(str, sizeof(str), "FomeSede/%s.ini", Nome(playerid));
        dini_intSet(str, "Fome", QtdFome[playerid]);
        dini_intSet(str, "Sede", QtdSede[playerid]);    
    }


    -Feito isso ja podemos terminar o timer, colocando para atualizar o textdraw:

    só editar o timer:
    Código:
    forward PerderFome(playerid);
    public PerderFome(playerid);
    {
        QtdFome[playerid] -= 1;
        PlayerTextDrawSetString(playerid, TextDraw_Fome[playerid][1], QtdFome[playerid]);
    }
    forward PerderSede(playerid);
    public PerderSede(playerid);
    {
        QtdSede[playerid] -= 1;
        PlayerTextDrawSetString(playerid, TextDraw_Sede[playerid][1], QtdSede[playerid]);
    }


    -Com o timer criado, iremos coloca-lo para funcionar, quando o player loga:

    ignore os que criamos anteriormente, não é preciso criar denovo:
    Código:
    public OnPlayerConnect(playerid)
    {
        new str[128];
        format(str, sizeof(str), "FomeSede/%s.ini", Nome(playerid));
        if(!dini_Exists(str))
        {
            dini_Create(str);
            dini_intSet(str, "Fome", 100);
            dini_intSet(str, "Sede", 100);
        }
        QtdFome[playerid] = dini_Int(str, "Fome");
        QtdSede[playerid] = dini_Int(str, "Sede"); //Até aqui ja foi feito anteriormente.

        PlayerTextDrawSetString(playerid, TextDraw_Fome[playerid][1], QtdFome[playerid]);    
        PlayerTextDrawSetString(playerid, TextDraw_Sede[playerid][1], QtdSede[playerid]);
        PlayerTextDrawShow(playerid, TextDraw_Fome[playerid][0]);
        PlayerTextDrawShow(playerid, TextDraw_Fome[playerid][1]);
        PlayerTextDrawShow(playerid, TextDraw_Sede[playerid][0]);
        PlayerTextDrawShow(playerid, TextDraw_Sede[playerid][1]);
        TimerFome[playerid] = SetTimerEx("PerderFome", 3000 * 60, true, "i", playerid); //repetindo a cada 3m
        TimerSede[playerid] = SetTimerEx("PerderSede", 4000 * 60, true, "i", playerid); //repetindo a cada 4m
        //Coloquei numeros diferentes só pra voces verem que dá. Daria pra fazer tudo em um timer só.   
    }

    -Agora o timer ja está funcionando, vamos colocar o que acontece quando chega a 0 de fome e sede:

    No meu caso o player vai morrer e vai mandar uma mensagem pra ele:
    Código:
    forward PerderFome(playerid);
    public PerderFome(playerid);
    {
        QtdFome[playerid] -= 1;
        PlayerTextDrawSetString(playerid, TextDraw_Fome[playerid][1], QtdFome[playerid]);//Até aqui ja foi feito anteriormente.

        if(QtdFome[playerid] <= 0)
        {
            SendClientMessage(playerid, -1, "Você morreu de Fome!");
            SetPlayerHealth(playerid, 0.0);
            QtdFome[playerid] = 100;
        }
    }
    forward PerderSede(playerid);
    public PerderSede(playerid);
    {
        QtdSede[playerid] -= 1;
        PlayerTextDrawSetString(playerid, TextDraw_Sede[playerid][1], QtdSede[playerid]);//Até aqui ja foi feito anteriormente.

        if(QtdSede[playerid] <= 0)
        {
            SendClientMessage(playerid, -1, "Você morreu de Sede!");
            SetPlayerHealth(playerid, 0.0);
            QtdSede[playerid] = 100;
        }
    }

    -e pra finalizar iremos colocar pra parar o timer quando o player sai do servidor:

    Dnv, ignora o que fizemos antes:
    Código:
    public OnPlayerDisconnect(playerid, reason)
    {
        new str[128];
        format(str, sizeof(str), "FomeSede/%s.ini", Nome(playerid));
        dini_intSet(str, "Fome", QtdFome[playerid]);
        dini_intSet(str, "Sede", QtdSede[playerid]); //Até aqui ja foi feito anteriormente.

        KillTimer(TimerFome[playerid]);
        KillTimer(TimerSede[playerid]);    
    }


    O Código bruto é esse, agora digamos que voce queira adicionar fome ao player, por exemplo, quando ele come um frango.
    é só voce colocar no comando QtdFome[playerid] = Quantidade; funciona da mesma maneira com a sede.

    Este tutorial ficou meio longo, e como deu pra ver, não sou um scripter excelente, muito menos um professor excelente.
    Qualquer duvida, mande ai que eu estarei respondendo. Podem fazer pedidos de tutoriais também, se eu souber, eu faço!


    Obs1:: Se tu fez igual o meu, cria uma pasta "FomeSede" na sua pasta Scriptfiles.
    Obs2:: Tou aceitando avatar e sign rs.
    Luque_Taylor
    Luque_Taylor
    --> Postador Iniciante
    --> Postador Iniciante


    Celular : 553832139635
    Mensagens : 27
    Moedas : 4195
    Data de inscrição : 12/08/2013

    [Tutorial] Sistema Fome e Sede. Empty Re: [Tutorial] Sistema Fome e Sede.

    Mensagem por Luque_Taylor Dom 18 Dez 2016 - 19:47

    esse Sistema voce divia imclementar um de Sono e Higiene tambem ficaria mais Completo mais fico bom testei e funciono normal Aprovado
    Fabricio_Irevoltz
    Fabricio_Irevoltz
    --> Postador Iniciante
    --> Postador Iniciante


    Celular : 3828282928283
    Mensagens : 6
    Moedas : 2916
    Data de inscrição : 12/12/2016
    Idade : 64

    [Tutorial] Sistema Fome e Sede. Empty Re: [Tutorial] Sistema Fome e Sede.

    Mensagem por Fabricio_Irevoltz Seg 19 Dez 2016 - 23:08

    QUER UMA GM UNICA? UM FORUM TOP PRO SEU SV? UMA HOST BOA E BARATA? VEM PRA REVERHOST AQUI TEMOS O MELHOR PRA VOCÊ! ACESSE: www.facebook.com/reverhost
    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11638
    Moedas : 1032933
    Data de inscrição : 06/10/2011
    Idade : 29
    Localização : Brasil

    [Tutorial] Sistema Fome e Sede. Empty Re: [Tutorial] Sistema Fome e Sede.

    Mensagem por Weslley_Script Ter 20 Dez 2016 - 0:30

    Ótimo sistema. Parabéns.



    [Tutorial] Sistema Fome e Sede. D07Xwqb
    [Tutorial] Sistema Fome e Sede. Yjab9HN

    Conteúdo patrocinado


    [Tutorial] Sistema Fome e Sede. Empty Re: [Tutorial] Sistema Fome e Sede.

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sáb 23 Nov 2024 - 6:00