Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


+4
Maverick ~
Lief
Shoyu!
Roku
8 participantes

    Scene_Players - Players on

    avatar
    Roku
    Iniciante
    Iniciante


    Mensagens : 41
    Créditos : 6

    Scene_Players - Players on Empty Scene_Players - Players on

    Mensagem por Roku Seg Abr 30, 2012 9:01 pm

    Ae galera, eu tava dando uma olhada no meu pc e encontrei um sistema que mostra a quantidade de players on, então resolvi postar aqui pra vocês.
    Os devidos créditos se encontram nos scripts.

    Como chama a scene?
    $scene = Scene_Players.new

    É provavel que dê erro?
    Sim, até onde sei pode dar erro na linha 42, esse erro pode ser facilmente corrigido comentando a linha.
    Fora esse erro, o script é incompatível com o sistema de guild do netplay master v3.

    Como 'instalar' o sistema?
    Crie 2 scripts, no primeiro ponha o código: (nomeie ele como Scene_Player)
    Código:
    #==============================================================================
    # ** Scene_Players - Displays the connected players.
    #------------------------------------------------------------------------------
    # Author    GoldenAura 3 , Eragon 55100 ( Edited to work with Netplay Plus™️)
    # Version  1.0
    # Date      12-04-06
    #==============================================================================
    SDK.log("Players","GoldenAura 3, Eragon 55100","1.0","12-04-06")

    #-------------------------------------------------------------------------------
    # Begin SDK Enabled Check
    #-------------------------------------------------------------------------------
    #if SDK.state('Network') and SDK.state('PlayersWindow') and SDK.state('Players')

    class Scene_Players
      #--------------------------------------------------------------------------
      # * Main processing
      #--------------------------------------------------------------------------
      def main
        # Creates windows.
        @help_window = Window_Help.new
        @player_window = Window_Players.new if SDK.state('PlayersWindow')
        Graphics.transition
        loop do
          Graphics.frame_reset
          Graphics.update
          Input.update
          update
          if $scene != self
            break
          end
        end
        Graphics.freeze
        @help_window.dispose
        @player_window.dispose
      end
     
      #--------------------------------------------------------------------------
      # * Update
      #--------------------------------------------------------------------------
      def update
        $m.update
        @help_window.update if SDK.state('PlayersWindow')
      #  Network::Main.send_player_data
        Network::Main.update
        if Graphics.frame_count % Graphics.frame_rate == 0
          @player_window.update
        Network::Main.update
        end
        @i = 0
        for p in Network::Main.players.values
          @i += 1
        end
    #    if Input.trigger?(Input::C) && @i != 0
     #    $scene = Scene_Profile.new
     #  end
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.cancel_se)
          $scene = Scene_Menu.new
          return
        end
        if Input.press?(Input::UP)
          unless @player_window.oy == 0
            @player_window.oy -= 8
            return
          end
        end
        if Input.press?(Input::DOWN)
          if Network::Main.players.size > 11
          @player_window.oy += 8
            return
        end
        end       
      end
    end

    #end
    #-------------------------------------------------------------------------------
    # End SDK Enabled Check
    #-------------------------------------------------------------------------------
    No segundo script ponha o seguinte código: (nomeie ele como Window_Players)
    Código:
    #===============================================================================
    # ** Window_Players - Displays connected players.
    #-------------------------------------------------------------------------------
    # Author    Destined, Eragon 55100 ( Edited to work with Netplay Plus™️)
    # Version  1.0
    # Date      12-04-06
    #===============================================================================
    SDK.log("PlayersWindow", "Destined, Eragon 55100", "1.0", "12-04-06")

    #-------------------------------------------------------------------------------
    # Begin SDK Enabled Check
    #-------------------------------------------------------------------------------
    p "Network Script was not found (class Window_Players)" if not SDK.state('Network')
    if SDK.state('Network') and SDK.state('PlayersWindow')

    class Window_Players < Window_Base
      #--------------------------------------------------------------------------
      # * Object Initializing
      #--------------------------------------------------------------------------
      def initialize
        super(0, 64, 640, 416)
        self.contents = Bitmap.new(width - 32, height - 32)
        self.contents.font.size = 16
        index = 0
        refresh
      end

      #--------------------------------------------------------------------------
      # * Refreshes the window.
      #--------------------------------------------------------------------------
      def refresh
        name = Network::Main.name
        self.contents.clear
        self.contents.draw_text(4, 0, 640, 32, "Username")
        self.contents.fill_rect(0, 32, 640, 1, normal_color)
        #self.contents.draw_text(4, 32, 128, 32, "#{name}")
    #    self.contents.draw_text(300, 32, 128, 32, $game_map.name)

        i = 0
        for p in Network::Main.players.values
          begin
    #        self.contents.draw_text(4, i * 32 + 64, 128, 32, p.netid)
            self.contents.draw_text(4, i * 32 + 30, 128, 32, p.username)
    #        self.contents.draw_text(300, i * 32 + 64, 128, 32, p.map_id)
            i += 1
          rescue
          end
      #  if i >= 2
      # end
        #  self.contents.draw_text(500, 360, 640, 32, "Profiles:Space") if SDK.state('Profile')
        #end
      #end
      #--------------------------------------------------------------------------
      # * Updates the window.
      #--------------------------------------------------------------------------
      def update
        super
        refresh
      end
    end

    end
    end
    end
    #end
    #-------------------------------------------------------------------------------
    # End SDK Enabled Check
    #---------------------------------------------------------------------------
    Agora vá no script: Game_NetPlayer
    Troque todo o código que há lá por este:
    Código:
    #===============================================================================
    # ** Network - Manages network data.
    #-------------------------------------------------------------------------------
    # Author    Me™️ and Mr.Mo
    # Version  1.0
    # Date      11-04-06
    #===============================================================================
    SDK.log("Netplayer", "Me™️ and Mr.Mo", "1.0", " 11-04-06")

    p "Network Script not found!(Game_NetPlayer)" if not SDK.state('Network')
    #-------------------------------------------------------------------------------
    # Begin SDK Enabled Check
    #-------------------------------------------------------------------------------
    if SDK.state('Netplayer') == true and SDK.state('Network')
     
    class Game_NetPlayer < Game_Character
      #--------------------------------------------------------------------------
      # * Class Variables
      #--------------------------------------------------------------------------
      attr_accessor :map_id
      attr_accessor :name
      attr_accessor :level
      attr_accessor :netid
      attr_accessor :hp
      attr_accessor :sp
      attr_accessor :username
      attr_accessor :event
      attr_accessor :agi
      attr_accessor :pdef
      attr_accessor :eva
      attr_accessor :mdef
      attr_accessor :states
      attr_accessor :damage
      attr_accessor :gold
      #--------------------------------------------------------------------------
      # * Initializes a network player.
      #--------------------------------------------------------------------------
      def initialize
        name = Network::Main.name
        super
        @map_id = 0
        @name = ""
        @level = -1
        @netid = -1
        @hp = -1
        @sp = -1
        @username = "#{name}"
        @move_tom = true
        @event = self
        @eva = 0
        @agi = 0
        @pdef = 0
        @mdef = 0
        @states = []
        @damage = 0
        @gold = 0
        $game_temp.spriteset_refresh = true
      end
      #-------------------------------------------------------------------------
      # * Refresh Netplayer with Data
      #-------------------------------------------------------------------------
      def refresh(data)
        return if @netid == Network::Main.id
        @oldx = @x
        @oldy = @y
        eval(data) unless data == nil
        @transparent = (not $game_map.map_id == @map_id) rescue @transparent =false
        net_move if @oldx != @x or @oldy != @y
        @move_tom = false
      end
      #--------------------------------------------------------------------------
      # * Get the Demage
      #--------------------------------------------------------------------------
      def attack_effect(attacker = $game_party.actors[0])
        # First hit detection
        hit_result = (rand(100) < attacker.hit)
        @damage = "Miss" if !hit_result
        return "Miss" if !hit_result
        # Calculate basic damage
        atk = [attacker.atk - @pdef / 2, 0].max
        damage = atk * (20 + attacker.str) / 20
        # Element correction
        damage *= attacker.elements_correct(attacker.element_set)
        damage /= 100
        # If damage value is strictly positive
        if damage > 0
          # Critical correction
          if rand(100) < 4 * attacker.dex / @agi
            damage *= 2
            @critical = true
          end
        end
        # Dispersion
        if damage.abs > 0
          amp = [damage.abs * 15 / 100, 1].max
          damage += rand(amp+1) + rand(amp+1) - amp
        end
        # Second hit detection
        eva = 8 * @agi / attacker.dex + @eva
        hit = damage < 0 ? 100 : 100 - eva
        hit = cant_evade? ? 100 : hit
        hit_result = (rand(100) < hit)
        # State change
        netid = @netid
        Network::Main.socket.send("<state_id>#{netid}\n")
        # State Removed by Shock
        Network::Main.socket.send("<state>remove_states_shock</state>\n")
        # Substract damage from HP
        @hp -= damage
        #Get all the plus states
        s = "["
        m = attacker.plus_state_set
        for i in 0..m.size
          k = m[i]
          s += "#{k}"
          s += ", " if i != m.size
        end
        s += "]"
        Network::Main.socket.send("<state>states_plus(#{s})</state>\n")
        #Get all the minus states
        s = "["
        m = attacker.minus_state_set
        for i in 0..m.size
          k = m[i]
          s += "#{k}"
          s += ", " if i != m.size
        end
        s += "]"
        Network::Main.socket.send("<state>states_minus(#{s})</state>\n")
        @damage = damage
        return damage
      end
      #--------------------------------------------------------------------------
      # * Apply Skill Effects
      #    user  : the one using skills (battler)
      #    skill : skill
      #--------------------------------------------------------------------------
      def effect_skill(user, skill)
        # Clear critical flag
        @critical = false
        # If skill scope is for ally with 1 or more HP, and your own HP = 0,
        # or skill scope is for ally with 0, and your own HP = 1 or more
        if ((skill.scope == 3 or skill.scope == 4) and @hp == 0) or
          ((skill.scope == 5 or skill.scope == 6) and @hp >= 1)
          # End Method
          return false
        end
        # Clear effective flag
        effective = false
        # Set effective flag if common ID is effective
        effective |= skill.common_event_id > 0
        # First hit detection
        hit = skill.hit
        if skill.atk_f > 0
          hit *= user.hit / 100
        end
        hit_result = (rand(100) < hit)
        # Set effective flag if skill is uncertain
        effective |= hit < 100
        # If hit occurs
        if hit_result == true
          # Calculate power
          power = skill.power + user.atk * skill.atk_f / 100
          if power > 0
            power -= @pdef * skill.pdef_f / 200
            power -= @mdef * skill.mdef_f / 200
            power = [power, 0].max
          end
          # Calculate rate
          rate = 20
          rate += (user.str * skill.str_f / 100)
          rate += (user.dex * skill.dex_f / 100)
          rate += (user.agi * skill.agi_f / 100)
          rate += (user.int * skill.int_f / 100)
          # Calculate basic damage
          @damage = power * rate / 20
          # Element correction
          @damage *= user.elements_correct(skill.element_set)
          @damage /= 100
          # Dispersion
          if skill.variance > 0 and @damage.abs > 0
            amp = [@damage.abs * skill.variance / 100, 1].max
            @damage += rand(amp+1) + rand(amp+1) - amp
          end
          # Second hit detection
          eva = 8 * @agi / user.dex + @eva
          hit = @damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
          hit = cant_evade? ? 100 : hit
          hit_result = (rand(100) < hit)
          # Set effective flag if skill is uncertain
          effective |= hit < 100
        end
        # If hit occurs
        if hit_result == true
          # If physical attack has power other than 0
          if skill.power != 0 and skill.atk_f > 0
            # State change
            netid = @netid
            Network::Main.socket.send("<state_id>#{netid}\n")
            # State Removed by Shock
            Network::Main.socket.send("<state>remove_states_shock</state>\n")
            # Set to effective flag
            effective = true
          end
          # Substract damage from HP
          last_hp = @hp
          @hp -= @damage
          effective |= @hp != last_hp
          # State change
          @state_changed = false
          #Get all the plus states
          s = "["
          m = user.plus_state_set
          for i in 0..m.size
            k = m[i]
            s += "#{k}"
            s += ", " if i != m.size
          end
          s += "]"
          Network::Main.socket.send("<state>states_plus(#{s})</state>\n")
          #Get all the minus states
          s = "["
          m = user.minus_state_set
          for i in 0..m.size
            k = m[i]
            s += "#{k}"
            s += ", " if i != m.size
          end
          s += "]"
          Network::Main.socket.send("<state>states_minus(#{s})</state>\n")
          # If power is 0
          if skill.power == 0
            # Set damage to an empty string
            @damage = ""
            # If state is unchanged   
            unless @state_changed
              # Set damage to "Miss"
              @damage = "Miss"
            end
          end
          # If miss occurs
          else
            # Set damage to "Miss"
            @damage = "Miss"
          end
        # End Method
        return effective
      end
      #--------------------------------------------------------------------------
      # * Determine [Can't Evade] States
      #--------------------------------------------------------------------------
      def cant_evade?
        for i in @states
          if $data_states[i].cant_evade
            return true
          end
        end
        return false
      end
      #--------------------------------------------------------------------------
      # * Move
      #--------------------------------------------------------------------------
      def net_move
        if @move_tom
          moveto(@x,@y)
          return
        end
        # Get difference in player coordinates
        sx = @oldx - @x
        sy = @oldy - @y
        # If coordinates are equal
        return if sx == 0 and sy == 0
        # Get absolute value of difference
        abs_sx = sx.abs
        abs_sy = sy.abs
        moveto(@x,@y) if abs_sx > 2 or abs_sy > 2
      end
      #-------------------------------------------------------------------------
      # * Set NetId
      #-------------------------------------------------------------------------
      def do_id(id)
        @netid = id
      end
      #-------------------------------------------------------------------------
      # * Start
      #-------------------------------------------------------------------------
      def start(id)
        return if id.to_i == Network::Main.id
        #Network::Main.send_start_request(id)
      end
      #-------------------------------------------------------------------------
      # * Map (dummy)
      #-------------------------------------------------------------------------
      def map
        return
      end
      #-------------------------------------------------------------------------
      # * Increase steps
      #-------------------------------------------------------------------------
      def ic
        increase_steps
      end
      #-------------------------------------------------------------------------
      # * Emptied(for errors) Check event trigger touch
      #-------------------------------------------------------------------------
      def check_event_trigger_touch(x, y)
        return
      end
    end
    end
    #-------------------------------------------------------------------------------
    # End SDK Enabled Check
    #----------------------------------------------------------------
    Shoyu!
    Shoyu!
    Membro Ativo
    Membro Ativo


    Mensagens : 272
    Créditos : 13

    Scene_Players - Players on Empty Re: Scene_Players - Players on

    Mensagem por Shoyu! Seg Abr 30, 2012 9:06 pm

    Não seria mais fácil ir no chat e digitar "/online" ?

    Ou colocar
    Código:
    $game_variables[X] = Network::Main.players.values
    ?



    _________________



    Todas as pessoas vivem confiando na sua sabedoria e no seu conhecimento, e ficam presos a eles. Eles chamam isso de "realidade". Entretanto sabedoria e conhecimento são ambíguos, deste modo, a realidade não é nada além de uma ilusão.

    Itachi Uchiha


    avatar
    Roku
    Iniciante
    Iniciante


    Mensagens : 41
    Créditos : 6

    Scene_Players - Players on Empty Re: Scene_Players - Players on

    Mensagem por Roku Seg Abr 30, 2012 9:18 pm

    E como você mostraria todos os player em uma variável do sistema?
    E não sei se você leu, mas esse script mostra os players online, não a quantidade de players online.


    _________________
    MRM
    é igual um gigante cadeirante, quando cai, é muito difícil se levantar,
    e quando se levanta não consegue ir para frente sem cair novamente.
    Lief
    Lief
    Desenvolvedor
    Desenvolvedor


    Mensagens : 834
    Créditos : 50

    Scene_Players - Players on Empty Re: Scene_Players - Players on

    Mensagem por Lief Seg Abr 30, 2012 9:20 pm

    @Shoyu!:
    O "/online" só diz quantos players estão online
    esse diz QUAIS players estão online,aparecendo os mapas e talz como o sistema do NP Master 3.1(mas esse não é ele,eu acho.)
    avatar
    Roku
    Iniciante
    Iniciante


    Mensagens : 41
    Créditos : 6

    Scene_Players - Players on Empty Re: Scene_Players - Players on

    Mensagem por Roku Seg Abr 30, 2012 9:21 pm

    Não creio que seja do NPM 3.1, esse daí achei junto com uns outros 60 scripts que tenho aqui.
    Eu já vou compatibiliza-lo com o sistema de guild do master.

    Spoiler:
    Ta aí a imagem do sistema.

    Vou avisando novamente, caso utilize um netplay com sistema de guild, não utilize esse sistema pois ele é incompatível.
    Maverick ~
    Maverick ~
    Membro Ativo
    Membro Ativo


    Mensagens : 372
    Créditos : 39

    Scene_Players - Players on Empty Re: Scene_Players - Players on

    Mensagem por Maverick ~ Seg Abr 30, 2012 9:38 pm

    Muito bom mesmo cara,
    tentei compatibilizar com o v3 já.
    MISSION COMPLETE.

    Mas perdi no meu PC --' Fuckthashit +1 Cred


    _________________
    Alguma Duvida!? Me mande uma MP

    Scene_Players - Players on BgIconeLivro                 Regras do Fórum


    Scene_Players - Players on L4thF
    Adanrox
    Adanrox
    Diva
    Diva


    Mensagens : 522
    Créditos : 74

    Ficha do personagem
    Nível: 1
    Experiência:
    Scene_Players - Players on Left_bar_bleue0/0Scene_Players - Players on Empty_bar_bleue  (0/0)
    Vida:
    Scene_Players - Players on Left_bar_bleue30/30Scene_Players - Players on Empty_bar_bleue  (30/30)

    Scene_Players - Players on Empty Re: Scene_Players - Players on

    Mensagem por Adanrox Seg Abr 30, 2012 9:53 pm

    ­


    Última edição por Adanrox em Ter Dez 17, 2013 12:08 pm, editado 1 vez(es)
    Maverick ~
    Maverick ~
    Membro Ativo
    Membro Ativo


    Mensagens : 372
    Créditos : 39

    Scene_Players - Players on Empty Re: Scene_Players - Players on

    Mensagem por Maverick ~ Seg Abr 30, 2012 9:56 pm

    Créditos aos seguintes makers
    Código:
     GoldenAura 3 , Eragon 55100, Destined,  Me™ and Mr.Mo


    _________________
    Alguma Duvida!? Me mande uma MP

    Scene_Players - Players on BgIconeLivro                 Regras do Fórum


    Scene_Players - Players on L4thF
    Valentine
    Valentine
    Administrador
    Administrador


    Medalhas : Scene_Players - Players on ZgLkiRU
    Mensagens : 5345
    Créditos : 1164

    Scene_Players - Players on Empty Re: Scene_Players - Players on

    Mensagem por Valentine Seg Abr 30, 2012 10:14 pm

    Enquanto você estiver vendo os jogadores nessa scene, alguém pode estar lhe matando ;/

    Não é muito bom usar scenes dessa forma.
    Lief
    Lief
    Desenvolvedor
    Desenvolvedor


    Mensagens : 834
    Créditos : 50

    Scene_Players - Players on Empty Re: Scene_Players - Players on

    Mensagem por Lief Seg Abr 30, 2012 10:16 pm

    Marlos Gama escreveu:Enquanto você estiver vendo os jogadores nessa scene, alguém pode estar lhe matando ;/

    Não é muito bom usar scenes dessa forma.
    Zona segura existe pra quê? Very Happy

    Conteúdo patrocinado


    Scene_Players - Players on Empty Re: Scene_Players - Players on

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Dom Nov 24, 2024 6:11 pm