Jump to content
Rpg²S Forum

Magimario

Utenti
  • Posts

    20
  • Joined

  • Last visited

Posts posted by Magimario

  1. Premetto di non avere alcuna competenza sul Ruby. In un progetto (con combattimento in tempo reale) sto usando un HUD, e mi sono chiesto se può essere usato anche durante gli scontri con i boss per visualizzare la loro energia. Lo script in questione è questo:

     

    #======================================================================

    ========

    # ■ Kingdom Hearts HUD

    #------------------------------------------------------------------------------

    # by Skive

    # skivedaft@yahoo.com

    #

    # --

    #

    # released on 5th March 2006

    #==============================================================================

     

    #==============================================================================

    # ■ Sprite_HP

    #------------------------------------------------------------------------------

    #  the HUD's hp bar

    #==============================================================================

     

    class Sprite_HP < Sprite

    #--------------------------------------------------------------------------

    # ● instances

    #--------------------------------------------------------------------------

    attr_writer :actor

    #--------------------------------------------------------------------------

    # ● initialize

    #--------------------------------------------------------------------------

    def initialize(actor = nil)

    super(nil)

    self.z = 202

    self.bitmap = Bitmap.new(60, 26)

    @actor = actor

    if !@actor.nil?

    @hp = @actor.hp

    @maxhp = @actor.maxhp

    end

    refresh

    end

    #--------------------------------------------------------------------------

    # ● refresh

    #--------------------------------------------------------------------------

    def refresh

    self.bitmap.clear

    return if @actor.nil?

    @hp = @actor.hp

    @maxhp = @actor.maxhp

    draw_bar(20, 6)

    self.angle = 270

    end

    #--------------------------------------------------------------------------

    # ● update

    #--------------------------------------------------------------------------

    def update

    super

    if @actor.nil?

    self.bitmap.clear

    return

    end

    if @hp != @actor.hp or @maxhp != @actor.maxhp

    refresh

    end

    end

    #--------------------------------------------------------------------------

    # ● draw_bar

    #--------------------------------------------------------------------------

    def draw_bar(radius, width)

    max = (@actor.hp * 360) / @actor.maxhp

    for j in 1..width

    for i in 0..max

    bx = Math.cos( (i * Math::PI) / 360) * (radius + j)

    by = Math.sin( (i * Math::PI) / 360) * (radius + j)

    case j

    when 1

    color = Color.new(74, 112, 29)

    when 2

    color = Color.new(77, 120, 29)

    when 3

    color = Color.new(80, 131, 28)

    when 4

    color = Color.new(85, 144, 27)

    when 5

    color = Color.new(89, 156, 26)

    when 6

    color = Color.new(93, 167, 26)

    end

    self.bitmap.set_pixel(30 + bx, by, color)

    end

    end

    end

    end

     

    #==============================================================================

    # ■ Sprite_SP

    #------------------------------------------------------------------------------

    #  the HUD's sp bar

    #==============================================================================

     

    class Sprite_SP < Sprite

    #--------------------------------------------------------------------------

    # ● instances

    #--------------------------------------------------------------------------

    attr_writer :actor

    #--------------------------------------------------------------------------

    # ● initialize

    #--------------------------------------------------------------------------

    def initialize(actor = nil)

    super(nil)

    self.z = 202

    self.bitmap = Bitmap.new(60, 26)

    @actor = actor

    if !@actor.nil?

    @sp = @actor.sp

    @maxsp = @actor.maxsp

    end

    refresh

    end

    #--------------------------------------------------------------------------

    # ● refresh

    #--------------------------------------------------------------------------

    def refresh

    self.bitmap.clear

    return if @actor.nil?

    @sp = @actor.sp

    @maxsp = @actor.maxsp

    draw_bar(20, 6)

    self.angle = 90

    self.mirror = true

    end

    #--------------------------------------------------------------------------

    # ● update

    #--------------------------------------------------------------------------

    def update

    super

    if @actor.nil?

    self.bitmap.clear

    return

    end

    if @sp != @actor.sp or @maxsp != @actor.maxsp

    refresh

    end

    end

    #--------------------------------------------------------------------------

    # ● draw_bar

    #--------------------------------------------------------------------------

    def draw_bar(radius, width)

    max = (@actor.sp * 360) / @actor.maxsp

    for j in 1..width

    for i in 0..max

    bx = Math.cos( (i * Math::PI) / 360) * (radius + j)

    by = Math.sin( (i * Math::PI) / 360) * (radius + j)

    case j

    when 1

    color = Color.new(29, 82, 112)

    when 2

    color = Color.new(29, 86, 120)

    when 3

    color = Color.new(28, 90, 131)

    when 4

    color = Color.new(27, 96, 144)

    when 5

    color = Color.new(26, 102, 156)

    when 6

    color = Color.new(26, 106, 167)

    end

    self.bitmap.set_pixel(30 + bx, by, color)

    end

    end

    end

    end

     

    #==============================================================================

    # ■ Sprite_HUD

    #------------------------------------------------------------------------------

    #  draws the HUD on the map

    #==============================================================================

     

    class Sprite_HUD < Sprite

    #--------------------------------------------------------------------------

    # ● initialize

    #--------------------------------------------------------------------------

    def initialize(corner = 4)

    super(nil)

    self.z = 200

    for actor in $game_party.actors

    next if actor.dead?

    @actor = actor

    @actor_index = $game_party.actors.index(@actor)

    break

    end

    @hp_sprite = Sprite_HP.new(@actor)

    @sp_sprite = Sprite_SP.new(@actor)

    self.bitmap = Bitmap.new(60, 60)

    case corner

    when 1

    x = 16

    y = 16

    when 2

    x = 640 - 52 - 16

    y = 16

    when 3

    x = 16

    y = 480 - 52 - 16

    when 4

    x = 640 - 52 - 16

    y = 480 - 52 - 16

    end

    self.x = x

    self.y = y

    @hp_sprite.x = x + 27

    @hp_sprite.y = y - 3

    @sp_sprite.x = x + 27 - 1

    @sp_sprite.y = y - 3 - 1 + 60

    refresh

    end

    #--------------------------------------------------------------------------

    # ● refresh

    #--------------------------------------------------------------------------

    def refresh

    self.bitmap.clear

    return if @actor.nil?

    bmp = RPG::Cache.character(@actor.character_name, @actor.character_hue)

    rect = Rect.new(0, 0, bmp.width / 4, (bmp.height / 4))

    self.bitmap.blt(27 - bmp.width / 8, 5, bmp, rect)

    self.bitmap.blt(0, 0, RPG::Cache.picture("hud"), Rect.new(0, 0, 60, 60))

    end

    #--------------------------------------------------------------------------

    # ● update

    #--------------------------------------------------------------------------

    def update

    super

    @hp_sprite.update

    @sp_sprite.update

    if @actor != $game_party.actors[@actor_index]

    @actor = $game_party.actors[@actor_index]

    @hp_sprite.actor = @actor

    @sp_sprite.actor = @actor

    @hp_sprite.refresh

    @sp_sprite.refresh

    refresh

    end

    end

    end

     

    #==============================================================================

    # ■ Scene_Map

    #------------------------------------------------------------------------------

    #  draws the hud on the map screen

    # @khhud_corner is the corner you want the hud to be displayed in.

    # 1 is upper left, 2 is upper right, 3 is bottom left and 4 is bottom right

    #==============================================================================

     

    class Scene_Map

    alias main_khhud main

    alias update_khhud update

    alias transfer_khhud transfer_player

    #--------------------------------------------------------------------------

    # ● initialize

    #--------------------------------------------------------------------------

    def initialize

    @khhud_corner = 4 # 1 or 2 or 3 or 4

    end

    #--------------------------------------------------------------------------

    # ● main

    #--------------------------------------------------------------------------

    def main

    @hud = Sprite_HUD.new(@khhud_corner)

    main_khhud

    @hud.dispose

    end

    #--------------------------------------------------------------------------

    # ● update

    #--------------------------------------------------------------------------

    def update

    @hud.update

    update_khhud

    end

    end

     

    Grazie in anticipo a chiunque sia disposto ad aiutarmi :biggrin:

  2. Ho la mezza idea di creare un progetto, in cui usare un sistema di combattimento in tempo reale che si basa sulla fatica dei personaggi, in cui più sale la fatica (che si accumula in minor quantità attaccando e in maggior quantità venendo attaccati) e più energia si perde venendo colpiti, e magari un'altra barra che si riempe col passare del tempo e attaccando, che permette, una volta completata, di utilizzare un attacco speciale (questo si può anche tralasciare se diventa troppo complicato o lagga troppo...).

    Sto cercando un modo per realizzarlo, con eventi o con script. Grazie in anticipo :tongue:

  3. Il salvataggio a tempo non mi convince troppo, permette di aspettare pochi minuti in una zona tranquilla per poter salvare. Personalmente preferisco i save point, ma si potrebbe anche fare che all'inizio e alla fine dei dungeon e dopo le cutscene salva automaticamente, ma sparsi per il gioco si possono trovare oggetti "usa e getta" che permettono di creare un check point dove si vuole, anche se bisogna calibrare bene la loro reperibilità.
  4. Concordo con Tio, nonostante sia già uscita la PS3 la maggior parte dei giochi Sony vengono prodotti ancora per PS2, e poi per Wii è tutta un'altra storia, ancora sono pochi i giochi degni di nota, ma a breve arriveranno capolavori di qualsiasi genere. A mio parere poter muovere Wii Remote e Nunchuk come spade o katane, poter usare il Wii Remote come volante, come pistola, persino come racchetta da tennis o come qualsiasi altro oggetto è molto più divertente e coinvolgente di giocare con un normale joystick. A mio parere, ovviamente ;)
  5. Non me ne intendo molto di script, ma potresti provare a togliere questo:

    def update
    	if Input.trigger?(Input::C)
    	  if @nome_bgm != "" then Audio.bgm_stop end
    	  $scene = Scene_Title.new
    	  @sprite.bitmap.dispose
    	end
      end
    

     

     

    Io non ho provato, però.

  6. Se ho ben capito per cambiarli durante l'avventura basta creare un evento con "Change Actor Graphic", se vuoi cambiare quelli con cui si inizia si fa dal database, in "actors". :sisi:
  7. Pensavo di prendere i vari elementi e metterli assieme con paint o con photoshop per farne una picture da fare apparire usando un oggetto, non renderli chipset, ma comunque in effetti in 3D non ci starebbero bene... mi arrangerò con un'altra mappa o facendola da me, in ogni caso grazie per l'attenzione ^^
  8. Sto cercando di fare una mappa per un mio progetto, e ho pensato che quella di Final Fantasy III (possibilmente il remake per DS) sia la più adatta. Cercando nei più importanti siti di risorse grafiche (e anche con la funzione cerca in questo forum) ho trovato solo la versione a 8 bit.

    Qualcuno ce l'ha?

×
×
  • Create New...