[Tutorial] Usando CallRemoteFunction [Util]
#1

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
Reply
#2

Bom tutorial!

Confesso que nгo sabia usar, atй porque eu nunca necessitei desta funзгo.
Reply
#3

Uso a funзгo a muito tempo, tuto ficou a desejar, mais mesmo assim tб bacana.

Reply
#4

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.
Reply
#5

Boa iniciativa XD.
Reply
#6

Boa iniciativa porem irei dar uma explicada:

@edit:Removido
Reply
#7

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.
Reply
#8

Da nada. Nao me sinto com a magia estragada. Afinal. Que magia? Kk

apenas um topico tentando ensinar a usar a funcao.
Reply
#9

Removido...
Motivo: Perigo de comeзar os flameWar (Ja estavam me atacando hehehe)
Reply
#10

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?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)