SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] Interligação de sistemas - Pawn.RakNet

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11381
    Moedas : 1031991
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    [Tutorial] Interligação de sistemas - Pawn.RakNet Empty [Tutorial] Interligação de sistemas - Pawn.RakNet

    Mensagem por Weslley_Script Sex 17 Mar 2023 - 9:31

    Interligaзгo de sistemas - Pawn.RakNet


    Vocк sabia que vocк pode fazer o uso de RPCs para interligar sistemas em instвncias de amx diferentes, como filterscripts e gamemode?

    Vamos supor que vocк tem um sistema de dinheiro controlado pelo servidor, onde o dinheiro do cliente nгo importa, e vamos supor que esse sistema faz parte de uma include que й usada em seu gamemode, sendo estas algumas funзхes:


    Código:
    static Dinheiro[MAX_PLAYERS];
    stock MinhaInclude_GivePlayerMoney(playerid, amount)
    {
        Dinheiro[playerid] += amount;
        GivePlayerMoney(playerid, amount);
        return 1;
    }
    stock MinhaInclude_ResetPlayerMoney(playerid)
    {
        Dinheiro[playerid] = 0;
        ResetPlayerMoney(playerid);
        return 1;
    }
    ...MinhaInclude_GivePlayerMoney = Hook em GivePlayerMoney
    ...MinhaInclude_ResetPlayerMoney = Hook em ResetPlayerMoney 

    Se vocк nгo pretende usar funзхes relacionadas a dinheiro em outras instвncias de amx, vocк nгo precisa modificar nada. Se vocк pretende usar as funзхes em outras instвncias de amx, vocк terб problemas, e o dinheiro na matriz 'Dinheiro' nгo vai ser atualizado, a nгo ser que a funзгo tenha sido usada na mesma instвncia da amx onde a include se encontra (nesse caso, o gamemode).

    Para contornar esse problema, vocк tem a alternativa de adaptar o filterscript usando pVars (que podem ser usadas em instвncias de amx distintas) ou criando uma funзгo com a keyword public que vocк pode executar atravйs do gamemode, usando CallRemoteFunction. Porйm, ambos os mйtodos requerem que vocк modifique essas instвncias (filterscript), adaptando as para funcionar com o seu sistema do gamemode.

    Uma vantagem ao verificar os RPCs que o servidor envia й simplesmente o fato de que independente da instвncia da amx onde funзхes como SetPlayerPos, GivePlayerMoney ou SetPlayerHealth forem usadas, a callback OnOutcomingRPC serб executada, indicando que o servidor estб prestes a enviar determinado RPC ao cliente.

    Verificando os RPCs enviados, vocк pode ter uma interligaзгo entre instвncias de amx distintas que usam determinadas funзхes relacionadas ao cliente, sem precisar fazer adaptaзхes nelas. Veja o exemplo das funзхes do exemplo de include, usando Pawn.RakNet:



    Código:
    /*Outgoing RPCS - RPCs que sгo enviados do servidor ao cliente*/
    const ORPC_GivePlayerMoney = 18;
    const ORPC_ResetPlayerMoney = 20;
    static Dinheiro[MAX_PLAYERS];
    /*OnOutcomingRPC*/
    public OnOutcomingRPC(playerid, rpcid, BitStream:bs)
    {
        if(rpcid == ORPC_GivePlayerMoney)
        {            
            BS_ReadValue(
                bs,
                PR_UINT32, Dinheiro[playerid]
            );
        }
        else if(rpcid == ORPC_ResetPlayerMoney)
        {
            Dinheiro[playerid] = 0;
        }
        return 1;


    Qual a diferenзa nesse caso? Como dito antes, vocк nгo vai precisar adaptar outras instвncias de amx para funcionar com o seu sistema, pois vocк estб verificando quando o servidor estб enviando estes RPCs e nгo quando uma determinada funзгo й executada na prуpria instвncia da amx. Logo, vocк pode comeзar a usar seu sistema sem precisar se preocupar ou adaptar outras instвncias que venham a fazer o uso de funзхes relacionadas, porйm leve em consideraзгo que isto apenas funciona se determinada funзгo manda um RPC ao cliente.


    Creditos: BrunoBM23



    [Tutorial] Interligação de sistemas - Pawn.RakNet D07Xwqb
    [Tutorial] Interligação de sistemas - Pawn.RakNet Yjab9HN

      Data/hora atual: Sex 17 maio 2024 - 0:03