Nesse tutorial vou ensinar à vocês como fazer um sistema simples de level, excelente para RPG.
Primeiro crie uma array pro level no topo do seu gamemode:
new Level[MAX_PLAYERS];
Agora crie um forward para ganhar level:
forward GanharLevel(playerid);
Agora no final do seu gamemode coloque as funções que sua forward vai fazer:
public GanharLevel(playerid)
{
if(Level[playerid] < 100) //caso o level do player for menor que 100 ele ganha 1 level
{
}
if(Level[playerid] == 100) //se o level do player chegar a 100 ele para de ganhar level
{
SendClientMessage(playerid, COR, "Você chegou ao level máximo(100)!");
}// chave para fexar o if
return 1;
}//chave para fexar o public
Agora no OnGameModeInit vamos fazer com que a cada 20 minutos o player ganhe 1 level:
SetTimer("GanharLevel",1200000, true); //a cada 20 minutos o gamemode vai chamar a função GanharLevel, assim fazendo o player ganhar um level a cada 20 minutos
Prontinho! O seu sistema de level simples está pronto.
Feito por: Cr0Nos
E ai pessoal beleza? Nesse tutorial vou explicar como fazer um gang war bem simples, ou seja, não vai ter gang zones, nem sistema de salvar score e dinheiro, nem minigames, nem nada de muit avançado, só para todos terem uma base.
No topo do seu gamemode você precisa definir a gang e o id dela:
#define GROVE 1 // o id da gang GROVE vai ser 1
#define BALLAS 2
Ainda no topo do gamemode você precisa criar uma array para armazenar a gang no seu gamemode:
new Gang[MAX_PLAYERS];
No OnGameModeInit você precisa colocar todos os AddPlayerClass, vamos por como exemplo a skin da grove em primeiro:
AddPlayerClass(107,2478.2656,-1633.4364,13.4048,183.2906,24,120,25,150,28,999); //grove
Agora no OnPlayerRequestClass você precisa fazer com que a skin da grove seja da grove:
if(classid == 0) // como a primeira skin é da grove vamos colocar o numero zero aqui que significa que se você escolher a primeira skin você irá ser da gang da grove
{
Gang[playerid] = GROVE; //seta a gang, por isso criamos aquela array você pode usar o numero dela também que é 1
GameTextForPlayer(playerid,"grove",6000,6); // aparece o nome da gang quando você estiver na skin da grove
}
else if(classid == 1) //segunda skin dos AddPlayerClass
{
Gang[playerid] = BALLAS; //seta a gang ballas
GameTextForPlayer(playerid,"ballas",6000,6); nome da gang na tela
}
return 1;
}
Agora no OnPlayerRequestSpawn você precisa fazer com que cada gang tenha uma cor própria:
if(Gang[playerid] == GROVE)// se o time for grove a cor será verde
{
SetPlayerColor(playerid, 0x33AA33AA);//seta a cor verde em hexadecimal
}
else if(Gang[playerid] == BALLAS)//se o time for ballas a cor será roxo
{
SetPlayerColor(playerid, 0x9900FFAA);//seta a cor roxo em hexadecimal
}
Pronto já está criada suas gangs!
No topo do seu gamemode crie uma array para armazenar os assassinatos que o player fez:
new Kills[MAX_PLAYERS];
Agora para mortes:
new Mortes[MAX_PLAYERS];
Agora para Team Kills:
new TK[MAX_PLAYERS];
Agora vamos fazer o comando. No OnPlayerCommandText crie o comando que vai mostrar os status do player:
if (strcmp("/status", cmdtext, true, 10) == 0) // quando alguem digitar /status vai aparecer todos os status no chat
{
new stringkills[256]; //string para armazenar a mensagem de kills
new stringmortes[256]; //string para armazenar a mensagem de mortes
new stringtk[256]; //string para armazenar a mensagem de team kills
SendClientMessage(playerid,COR_VERDE,"Seus status:");
format(stringkills,sizeof(stringkills),"Kills: %d", Kills[playerid]); //no %d vai aparecer o numero de kills que você fez
SendClientMessage(playerid,0xFF9933AA, stringkills); // faz com que mostre no chat a mensagem que foi armazenada na string
format(stringmortes,sizeof(stringmortes),"Mortes: %d", Mortes[playerid]); // o mesmo que a mensagem anterior
SendClientMessage(playerid, 0xFF9933AA, stringmortes);// o mesmo que a mensagem anterior
format(stringtk,sizeof(stringtk),"Team Kills: %d", TK[playerid]);// o mesmo que a mensagem anterior
SendClientMessage(playerid, 0xFF9933AA, stringtk);// o mesmo que a mensagem anterior
return 1;
}
*OBS: Para aumentar o numero de kills, mortes e Team Kills, leia o 3º passo que estará explicando.
Como em todo gang war sempre tem o palhaço que mata alguem da própria gang. Agora veremos como fazer um sistema de Anti Team Kill que quando o jogador matar alguem da própria gang ele vai ser teleportado para prisão e ficará lá até ser morto por causa de tanta porrada que vai levar dos outros presos.
Agora no OnPlayerDeath precisamos criar o sistema:
Mortes[playerid]++; //se o player morrer os status de mortes dele aumenta +1
if(killerid == INVALID_PLAYER_ID) {
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason); // aparece quem matou, com o que e quem morreu
}
else if(Gang[playerid] == Gang[playerid]) // verifica se quem morreu é da mesma gang, se for ele será preso
{
SendClientMessage(killerid, 0xFF0000AA, "Não mate pessoas da mesma time que você! Você vai ficar preso até morrer"); // mesagem que vai ser enviada para o assassino
SetPlayerPos(killerid, 263.7945,77.4532,1001.0391); //isso teleportará o assassino até uma cela fexada na prisão
SetPlayerScore(killerid,GetPlayerScore(killerid) -1); // o score dele diminue -1
GivePlayerMoney(killerid, -500); // ele perde -500 de dinheiro
TK[killerid]++; //os status de team kill do assassino aumenta +1
Mortes[playerid]++;//aumenta os status de mortes do player que morreu em +1
}
else if(Gang[playerid] != Gang[playerid]) // caso o player tenha matado outro player que NÃO seja da mesma gang que ele, ele ganhará +1 de score e $500
{
SetPlayerScore(killerid,GetPlayerScore(killerid) +1); // aumenta o score do assassino em +1
GivePlayerMoney(killerid, 500);//aumenta o dinheiro do assassimo em $500
Kills[killerid]++;// aumenta os status de assassinatos do assassino em +1
Mortes[playerid]++;//aumenta os status de mortes do player que morreu em +1
}
E está pronto nosso gang war simples! Espero que tenha ajudado muita gente.
LEMBRANDO: Esse tutorial explica como fazer um gang war simples, é apenas para dar uma base de como fazer um melhor ainda que esse!
Feito por: Cr0Nos
E ai pessoal blz? Nesse artigo espero explicar a todos vocês como entrar na onda da programação pawn e de outras linguagens do jeito certo!
Bom, quando eu comecei, eu comecei do jeito errado e por isso estou aqui para que não aconteça o mesmo com vocês.
Aposto q muitos quando tentaram entrar na onda da programação pawn pensaram em fazer gamemode com isso, gamemode com aquilo, criar um gamemode de RPG que seja melhor do Brasil... Mas não sabe nem o que é uma array e já quer criar um SUPER MEGA IPER LIPER EXTRAORDINARIO RPG!
Isso é muito legal sonhar assim mas muito dificil de tornar realidade.
Por isso vou dar umas dicas de como começar de um jeito certo na programação:
- Estude matemática. Ela pode ajudar MUITO na programação!
- Estude logíca de programação, quando eu comecei a ler uma apostila que meu professor do curso me passou isso já abriu minha mente para criar grupos de códigos de programação em pawn que eu nem sabia que sabia fazer, ou seja, minha imaginação funcionou ao maximo!
- Faça gamemodes simples que leve poucas horas ou minutos, não adianta fazer um super rpg no papel e não conseguir fazer no pawn.
- Tente entender para que aquele código que você viu em algum gamemode serve, se você apenas copiar e colar não vai ajudar em nada em seu aprendizado.
- Tente fazer as coisas você mesmo, pedir pros outros comandos de fazer tal coisa ou de setar uma profissão de rpg não te ensina nada, só te deixa mais preguiçoso.
- Você não vai aprender a programar da noite pro dia!
- Antes de criar um comando crie algoritmos(isso se aprende em lógica de programação) para o que vai acontecer quando alguem digitar tal comando.
- Raciocine bastante e eu sei que sempre que tiver um erro que você não consegui resolver e fica quebrando a cabeça por horas você vai se irritar e talvez até desistir, mas é assim mesmo vc tem que prestar atenção em todas linhas de códigos e em cada detalhe.
- No começo você vai boiar e não entender quase nada, mas depois você vai se indentificar com a linguagem.
Isso foi o basico.
OBS: eu programo a +/- 8 meses
Feito por: Cr0Nos
A Rockstar Games confirmou hoje(06/08/2008) que esse ano, praticamente dia 18 de novembro desse ano(EUA), será lançada GTA IV versão para computador. Isso é de agradar muito os fãs de GTA e a mim também! :D
Então vão preparando as configurações de seus PCs e espere até GTA IV sair nas lojas o Brasil.
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...");
}
}
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 +/-
Feito por: Cr0Nos
Um dos melhores vídeos do GTA IV!
Bem legal e engraçado :D