E ai pessoa, blz? Nesse tutorial vou ensinar vocês a fazerem um sistema de doença simples e excelente para RPGs.
Primeiro defina as cores das mensagens:
#define COLOR_RED 0xFF0000AA
#define COR_VERDECLARO 0x9ACD32AA
Agora crie uma array e um forward no topo do seu gamemode com o nome da sua doença, no nosso exemplo a doença vai ser a gripe:
new Gripe[MAX_PLAYERS];
forward PegarGripe(playerid);
Agora crie um public no final do seu gamemode com o nome do forward que você criou:
public PegarGripe(playerid)
{
Gripe[playerid]++; //adiciona um valor na variavel da doença
SendClientMessage(playeri,COLOR_RED,"Você pegou gripe! Vá até uma famacia comprar remédio."); //mensagem que vai aparecer quando você pegar a doença
if(Gripe[playerid] == 100) //caso o valor da variavel da doença chegue a 100 você vai morrer
{
SetPlayerHealth(playerid,0.0);
SendClientMessage(playerid,COLOR_RED,"A gripe te matou! Quem mandou não comprar remédio...");//mensagem que vai aparecer quando você morrer por causa da doença
}
}
Agora no OnPlayerDeath coloque:
if(Gripe[playerid] == 100) //quando você morrer com o valor da variavel da doença com o valor 100 o valor da variavel será resetado
{
Gripe[playerid] = 0; //seta o valor da variavel da doença para zero
SendClientMessage(playerid,COR_VERDECLARO,"No hospital os médicos curaram sua gripe! Pode ficar tranquilo, por enquanto..."); //mensagem que vai aparecer quando o valor da variavel da doença for resetado
}
Agora no OnGameModeInit coloque:
SetTimer("PegarGripe", 1200000, true);//com isso os players pegaram a doença à cada 20 minutos +/-
--------------------------------------------------------------------------------------
Tutorial da Farmacia
Anteriormente eu fiz um tutorial de doenças e agora vou criar um tutorial de farmacia.
Para poder acompanhar esse tutorial direitinho leia o de criação de doenças antes. Clique aqui para ve-lo.
Primeiro você precisa do include para criar Checkpoints muito mais facilmente.
Link do Download.: http://www.4shared.com/file/65290418/95bc7680/CPStreamwwwcronosbrblogspotcom.html
*Tio Cr0Nos porque vamos usar um Cheackpoint?
Resposta: Para ficar mais real, vamos fazer um local onde você possa executar o comando de comprar o remédio. Na vida real não é só você imaginar o remédio em qualquer lugar e ele vai aparecer, não é mesmo?
Vamos criar uma array no topo do gamemode para representar o Checkpoint:
new CP_FARMACIA;
Agora no OnGameModeInit vamos fazer com que a variavel represente o Checkpoint:
CP_FARMACIA = CPS_AddCheckpoint(X,Y,Z,TAMANHO,DISTANCIA);
X: Coordenada X
Y: Coordenada Y
Z: Coordenada Z
TAMANHO: Tamanho do Checkpoint (Aconselhavel 2.0)
DISTANCIA Distancia para o Checkpoint aparecer
Agora vamos fazer com que quando alguem entre no Checkpoint apareça uma mensagem na tela. No OnPlayerEnterCheckpoint use o comparador If para ver se o player está no checkpoint da farmacia para aparecer a mensagem:
if(CPS_IsPlayerInCheckpoint(playerid,CP_FARMACIA))
{
GameTextForPlayer(playerid,"~n~~n~~r~FARMACIA~n~~w~/comprarremedio",TEMPO,ESTILO);
}
TEMPO: Tempo que a mensagem vai ficar na tela(Aconselhavel 10000 milesimos de segundos(10 segundos)).
ESTILO: Estilo do GameText (estilos de 1 à 6).
Agora vamos criar o comando de comprar remédio. No OnPlayerCommandText:
if(strcmp(cmd, "/comprarremedio", true) == 0)
{
if(IsPlayerInCheckpoint(playerid) == CP_FARMACIA) //se você estiver no checkpoint certo o comando será executado
{
if(GetPlayerMoney(playerid) >= 50) // se o dinheiro do player for maior ou igual a 50 ele poderá comprar o remédio
if(Gripe[playerid] > 0) // se a gripe for maior que zero ele poderá comprar o remédio
{
GivePlayerMoney(playerid, -50); //diminue $50 do player
Gripe[playerid] = 0; //seta a array da gripe para 0
SetPlayerHealth(playerid, 100.0); //seta a vida do player para 100%
}
else if(GetPlayerMoney(playerid) < 50) //mais se o dinheiro do player for menor que $50 o comando não é executado e um aviso aparecerá no chat
{
SendClientMessage(playerid, COR, "Você não tem $50 para comprar o remédio!"); //mensagem que aparecerá no chat
}
else if(Gripe[playerid] <= 0) //mais se a array Gripe for menor ou igual a 0 o comando não será executado e um aviso aparecerá no chat
{
SendClientMessage(playerid, COR, "Você não está gripado!"); //mensagem que aparecerá no chat
}
}
else if(CPS_GetPlayerCheckpoint(playerid) != CP_FARMACIA) //mais se o player estiver ou não em um Checkpoint que não seja da farmacia o comando não é executado e um aviso aparecerá no chat
{
SendClientMessage(playerid, COR, "Você não está no Checkpoint da farmacia!"); //mensagem que aparecerá no chat
}
return 1;
}
E está pronto nossa farmacia. Até logo pessoal.
CREDITOS CR0N0S Site.: http://cronosbr.blogspot.com/
Primeiro defina as cores das mensagens:
#define COLOR_RED 0xFF0000AA
#define COR_VERDECLARO 0x9ACD32AA
Agora crie uma array e um forward no topo do seu gamemode com o nome da sua doença, no nosso exemplo a doença vai ser a gripe:
new Gripe[MAX_PLAYERS];
forward PegarGripe(playerid);
Agora crie um public no final do seu gamemode com o nome do forward que você criou:
public PegarGripe(playerid)
{
Gripe[playerid]++; //adiciona um valor na variavel da doença
SendClientMessage(playeri,COLOR_RED,"Você pegou gripe! Vá até uma famacia comprar remédio."); //mensagem que vai aparecer quando você pegar a doença
if(Gripe[playerid] == 100) //caso o valor da variavel da doença chegue a 100 você vai morrer
{
SetPlayerHealth(playerid,0.0);
SendClientMessage(playerid,COLOR_RED,"A gripe te matou! Quem mandou não comprar remédio...");//mensagem que vai aparecer quando você morrer por causa da doença
}
}
Agora no OnPlayerDeath coloque:
if(Gripe[playerid] == 100) //quando você morrer com o valor da variavel da doença com o valor 100 o valor da variavel será resetado
{
Gripe[playerid] = 0; //seta o valor da variavel da doença para zero
SendClientMessage(playerid,COR_VERDECLARO,"No hospital os médicos curaram sua gripe! Pode ficar tranquilo, por enquanto..."); //mensagem que vai aparecer quando o valor da variavel da doença for resetado
}
Agora no OnGameModeInit coloque:
SetTimer("PegarGripe", 1200000, true);//com isso os players pegaram a doença à cada 20 minutos +/-
--------------------------------------------------------------------------------------
Tutorial da Farmacia
Anteriormente eu fiz um tutorial de doenças e agora vou criar um tutorial de farmacia.
Para poder acompanhar esse tutorial direitinho leia o de criação de doenças antes. Clique aqui para ve-lo.
Primeiro você precisa do include para criar Checkpoints muito mais facilmente.
Link do Download.: http://www.4shared.com/file/65290418/95bc7680/CPStreamwwwcronosbrblogspotcom.html
*Tio Cr0Nos porque vamos usar um Cheackpoint?
Resposta: Para ficar mais real, vamos fazer um local onde você possa executar o comando de comprar o remédio. Na vida real não é só você imaginar o remédio em qualquer lugar e ele vai aparecer, não é mesmo?
Vamos criar uma array no topo do gamemode para representar o Checkpoint:
new CP_FARMACIA;
Agora no OnGameModeInit vamos fazer com que a variavel represente o Checkpoint:
CP_FARMACIA = CPS_AddCheckpoint(X,Y,Z,TAMANHO,DISTANCIA);
X: Coordenada X
Y: Coordenada Y
Z: Coordenada Z
TAMANHO: Tamanho do Checkpoint (Aconselhavel 2.0)
DISTANCIA Distancia para o Checkpoint aparecer
Agora vamos fazer com que quando alguem entre no Checkpoint apareça uma mensagem na tela. No OnPlayerEnterCheckpoint use o comparador If para ver se o player está no checkpoint da farmacia para aparecer a mensagem:
if(CPS_IsPlayerInCheckpoint(playerid,CP_FARMACIA))
{
GameTextForPlayer(playerid,"~n~~n~~r~FARMACIA~n~~w~/comprarremedio",TEMPO,ESTILO);
}
TEMPO: Tempo que a mensagem vai ficar na tela(Aconselhavel 10000 milesimos de segundos(10 segundos)).
ESTILO: Estilo do GameText (estilos de 1 à 6).
Agora vamos criar o comando de comprar remédio. No OnPlayerCommandText:
if(strcmp(cmd, "/comprarremedio", true) == 0)
{
if(IsPlayerInCheckpoint(playerid) == CP_FARMACIA) //se você estiver no checkpoint certo o comando será executado
{
if(GetPlayerMoney(playerid) >= 50) // se o dinheiro do player for maior ou igual a 50 ele poderá comprar o remédio
if(Gripe[playerid] > 0) // se a gripe for maior que zero ele poderá comprar o remédio
{
GivePlayerMoney(playerid, -50); //diminue $50 do player
Gripe[playerid] = 0; //seta a array da gripe para 0
SetPlayerHealth(playerid, 100.0); //seta a vida do player para 100%
}
else if(GetPlayerMoney(playerid) < 50) //mais se o dinheiro do player for menor que $50 o comando não é executado e um aviso aparecerá no chat
{
SendClientMessage(playerid, COR, "Você não tem $50 para comprar o remédio!"); //mensagem que aparecerá no chat
}
else if(Gripe[playerid] <= 0) //mais se a array Gripe for menor ou igual a 0 o comando não será executado e um aviso aparecerá no chat
{
SendClientMessage(playerid, COR, "Você não está gripado!"); //mensagem que aparecerá no chat
}
}
else if(CPS_GetPlayerCheckpoint(playerid) != CP_FARMACIA) //mais se o player estiver ou não em um Checkpoint que não seja da farmacia o comando não é executado e um aviso aparecerá no chat
{
SendClientMessage(playerid, COR, "Você não está no Checkpoint da farmacia!"); //mensagem que aparecerá no chat
}
return 1;
}
E está pronto nossa farmacia. Até logo pessoal.
CREDITOS CR0N0S Site.: http://cronosbr.blogspot.com/
Última edição por Sampaio_Gabriel em Ter Jan 12, 2010 3:49 pm, editado 2 vez(es)