[Tutorial] Iniciando sistema de emprego
#1

Quote:
Originally Posted by Don_Speed
Посмотреть сообщение
Sei que estou sumido , mas vim ajudar alguns

OBS:VARIAVEL - NEW UTILIZADA PARA GUARDAR INFORMAЗOES


E simples mas vai ajudar as pessoas que tem duvidas em relaзгo a isto.


Bom isso e muito facil de fazer , e uma variavel que salva o id do seu emprego!

Por Exemplo
PHP код:
new MeuEmprego[MAX_PLAYERS]; 
Para dar o nome ao emprego muitos usam uma define para cada numero mas a melhor coisa e usar uma variavel msm .

Por Exemplo
PHP код:
new NomesP[][80] = {
{
"Civil"},
{
"Caminhoneiro"},
{
"Advogado"}
}; 
Para carregar o nome da profissao que vocк esta no momento e simples
PHP код:
Nomesp[Variavel do emprego do jogador
Por Exemplo
PHP код:
Nomesp[MeuEmprego[playerid]] 
PHP код:
format(Donsizeof Don,"Vocк esta no emprego %s."Nomesp[Variavel do emprego do jogador]); 
Exemplo em uma msg
PHP код:
format(Donsizeof Don,"Vocк esta no emprego %s."Nomesp[MeuEmprego[playerid]]); 
Isso funciona tambem com as cores
Por Exemplo
PHP код:
new CorP[][80] = {
{
"0xFFFFFF22"},
{
"0xFFFFFF21"},
{
"0xFFFFFF20"}
}; 
PHP код:
SetPlayerColor(playeridCorP[Variavel do emprego do jogador]); 
Por Exemplo
PHP код:
SetPlayerColor(playeridCorP[MeuEmprego[playerid]]); 


Com essas dicas vocк podera economizar muitas linhas em seu gamemode ! Experiencia propria .
Venho atualizar meu tutorial para uma forma diferente!

Aprimeira coisa que hб necessidade de saber que irб precisar de UMA variavel para guardar o id do emprego do jogador.
Neste exemplo vou usar o mais comum .
PHP код:
enum pInfo {
     
Emprego
}
new 
PlayerInfo[MAX_PLAYERS][pInfo]; 
Agora vamos criar uma define para facilitar a vida , esta define ira estar a quantidade total de empregos.
Vamos usar uma enum para definir nome e salario de cada emprego.
PHP код:
#define MAX_EMPREGO   3 // Quatidade de emprego + desempregado (0)
enum pEmprego{
     
Nome[24], //Nome do emprego
     
Salario //Salario deste emprego (EX: recebera no payday)
}// Pode ser adicionado mais opзoes como cores e etc ...
new Empregos[MAX_EMPREGO][pEmprego] = { // Variavel que guarda as informaзoes
{"Desempregado"100}, // Nome , Salario
{"Entregador"900}, // Nome , Salario
{"Motorista"1000// Nome , Salario
}; 
Bom ja tenho a base do sistema.
Agora vamos fazer um comando para pegar emprego em dialog. ( LEMBRE-SE DE CRIAR A DEFINIЗГO OU A ENUM DA DIALOG )
neste exemplo usaremos zcmd
PHP код:
#define DIALOG_EMPREGO 544
command(pegarempregoplayeridparams[])
{
    new 
corda[100],String[100];
    if(
PlayerInfo[playerid][Emprego] > 0)return SendClientMessage(playerid, -1"Erro vocк ja possui emprego(/sairdoemprego).");// Se ja tiver emprego
    
for(new ds 1ds MAX_EMPREGOds++)// Loop tera que comeзar do 1 ja que 0 e desemprego
    
{
            
format(Stringsizeof String,"Emprego: %s | Salario: R$ %d,00\n"Empregos[ds][Nome], Empregos[ds][Salario]);// Nome , Salario aparecera na dialog
            
strcat(cordaString);//Corda para dialog para aparecer todas opзoes do loop
    
}
    
ShowPlayerDialog(playeridDIALOG_EMPREGODIALOG_STYLE_LIST"Empregos disponiveis"corda"Selecionar""Sair");
    return 
true;

O comando ja ficou algo mais limpo a resposta do dialog tambem e algo que pode se dizer facil.

PHP код:
public OnDialogResponse[playeriddialogidresponselistiteminputtext[]]
{
    switch(
dialogid)
    {
              case 
DIALOG_EMPREGO:
           {
                if(!
response)return true// Se apertar sair fecha dialog
                
                
new String[80];
                
format(Stringsizeof String,"{FFFFFF}Parabйns agora vocк trabalha de {FF0000}%s{FFFFFF}."Empregos[listitem+1][Nome]);
                
SendClientMessage(playerid, -1String);
                
                
PlayerInfo[playerid][Emprego] = listitem+1;// no dialoglist , ele da a lista comeзando do zero entгo hб necessidade de usar listitem+1
                // para dar o id correto do emprego selecionado
           
}
    }
    return 
true;

Ao meu ver chega ser inutil demonstar uma forma de fazer o /sairdoemprego , mas como sei como o povo e , ja que ja fui assim no comeзo.
PHP код:
command(sairdoempregoplayeridparams[])
{
    if(
PlayerInfo[playerid][Emprego] == 0)return SendClientMessage(playerid, -1"Erro vocк nгo possui emprego.");// Verifica se ja nгo e desempregado
    
SendClientMessage(playerid, -1"Agora vocк esta desempregrado.");
    
PlayerInfo[playerid][Emprego] = 0;
    return 
true;

Agora para demonstrar para um simples sistema de payday.
Vou fazer algo basico ja que isso varia da ideial para cada gamemode.
Vamos criar um settimerex para ele receber este payday.
PHP код:
public OnPlayerConnect(playerid)
{
     
SetTimerEx("Payday"1000*60*30true"i"playerid);// 1000*60*30 = 30 Min logado
     
return true;

Vamos fazer esta resposta basica para demonstrar como funciona.
PHP код:
forward Payday(playerid);
public 
Payday(playerid)
{
     new 
String[80];
     
SendClientMessage(playerid, -1"PAYDAY:");
     
     
format(Stringsizeof String"Emprego: %s",Empregos[PlayerInfo[playerid][Emprego]][Nome]); // Puxa da Variavel PlayerInfo[playerid][Emprego] o id de seu emprego
     
SendClientMessage(playerid, -1String);
     
     
format(Stringsizeof String"Salario: R$ %d,00",Empregos[PlayerInfo[playerid][Emprego]][Salario]);// Puxa da Variavel PlayerInfo[playerid][Emprego] o valor de seu pagamento
     
SendClientMessage(playerid, -1String);
     
     
GiveplayerMoney(playerid, +Empregos[PlayerInfo[playerid][Emprego]][Salario]);// Puxa da Variavel PlayerInfo[playerid][Emprego]o valor de seu pagamento e adiciona
     
return true;

Nгo e a melhor , nгo e a mais eficaz , mas e a que achei mais facil para ser feito .
Uso este metodo em meu gamemode.
PS: Pode ser adicionado mais opзoes neste sistema de emprego , Level necessario , Estudo , Cor entre outros ...


Nгo sou obrigado a agradar a todos , se vim cagar no topico nem digita.
Vlw Flw
Reply
#2

Simples, porйm ъtil
Reply
#3

pawn Код:
enum MeuEmprego
{
    bool:Civil,
    bool:Caminhoneiro,
    bool:Adivogado
}

new PlayerInfo[MAX_PLAYERS][MeuEmprego];
Acho melhor usando enum , mas tanto faz, nгo sei de que maneira seja melhor, tanto pode ser usado bool ou nгo, mas prefiro bool.

tб muito simples, poderia explicar como algum player de alguma dessas profissхes possa usar comandos especificos , tipo

pawn Код:
CMD:testando(playerid, params[])
{
    if(PlayerInfo[playerid][Caminhoneiro] == false) return SendClientMessage(playerid, -1, "Nгo йs um caminhoneiro");

    SendClientMessage(playerid, -1, "Sou caminhoneiro");
    return true;
}
Dar informaзхes de como setar um caminhoneiro para um local, como no spawn..
isso pode parecer coisas simples , porйm sгo bem uteis para iniciantes.

pawn Код:
public OnPlayerSpawn(playerid)
{
    if(PlayerInfo[playerid][Caminhoneiro] == true)
    {
        SetPlayerPos(playerid, Float:x,Float:y,Float:z);
        // Outras Funзхes...
        return true;
    }
    return 1;
}
Bom trabalho, abraзos...
Reply
#4

Quote:
Originally Posted by BieeelEvolution
Посмотреть сообщение
Simples, porйm ъtil
Vlw era essa a intenзгo .

Quote:
Originally Posted by Lipe_Stronda
Посмотреть сообщение
pawn Код:
enum MeuEmprego
{
    bool:Civil,
    bool:Caminhoneiro,
    bool:Adivogado
}

new PlayerInfo[MAX_PLAYERS][MeuEmprego];
Acho melhor usando enum , mas tanto faz, nгo sei de que maneira seja melhor, tanto pode ser usado bool ou nгo, mas prefiro bool.

tб muito simples, poderia explicar como algum player de alguma dessas profissхes possa usar comandos especificos , tipo

pawn Код:
CMD:testando(playerid, params[])
{
    if(PlayerInfo[playerid][Caminhoneiro] == false) return SendClientMessage(playerid, -1, "Nгo йs um caminhoneiro");

    SendClientMessage(playerid, -1, "Sou caminhoneiro");
    return true;
}
Dar informaзхes de como setar um caminhoneiro para um local, como no spawn..
isso pode parecer coisas simples , porйm sгo bem uteis para iniciantes.

pawn Код:
public OnPlayerSpawn(playerid)
{
    if(PlayerInfo[playerid][Caminhoneiro] == true)
    {
        SetPlayerPos(playerid, Float:x,Float:y,Float:z);
        // Outras Funзхes...
        return true;
    }
    return 1;
}
Bom trabalho, abraзos...
Quote:
Originally Posted by Don_Speed
Посмотреть сообщение

Com essas dicas vocк podera economizar muitas linhas em seu gamemode ! Experiencia propria .
Reply
#5

Simples e muito funcional , Jб ajudou aq pra eu ter uma base rs.
Reply
#6

Depende da organizaзгo, se um sistema й bem feito e organizado, pode ser utilizado diretivas(define), enumeradores(enum) vetores(new vector[]), arrays(new array[][]), enfim, basta ter organizaзгo.

Huuum, esta meio confuso isso ai, uma vez que:
pawn Код:
Nomesp[MeuEmprego[playerid]]
Seja necessбrio informar qual й o ID(identificador) sobre o vetor:
pawn Код:
MeuEmprego[MAX_PLAYERS];
responsбvel pela org/facзгo que o player vai receber.

Quero dizer que й necessбrio atribuir o valor as variбveis e vetores, embora esteja funcionando, mesmo assim vai ser necessбrio definir um ID para X organizaзгo, caso contrario essa estrutura nгo vai funcionar muito bem.

Reveja isso ai amigo...


Voltou para ficar? hehe
Reply
#7

Sendo sincero, acho inъtil este tipo de tutorial, й como vocк ensinar um cego a atirar. O que quero dizer, й que nгo adianta chegar e jogar o cуdigo, e explicar com simples palavras o que faz.

Seria mil vezes mais ъtil explicar sobre variбveis(mesmo que jб exista milhares de tutoriais do tipo e os 'scripters' daqui nгo dгo valor, mas isto nгo vem ao caso).
O problema principal do povo daqui, й que nгo querem aprender a programar, mas sim querem criar um servidor.

Tenho quase certeza que 90% das pessoas que frequentam este fуrum nгo sabe o que й uma variбvel, mas se vocк falar: "Ah, й aquilo que guarda o ID da org do jogador", grande parte desses 95% vгo "saber", e dizer que й uma "new".

Ou seja, antes de se ir pra prбtica, deve-se saber um pouco da teoria. Й como matemбtica, difнcil para alguns, fбcil para quem conhece suas "bases".

Infelizmente essa й a realidade desse fуrum. Me desculpe caso lhe causei algum transtorno, nгo foi a minha intenзгo.
Reply
#8

pawn Код:
#define Emprego0 1
#define Emprego1 2

#define CorEmprego0 -1
#define CorEmprego1 -1
Quote:
Originally Posted by Don_Speed
Посмотреть сообщение
Com essas dicas vocк poderб economizar muitas linhas em seu gamemode ! Experiencia propria .
Reply
#9

Quote:
Originally Posted by Schocc
Посмотреть сообщение
Depende da organizaзгo, se um sistema й bem feito e organizado, pode ser utilizado diretivas(define), enumeradores(enum) vetores(new vector[]), arrays(new array[][]), enfim, basta ter organizaзгo.

Huuum, esta meio confuso isso ai, uma vez que:
pawn Код:
Nomesp[MeuEmprego[playerid]]
Seja necessбrio informar qual й o ID(identificador) sobre o vetor:
pawn Код:
MeuEmprego[MAX_PLAYERS];
responsбvel pela org/facзгo que o player vai receber.

Quero dizer que й necessбrio atribuir o valor as variбveis e vetores, embora esteja funcionando, mesmo assim vai ser necessбrio definir um ID para X organizaзгo, caso contrario essa estrutura nгo vai funcionar muito bem.

Reveja isso ai amigo...


Voltou para ficar? hehe
Ok , vou rever .
Nгo trabalho nгo deixa .


Quote:
Originally Posted by Dolby
Посмотреть сообщение
Sendo sincero, acho inъtil este tipo de tutorial, й como vocк ensinar um cego a atirar. O que quero dizer, й que nгo adianta chegar e jogar o cуdigo, e explicar com simples palavras o que faz.

Seria mil vezes mais ъtil explicar sobre variбveis(mesmo que jб exista milhares de tutoriais do tipo e os 'scripters' daqui nгo dгo valor, mas isto nгo vem ao caso).
O problema principal do povo daqui, й que nгo querem aprender a programar, mas sim querem criar um servidor.

Tenho quase certeza que 90% das pessoas que frequentam este fуrum nгo sabe o que й uma variбvel, mas se vocк falar: "Ah, й aquilo que guarda o ID da org do jogador", grande parte desses 95% vгo "saber", e dizer que й uma "new".

Ou seja, antes de se ir pra prбtica, deve-se saber um pouco da teoria. Й como matemбtica, difнcil para alguns, fбcil para quem conhece suas "bases".

Infelizmente essa й a realidade desse fуrum. Me desculpe caso lhe causei algum transtorno, nгo foi a minha intenзгo.
Bom muitos iriam te xingar , se sabe bem disso , mas vlw por dar sua opiniгo .
Reply
#10

Como faзo pra setar ?
Tipo, pro cara virar um caminhoneiro tenho que escrever como ?

Meu_Emprego[playerid] = "caminhoneiro" ?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)