Aldeia RPG

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

Suporte no desenvolvimento de jogos


    Drops fixos no mapa

    Valentine
    Valentine
    Administrador
    Administrador


    Medalhas : Drops fixos no mapa ZgLkiRU
    Mensagens : 5302
    Créditos : 1160

    Drops fixos no mapa Empty Drops fixos no mapa

    Mensagem por Valentine Ter Set 13, 2022 1:07 pm

    1) Na subpasta Map, que fica dentro da pasta Scripts do SERVIDOR, abra o arquivo game_map.rb
    2) Substitua todo o def initialize por:
    Código:
     def initialize(id, map)
        @id = id
        @data = map.data
        @width = map.width
        @height = map.height
        @tileset_id = map.tileset_id
        @pvp = Note.read_boolean('PvP', map.note)
        @total_players = 0
        @events = {}
        @drops = []
        @fixed_drops_removed = []
        enemies_revive_regions
        add_fixed_drops
      end
    3) Substitua todo o def remove_drop por:
    Código:
     def add_fixed_drops
        return unless FIXED_DROPS_MAPS.has_key?(@id)
        FIXED_DROPS_MAPS[@id].each { |drop| add_fixed_drop(drop[:item_id], drop[:kind], drop[:amount], drop[:x], drop[:y]) }
      end

      def add_fixed_drop(item_id, kind, amount, x, y)
        @drops << Drop.new(item_id, kind, amount, '', -1, x, y, 0, 0)
      end

      def remove_drop(drop_id)
        add_fixed_drop_removed(@drops[drop_id]) if @drops[drop_id].despawn_time == 0
        @drops.delete_at(drop_id)t
        $network.send_remove_drop(@id, drop_id)
      end

      def add_fixed_drop_removed(drop)
        drop.respawn_time = Time.now + DROP_DESPAWN_TIME
        @fixed_drops_removed << drop
      end
    4) Substitua todo o def update_drops por:
    Código:
     def update_drops
        # downto evita erros ao remover elementos enquanto a matriz está sendo iterada
        (@drops.size - 1).downto(0) { |drop_id| remove_drop(drop_id) if @drops[drop_id].despawn_time != 0 && Time.now > @drops[drop_id].despawn_time }
        update_drop_respawn
      end

      def update_drop_respawn
        # downto evita erros ao remover elementos enquanto a matriz está sendo iterada
        (@fixed_drops_removed.size - 1).downto(0) do |drop_id|
          drop = @fixed_drops_removed[drop_id]
          if Time.now > drop.respawn_time
            add_fixed_drop(drop.item_id, drop.kind, drop.amount, drop.x, drop.y)
            $network.send_add_drop(@id, drop.item_id, drop.kind, drop.amount, drop.x, drop.y)
            @fixed_drops_removed.delete_at(drop_id)
          end
        end
      end
    5) Na pasta Kernel, abra o arquivo structs.rb
    6) Substitua todo o Drop = Struct.new( por:
    Código:
    Drop = Struct.new(
     :item_id,
     :kind,
     :amount,
     :name,
     :party_id,
     :x,
     :y,
     :despawn_time,
     :respawn_time,
     :pick_up_time
    )
    7) Na pasta principal do servidor, abra o arquivo configs.ini e adicione o código abaixo (da variável FIXED_DROPS_MAPS junto com um exemplo de como configurar os drops fixos):
    Código:
    # Drops fixos dos mapas
    FIXED_DROPS_MAPS = {}
    # Mapa: Floresta (ID 1)
    FIXED_DROPS_MAPS[1] = [{
      # ID do item
      :item_id => 1,
      # (1 = item, 2 = arma, 3 = protetor)
      :kind => 1,
      # Quantidade
      :amount => 1,
      # Coordenada x
      :x => 23,
      # Coordenada y
      :y => 11
    },
    {
      # ID do item
      :item_id => 1,
      # (1 = item, 2 = arma, 3 = protetor)
      :kind => 2,
      # Quantidade
      :amount => 3,
      # Coordenada x
      :x => 24,
      # Coordenada y
      :y => 11
    }]
    Agora, você pode configurar os drops fixos no FIXED_DROPS_MAPS do confings.ini.

    Créditos:
    Valentine


    _________________
    Drops fixos no mapa Logof5

    racki12 e Kiyoko gostam desta mensagem


      Data/hora atual: Sex Set 30, 2022 4:14 pm