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


5 participantes

    Pet global (Versão plug and Play)

    Maephel
    Maephel
    Ocasional
    Ocasional


    Mensagens : 212
    Créditos : 18

    Pet global (Versão plug and Play) Empty Pet global (Versão plug and Play)

    Mensagem por Maephel Dom Nov 02, 2014 1:09 am

    É o mesmo script de pet global do RD12 sem mais configurações com a diferença que agora é só colar acima do main!

    Código:
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
    #
    #                           Pet Global
    #  Autor: RD12
    #
    #-------------------------------------------------------------------------------
    #  Com esse sistema os jogadores poderão ter Pets, globais.
    #  O pet será o Anel[acessório].
    #-------------------------------------------------------------------------------
    #  Para criar um Pet, insira no Módulo PET o seguinte:
    #  ID[id] = ["Gráfico", HP, MP, Tempo]
    #---------------------------Explicação------------------------------------------
    #  Id = ID do Anel, que será o Pet
    #  HP/MP = HP/MP que o pet recupera com o Tempo
    #  Tempo = Segundos que o pet recupera o HP/MP
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
    #                    http://www.aldeiarpg.com/
    #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:

    module PET
      ID = []
      #ID[Luva_ID] = ["Gráfico", HP, MP, Tempo(segundos)]
      ID[25] = ["Fire", 0, 0, 0]     # não recupera HP/MP
      #ID[25] = ["Fire", 20, 20, 5]  # Recupera HP/MP
      
    end

    class Scene_Map
      attr_reader :spriteset
    end

    class Spriteset_Map
      attr_reader :character_sprites, :viewport1
       alias rd12_dispose dispose
      def player_sprite
        @character_sprites.each do |spr_char|
          if spr_char.character == $game_player
            return spr_char
          end
        end
      end
      def dispose
      $Pet = nil
      rd12_dispose
      end  
    end

    class Scene_Map
      attr_reader   :character
      attr_reader   :animation_id
      
        alias alias_update update
       def update
        alias_update
        return if !$scene.is_a?(Scene_Map)
        return if $scene.spriteset.nil?
        @actor = $game_party.actors[0]
        return unless $scene.is_a?(Scene_Map)
        if PET::ID[@actor.armor4_id].nil?  or @actor.armor4_id.nil?
          return if $Pet.nil?
          $Pet.bitmap = RPG::Cache.character("", 4)
          $Pet = nil
          return
        end
        @direção = $game_player.direction
        #Criar sprite do pet
        
        unless $Pet
          $Pet   = Sprite.new(@spriteset.viewport1)
          $Pet.x = $game_player.screen_x
          $Pet.y = $game_player.screen_y
        end
          $Pet.bitmap = RPG::Cache.character(PET::ID[@actor.armor4_id][0], 4)
        #Pet Recuperar o HP/MP com o tempo
        tempo = PET::ID[@actor.armor4_id][3]
       if tempo > 0
         if Graphics.frame_count % (20 * tempo) == 0
           $game_party.actors[0].hp += PET::ID[@actor.armor4_id][1]
           $game_party.actors[0].sp += PET::ID[@actor.armor4_id][2]
         end
        end
      
        #Cria o gráfico do Pet, e com animação de andar
        cw = $Pet.bitmap.width / 4
        ch = $Pet.bitmap.height / 4
        aw = $frame*cw
        ah = (@direção - 2) / 2 * ch
        $Pet.src_rect = Rect.new(aw, ah, cw ,ch )
        
        player_spr = $scene.spriteset.player_sprite
        
        #Pet Seguir o Player
        #Direção =:2:=
        if $game_player.direction == 2
          $Pet.z = player_spr.z - 1
         return unless $game_map.passable?($game_player.x, $game_player.y-1, 2)

         if $Pet.x < ($game_player.screen_x - $Pet.bitmap.width/8)
           $Pet.x += 4
         end
         if $Pet.x > ($game_player.screen_x - $Pet.bitmap.width/8)
           $Pet.x -= 4
         end

         if $Pet.y < ($game_player.screen_y-32-$Pet.bitmap.height/4)
           $Pet.y += 4
         end  
         if $Pet.y > ($game_player.screen_y-32-$Pet.bitmap.height/4)
           $Pet.y -= 4
         end  

        #Direção =:4:=
        elsif $game_player.direction == 4
         return unless $game_map.passable?($game_player.x+1, $game_player.y, 4)
          $Pet.z = player_spr.z + 1
         if $Pet.x < ($game_player.screen_x+16)
           $Pet.x += 4
         end
         if $Pet.x > ($game_player.screen_x+16)
           $Pet.x -= 4
         end
         if $Pet.y < ($game_player.screen_y-$Pet.bitmap.height/4)
           $Pet.y += 4
         end  
         if $Pet.y > ($game_player.screen_y-$Pet.bitmap.height/4)
           $Pet.y -= 4
         end  
            
        #Direção =:6:=
        elsif $game_player.direction == 6
         return unless $game_map.passable?($game_player.x-1, $game_player.y,
          $Pet.z = player_spr.z + 1
         if $Pet.x < ($game_player.screen_x-16-$Pet.bitmap.width/4)
           $Pet.x += 4
         end
         if $Pet.x > ($game_player.screen_x-16-$Pet.bitmap.width/4)
           $Pet.x -= 4
         end
        
         if $Pet.y < ($game_player.screen_y-$Pet.bitmap.height/4)
           $Pet.y += 4
         end
         if $Pet.y > ($game_player.screen_y-$Pet.bitmap.height/4)
           $Pet.y -= 4
         end  
        
      #Direção =:8:=
       elsif $game_player.direction == 8
         return unless $game_map.passable?($game_player.x, $game_player.y+1, 8)
          $Pet.z = player_spr.z + 1
         if $Pet.x < ($game_player.screen_x - ($Pet.bitmap.width/8))
           $Pet.x += 4
         end
         if $Pet.x > ($game_player.screen_x - ($Pet.bitmap.width/8))
           $Pet.x -= 4
         end
        
         if $Pet.y < ($game_player.screen_y+12-($Pet.bitmap.height/8))
           $Pet.y += 4
         end  
         if $Pet.y > ($game_player.screen_y+12-($Pet.bitmap.height/8))
           $Pet.y -= 4
         end  
       end#if player.direction
        
      end#update
    end#class

    class Sprite_Character < RPG::Sprite
      alias alias_update update
      def update                
        alias_update          
       $frame = @character.pattern
      end
    end

    class Sprite_NetCharacter < RPG::Sprite
      alias rd12_animate_player animate_player
      def dispose
        @_text_display.dispose
        @chat_text_display.dispose
        @pet_spr.dispose
        super
      end
      
      #--------------------------------------------------------------------------
      # * Atualizar movimento do Jogador e Pet
      #--------------------------------------------------------------------------
      def animate_player

        @chat_text_display.x = self.x
        @chat_text_display.y = self.y - 129

        sx = @character.pattern * @cw
        sy = (@character.direction - 2) / 2 * @ch
        self.src_rect.set(sx, sy, @cw, @ch)
        
         cw = @pet_spr.bitmap.width / 4
         ch = @pet_spr.bitmap.height / 4
         aw = @character.pattern*cw
         ah = (@character.direction - 2) / 2 * ch
         @pet_spr.src_rect = Rect.new(aw, ah, cw ,ch )
        
        if @character.direction == 2
          @pet_spr.z = self.z-1
          @pet_spr.x = (self.x - @pet_spr.bitmap.width/8)
          @pet_spr.y = (self.y-32-@pet_spr.bitmap.height/4)

       elsif @character.direction == 4
         @pet_spr.x = (self.x+16)
         @pet_spr.y = (self.y-@pet_spr.bitmap.height/4)
          
       elsif @character.direction == 6
         @pet_spr.x = (self.x-16-@pet_spr.bitmap.width/4)
         @pet_spr.y = (self.y-@pet_spr.bitmap.height/4)
          
       elsif @character.direction == 8
         @pet_spr.z = self.z+1
         @pet_spr.x = (self.x-(@pet_spr.bitmap.width/8))
         @pet_spr.y = (self.y+12-(@pet_spr.bitmap.height/8))      
        end
      rd12_animate_player
      end
    end

    ## Modificação por Maephel (Plug and Play)

    class Game_NetPlayer < Game_Character
      
      attr_accessor :pet
      
      def initialize
        super
        @pet = ''
      end
      
      def pet
        return @pet
      end
      
      def dispose
        @pet_spr = Sprite.new(self.viewport)
        @pet_spr.bitmap = RPG::Cache.character(@character.pet, @character.character_hue)
        @pet_spr.visible = self.visible
      end
    end


    class Sprite_NetCharacter < RPG::Sprite
      def initialize(viewport, id, character = nil)
        super(viewport)
        @pet_spr = Sprite.new(self.viewport)
        @pet_spr.bitmap = RPG::Cache.character(@character.pet, @character.character_hue)
        @pet_spr.visible = self.visible
      end
    end


    11.02.2014 02:12:39:

    Para quem souber script:

    Sugestões:
    Melhorar como o pet irá seguir o herói :
    - quando o personagem estiver parado o pet correr livremente quando o personagem se mover o pet for atrás do jogador!
     
    Fazer o pet atacar:
    - O Pet ataca jogadores em mapas PVP se atacarem o dono.
    - O Pet ter uma barra de HP e MP e até subir de nível.
    - Seria interessante se o Pet fosse editado no Banco de dados na aba de personagens.
     
    Modificar para não ser um acessório/item/equipamento:
    - Quem já jogou ragnarok sabe que tinha que domesticar e ganhava um ovo e tal.
    - Domesticar através de item ou magia.
    - Bota na parte de “Config” uma opção de domesticar(se desativado só comprando).
    Código:
    # Ativar ou desativar para domesticar Pet
      DOMESTICAR_PET = true
    No mob ou num evento comum (com o gráfico do pet) um comentário do tipo “Domesticar (02)” e se o jogador tentasse domesticar ganharia um ovo ou algum item no iventário com o pet correspondente ao personagem no banco de dados de id: 02.
    - esse Pet poderia ser equipado numa window própria que poderia ser aberta na parte de configurações ou outro lugar.
    - nessa window apareceria a lista de itens de pets/ovos/recepientes e em cima outra window com a opção de arrastar o item para equipar:
    exemplo:
    window dos pets:
    com um sistema de "Scroll Bar" quando a janela de pet estiver cheia ou de abas.

    Uma window para as informações do pet equipado contendo coisas como:
    - HP
    - MP
    - Ataque
    - Def
    -Skills (que poderia ser colocada na hotkey)
    -Lvl
    -Fome(que poderia ser indicado acima do pet quando ele estivesse com fome)(não global)
    -Nome(que poderia ser editado)
    -e uma picture com uma imagem dele(artistica)
    exemplo:
    Picture do Pet:

    Ser adicionado icones (clicaveis) no canto da tela ou uma hotkey para as letras (Q,W,E), ou mais contendo:
    -(Q)ataque (ao escolher essa opção o mouse viraria um alvo e o monstro que fosse clicado o pet iria atacar)
    -(W) Habilidade principal.
    -(E)  Habilidade secundária.

    Sistema de Lealdade/não usar o pet de outro jogador
    -se o pet fosse mudado de nome ele não poderia ser usado por outro jogador.
    -se o pet passar de lvl ele não poderá ser usado por outro jogador.

    Opções ao clicar com o botão direito do mouse:
    - Info Pet
    - Alimentar Pet.
    - Desequipar pet.
    - Libertar Pet (Ele anda livremente pelo mapa atacando mobs e jogadores(se algum jogador atacar o pet)).
    avatar
    bielmegatrinf
    Iniciante
    Iniciante


    Mensagens : 75
    Créditos : 3

    Pet global (Versão plug and Play) Empty Re: Pet global (Versão plug and Play)

    Mensagem por bielmegatrinf Dom Nov 02, 2014 9:53 am

    Nossa Ótimo! muito boas suas ideias também Very Happy
    GallighanMaker
    GallighanMaker
    Colaborador
    Colaborador


    Medalhas : Pet global (Versão plug and Play) ZgLkiRU
    Mensagens : 985
    Créditos : 102

    Ficha do personagem
    Nível: 1
    Experiência:
    Pet global (Versão plug and Play) Left_bar_bleue0/0Pet global (Versão plug and Play) Empty_bar_bleue  (0/0)
    Vida:
    Pet global (Versão plug and Play) Left_bar_bleue30/30Pet global (Versão plug and Play) Empty_bar_bleue  (30/30)

    Pet global (Versão plug and Play) Empty Re: Pet global (Versão plug and Play)

    Mensagem por GallighanMaker Dom Nov 02, 2014 5:07 pm

    isso é para o crystal? ou para o master?


    _________________
    Pet global (Versão plug and Play) 8dVK0ku
    using C# and import Python developer || Expert in Unity Engine IDE. || Pet global (Versão plug and Play) 769_heart 2D pixel games.
    Maephel
    Maephel
    Ocasional
    Ocasional


    Mensagens : 212
    Créditos : 18

    Pet global (Versão plug and Play) Empty Re: Pet global (Versão plug and Play)

    Mensagem por Maephel Dom Nov 02, 2014 5:11 pm

    No crystal já tem
    GallighanMaker
    GallighanMaker
    Colaborador
    Colaborador


    Medalhas : Pet global (Versão plug and Play) ZgLkiRU
    Mensagens : 985
    Créditos : 102

    Ficha do personagem
    Nível: 1
    Experiência:
    Pet global (Versão plug and Play) Left_bar_bleue0/0Pet global (Versão plug and Play) Empty_bar_bleue  (0/0)
    Vida:
    Pet global (Versão plug and Play) Left_bar_bleue30/30Pet global (Versão plug and Play) Empty_bar_bleue  (30/30)

    Pet global (Versão plug and Play) Empty Re: Pet global (Versão plug and Play)

    Mensagem por GallighanMaker Dom Nov 02, 2014 5:34 pm

    é que vc disse q era apenas para colocar acima do main e testei no netplay master 4.9 não deu certo, não entendi muito bem:

    Maephel escreveu:É o mesmo script de pet global do RD12 sem mais configurações com a diferença que agora é só colar acima do main!

    ...


    _________________
    Pet global (Versão plug and Play) 8dVK0ku
    using C# and import Python developer || Expert in Unity Engine IDE. || Pet global (Versão plug and Play) 769_heart 2D pixel games.
    blackcrow
    blackcrow
    Semi-Experiente
    Semi-Experiente


    Mensagens : 111
    Créditos : 41

    Pet global (Versão plug and Play) Empty Re: Pet global (Versão plug and Play)

    Mensagem por blackcrow Dom Nov 02, 2014 7:11 pm

    ??? https://www.aldeiarpg.com/t6691-att-pet-global-para-netplay-master-v4
    E cortou partes do código...creio que esse script não está funcional.
    um pedido bem pequeno hein^^ isso aí da muito trabalho amigo.
    GallighanMaker
    GallighanMaker
    Colaborador
    Colaborador


    Medalhas : Pet global (Versão plug and Play) ZgLkiRU
    Mensagens : 985
    Créditos : 102

    Ficha do personagem
    Nível: 1
    Experiência:
    Pet global (Versão plug and Play) Left_bar_bleue0/0Pet global (Versão plug and Play) Empty_bar_bleue  (0/0)
    Vida:
    Pet global (Versão plug and Play) Left_bar_bleue30/30Pet global (Versão plug and Play) Empty_bar_bleue  (30/30)

    Pet global (Versão plug and Play) Empty Re: Pet global (Versão plug and Play)

    Mensagem por GallighanMaker Dom Nov 02, 2014 8:03 pm

    achei muito estranho tbm...


    _________________
    Pet global (Versão plug and Play) 8dVK0ku
    using C# and import Python developer || Expert in Unity Engine IDE. || Pet global (Versão plug and Play) 769_heart 2D pixel games.
    Adanrox
    Adanrox
    Diva
    Diva


    Mensagens : 522
    Créditos : 74

    Ficha do personagem
    Nível: 1
    Experiência:
    Pet global (Versão plug and Play) Left_bar_bleue0/0Pet global (Versão plug and Play) Empty_bar_bleue  (0/0)
    Vida:
    Pet global (Versão plug and Play) Left_bar_bleue30/30Pet global (Versão plug and Play) Empty_bar_bleue  (30/30)

    Pet global (Versão plug and Play) Empty Re: Pet global (Versão plug and Play)

    Mensagem por Adanrox Seg Nov 03, 2014 11:44 am

    @Maephel
    x Tópico muito desarrumado e poucas explicações, você se diz ser simples, mas a contabilidade está dando erro quando se conecta ao jogo e testar o script.


    _________________
    Pet global (Versão plug and Play) EiLDYSs

    Conteúdo patrocinado


    Pet global (Versão plug and Play) Empty Re: Pet global (Versão plug and Play)

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sáb Nov 23, 2024 11:12 pm