Usando CallRemoteFunction [Util] -
SeV_ - 01.07.2013
Olб Amigos Forum SA:MP
Vim Trazer este Breve Tutorial para Mostra Como Se Faz Um Contato Entre um Gamemode e um Filterscript por Exemplo:
Introduзгo da Funзгo:
Estб Funзгo Tem Como Base. Pegar Dados de um Lugar e Transferi-lo. Ele Chama uma Public. Mesmo que ela Esteja Fora do Gamemode.
pawn Код:
CallRemoteFunction(const function[], const format[], {Float,_}:...)
Explicaзгo:
CallRemoteFunction( // Nome da funзгo Nativa.
const function[], // Nome da funзгo pъblica a ser chamada Remotamente! exemplo: "MyFunction"
const format[], // Tag/formato de cada variбvel! exemplo: (i) sem Parкnteses.
{Float,_}:...); // Nъmero 'Indefinido' de argumentos de qualquer tag! exemplo: Var_Integer
FilterScript:
pawn Код:
// Esta й uma Callback que Criamos no Filterscript (Exemplo um Sistema de Level em FS)
forward GetarLevel(playerid);
public GetarLevel(playerid) return PlayerData[playerid][Level];
//PlayerData[playerid][Level] й a Variavel que Voce usa para o Level!
//nesta callback ela retorna o valor armazenado na array PlayerData.
Gamemode:
Agora usaremos a Funзгo Criada no Filterscript :
pawn Код:
//Exemplo de um Comando que necessite que o Jogador tenha level Superior a 2:
CMD:Arma(playerid){
if(CallRemoteFunction("GetarLevel","i",playerid) < 2) return SendClientMessage(playerid,-1,"ERRO: Seu Nivel й Inferior a 2!");}
GivePlayerWeapon(playerid,9,1);//Exemplo Bбsico
return 1;
}
Exemplo 2:
pawn Код:
//Exemplo o Na OnPlayerDeath. o Jogador Ganha um Nivel de Procurado. e o Servidor Manda a Seguinte Mensagem aos POLICIAIS/Cops
new string[100];
format(string, sizeof(string), "INFO COP: %s (%i) Estб Com Um Nivel de Procurado!", PlayerName(killerid), killerid);
CallRemoteFunction("MessageToCops","is",-1,string);
Agora Chamando a Callback e Mandando a Mensagem.:
pawn Код:
forward MessageToCops(color,const string[]);
public MessageToCops(color,const string[])
{
for(new i; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if (PlayerData[i][IsCop] >= 1){
SendClientMessage(i, color, string);}
}
}
return 1;
}
Formatos da String :
c - Insere um Caractere unico
d, i - Insere um nъmero
x - Insere numero hexadecimal
f - Insere uma Float
s - Insere uma Linha/String
Exemplo by Sa-mp Wiki :
pawn Код:
forward callMe(const string[]);
public callMe(const string[])
{
printf("callMe> %s", string);
return 1;
}
CallRemoteFunction("callMe", "s", "Linha de teste!!");
SysTeM_OFF [Nick: [EaK][_.ReBorN.__][ ] e Schocc (Por uma Ajudazinha!)
Bem и Isto..
#Breve Tutorial
Re: Usando CallRemoteFunction [Util] -
Gustavo_Carvalho - 01.07.2013
Bom tutorial!
Confesso que nгo sabia usar, atй porque eu nunca necessitei desta funзгo.
Re: Usando CallRemoteFunction [Util] -
Delete_ - 01.07.2013
Uso a funзгo a muito tempo, tuto ficou a desejar, mais mesmo assim tб bacana.
Re: Usando CallRemoteFunction [Util] -
WLSF - 01.07.2013
Se tivesse aprofundado um pouco mais teria ficado muito bom,
porque nunca tinha visto um tutorial sobre esta funзгo aqui na board.
Parabйns pela ideia.
Re: Usando CallRemoteFunction [Util] -
Exco - 01.07.2013
Boa iniciativa XD.
Re: Usando CallRemoteFunction [Util] -
Schocc - 01.07.2013
Boa iniciativa porem irei dar uma explicada:
@edit:Removido
Re: Usando CallRemoteFunction [Util] -
WLSF - 01.07.2013
Quote:
Originally Posted by Schocc
Boa iniciativa porem irei dar uma explicada:
A funзгo CallRemoteFunction (Chamada de funзгo remota) tem como objetivo, chamar uma funзгo de qualquer script seja FilterScript ou GameMode remotamente.
Exemplo eu criei um FilterScript e neste cуdigo tem algumas funзхes importantes, que pretendo usar em outro FilterScript.
Lembrando que para ser chamada a funзгo(Alvo/Objetivo) ela precisa estar em outro arquivo .amx
CallRemoteFunction Chama uma funзгo pъblica em qualquer script que й carregado.
Vamos agora ver a sintaxe da funзгo:
pawn Код:
CallRemoteFunction(const function[], const format[], {Float,_}:...)
Explicaзгo: CallRemoteFunction( // Nome da funзгo Nativa. const function[], // Nome da funзгo pъblica a ser chamada Remotamente! exemplo: "MyFunction" const format[], // Tag/formato de cada variбvel! exemplo: (i) sem Parкnteses. {Float,_}:...); // Nъmero 'Indefinido' de argumentos de qualquer tag! exemplo: Var_Integer
Ficando assim um exemplo de uso em Seu Gamemode:gm.pwn:
pawn Код:
#include <a_samp>
new Var_Integer; //Declara/ Inicializa uma nova variбvel com o nome Var_Integer que armazenara o Valor passando para funзгo do FilterScript
main() {
Var_Integer = 5; //Atribui o valor 5 para a a variavel. CallRemoteFunction("MyFunction", "i", Var_Integer ); //Chama Remotamente a funзгo do FilterScript Teste.amx (in-game) Lуgico }
Em seu FilterScript:Teste.pwn
pawn Код:
#include <a_samp>
forward MyFunction( integer ); public MyFunction( integer ) {
print("\nEsta mensagem esta sendo chamada pela funзгo MyFunction (do filterscript para seu GameMode)\n"); printf("O numero chamado Remotamente й: %i", integer ); return 1; }
Bom esta й uma leve explicaзгo. pois existe muito mais coisa voltado a este assunto.
Qualquer Duvida/Pedido de ajuda ou Sugestгo, deixe seu comentбrio abaixo.
Alguma informaзгo errada por favor avisar-me imediatamente.
|
Vocк estragou a magia do cara de criar um tutorial, coisa feia rapaz.
Mas й basicamente isso sim, muito bom...
Devia ser mais aplicado a trabalhos essa funзгo.
Re: Usando CallRemoteFunction [Util] -
SeV_ - 01.07.2013
Da nada. Nao me sinto com a magia estragada. Afinal. Que magia? Kk
apenas um topico tentando ensinar a usar a funcao.
Re: Usando CallRemoteFunction [Util] -
Schocc - 01.07.2013
Removido...
Motivo: Perigo de comeзar os flameWar (Ja estavam me atacando hehehe)
Re: Usando CallRemoteFunction [Util] -
Suxi - 04.07.2013
e se eu quiser chamar uma funзгo do prуprio gm,
tipo tem o comando /god e /armas, o cara digita /kit e ai ele ativa todas funзoes do comando /god e do comando /armas
como fica isso usando CallRemoteFunction?