SA-MP Forums Archive
[Ajuda] Criar Funзгo ou Stock? - 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] Criar Funзгo ou Stock? (/showthread.php?tid=596073)



Criar Funзгo ou Stock? - Hayden_Almeida - 12.12.2015

Olб galera. Estou com uma dъvida. Eu quero fazer uma public ou um stock para fazer algumas verificaзхes que sгo constantes no meu GM e que eu nгo precise ficar em cada Bloco de If ficar fazendo if(...) return 1; e etc...
Essas verificaзхes seriam deste tipo, exemplo:

Existe a Var: bool:Algemado[MAX_PLAYERS]=false;
Que verifica se o jogador estб algemado ou nгo. Eu poderia fazer deste jeito:

Код:
forward verificar(playerid);
public verificar(playerid)
{
    if(Algemado[playerid] == true) return 0;
    // Outras verificaзхes aqui...
return 1;
}
Ou seja, eu quero que essa Public ou Stock retorne TRUE ou FALSE.
Seria deste modo?


Re: Criar Funзгo ou Stock? - Bruno13 - 12.12.2015

Nгo entendi muito bem sua dъvida, mas seria algo do tipo?

PHP код:
//Identificar se o player estб algemado
PlayerIsHandcuffed(playerid) return Algemado[playerid];
forward verificar(playerid);
public 
verificar(playerid)
{
    if(
PlayerIsHandcuffed(playerid)) return 0;
    
// Outras verificaзхes aqui...
return 1;




Re: Criar Funзгo ou Stock? - Artista - 12.12.2015

Quote:
Originally Posted by Bruno13
Посмотреть сообщение
Nгo entendi muito bem sua dъvida, mas seria algo do tipo?

PHP код:
//Identificar se o player estб algemado
PlayerIsHandcuffed(playerid) return Algemado[playerid];
forward verificar(playerid);
public 
verificar(playerid)
{
    if(
PlayerIsHandcuffed(playerid)) return 0;
    
// Outras verificaзхes aqui...
return 1;

Tambйm entendi assim rs.

Ah, caso seja isso, vocк tambйm pode fazer assim:
PHP код:
#define PlayerIsHandcuffed(%0) Algemado[%0] 



Re: Criar Funзгo ou Stock? - Hayden_Almeida - 12.12.2015

Quote:
Originally Posted by Bruno13
Посмотреть сообщение
Nгo entendi muito bem sua dъvida, mas seria algo do tipo?

PHP код:
//Identificar se o player estб algemado
PlayerIsHandcuffed(playerid) return Algemado[playerid];
forward verificar(playerid);
public 
verificar(playerid)
{
    if(
PlayerIsHandcuffed(playerid)) return 0;
    
// Outras verificaзхes aqui...
return 1;

Nгo.
Eu quero fazer minha propria funзгo onde ela verificarб se o Jogador estб algemado, Handsup e outras Variбveis que uso como Bool.
E quero que essa funзгo retorne TRUE ou FALSE.

Portanto se a funзгo tem:
Код:
Algemado[playerid] == true { return FALSE }
Handsup[playerid] == true { return FALSE}
Deu pra entender que SE UMA das verificaзхes acima estiver como Verdadeiro, ele vai retornar como FALSE INDEPENDENTEMENTE das outras estarem como falso.

Aн numa outra parte do GM, como por exemplo num comando que eu fosse criar, eu utilizaria:
NomeDaFunзгo(playerid) == true) { executa} else { executa }


Re: Criar Funзгo ou Stock? - Artista - 13.12.2015

Acho que entendi o que vocк quer fazer, vocк pode fazer desse modo:
PHP код:
stock NomeDaFuncao(playerid)
{
    return !(
Algemado[playerid] || Handsup[playerid]);

Ou usando um macro:
PHP код:
#define NomeDaFuncao(%0) (!Algemado[%0] && !Handsup[%0] ? true : false) 
Espero ter ajudado


Re: Criar Funзгo ou Stock? - Hayden_Almeida - 13.12.2015

Quote:
Originally Posted by Artista
Посмотреть сообщение
Acho que entendi o que vocк quer fazer, vocк pode fazer desse modo:
PHP код:
stock NomeDaFuncao(playerid)
{
    return !(
Algemado[playerid] || Handsup[playerid]);

Ou usando um macro:
PHP код:
#define NomeDaFuncao(%0) (!Algemado[%0] && !Handsup[%0] ? true : false) 
Espero ter ajudado
Compilei e nгo deu erros, ainda nгo testei na prбtica. Mas nгo tinha que colocar um ELSE? para retornar TRUE se nenhuma das condiзхes anteriores foram aceitas?
Algo do tipo:
Код:
stock NomeDaFuncao(playerid)
{
	return !(Algemado[playerid] || Handsup[playerid]);
        return TRUE;
}



Re: Criar Funзгo ou Stock? - arakuta - 13.12.2015

Artista, vocк cometeu um erro muito comum em eletrфnica digital quanto ao macro. Barrar todas as entradas, nгo й a mesma coisa que barrar a saнda. Vou aplicar a tabela verdade para vocк entender:

PHP код:
Porta NAND (!&&) - Todas as entradas devem ser altas para a saida ser baixa.
S'      A'H'| S
0 | 0 | 1       1 | 1 | 1
0 | 1 | 1       1 | 0 | 0
1 | 0 | 1       0 | 1 | 0
1 | 1 | 0       0 | 0 | 0 
Como pode ver, o resultado nгo vai servir.

Aplicando a tabela verdade para fazer o que o amigo aqui do tуpico, obtemos:

PHP код:
Se alguma entrada for 1saнda deve ser 0
S
1
0
0

O que corresponde a tabela verdade de uma porta NOR. Esta porta, й uma OR barrada.

Portanto basta fazer a seguinte operaзгo

S = (A+B)'

Em programaзгo:

PHP код:
return !(VarA || VarB || ... || VarZ); 
Espero ter ajudado