Partagez
Aller en bas
avatar
Black'
Membre

Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010

Zelda Hearth System

le Dim 10 Oct - 7:40
Bonjour à tous !
Alors comme je me suis inscrit récemment sur la communauté anglaise de making, je me suis dit que partager des scripts seraient sympas. Alors voilà, je vous donne pour la première fois, le Zelda Hearth System.

Nom : Zelda Hearth System
Auteur : Omega7
Utilité : Crée un HUD en forme de cœur et comptabilise les points de vie en cœurs. A la Zelda
Lien de la Démo : http://omegas7.wordpress.com/2010/04/14/zelda-health-system/
Code :
Spoiler:
Code:
# =============================================================================
# OmegaX Zelda Health System.
# Author: Omegas7
# Version: 0.1.
# =============================================================================
# Description:
#  Simulates a Zelda Hearts system: A HUD that will represent your HP with
# heart graphics. Each heart is worth 4 HP (4 fragments).
# =============================================================================
# Notes:
#  Just make sure that the player's life is a multiple of 4 to have this
# working properly!
# =============================================================================

module OmegaX
  module ZeldaHealth
    HeartsPerRow = 10
    HeartGraphic = 'Heart'
    HeartBack = 'HeartBack'
   
    SWITCH = 1
  end
end

class ZeldaHealth
  include OmegaX::ZeldaHealth
  def initialize
    @member = $game_party.members[0]
    @id = 0
    if @member != nil
      @id = @member.id
      @hp = $game_party.members[0].hp
      @maxhp = $game_party.members[0].maxhp
    end
    @backs = []
    @hearts = []
    @switch = $game_switches[SWITCH]
    draw_sprites if @id != 0
    refresh if @id != 0
  end
  def clear
    for i in 0...@hearts.size
      @hearts[i].finish
      @hearts[i] = nil
      @backs[i].finish
      @backs[i] = nil
    end
    @hearts.compact!
    @backs.compact!
  end
  def draw_sprites
    row = 0
    requirement_for_row = HeartsPerRow
    x = 0
    for i in 0...((@maxhp/4.0).ceil)
      if i < requirement_for_row
        @backs.push(ZeldaHeartBack.new(x,row))
        @hearts.push(ZeldaHeart.new(x,row))
        x += 1
      else
        row += 1
        x = 0
        requirement_for_row += (HeartsPerRow)
        @backs.push(ZeldaHeartBack.new(x,row))
        @hearts.push(ZeldaHeart.new(x,row))
        x = 1
      end
      @hearts[@hearts.size - 1].visible(@switch)
      @backs[@hearts.size - 1].visible(@switch)
    end
  end
  def refresh
    hp = @hp
    done = false
    if hp > 0
      for heart in 0...@hearts.size
        for switch in 0...@hearts[heart].switches.size
          if @hearts[heart].switches[switch] == false && hp > 0
            @hearts[heart].switches[switch] = true
            hp -= 1
            done = true if hp <= 0
          end
        end
      end
    end
    for i in 0...@hearts.size
      @hearts[i].update
    end
  end
  def update
    if $game_party.members[0] == nil
      if @id != 0
        @id = 0
        finish
      end
    else
      if @id != $game_party.members[0].id
        @id = -1
      end
    end
    if @id != 0
      if @hp != $game_party.members[0].hp ||
        @maxhp != $game_party.members[0].maxhp ||
        @switch != $game_switches[SWITCH] ||
        @id != $game_party.members[0].id
        @id = $game_party.members[0].id
        @switch = $game_switches[SWITCH]
        @hp = $game_party.members[0].hp
        @maxhp = $game_party.members[0].maxhp
        clear
        draw_sprites
        refresh
      end
    end
  end
  def finish
    for i in 0...@hearts.size
      @hearts[i].finish
      @backs[i].finish
    end
  end
end

class ZeldaHeartBack
  include OmegaX::ZeldaHealth
  def initialize(index,row)
    @sprite = Sprite_Base.new
    @sprite.bitmap = Cache.system(HeartBack)
    @sprite.x = index * @sprite.width
    @sprite.y = row * @sprite.height
    @sprite.z = 100
  end
  def visible(value)
    @sprite.visible = value
  end
  def finish
    @sprite.dispose
  end
end

class ZeldaHeart
  include OmegaX::ZeldaHealth
  attr_accessor :switches
  def initialize(index,row)
    bitmap = Cache.system(HeartGraphic)
    @switches = [false,false,false,false]
    @current = [false,false,false,false]
    @parts = []
    @sprite = Sprite_Base.new
    @sprite.bitmap = Bitmap.new(bitmap.width,bitmap.height)
    @sprite.x = index * bitmap.width
    @sprite.y = row * bitmap.height
    @sprite.z = 101
    for i in 0...4
      @parts.push(Bitmap.new(bitmap.width/2,bitmap.height/2))
      case i
      when 0
        @parts[i].blt(0,0,bitmap,Rect.new(0,0,bitmap.width/2,bitmap.height/2))
      when 1
        @parts[i].blt(0,0,bitmap,Rect.new(bitmap.width/2,0,bitmap.width/2,bitmap.height/2))
      when 2
        @parts[i].blt(0,0,bitmap,Rect.new(0,bitmap.height/2,bitmap.width/2,bitmap.height/2))
      when 3
        @parts[i].blt(0,0,bitmap,Rect.new(bitmap.width/2,bitmap.height/2,bitmap.width/2,bitmap.height/2))
      end
    end
  end
  def update
    if @current != @switches
      refresh
    end
  end
  def refresh
    @sprite.bitmap.clear
    @current = @switches
    for i in 0...@current.size
      if @current[i]
        case i
        when 0
          @sprite.bitmap.blt(0,0,@parts[i],Rect.new(0,0,@parts[i].width,@parts[i].height))
        when 1
          @sprite.bitmap.blt(@parts[i].width,0,@parts[i],Rect.new(0,0,@parts[i].width,@parts[i].height))
        when 2
          @sprite.bitmap.blt(0,@parts[i].height,@parts[i],Rect.new(0,0,@parts[i].width,@parts[i].height))
        when 3
          @sprite.bitmap.blt(@parts[i].width,@parts[i].height,@parts[i],Rect.new(0,0,@parts[i].width,@parts[i].height))
        end
      end
    end
  end
  def visible(value)
    @sprite.visible = value
  end
  def finish
    @sprite.dispose
  end
end



class Scene_Map
  alias omegax_zelda_health_initialize initialize
  alias omegax_zelda_health_update update
  alias omegax_zelda_health_terminate terminate
  def initialize
    omegax_zelda_health_initialize
    @zeldahealth = ZeldaHealth.new
  end
  def update
    omegax_zelda_health_update
    @zeldahealth.update
  end
  def terminate
    omegax_zelda_health_terminate
    @zeldahealth.finish
  end
end







Screens :
Spoiler:


Cordialement,

PS : Il me semble que certains voulaient un système pareil, mais avaient demandé une modif' des scripteurs, veuillez les avertir, pour ne pas tourner à vide Wink.


Dernière édition par Black' le Dim 10 Oct - 11:19, édité 1 fois
avatar
Shadow of Life
Membre

Nombre de messages : 870
Age : 22
Localisation : Joyeux. Comment ça c'est pas la bonne case ?
Distinction : Artiste de la flagornerie.
Porte parole du Ô grand Voilà voilà.
Président du club des masochistes du forum
Fake Gentleman

Soumis ^^
Date d'inscription : 13/09/2009

Re: Zelda Hearth System

le Dim 10 Oct - 10:22
Alors là ! Oo
Jamais vu de script aussi ... logique pour un RPG.
Un grand merci à toi Black' !
avatar
finalfan
Membre

Nombre de messages : 140
Age : 27
Distinction : aucune
Date d'inscription : 16/08/2008

Re: Zelda Hearth System

le Dim 10 Oct - 10:47
Très bon script pour un A-RPG fait maison.
avatar
Docteur Kojy.
Staffeux retraité

Nombre de messages : 1210
Age : 23
Localisation : si tu dis mon pseudo 3 fois devant un miroir, j'apparais derrière toi !
Distinction : Sauveur préféré de notre chère patrie la communauté

Officieusement le coach-vocal-impresario-choriste-muse-amant de Coco'[Coco' himself Smile]
Attend toujours de le voir apparaitre après avoir dit son pseudo 256 fois devant un miroir [Xak' ]
Si tu le poses contre ton oreille, tu entends un Sonic Rainboom.
Date d'inscription : 24/02/2008

Re: Zelda Hearth System

le Dim 10 Oct - 10:54
Il est vraiment génial, ce script ! x)
Je crois que je vais créer un mini jeu juste pour le plaisir de m'en servir.

Merci du partage, et merci à omega7 !
En plus ça semble tout simple à utiliser. (Mais ce serait sympa d'avoir un menu adapté O=)
avatar
Black'
Membre

Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010

Re: Zelda Hearth System

le Dim 10 Oct - 11:27
Le petit + :
Les cœurs styles "moderne", par Black' et Iconfinder :





Utilisation :
1•Enregistrer sous, en les appelant respectivement "Heart" et "HeartBack".
2•Placer les deux images (fonctionnent par paire) dans le dossier system

Cordialement,
avatar
Docteur Kojy.
Staffeux retraité

Nombre de messages : 1210
Age : 23
Localisation : si tu dis mon pseudo 3 fois devant un miroir, j'apparais derrière toi !
Distinction : Sauveur préféré de notre chère patrie la communauté

Officieusement le coach-vocal-impresario-choriste-muse-amant de Coco'[Coco' himself Smile]
Attend toujours de le voir apparaitre après avoir dit son pseudo 256 fois devant un miroir [Xak' ]
Si tu le poses contre ton oreille, tu entends un Sonic Rainboom.
Date d'inscription : 24/02/2008

Re: Zelda Hearth System

le Dim 10 Oct - 11:37
En fait y a un gros problème avec ce script. J'ai joué à la démo, et... on peut pas mourir ! 8D
Si on arrive à un seul pdv, on peut plus en perdre d'autres. Facheux.
avatar
Black'
Membre

Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010

Re: Zelda Hearth System

le Dim 10 Oct - 11:44
C'est normal, c'est que l'évènement n'active tout simplement pas la mort dans ses paramètres :
avatar
Docteur Kojy.
Staffeux retraité

Nombre de messages : 1210
Age : 23
Localisation : si tu dis mon pseudo 3 fois devant un miroir, j'apparais derrière toi !
Distinction : Sauveur préféré de notre chère patrie la communauté

Officieusement le coach-vocal-impresario-choriste-muse-amant de Coco'[Coco' himself Smile]
Attend toujours de le voir apparaitre après avoir dit son pseudo 256 fois devant un miroir [Xak' ]
Si tu le poses contre ton oreille, tu entends un Sonic Rainboom.
Date d'inscription : 24/02/2008

Re: Zelda Hearth System

le Dim 10 Oct - 11:46
Oh ! O=
Au temps pour moi, je suis désolé.
Merci pour ton information en tout cas ! x)
avatar
lulu56250
Membre

Nombre de messages : 192
Age : 21
Localisation : Chez moi
Distinction : aucune
Date d'inscription : 30/10/2009

Re: Zelda Hearth System

le Lun 1 Nov - 19:00
J'ai un problème avec ton script
Quand je fais l'évent sa me met plus de 3 coeurs
Sa m'en met comme sa
avatar
Docteur Kojy.
Staffeux retraité

Nombre de messages : 1210
Age : 23
Localisation : si tu dis mon pseudo 3 fois devant un miroir, j'apparais derrière toi !
Distinction : Sauveur préféré de notre chère patrie la communauté

Officieusement le coach-vocal-impresario-choriste-muse-amant de Coco'[Coco' himself Smile]
Attend toujours de le voir apparaitre après avoir dit son pseudo 256 fois devant un miroir [Xak' ]
Si tu le poses contre ton oreille, tu entends un Sonic Rainboom.
Date d'inscription : 24/02/2008

Re: Zelda Hearth System

le Lun 1 Nov - 19:52
Il faut que les hp de ton personnage soient à 12 pour avoir trois coeurs.
avatar
lulu56250
Membre

Nombre de messages : 192
Age : 21
Localisation : Chez moi
Distinction : aucune
Date d'inscription : 30/10/2009

Re: Zelda Hearth System

le Lun 1 Nov - 20:03
Ahh Okay
Mais quand je met 12 sur la base de donné
Sa change rien
avatar
Docteur Kojy.
Staffeux retraité

Nombre de messages : 1210
Age : 23
Localisation : si tu dis mon pseudo 3 fois devant un miroir, j'apparais derrière toi !
Distinction : Sauveur préféré de notre chère patrie la communauté

Officieusement le coach-vocal-impresario-choriste-muse-amant de Coco'[Coco' himself Smile]
Attend toujours de le voir apparaitre après avoir dit son pseudo 256 fois devant un miroir [Xak' ]
Si tu le poses contre ton oreille, tu entends un Sonic Rainboom.
Date d'inscription : 24/02/2008

Re: Zelda Hearth System

le Lun 1 Nov - 20:29
Bizarre. Pourtant ça devrait. >.>
avatar
Black'
Membre

Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010

Re: Zelda Hearth System

le Mer 3 Nov - 16:05
Je vais voir ça :
J'Edit pour t'aider

EDIT ; Un prob' de ma version, prends le script de la démo en attendant, désolé (manque de t♦emps)
avatar
lulu56250
Membre

Nombre de messages : 192
Age : 21
Localisation : Chez moi
Distinction : aucune
Date d'inscription : 30/10/2009

Re: Zelda Hearth System

le Jeu 4 Nov - 18:50
J'ai utilsé ta démo
Mais sinon j'ai réésayer en changeant les hp du héro a 12
mais je ne sais pas cb il devra avoir de hp au lvl 99
Si vous pouviez me le dire sa marcherait facilement je pense
avatar
Black'
Membre

Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010

Re: Zelda Hearth System

le Sam 20 Nov - 23:39
Il devrait avoir (j'insiste sur le devrais) 1188 hp. J'ai calculé 12 x 99.
Désolé pour le retard Smile
avatar
Frozen
Membre

Nombre de messages : 584
Age : 23
Distinction : Prêt à tout pour aider le staff !
(distinction promise ^^)
Date d'inscription : 20/03/2010

Re: Zelda Hearth System

le Dim 21 Nov - 10:13
Si j'ai bien compris le problème:
Normalement, dans la base de données, tu clic sur le graphique des PV maximum, et tu peux choisir combien de PV tu veux que ton héros ait en fonction de son lvl ...
Si tu veux qui ait 12 PV au lvl 1 mais pas que ça dépasse 500 au lvl 99 tu génères un courbe qui va de 12 a 500.

avatar
Black'
Membre

Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010

Re: Zelda Hearth System

le Dim 21 Nov - 13:12
En fait, il veux simplement savoir quelle courbe faire pour que son héros aille de 3 cœur à plus, sans prendre tout l'écran dès le début. Et comme le script prends en compte 4 PV par cœurs (4 quarts de cœurs), il commence avec 12 (3*4) et termine à 1188 (1188*4 = 297) donc il y aura 297 cœurs à l'écran au niveau 99. C'est pour éviter ce problème-là qu'il faut éviter d'utiliser des niveau dans ce genre de script, car si il comptabilise les points normalement, il va se retrouver avec 300 coeurs dans l'écran au niveau 99.

Donc oui, tu avais compris Very Happy
avatar
Frozen
Membre

Nombre de messages : 584
Age : 23
Distinction : Prêt à tout pour aider le staff !
(distinction promise ^^)
Date d'inscription : 20/03/2010

Re: Zelda Hearth System

le Dim 21 Nov - 15:06
J'ai bien aimé le script c'est original mais le problème c'est que si on a un nombre de PV différent d'un multiple de 4, il y a un coeur qui s’affiche mais on ne peut pas le remplir en plein ... c'est pas génial ...
avatar
Black'
Membre

Nombre de messages : 351
Localisation : Far, far away
Distinction : aucune
Date d'inscription : 19/04/2010

Re: Zelda Hearth System

le Jeu 25 Nov - 16:07
C'est parce que il faut un type de moteur spécial, ce script n'est pas un HUD, un petit gadget mais un vrai système à lui-même. Il y a des contraintes quand on commence à sortir de la "RTP Zone de VX", et c'est ce qui est amusant dans le making.
avatar
garbit0033
Membre

Nombre de messages : 3
Age : 23
Distinction : aucune
Date d'inscription : 09/12/2010

Re: Zelda Hearth System

le Ven 17 Déc - 20:51
Désolé du Nécropost...(de 2,5 semaines :boulet: )
J'ai un petit problème, quand je met le script, (avec les images), les coeurs ne s'affichent pas... C'est assez problématique, quelqu'un à la solution?
Contenu sponsorisé

Re: Zelda Hearth System

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum