E ai pessoal Da Rockfeller 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.
1.:: Criando gangs ::.
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 setar 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!
2.:: Criando comando de mostrar status(kills,mortes,teamkills) do player::.
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 mostrar o numero de kills na mensagem
new stringmortes[256]; //string para mostrar o numero de mortes na mensagem
new stringtk[256]; //string para mostrar o numero de Tema Kills na mensagem
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 feita a cima por meio da string de kills
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.
3.:: Criando sistema de Anti Team Kill::.
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
}
Novidades
0 comentários:
Postar um comentário