SA-MP Forums Archive
[Ajuda] Salario - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Salario (/showthread.php?tid=627412)



Salario - DarkZin - 27.01.2017

Como posso fazer uma verificaзгo de profissгo neste cуdigo, e apenas deixar membros de tal profissгo receberem o salario?


PHP код:
/*         FORWARDS              */
forward Salario(playerid);
/*      PUBLIC'S CRIDADAS         */
public Salario(playerid)
{
for(new 
iMAX_PLAYERS; ++i)
    {
        
SendClientMessage(i, -1"Vocк recebeu seu salario!");
        
SendClientMessage (i, -1"Seu salario й de $3000");
        
SendClientMessage (i, -1"Vocк tambem ganhou um bonus  de $2000 por jogar em nosso servidor");
        
SendClientMessage (i, -1"O salario й a cada 1 hora");
        
GivePlayerMoney (i,5000);
    }
return 
1;




Re: Salario - TheBob - 27.01.2017

Idente com as variaveis do seu cуdigo(de trampos)
vou dar um exemplo:
Код:
/*         FORWARDS              */ 

forward Salario(playerid); 


/*      PUBLIC'S CRIDADAS         */ 

public Salario(playerid) 
{ 
for(new i; i < MAX_PLAYERS; ++i) 
    { 
        if(Profissгo[playerid] = Bombeiro){
        SendClientMessage(i, -1, "Vocк recebeu seu salario!"); 
        SendClientMessage (i, -1, "Seu salario й de $3000"); 
        SendClientMessage (i, -1, "Vocк tambem ganhou um bonus  de $2000 por jogar em nosso servidor"); 
        SendClientMessage (i, -1, "O salario й a cada 1 hora"); 
        GivePlayerMoney (i,5000); 
        }
        if(Profissгo[playerid] = PoliciaMilitar){
        SendClientMessage(i, -1, "Vocк recebeu seu salario!"); 
        SendClientMessage (i, -1, "Seu salario й de $3000"); 
        SendClientMessage (i, -1, "Vocк tambem ganhou um bonus  de $2000 por jogar em nosso servidor"); 
        SendClientMessage (i, -1, "O salario й a cada 1 hora"); 
        GivePlayerMoney (i,5000); 
        }
        if(Profissгo[playerid] = Lixeiro){
        SendClientMessage(i, -1, "Vocк recebeu seu salario!"); 
        SendClientMessage (i, -1, "Seu salario й de $3000"); 
        SendClientMessage (i, -1, "Vocк tambem ganhou um bonus  de $2000 por jogar em nosso servidor"); 
        SendClientMessage (i, -1, "O salario й a cada 1 hora"); 
        GivePlayerMoney (i,5000);
        }

    } 
return 1; 
}



Re: Salario - Carlos001 - 27.01.2017

PHP код:
/*         FORWARDS              */ 
forward Salario(playerid); 
/*      PUBLIC'S CRIDADAS         */ 
public Salario(playerid

for(new 
iMAX_PLAYERS; ++i
    { 
        
SendClientMessage(i, -1"Vocк recebeu seu salario!"); 
        
SendClientMessage (i, -1"Seu salario й de $3000"); 
        
SendClientMessage (i, -1"Vocк tambem ganhou um bonus  de $2000 por jogar em nosso servidor"); 
        
SendClientMessage (i, -1"O salario й a cada 1 hora"); 
        if(
pInfo[i][ProfID] == ID)
        {
        
SendClientMessage(i, -1,"voce e de tal profissao e ganhou R$??");
        
GivePlayerMoney (i,5000); 
        }
    } 
return 
1

Pequena base, agora sу adaptar e fazer o resto das verificaзхes.


Re: Salario - DarkZin - 27.01.2017

Vlws !


Re: Salario - Whoo - 27.01.2017

Quote:
Originally Posted by TheBob
Посмотреть сообщение
Idente com as variaveis do seu cуdigo(de trampos)
vou dar um exemplo:
Код:
/*         FORWARDS              */ 

forward Salario(playerid); 


/*      PUBLIC'S CRIDADAS         */ 

public Salario(playerid) 
{ 
for(new i; i < MAX_PLAYERS; ++i) 
    { 
        if(Profissгo[playerid] = Bombeiro){
        SendClientMessage(i, -1, "Vocк recebeu seu salario!"); 
        SendClientMessage (i, -1, "Seu salario й de $3000"); 
        SendClientMessage (i, -1, "Vocк tambem ganhou um bonus  de $2000 por jogar em nosso servidor"); 
        SendClientMessage (i, -1, "O salario й a cada 1 hora"); 
        GivePlayerMoney (i,5000); 
        }
        if(Profissгo[playerid] = PoliciaMilitar){
        SendClientMessage(i, -1, "Vocк recebeu seu salario!"); 
        SendClientMessage (i, -1, "Seu salario й de $3000"); 
        SendClientMessage (i, -1, "Vocк tambem ganhou um bonus  de $2000 por jogar em nosso servidor"); 
        SendClientMessage (i, -1, "O salario й a cada 1 hora"); 
        GivePlayerMoney (i,5000); 
        }
        if(Profissгo[playerid] = Lixeiro){
        SendClientMessage(i, -1, "Vocк recebeu seu salario!"); 
        SendClientMessage (i, -1, "Seu salario й de $3000"); 
        SendClientMessage (i, -1, "Vocк tambem ganhou um bonus  de $2000 por jogar em nosso servidor"); 
        SendClientMessage (i, -1, "O salario й a cada 1 hora"); 
        GivePlayerMoney (i,5000);
        }

    } 
return 1; 
}
vocк fez um loop nao verifico se o player esta conectado e ainda fez um verificaзгo do playerid e nao do valor do i


Re: Salario - JonathanFeitosa - 27.01.2017

Vocк tem duas opзхes.

A primeira й usar o Salбrio como padrгo. Sendo recebida a cada 1 hora independente do horбrio que a pessoa entrar como й em alguns GM de RPG atuais. Ai vocк usa um SetTimer normal. Caso contrбrio, se quiser botar para contar o TEMPO quando o player entrar no servidor, vocк deve utilizar SetTimerEx. O uso do Loop no SetTimer й essencial e no SetTimerEx й desprezнvel.

A verificaзгo й sу uma condiзгo, mas com ( == ) e nгo ( = ) como alguйm botou acima.


Re: Salario - DarkZin - 27.01.2017

Quote:
Originally Posted by JonathanFeitosa
Посмотреть сообщение
Vocк tem duas opзхes.

A primeira й usar o Salбrio como padrгo. Sendo recebida a cada 1 hora independente do horбrio que a pessoa entrar como й em alguns GM de RPG atuais. Ai vocк usa um SetTimer normal. Caso contrбrio, se quiser botar para contar o TEMPO quando o player entrar no servidor, vocк deve utilizar SetTimerEx. O uso do Loop no SetTimer й essencial e no SetTimerEx й desprezнvel.

A verificaзгo й sу uma condiзгo, mas com ( == ) e nгo ( = ) como alguйm botou acima.
Olha o que eu fiz com base:


PHP код:
/*         FORWARDS              */
forward Salario(playerid);
/*      PUBLIC'S CRIDADAS         */
public Salario(playerid//salario
{
for(new 
iMAX_PLAYERS; ++i)
    {
        if(
CarroF[playerid] == true)
        {
        
SendClientMessage(iAmarelo"-------------SALARIO--------------!");
        
SendClientMessage (iAmarelo"Salario: {FFFFFF}$900");
        
SendClientMessage (iAmarelo"O salario й a cada {FFFFFF}1 hora");
        
SendClientMessage(iAmarelo"-------------SALARIO--------------!");
        
GivePlayerMoney (i,900);
        }
        else
        {
        
SendClientMessage(iAmarelo"-------------SALARIO--------------!");
        
SendClientMessage (iAmarelo"Salario Desempregado: {FFFFFF}$200");
        
SendClientMessage (iAmarelo"O salario й a cada {FFFFFF}1 hora");
        
SendClientMessage(iAmarelo"-------------SALARIO--------------!");
        
GivePlayerMoney (i,900);
        return 
1;
        }
    } 
Ta certo? tem algo pra mudar ai pra ficar melhor?

PS: Compilei e deu certinho, testei tambйm no jogo e foi do jeito que queria. Mas se faltar alguma otimizaзгo ai, ou algum detalhe, ta ai o code pra quem quiser ajudar


Re: Salario - JonathanFeitosa - 28.01.2017

Seu cуdigo sу irб funcionar para o ID 0. Logo, se ele tiver emprego, todos do servidor vгo estб empregado. E se ele nгo tiver emprego, todos desempregados.

Como eu bem mencionei, jб que vocк usa o Loop, nгo precisa passar como parвmetro playerid ( mesmo caso dos settimers que eu citei )

Logo, troque essas linhas para

PHP код:
forward Salario(); 
public 
Salario()
if(
CarroF[i] == true
E na hora de chamar a funзгo bote apenas Salбrio()