Forums » RGSS

Network Scripting Aula 2 - Envio e Manipulação de Dados

    • 683 posts
    4 de junho de 2015 13h10min11s ART

    Network Scripting

    Aula 2 - Envio e Manipulação de Dados


     

    Introdução 

    Nesta aula veremos como é facil manipular dados, se você leu a aula anterior, verá que não tem mistério. Como prometido vamos estudar sobre variavel $1, sintaxes e introdução do servidor do NP 1.7

     

    Variavel $1

    O netplay, quando recebe Dados do Host, encontra um Meio de manipula-lo atualizando a informação, estes dados podem ser acessados pela variavel global:

    $1


    Exemplo simples:

    when/<chat>(.*)<\/chat>/       $game_temp.chat_log.push($1)       $game_temp.chat_refresh =true

    este código é encontrado no metodo update do Network

    Uma vezz que este código é encontrado em um metodo de atualização isto signifca que ele se repetirá porque o netplay recebe dados a cada momento em que um player está jogando.
    No Exemplo acima uma vez que voce viu na aula passada que:

    [b]EnviodoSocketdo chat[/b] name =Network::Main.name         Network::Main.socket.send("#{name}) [email protected]_window.text}\n")

    Código do Scene_Chat enviando socket


    o servidor interpreta informação do RMXP e reenvia:

    ----------------------------------            CHAT            ----------------------------------   if cmd ==""then     do NP():SendToAll(data)end



    Agora reevendo eles mais profundamente, a variavel $1 resumidamente serve para acessar a (data) que no caso é sçao os dados(uau sério?) interpretados pelo servidor que serão enviados segundo sua sintaxe que veremos daqui a pouco, Quais são os dados neste exemplo?:

    #{name}) [email protected]_window.text}

    estes são os dados que foram enviados pelo RMXP que foram interpretados pelo servidor atraves da array (data).

    seria a mesma coisa que

    do NP():SendToAll(#{name})[email protected]_window.text}

    mas no caso usamos apenas (data) pela linguagem LUA.

     
    Outros Casos da variavel $1

    Existem alguns casos em que acessar apenas um dado não é suficiente, para isto existem alem da variavel $1, Existe a $2,$3, $4 e assim por diante.

    Um Exemplo:

    defself.trade(id,type,item,num=1,todo='gain')(...)@socket.send("<12>type=#{type} item=#{item} num=#{num} todo=#{todo}</12>\n")


    Vejamos que o servidor terá que enviar para o cliente varios dados como, "Type, item, num e todo. e neste caso o servidor irá reenviar e o cliente irá receber a informação

    when/<12>type=(.*) item=(.*) num=(.*) todo=(.*)<\/12>/(...)

    No caso os dados de type será acessada pela variavel $1, item = $2 etc... e com ela no codigo é Executada Scenes, Eval($1), case $1 são variados os tipos dependendo do dado obtido

    Um detalhe importante é esse (.*), se você ja percebeu ele está presente em todos os sockets, apenas para relembrar ele é a (data) do servidor e do cliente, relembrando o exemplo do chat:

    Envio

    Network::Main.socket.send("#{name}) [email protected]_window.text}\n")/[code]ServidorEscute e o lança de volta. e o RMXP [code]when/<chat>(.*)<\/chat>/       $game_temp.chat_log.push($1)       $game_temp.chat_refresh =true[/code] o (.*) seria a mesma coisa que [code]when#{name}) [email protected]_window.text}Mas por questão de sintaxe é acessado o dado por (.*)[hr][b]SintaxedoServidor[/b] O servidor como você já leu, lê, interpreta e reenvia os dados para o RMXP, mas ele pode ser manipulado de certas formas.[code]if cmd ==""then     do função end


    No qual a função poderá ser:

    Funções

    Functions
    ------------
    NP():SendToAll( data )  --  Envia a String para todos conectados no servidor

    NP():ShowMessage( data ) -- Mostra os Dados da string no chat

    NP():SendToUser(user.id,data) -- Envia Dado para um usuário com IP tal

    NP():GetServerName() -- Pega a String pelo Nome do servidor na guia geral

    NP():BanIP( user.ip ) -- Adciona o Usuário de IP tal para a lista de banidos

    NP():CloseSocket( user.ip ) -- Desconecta um Usuário de IP tal.


    User.ip, user.id... se você não entendeu estas variaveis globais vamos ve-la agora

    Variaveis globais do servidor


    -user.id:O ID único do usuário use-o apenas para enviar informaçoes especificas para aquele usuário

    -user.name -- O nome de usuário do usuário(ficou repetitivo -.-') use-o para sauda-lo ou para eventos envolvendo a pessoa

    -user.group -- O grupo do usuário(tal como Admin, MOD, Standard)

    -user.ip -- IP do usuário

     

    Final

    Demerou mas chegou a segunda aula, infelizmente a terceira ainda vai demorar também, mas pelo menos acho que essa ja deu pra aprender algumas coisas =P