[Tutorial] How to: Jobs
#1

How to: Jobs

Нndice

• Introduзгo
• Conceito
• Primeiros passos
• Dar privilйgios
• Pagamento
• Conclusгo
• Outros
• Crйditos

Introduзгo
Sejam bem vindos a um novo tutorial, este tutorial iremos abordar o tema de criaзгo de empregos, que й usado por servidores RP/G, entгo esteja atento porque isto nгo й nenhum quebra cabeзas.

Conceito
O meu conceito para criar um sistema de empregos й apenas usar uma variavel que declara o emprego e usar uma enumeraзгo que declara os id's dos empregos, entгo vamos ao trabalho.

Primeiros Passos
Os primeiros passos sгo muito simples, comeзando pela declaraзгo da variavel inicial, neste caso como tipico de todos os gamemodes, existe um enum, ou seja, uma enumeraзгo chamada pInfo, entгo caso existe essa enum, voce terб que fazer isto

pawn Код:
enum pInfo{
    ..., //as variaveis que voce jб tem definidas
    pJobs
};
veja um exemplo aqui http://pastebin.com/H47DGGV5

Caso voce nгo tenha um enum e queira fazer um cуdigo a parte, voce pode fazer assim

pawn Код:
new player_jobs[MAX_PLAYERS];
Entгo aqui jб podemos ter a noзгo, digamos que isto й a base, agora o que nуs fazemos й o seguinte, criamos uma enumeraзгo com todo o tipo de empregos que queremos, veja este exemplo

pawn Код:
enum {
    PLAYER_JOB_DESEMPREGADO, //ID = 0
    PLAYER_JOB_ADVOGADO, //ID = 1
    PLAYER_JOB_MECANICO, //ID = 2
    PLAYER_JOB_TAXISTA, //ID = 3
    PLAYER_JOB_ENTRAGA_PIZZAS, //ID = 4
    PLAYER_JOB_TRAFFICANTE_DROGAS, //ID = 5
    PLAYER_JOB_TRAFFICANTE_ARMAS //ID = 6
}
Tambйm pode usar #define , veja o exemplo http://pastebin.com/WaYWmxY8

Eu acho mais complexo usar enum, mas tudo bem, fica ao seu critйrio.

Dar privilйgios
Dar privilйgios nгo й algo complicado, vocк apenas terб que usar a variбvel e definir um valor para ela.

Com enum:
pawn Код:
PlayerInfo[playerid][pJobs] = PLAYER_JOB_MECANICO //definimos o valor da variavel para 3
Sem enum, com variбvel global:
pawn Код:
player_jobs[playerid] = PLAYER_JOB_MECANICO //definimos o valor da variavel para 3
Entгo como pode ver nгo й nenhum quebra cabeзas, agora caso voce queira verificar se o emprego do jogador й igual ao emprego X, й muito simples, sу usar um operador ==

Com enum:
pawn Код:
if(PlayerInfo[playerid][pJobs] == PLAYER_JOB_MECANICO)
    SendClientMessage(playerid,-1,"Vocк й mecвnico!");
else
    SendClientMessage(playerid,-1,"Vocк nгo й mecвnico!");
Com variбvel global:
pawn Код:
if(player_jobs[playerid] == PLAYER_JOB_MECANICO)
    SendClientMessage(playerid,-1,"Vocк й mecвnico!");
else
    SendClientMessage(playerid,-1,"Vocк nгo й mecвnico!");
Pagamento
Quando se trata ao pagamento basta pensar nas quantias que voce deseja dar, eu no meu caso uso uma enumeraзгo, veja.

pawn Код:
enum {
    PAY_JOB_DESEMPREGADO = 100,
    PAY_JOB_ADVOGADO = 500,
    PAY_JOB_MECANICO = 372,
    PAY_JOB_TAXISTA = 217,
    PAY_JOB_ENTRAGA_PIZZAS = 174,
    PAY_JOB_TRAFFICANTE_DROGAS = 348,
    PAY_JOB_TRAFFICANTE_ARMAS = 438
};
Vocк tambйm pode colocar um define, mas eu acho que fica mais ъtil um enum, pois enum vem do prefixo de enumeraзгo, neste caso nуs estamos a enumerar uns valores, mas veja o exemplo em #define http://pastebin.com/gqLjfe3b

Entгo, agora temos que aplicar em pratica, normalmente em todos os servidores usamos uma callback chamada Payday, entгo usando o operador == e a nossa enumeraзгo com os salбrios, obtemos o seguinte cуdigo

pawn Код:
public Payday(){
    for(new i; i<GetMaxPlayers(); ++i){
        if(PlayerInfo[i][pJobs] == PLAYER_JOB_DESEMPREGADO)
            GivePlayerMoney(playerid,PAY_JOB_DESEMPREGADO)
        else if(PlayerInfo[i][pJobs] == PLAYER_JOB_ADVOGADO)
            GivePlayerMoney(playerid,PAY_JOB_ADVOGADO)
        else if(PlayerInfo[i][pJobs] == PLAYER_JOB_TAXISTA)
            GivePlayerMoney(playerid,PAY_JOB_TAXISTA)
        //O resto do seu codigo...  
    }
}
Caso nгo use uma enum e sim uma variбvel global veja aqui http://pastebin.com/r1CDQqZc

Conclusгo


Entгo este foi o nosso tutorial, espero que isto ajude-vos a entender mais sobre PAWN e como criar um sistema de empregos simples.

Outros


Caso voce esteja disposto a aprender mais pode ver alguns tutoriais que eu recomendo.

How to: bcmd
Dicas e Truques de Optimizaзхes
Sistema de Level com Respeito
Formataзгo de Strings
Optimizaзхes
MySQL

Crйditos

  • BlueX
    • Criador do tutorial
  • [iPs]TeaM
    • Melhor equipe de programaзгo
  • SA-MP Team
    • Passado \ Presente \ Futuro
Reply
#2

Que lixo -> Brinks Portuga... Se sabe que te amo!
Very Nice!
Reply
#3

Noob. Gostei *-*
Reply
#4

Quote:
Originally Posted by paulor
Посмотреть сообщение
Que lixo -> Brinks Portuga... Se sabe que te amo!
Very Nice!
Obrigado
Tambйm me amo

Quote:
Originally Posted by .FuneraL.
Посмотреть сообщение
Noob. Gostei *-*
Obrigado
Reply
#5

Que lixo , qualquer feto faz melhor !!!!

Acho que eu tava zuando ?


Vocк ta certo
okay'



Muito bom .
Reply
#6

Massa.. Parabens belo tuto e muita paciencia kkkk'
Reply
#7

Quote:
Originally Posted by Ades
Посмотреть сообщение
Que lixo , qualquer feto faz melhor !!!!

Acho que eu tava zuando ?


Vocк ta certo
okay'



Muito bom .
Achei que tava zuando sim, esse espaзo grande eu vi logo que voce estava zuando
Mas obrigado na mesma

Quote:
Originally Posted by Tony_Rodrigues
Посмотреть сообщение
Massa.. Parabens belo tuto e muita paciencia kkkk'
Ah nгo precisa de paciкncia, eu apenas fiz por fazer, й um habito meu fazer tutoriais.
Obrigado
Reply
#8

Tem skype bluex? Se tiver passa pra gente trocar umas нdeias
Reply
#9

Quote:
Originally Posted by Tony_Rodrigues
Посмотреть сообщение
Tem skype bluex? Se tiver passa pra gente trocar umas нdeias
Pode usar PM ou ir no meu perfil
Reply
#10

Set/GetPlayerTeam adiciona dessa forma tambйm.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)