Suporte no desenvolvimento de jogos


    Receber Hora do Servidor

    gladistony
    gladistony
    Membro Ativo
    Membro Ativo

    Mensagens : 336
    Créditos : 217
    Cash : 0

    Receber Hora do Servidor Empty Receber Hora do Servidor

    Mensagem por gladistony em Sex Maio 10, 2013 8:17 pm

    Hora do Servidor

    LOG
    10/05/2013 --> Script postado

    Script
    Script Do NetPlay
    Código:
    #================================================================
    #================================================================
    #===================== Hora do Servidor =========================
    #================================================================
    #=======BY:Gladistony Silva======================================
    #======= Small Edit by: Darkmel ===================================
    #=======Criada para o forum: Aldeiarpgbr ========================
    #=======NÃO POSTA EM OUTRO FORUM SEM AUTORIZAÇÃO=================
    #================================================================
    #================================================================
    module User_Time
      AUTO_INSTAL = true
      SEMANA_PORT = true
    end
    #======================Não Edite================================
    module Hora_Serve
      $data = "00/00/0000"
      $dia = ""
      $hora = ""
      $minuto = ""
      $atualhora = false
      def self.data(op=0)
        return 0 unless $atualhora
        b = $data.split('/')
        return b[op].to_i
      end
      def self.receber(data)
        a = data.split(' ')
        $hora = a[0]
        $minuto = a[1]
        $data = a[2]
        $dia = a[3]
        $atualhora = true
        if User_Time::SEMANA_PORT
          case $dia
          when 'Mon'
            $dia = 'Segunda'
          when 'Tue'
            $dia = 'Terça'
          when 'Wed'
            $dia = 'Quarta'
          when 'Thu'
            $dia = 'Quinta'
          when 'Fri'
            $dia = 'Sexta'
          when 'Sat'
            $dia = 'Sabado'
          when 'Sun'
            $dia = 'Domingo'
          end
          b = $data.split('/')
          $data = b[1].to_s+'/'+b[0].to_s+'/'+b[2].to_s
        end
      end
    end
    class Scene_Map
      alias update_hora_gladis update
      def update
        Network::Main.socket.send("<00> Solicitar hora </00>\n") if Graphics.frame_count % (200) == 0
        update_hora_gladis
      end
    end
    if User_Time::AUTO_INSTAL
    module Network
      class Main
      def self.update
        return unless @socket.ready?
        for line in @socket.recv(0xfff).split("\n")
          @nooprec += 1 if line.include?("\000\000\000\000")
          return if line.include?("\000\000\000\000")
          p "#{line}" unless line.include?("<5>") or line.include?("<6>")or not $DEBUG or not User_Edit::PRINTLINES
          updatebool = false
          case line when /<00>(.*)<\/00>/
          Hora_Serve.receber($1.to_s)
          updatebool = false
          return
          end
          updatebool = self.update_walking(line) if @login and $game_map != nil
          updatebool = self.update_ingame(line)  if updatebool == false and @login and $game_map != nil
          updatebool = self.update_system(line)  if updatebool == false
          updatebool = self.update_admmod(line)  if updatebool == false
          updatebool = self.update_outgame(line) if updatebool == false
        end
      end
      end
    end
    end
    Script Do Servidor
    Código:
    --------------------------------
    -- Data e hora do serve(25)  --
    --------------------------------
      elseif cmd == "<00>" then
        do NP():SendToUser(user.id,"<00> "..os.date("%H %M %x %a").." </00>") end
    Instalação
    Coloquem o script para o NetPlay acima do main, depois va no servidor e dentro da pasta Scripts, insira o Script do Servidor dentro do arquivo functions.lua antes do penúltimo end
    Caso prefira, baixe o arquivo functions.lua pelo link abaixo e substitua.
    http://www.4shared.com/file/ceFZuNT_/functions.html
    Ou vc pode utilizar esse servidor aki que ja foi editado
    http://www.4shared.com/rar/neqEExic/Servidor.html
    Para quem quiser abaixo também segue o netplay master ja editado
    http://www.4shared.com/rar/gTLk4yJy/netplay_master_v407data_e_hora.html

    Configuração
    O script não precisa de configuração porem, se vc quiser que a data e os dias da semana fiquem em ingles, mude o SEMANA_PORT para false.
    A outra opção é para caso vc queira inseri a edição no network manualmente.

    Notas
    O script cria 5 variáveis que podem ser utilizadas em qualquer parte do jogo, as variáveis criadas são:
    Código:
      $data = (Informa a Data atual)
      $dia = (Informa o dia da semana)
      $hora = (Informa a Hora)
      $minuto = (Informa os minutos)
      $atualhora = (Informa se os demais atributos estão atualizados)

    Usando o Sistema em Eventos:

    Caso queira verificar uma determinada hora/data/dia da semana em um evento, utilize opção script da 4ª aba da opção condições e faça uma igualdade da variável do script com a opção desejada.
    Por exemplo:
    Eu quero fazer 1 evento especial que ocorre toda a segunda feira, então eu coloco a condição
    $dia == 'Segunda'
    Receber Hora do Servidor Logadiadasemana
    O mesmo serve para Datas e horas:
    $data == '10/05/2013'
    $hora == 0
    $minuto == 50

    Evitando Bug inicial:

    Quando o jogo inicia, por alguns segundos a data fica fora de sincronia, isso porque a data é hora não é sincronizada a todo instante. Para evitar resultados indesejáveis existe a variável $atualhora. Quando a primeira sincronização for feita ela se torna verdade, impedindo possíveis bugs. Para usa-la basta verificar na condição se ela é verdadeira:
    $atualhora and ($hora == 19)
    Receber Hora do Servidor Logahora

    Exemplo de Codigos:

    Todos esses códigos devem ser usados na opção script da opção condição, ou diretamente em um if usando os script

    $atualhora and ($hora == 19) --> Fara um evento ficar ativo enquanto for 19 horas
    $atualhora and ($hora >= 19) --> Fara um evento ficar ativo das 19 horas ate meia noite
    $atualhora and (($hora >= 8) or ($hora <= 19)) --> Fara o evento ficar ativo das 8 horas ate as 19 da manha.[Ideal para fazer lojas]
    $atualhora and ($minuto == 50) --> Fara o evento ativar de hora em hora quando o relógio marca 50 minutos
    $data == '25/12/2013' --> Ativa o evento em uma data especificada, no caso o natal desse ano
    $dia == 'Segunda' --> Ativa o evento toda segunda feira

    Trabalhando com a data:

    A data vem em forma de uma string e não pode ser comparada diretamente com outra, para trabalhar de forma mais eficiente com utilizamos uma função que vem embutida no script, a função Hora_Serve.data()
    Usando:
    Hora_Serve.data(0) --> para receber o dia
    Hora_Serve.data(1) --> para o mes
    Hora_Serve.data(2) --> Para o ano

    Exemplo: Um evento que ative apenas se ative no dia 13 de cada mes, para isso eu uso
    Hora_Serve.data(0) == 13
    Para um evento que ira funcionar durante o mes de setembro
    Hora_Serve.data(1) == 09

    Receber Hora do Servidor Logadata

    Bugs
    >Nenhum ate o momento

    Compatibilidade
    >Esse script apenas funciona no no NPM 3 e 4.

    Créditos
    >Gladistony [Criador do script]
    >Darkmel [Correção de bugs]


    Última edição por gladistony em Seg Maio 13, 2013 3:46 pm, editado 4 vez(es)


    _________________
    Receber Hora do Servidor 252057
    Paulo Soreto
    Paulo Soreto
    Lenda
    Lenda

    Mensagens : 1962
    Créditos : 362
    Cash : 0

    Ficha do personagem
    Nível: 1
    Experiência:
    Receber Hora do Servidor Left_bar_bleue0/0Receber Hora do Servidor Empty_bar_bleue  (0/0)
    Vida:
    Receber Hora do Servidor Left_bar_bleue30/30Receber Hora do Servidor Empty_bar_bleue  (30/30)

    Receber Hora do Servidor Empty Re: Receber Hora do Servidor

    Mensagem por Paulo Soreto em Sex Maio 10, 2013 11:08 pm

    Bacan Glad, gostei das edições.


    _________________
    Receber Hora do Servidor FwYnoXI
    Darkmel
    Darkmel
    Membro Ativo
    Membro Ativo

    Mensagens : 340
    Créditos : 68
    Cash : 0

    Receber Hora do Servidor Empty Re: Receber Hora do Servidor

    Mensagem por Darkmel em Dom Maio 12, 2013 5:02 pm

    Só tem um bug, por exemplo se a hora for 17:05 ele mostra assim:
    17:5, nos minutos quando é apenas um algarismo ele nao colcoa o 0 na frente, mas fora isso ta bom demais +1.

    Como está para ".to_i" no $minuto então como está integer o zero a esquerda nao vale nada, temos de transformar o "$minuto = a[1].to_i" em "$minuto = a[1].to_s" para que o zero a esquerda passe a ser reconhecido.

    script já editado:
    Código:
    #================================================================
    #================================================================
    #===================== Hora do Servidor =========================
    #================================================================
    #=======BY:Gladistony Silva======================================
    #======= Small Edit by: Darkmel ===================================
    #=======Criada para o forum: Aldeiarpgbr ========================
    #=======NÃO POSTA EM OUTRO FORUM SEM AUTORIZAÇÃO=================
    #================================================================
    #================================================================
    module User_Time
      AUTO_INSTAL = true
      SEMANA_PORT = true
    end
    #======================Não Edite================================
    module Hora_Serve
      $data = "00/00/0000"
      $dia = ""
      $hora = 12
      $minuto = 0
      $atualhora = false
      def self.data(op=0)
        return 0 unless $atualhora
        b = $data.split('/')
        return b[op].to_i
      end
      def self.receber(data)
        a = data.split(' ')
        $hora = a[0].to_i
        $minuto = a[1].to_s
        $data = a[2]
        $dia = a[3]
        $atualhora = true
        if User_Time::SEMANA_PORT
          case $dia
          when 'Mon'
            $dia = 'Segunda'
          when 'Tue'
            $dia = 'Terça'
          when 'Wed'
            $dia = 'Quarta'
          when 'Thu'
            $dia = 'Quinta'
          when 'Fri'
            $dia = 'Sexta'
          when 'Sat'
            $dia = 'Sabado'
          when 'Sun'
            $dia = 'Domingo'
          end
          b = $data.split('/')
          $data = b[1].to_s+'/'+b[0].to_s+'/'+b[2].to_s
        end
      end
    end
    class Scene_Map
      alias update_hora_gladis update
      def update
        Network::Main.socket.send("<00> Solicitar hora </00>\n") if Graphics.frame_count % (200) == 0
        update_hora_gladis
      end
    end
    if User_Time::AUTO_INSTAL
    module Network
      class Main
      def self.update
        return unless @socket.ready?
        for line in @socket.recv(0xfff).split("\n")
          @nooprec += 1 if line.include?("\000\000\000\000")
          return if line.include?("\000\000\000\000")
          p "#{line}" unless line.include?("<5>") or line.include?("<6>")or not $DEBUG or not User_Edit::PRINTLINES
          updatebool = false
          case line when /<00>(.*)<\/00>/
          Hora_Serve.receber($1.to_s)
          updatebool = false
          return
          end
          updatebool = self.update_walking(line) if @login and $game_map != nil
          updatebool = self.update_ingame(line)  if updatebool == false and @login and $game_map != nil
          updatebool = self.update_system(line)  if updatebool == false
          updatebool = self.update_admmod(line)  if updatebool == false
          updatebool = self.update_outgame(line) if updatebool == false
        end
      end
      end
    end
    end


    _________________
    Receber Hora do Servidor 616s9EW
    gladistony
    gladistony
    Membro Ativo
    Membro Ativo

    Mensagens : 336
    Créditos : 217
    Cash : 0

    Receber Hora do Servidor Empty Re: Receber Hora do Servidor

    Mensagem por gladistony em Seg Maio 13, 2013 10:20 am

    Obg Darkmel pela edição, mudei o script original pelo que vc fez e vo te add na parte de créditos


    _________________
    Receber Hora do Servidor 252057
    DeaN
    DeaN
    Colaborador
    Colaborador

    Mensagens : 1245
    Créditos : 48
    Cash : 0

    Receber Hora do Servidor Empty Re: Receber Hora do Servidor

    Mensagem por DeaN em Seg Maio 13, 2013 11:50 am

    Muito bom Man. '-'
    1+


    _________________
    Dean, Programador Geral :)

    Contato: Skype:matucarvalho e Facebook
    The Enze - Vulzt

    Shield Block
    Anti-Cheat para jogos de FPS, agora vou adaptar para jogos de RPG principalmente para o RMXP.
    www.shieldblock.net
    fb.com/shieldblockoficial

    Receber Hora do Servidor MiB0H
    Darkmel
    Darkmel
    Membro Ativo
    Membro Ativo

    Mensagens : 340
    Créditos : 68
    Cash : 0

    Receber Hora do Servidor Empty Re: Receber Hora do Servidor

    Mensagem por Darkmel em Seg Maio 13, 2013 2:58 pm

    Outra coisa, quando você for mostrar a hora com "$hora" ele tambem não mostra o 0, então no momento que for colocar esse código, coloque assim:
    $hora.to_s
    Exemplo:
    self.contents.draw_text(1, 11, 200, 32, $hora.to_s + ":" + $minuto.to_s)

    Também fiz um script de relogio baseado nesse ai.
    http://pastebin.com/fwN9KBrV
    Código:

          
          
    [list=1]
    # Sistema de relogio criado por Darkmel
    # Baseado no script de horas on server do Gladistony
    module Relogio
    #Mostrar dia/mes/ano?
    Dia = false
    #Posicao x
    X = 350
    #Posicao y
    Y = 8
    #Mostrar Windowskin?
    Window = true
    end
     
    class Window_Relogio < Window_Base
      def initialize
        super(Relogio::X,Relogio::Y,100,65)
        self.contents = Bitmap.new(width - 32, height - 32)
        self.z = 99999999
        self.opacity = 200
        if Relogio::Window = true
        self.windowskin = RPG::Cache.windowskin("WindskinA")
        else
        self.windowskin = RPG::Cache.windowskin("")
        end
        refresh
      end
      def refresh
        self.contents.clear
        self.contents.font.name = "Segoe UI"
        self.contents.font.color = Color.new(0, 0, 0)
        if Relogio::Dia = true
        self.contents.draw_text(1, -11, 200, 32, $data.to_s)
        end
        self.contents.draw_text(1, 11, 200, 32, $hora.to_s + ":" + $minuto.to_s)
        #Sombras
        self.contents.font.color = Color.new(255, 255, 255)
        if Relogio::Dia = true
        self.contents.draw_text(0, -12, 200, 32, $data.to_s)
        end
        self.contents.draw_text(0, 10, 200, 32, $hora.to_s + ":" + $minuto.to_s)
      end
      def update
        super
        return if Graphics.frame_count % (10 * 10) != 0
        $relogio.refresh
      end
    end
    [/list]
          


    _________________
    Receber Hora do Servidor 616s9EW
    Jonny
    Jonny
    Aldeia Friend
    Aldeia Friend

    Medalhas : Receber Hora do Servidor Trophy11Receber Hora do Servidor 9P5Gx
    Mensagens : 1937
    Créditos : 327
    Cash : 0

    Receber Hora do Servidor Empty Re: Receber Hora do Servidor

    Mensagem por Jonny em Dom Fev 09, 2014 8:46 pm

    Obrigado por este scritp Very Happy


    _________________
    Spoiler:

      


    Receber Hora do Servidor KVIdx
    avatar
    bielmegatrinf
    Iniciante
    Iniciante

    Mensagens : 75
    Créditos : 3
    Cash : 0

    Receber Hora do Servidor Empty Re: Receber Hora do Servidor

    Mensagem por bielmegatrinf em Qua Dez 17, 2014 10:32 pm

    maninho o script é ótimo , porém está com erro! não sei se você testou não sei se foi o lek que tirou o '' bug '' mais ele da ERROR na linha 71 eu to tentando usa-lo para NETPLAY 4.9 , ok se não funcionar porfavor atualize para que funcione pois esse script é MT MAIS MMMT Útil para mim e creio que para outros também , esse são um dos script que necessito muito e nunca consigo! =/
    Jonny
    Jonny
    Aldeia Friend
    Aldeia Friend

    Medalhas : Receber Hora do Servidor Trophy11Receber Hora do Servidor 9P5Gx
    Mensagens : 1937
    Créditos : 327
    Cash : 0

    Receber Hora do Servidor Empty Re: Receber Hora do Servidor

    Mensagem por Jonny em Qui Dez 18, 2014 12:33 pm

    aqui esta el script sin bugs :
    Código:
    #================================================================
    #================================================================
    #===================== Hora do Servidor =========================
    #================================================================
    #=======BY:Gladistony Silva======================================
    #======= Small Edit by: Darkmel ===================================
    #=======Criada para o forum: Aldeiarpgbr ========================
    #=======NÃO POSTA EM OUTRO FORUM SEM AUTORIZAÇÃO=================
    #================================================================
    #================================================================
    module User_Time
      AUTO_INSTAL = true
      SEMANA_PORT = true
    end
    #======================Não Edite================================
    module Hora_Serve
      $data = "00/00/0000"
      $dia = ""
      $hora = ""
      $minuto = ""
      $atualhora = false
      def self.data(op=0)
        return 0 unless $atualhora
        b = $data.split('/')
        return b[op].to_i
      end
      def self.receber(data)
        a = data.split(' ')
        $hora = a[0]
        $minuto = a[1]
        $data = a[2]
        $dia = a[3]
        $atualhora = true
        if User_Time::SEMANA_PORT
          case $dia
          when 'Mon'
            $dia = 'Segunda'
          when 'Tue'
            $dia = 'Terça'
          when 'Wed'
            $dia = 'Quarta'
          when 'Thu'
            $dia = 'Quinta'
          when 'Fri'
            $dia = 'Sexta'
          when 'Sat'
            $dia = 'Sabado'
          when 'Sun'
            $dia = 'Domingo'
          end
          b = $data.split('/')
          $data = b[1].to_s+'/'+b[0].to_s+'/'+b[2].to_s
        end
      end
    end
    class Scene_Map
      alias update_hora_gladis update
      def update
        Network::Main.socket.send("<00> Solicitar hora </00>\n") if Graphics.frame_count % (200) == 0
        update_hora_gladis
      end
    end
    if User_Time::AUTO_INSTAL
    module Network
      class Main
      def self.update
        return unless @socket.ready?
        for line in @socket.recv(0xfff).split("\n")
          @nooprec += 1 if line.include?("\000\000\000\000")
          return if line.include?("\000\000\000\000")
          p "#{line}" unless line.include?("<5>") or line.include?("<6>")or not $DEBUG or not Config::PRINTLINES
          updatebool = false
          case line when /<00>(.*)<\/00>/
          Hora_Serve.receber($1.to_s)
          updatebool = false
          return
          end
          updatebool = self.update_walking(line) if @login and $game_map != nil
          updatebool = self.update_ingame(line)  if updatebool == false and @login and $game_map != nil
          updatebool = self.update_system(line)  if updatebool == false
          updatebool = self.update_outgame(line) if updatebool == false
        end
      end
      end
    end
    end


    _________________
    Spoiler:

      


    Receber Hora do Servidor KVIdx
    avatar
    bielmegatrinf
    Iniciante
    Iniciante

    Mensagens : 75
    Créditos : 3
    Cash : 0

    Receber Hora do Servidor Empty Re: Receber Hora do Servidor

    Mensagem por bielmegatrinf em Sex Dez 19, 2014 9:42 am

    valew vou testar!

    Conteúdo patrocinado

    Receber Hora do Servidor Empty Re: Receber Hora do Servidor

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Seg Set 16, 2019 9:16 pm