code.me - development & tutorials fórum
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

(Tutorial) CallRemoteFuncion (dicas)

Ir para baixo

(Tutorial) CallRemoteFuncion (dicas) Empty (Tutorial) CallRemoteFuncion (dicas)

Mensagem por Willian Luigi Ter Jul 23, 2013 8:52 pm

Para os usuários do sa-mp: isso não é exatamente um tutorial, vou explicar um pouco algumas funções,
e dar dicas de algumas formas para aplicação CallRemoteFunction utilizando conceitos de encapsulamento.

Índice:

  • CallRemoteFunction
  • Fazendo a conexão FS/GM
  • Dicas


---------------------------------------------------------------------------------------------------------

CallRemoteFunction:

Função: Ela chama funções dentro de outros scripts.

parâmetros: (const func[], const format[], {Float,_}...)
funcnome da função public do outro script
formatparâmetros da função
{Float,_}...variáveis que você vai passar para o parâmetro da função chamada
---------------------------------------------------------------------------------------------------------

Fazendo a conexão FS/GM:

Ex1 - Pegando valor de uma var dentro de um FS
FS:
Código:
#define PWN::%1(%2) forward %1(%2); public %1(%2)
new value_r = 10;

PWN:: get_val()
{
 return value_r;
}

GM:
Código:
public OnGameModeInit()
{
printf("%d", CallRemoteFunction("get_val", ""));
 return 1;
}

Ex2 - Alterando um valor de uma var dentro de um FS
FS:
Código:
#define PWN::%1(%2) forward %1(%2); public %1(%2)

new value_r = 10;

PWN:: get_val()
{
 return value_r;
}

PWN:: set_val(val)
{
 value_r = val;
}

GM:
Código:
public OnGameModeInit()
{
 CallRemoteFunction("set_val", "i", 20);
 return 1;
}

---------------------------------------------------------------------------------------------------------

Dicas:

Aqui irei mostrar algumas formas que talvez facilitem a manipulação entre variáveis de um FS para um GM.

Ex1: eu recomendo que quando você for mexer com variáveis, utilize métodos de get-set, você cria
2 métodos, um para pegar o valor da variável, e outro para modificar este valor...
De preferência utilize a mesma nomenclatura dos métodos dentro do FS e do GM, por questões de organização.

Você tem uma variável no FS, e você deseja pegar esse valor pelo GM, para fazer uso do mesmo...
FS:
Código:

#define PWN::%1(%2) forward %1(%2); public %1(%2)

//Variável que você vai usar no GM
new valor_importante;

PWN:: get_val()
{
 return valor_importante;
}

GM:
Código:

PWN:: get_val()
{
 return CallRemoteFunction("get_val", "");
}

public OnGameModeInit()
{
 new i = get_val();
}
Pronto agora você recebeu dentro do GM, o valor da variável de um FS.

Ex2: Quando for trabalhar com funções, você precisa entender oque está fazendo, algumas funções você tem que chamar sem parâmentros, pois ela não pede parâmetros, outras necessitam de parâmentros....(Não é dica, é explicação).

Funções sem parâmetros:
Código:

#define PWN::%1(%2) forward %1(%2); public %1(%2)

PWN:: HelloWorld() printf("HELLO WORLD !");
Como essa função não exige parâmetros, podemos chamar de procedimento, e para chama-la será necessário apenas enviar o format em branco.
Código:
CallRemoteFunction("HelloWorld", "");

Função com parâmetros:
Código:

#define PWN::%1(%2) forward %1(%2); public %1(%2)

PWN:: Msg(msg[]) printf(msg);
Essa função exige um parâmetro do tipo vetor/string, ou seja na hora de chamarmos pelo GM, teria que enviar um format 's', com uma frase/mensagem...
Código:
CallRemoteFunction("Msg", "s", "HELLO WORLD !");


Sejam sempre atentos a funções com parâmetros, pois na hora de utilizar a chamada remota ou local, você precisará informar os parâmetros e seus tipos.
Se a sua função exigir 2 parâmetros inteiros, você estará trabalhando com
Código:
CallRemoteFunction(func, "ii", n1, n2);

Muitas pessoas acabam se atrapalhando na hora de utilizar os formatos: 's', 'i', 'f', etc... E por isso acabam obtendo erros ou bugs.

---------------------------------------------------------------------------------------------------------

Conclusão:

Espero ter deixado dicas legais sobre o uso desta função,
eu não costumo utilizar essa função pois meus códigos são divididos apenas entre
GM / Includes, nunca trabalho com FilterScript.
Então não posso dizer quais são os beneficios e/ou desvantagens.

---------------------------------------------------------------------------------------------------------

Referência:

Créditos: Willian Luigi ((c) code.me - 2013)
Willian Luigi
Willian Luigi
Fundador
Fundador

Mensagens : 63
Data de inscrição : 22/07/2013
Idade : 29
Localização : CODE.ME company

https://codeme.forumeiros.com

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos