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).
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:
Definimos a variável de cada um:
-e logo após criamos as callbacks para o timer funcionar:
-Só que temos um probleminha, temos que criar a pasta de salvamento da fome e sede:
Criando a pasta ao entrar:
e pra salvar:
-Feito isso ja podemos terminar o timer, colocando para atualizar o textdraw:
só editar o timer:
-Com o timer criado, iremos coloca-lo para funcionar, quando o player loga:
ignore os que criamos anteriormente, não é preciso criar denovo:
-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:
-e pra finalizar iremos colocar pra parar o timer quando o player sai do servidor:
Dnv, ignora o que fizemos antes:
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.
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).
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.