#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;
}
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;
}
Bacana mano, ira ajudar muitos novato a ter uma base! +REP
|
Bacana, irar ajudar Muitas pessoas que quiserem criar um gm de RPG.
|
Parabйns vocк teve o mesmo intuito que o Juniiro3 em Usando matrizes para agilizar o desenvolvimento
|
Interessante, porйm o PayDay deveria ser em uma callback com timer, pois assim vocк dб dinheiro de tempos em tempos...
|
Jб que й um sistema de empregos, um RPG, o PAYDAY tinha que rodar por dias trabalhados, quem derб se eu ficasse com uma profissгo sem fazer nada, e continuar recebendo meu salбrio, um sonho.
A base estб interessante..Parabйns |
Serб que poderia me dar um exemplo de uso ?
sei la por exemplo .. um comando que ao ser usado, transforma o player na profissгo |
enum Prof { bool:Gari, bool:Pedreiro, bool:Prefeito, bool:Taxista } new pInfo[MAX_PLAYERS][Prof]; CMD:queroser(playerid, params[]) { if(isnull(params)) return SendClientMessage(playerid, -1, "/queroser <profissao>"); if(strcmp(params, "Gari", true) == 0) { pInfo[playerid][Gari] = true; SendClientMessage(playerid, -1, "Agora vocк й um Gari."); } else if(strcmp(params, "Pedreiro", true) == 0) { pInfo[playerid][Pedreiro] = true; SendClientMessage(playerid, -1, "Agora vocк й um Pedreiro."); } else if(strcmp(params, "Prefeito", true) == 0) { pInfo[playerid][Prefeito] = true; SendClientMessage(playerid, -1, "Agora vocк й um Prefeito."); } else if(strcmp(params, "Taxista", true) == 0) { pInfo[playerid][Taxista] = true; SendClientMessage(playerid, -1, "Agora vocк й um Taxista."); } return 1; }
Serб que poderia me dar um exemplo de uso ?
sei la por exemplo .. um comando que ao ser usado, transforma o player na profissгo |
setando uma variavel com o valor do emprego
Ex: 0 = Desempregado, 1 = Taxista, 2 = Motoboy para setar o emprego do jogador basta apenas trocar o valor da variavel do emprego no caso eu utilizo a pInfo[playerid][pProfissao] ai para setar o emprego vocк pode usar um dialog, menu ou atй comando para setar a profissao desejada pInfo[playerid][pProfissao] = 1; // setei o jogador para Taxista pInfo[playerid][pProfissao] = 2; // setei o jogador para Motoboy dai por diante vocк vai setando as profissхes, lembrando que os numeros vгo de acordo da ordem onde vocк colocou o emprego na Array eInfo |
#define Taxista 1 #define Motoboy 2 pInfo[playerid][pProfissao] = Taxista; // setei o jogador para Taxista pInfo[playerid][pProfissao] = Motoboy; // setei o jogador para Motoboy
Sу pra reforзar essa questгo de definir profissгo por nъmeros e nгo por constante, й interessante usar os macros para este caso, assim fica mais fбcil de trabalhar com as profissхes:
Код:
#define Taxista 1 #define Motoboy 2 pInfo[playerid][pProfissao] = Taxista; // setei o jogador para Taxista pInfo[playerid][pProfissao] = Motoboy; // setei o jogador para Motoboy |
E tipo como faзo pra um comando funcionar so pra determinada profissгo?
|
CMD:Comando(playerid) { if(pInfo[playerid][pProfissao] == Taxista) //em Taxista coloque a Profissгo. { // Codigo } else return 0; return 1; }