(Tutorial) CallRemoteFuncion (dicas)

Ir em baixo

(Tutorial) CallRemoteFuncion (dicas)

Mensagem por Willian Luigi em 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)

_________________
<br>
avatar
Willian Luigi
Fundador
Fundador

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

Ver perfil do usuário http://codeme.forumeiros.com

Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum