Fui ajudar um amigo a colocar umas novas profissões no gamemode e vi que ele usava um jeito, digamos que chato de adicionar novas profissões, ou seja, fica aquele sobe e desce para adicionar cor, salбrio, nome da profissões etc....
Maioria dos gamemodes que encontro para download na comunidade sempre fazem suas profissões mais ou menos deste jeito:
Isto é um jeito chato pois toda hora que vocк for adicionar uma nova profissão tera que adicionar o Salario, Cor, Nome da Profissao, id da profissao e outros.
Deste jeito que eu vou trazer neste tutorial ficara um pouco dinamico na hora que for adicionar novos empregos a sua gamemode
Espero que o tutorial tenha sido de boa utilidade, caso tenha alguma sugestão ou critica etc... deixar abaixo , espero que eu tenha ajudado e tentei explicar o maximo que eu pude, se estiver algo de errado por favor me avisar
Maioria dos gamemodes que encontro para download na comunidade sempre fazem suas profissões mais ou menos deste jeito:
- Código:
#define PROF_TAXISTA (0) // Definir o ID da profissao
#define COR_TAXISTA 0x000000FF // Definir a Cor
enum PlayerInfo
{
pProfissao, // Variavel do emprego
};
new pInfo[MAX_PLAYERS][PlayerInfo];
stock PayDay(playerid)
{
switch(pInfo[playerid][pProfissao])
{
case PROF_TAXISTA: // Adicionar o Salбrio
{
SendClientMessage(playerid, -1, "vc й um taxista e recebeu 5mil de salбrio");
GivePlayerMoney(playerid, 5000);
}
......
}
return 1;
}
Isto é um jeito chato pois toda hora que vocк for adicionar uma nova profissão tera que adicionar o Salario, Cor, Nome da Profissao, id da profissao e outros.
Deste jeito que eu vou trazer neste tutorial ficara um pouco dinamico na hora que for adicionar novos empregos a sua gamemode
- Código:
enum PlayerInfo
{
pProfissao, // Variavel do emprego
};
new pInfo[MAX_PLAYERS][PlayerInfo];
// =====================================================================
enum EmpregoInfo // criaremos este enumerador e adicionamos as variaveis a baixo
{
eName[24], // Variavel do Nome da Profissao/Emprego
eSalario, // Variavel do Salбrio
eCor, // e a da cor
};
// Aqui estб a array com as informaзхes de cada profissao, o primeiro parametro deixaremos sem valor pois sempre que adicionamos uma nova linha
// Nгo precisaremos alterar o valor a cada vez que acrescentar uma nova profissao
new eInfo[][EmpregoInfo] =
{
{"Taxista", 5000, 0x000000FF}, // Coloque as informaзхes do emprego na ordem do enumador, primeiro o nome, depois o salбrio e a cor.
{"Motoboy", 4000, 0x090580FF},
{"Carteiro", 2000, 0x19558AFF}
};
// OBS: o ID do emprego serб de acordo na ordem da array, Ex: o ID do Carteiro й 2 e o Taxista й 0 (A Lista sempre comeзa do 0), e o Motoboy й 1
// quando definir o valor da variavel do emprego pInfo[playerid][pProfissao] vocк usarб o numero no qual a profissao se encontra na lista, no caso
// queremos setar o jogador para a profissao de motoboy usaremos: pInfo[playerid][pProfissao] = 1;
// lembrando, que vocк pode usar macros para definir o id de cada profissгo, #define motoboy 1
// ai vocк nгo se confunde quando setar alguma profissгo, ao inves de usar pInfo[playerid[pProfissao] = 1;
// vocк pode usar pInfo[playerid][pProfissao] = motoboy; para setar a profisssгo
// Feito isso poderemos fazer o sistema de pagamento sem precisar ficar checando profissao por profissao
stock PayDay(playerid)
{
new profissaoid = pInfo[playerid][pProfissao]; // para ficar mais simples, irei criar uma variavel chamada profissaoid e setarei o valor dela com o valor da variavel do emprego
printf("Voce й um %s e recebeu: %i de salбrio", eInfo[profissaoid][eName], eInfo[profissaoid][eSalario]);
GivePlayerMoney(playerid, eInfo[profissaoid][eSalario]); // aqui iremos dar o dinheiro ao jogador, o valor dele serб pego na array e o parametro profissaoid й o id ou ordem que ele fica na lista
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerColor(playerid, eInfo[pInfo[playerid][pProfissao]][eCor]);
// Setamos a cor do jogador OBS: ao inves de criar uma variavel e setaro valor dela com o valor da variavel de emprego
// eu jб coloquei a variavel do id do emprego direto no parametro da variavel de cor
return 1;
}
Espero que o tutorial tenha sido de boa utilidade, caso tenha alguma sugestão ou critica etc... deixar abaixo , espero que eu tenha ajudado e tentei explicar o maximo que eu pude, se estiver algo de errado por favor me avisar
@Edit
Agradecimentos ao FIN4L por me avisar sobre os macros
Creditos: JPedro