O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

[MOD]Survivor - EnterScripts

Iniciado por Enter, 08/02/2015 às 01:58

08/02/2015 às 01:58 Última edição: 20/01/2017 às 09:23 por King Gerar
[button]
[MOD]Survivor [/button]


Autor: Enter
Agradeço aos membros:  Masked, Raizen, miguel8884 e Fábio Pichler, Sixth. Por seus tópicos e suporte que dão aos iniciantes no rgss.
[button]Introdução[/button]

Esse é o meu primeiro script RGSS3. E vai ser atualizado conforme seja necessário.
- Vocês podem dar sugestões sobre essa hud nesse tópico.

Caso você seja programador ou scripter e deseja fazer a sua sugestão de código utilize o github:
link
[button]Características[/button]
08/02/2015
*Ela se torna visivel quando a tecla """"S""" é mantida pressionada
*É uma hud customizável que conta com barras de HP, MP, Stamina e Fome.

14/04/2015
ver 1.5
*Uma quantidade de stamina é subtraida a cada vez que é pressionada a tecla SHIFT(correr)
obs:enquanto stamina for igual a zero, é bloqueado o sistema de corrida com shift.
* Adicionada a barra de sede (água)
* Quando sede chega a menor ou igual a 1 é dado Game Over.

30/05/2015
versão 2.0
#30/05/2015: Ajustar comentarios e variaveis para ingles(V), facilitar a chamada
#da manipulação com a criação de um metodo na classe Game Interpreter(V)
#Colocar game over quando chegar em zero em todos os status(V)



[button]Videos[/button]
https://www.youtube.com/watch?t=49&v=kNyK-22ZayQ
https://www.youtube.com/watch?v=0bOKVf48M6Q&feature=youtu.be
https://www.youtube.com/watch?v=38GvbWVS_5M


[button]Instruções[/button]
1º Baixe os gráficos da [HUD]Survivor no seguinte link:
30/05/2014*atualizado
http://www.4shared.com/rar/w29DsClYba/Pictures.html

2º Cada imagem deve ir dentro da pasta Pictures do rpg maker

Para manipular um atributo, utilize o chamar o evento.
Utilize o método change_hunger/change_stamina/change_hp/change_sp
exemplo/modelo: Diminuindo 10 pontos de fome:
@actorId = 0
@value = - 10 
@change = Game_Interpreter.new
@change.change_hunger(@actorId,@value)

[button]Script[/button]
#Authors: leolucas(=Enter)
#About this script: 
#This MOD is a script that contain a 
#HUD (HP,MP, thirsty, Stamina and Hunger bar);
#if you press the "S" key then these bars become visible.
#and
#If the player have stamina enough then he can run pressing the SHIFT key else he not can run
#If thirst or hunger or hp <= 1 then Game Over
#RGSS3
#Script version 2.0
# S  E  T  U  P  
module EnterConfigHUD

  HUNGER  = 199  #hunger

  MHUNGER = 200  
    
  Stamina = 199
    
  Mstamina = 200
  
  THIRST = 199 
  
  MTHIRST = 200
end
#------------------------------------------------ 
#Creating new attributes 

class Game_BattlerBase
   attr_accessor :HUNGER, :mHUNGER, :stamina, :mstamina, :THIRST, :mTHIRST

  alias modificando initialize

  def initialize(*args)
    modificando(*args)
    @HUNGER = EnterConfigHUD::HUNGER
    @mHUNGER = EnterConfigHUD::MHUNGER
    @stamina = EnterConfigHUD::Stamina
    @mstamina = EnterConfigHUD::Mstamina
    @THIRST = EnterConfigHUD::THIRST
    @mTHIRST = EnterConfigHUD::MTHIRST
  
  end

  def HUNGER=(x) #Is something like setHUNGER and getHUNGER but to act like exception treatment
    @HUNGER = x
    @HUNGER = @mHUNGER if @HUNGER > @mHUNGER #Here is defined the limit of the value
    @HUNGER = 0 if @HUNGER < 0 
  end

  def stamina=(x)
    @stamina = x
    @stamina = @mstamina if @stamina > @mstamina  
    @stamina = 0 if @stamina < 0  
  end
  
  def THIRST=(x)
    @THIRST = x
    @THIRST = @mTHIRST if @THIRST > @mTHIRST
    @THIRST = 0 if @THIRST < 0
  end
  
  end  #Game_BattlerBase

#-------------------------------------------------
# H U D
class SurvivorHUD

  attr_accessor :actor

  def initialize(actor)

    @actor = actor
    @bg = Sprite.new
    @bg.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    @fg = Sprite.new
    @fg.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    #@sbox = Sprite.new#soon
    #@sbox.bitmap = Bitmap.new(Graphics.width, Graphics.height)#soon
    @THIRSTBox = Sprite.new 
    @THIRSTBox.bitmap = Bitmap.new(Graphics.width, Graphics.height)
    @fTHIRSTBox = Sprite.new
    @fTHIRSTBox.bitmap = Bitmap.new(Graphics.width, Graphics.height)##foreground
    update_variables
    draw_background
    draw_foreground
  end

  def update
    refresh if need_update?
  end

  def refresh
    update_variables
    draw_foreground
  end

  def draw_background
    @bg.bitmap.clear
    #@sbox.bitmap.clear#soon
    @THIRSTBox.bitmap.clear
    create_background_bitmaps
    create_background
    @bg.bitmap.blt(190, 350, @background, @background.rect)
    #@sbox.bitmap.blt(30,3,@scorebox, @scorebox.rect) #To the first numbers are defined the coordinates
    @THIRSTBox.bitmap.blt(525,150, @bTHIRST, @bTHIRST.rect)
    end
  
  def draw_foreground
    @fg.bitmap.clear
     @fTHIRSTBox.bitmap.clear
    create_foreground_bitmaps
    create_foreground
    @fg.bitmap.blt(190, 350, @foreground, @foreground.rect)
    @fTHIRSTBox.bitmap.blt(525,150, @foreTHIRST, @foreTHIRST.rect)
  end
  
  def create_background_bitmaps
    @bhp = Cache.picture('barraenergiaCompleta')
    @bmp = Cache.picture('barraenergiaCompleta')
    @bHUNGER = Cache.picture('barraenergiaCompleta')
    @bstamina = Cache.picture('barraenergiaCompleta')
    @background = Cache.picture('backgroundHUD')
    @bTHIRST = Cache.picture('SedeBar')#
 #@scorebox = Cache.picture('scorebox')#
  end

  def create_background
    @background.blt(16, 12, @bstamina, @bstamina.rect) #Here is drawn the background of bars
    @background.blt(16, 2, @bHUNGER, @bHUNGER.rect)
    @background.blt(16, 28, @bhp, @bhp.rect)
    @background.blt(16, 54, @bmp, @bmp.rect)
    @bTHIRST.blt(55,14, @bTHIRST, @bTHIRST.rect)
  end

  def create_foreground_bitmaps
    @fhp = Cache.picture "hp_bar"
    @fmp = Cache.picture "mp_bar"
    @fHUNGER = Cache.picture "Fome_bar"
    @fstamina = Cache.picture "stamina_bar"
    @fTHIRST = Cache.picture "sede_bar"
    @foreTHIRST = Bitmap.new(@bTHIRST.width, @bTHIRST.height)#
    @foreground = Bitmap.new(@background.width, @background.height) #drawing a space that have measures of image backgroundHUD. And it'll use the blt and rect to put the images of bars.
    end

  def create_foreground
    w = @fstamina.width * @actor.stamina/@actor.mstamina.to_f #Define the width of bar
    h = @fstamina.height
    rect = Rect.new(0,0,w.to_i,h)
    @foreground.blt(16, 12, @fstamina, rect)
    
    w = @fHUNGER.width * @actor.HUNGER/@actor.mHUNGER.to_f #Define the width of bar
    h = @fHUNGER.height
    rect = Rect.new(0,0,w.to_i,h)
    @foreground.blt(16, 2, @fHUNGER, rect)

    w = @fhp.width * @actor.hp/@actor.mhp.to_f #Define the width of bar
    h = @fhp.height
    rect = Rect.new(0,0,w.to_i,h)
    @foreground.blt(16, 29, @fhp, rect)

    w = @fmp.width * @actor.mp/@actor.mmp.to_f #Define the width of bar
    h = @fmp.height
    rect = Rect.new(0,0,w.to_i,h)
    @foreground.blt(16, 53, @fmp, rect)
    
    w = @fTHIRST.width
    h = @fTHIRST.height * @actor.THIRST/@actor.mTHIRST.to_f #Define the width of bar
    rect = Rect.new(0,0,h.to_i,h)
    @foreTHIRST.blt(0, 0, @fTHIRST, rect)
  end

  def update_variables
    @actor_hp = @actor.hp
    @actor_mhp = @actor.mhp
    @actor_mp = @actor.mp
    @actor_mmp = @actor.mmp
    @actor_HUNGER = @actor.HUNGER
    @actor_mHUNGER = @actor.mHUNGER
    @actor_stamina = @actor.stamina
    @actor_mstamina = @actor.mstamina
    @actor_THIRST = @actor.THIRST
    @actor_mTHIRST = @actor.mTHIRST
  end

  def need_update?
    hp_need_update? || mp_need_update? || stamina_need_update? || HUNGER_need_update? || THIRST_need_update?
  end
  
  def hp_need_update?
    @actor_hp != @actor.hp || @actor_mhp != @actor.mhp
  end

  def mp_need_update?
    @actor_mp != @actor.mp || @actor_mmp != @actor.mmp
  end
  
  def HUNGER_need_update?
    @actor_HUNGER != @actor.HUNGER || @actor_mHUNGER != @actor.mHUNGER
  end

  def stamina_need_update?
    @actor_stamina != @actor.stamina || @actor_mstamina != @actor.mstamina
  end
  
  def THIRST_need_update?
    @actor_THIRST != @actor.THIRST || @actor_mTHIRST != @actor.mTHIRST
    end
  def visible=(tf) #true or false will be the value returned = tf. Here will be linked with the "Input.press?" condition
    @bg.visible=@fg.visible=tf
    @THIRSTBox.visible = @fTHIRSTBox.visible = tf
  end
  #def scoreVisible=(tf)#
  #@sbox.visible = tf
#end
  def dispose
    @bg.dispose
    @fg.dispose
    @fTHIRSTBox.dispose
    @fTHIRSTBox.dispose
  end

end
#---------------------------- C O R R E R --------------------
class Game_Player < Game_Character
  alias enter_initialize initialize
  def initialize
    $Ncorre = false
    enter_initialize
  end
  def dash?
    return false if @move_route_forcing
  return false if $game_map.disable_dash?
  return false if vehicle
  return false if $Ncorre == true #
  return Input.press?(:A) if $Ncorre == false
  return $Ncorre
  end
end
 
#----------------------- using [mod]survivor --------------------------
 
class Scene_Map < Scene_Base
  alias enter_hud_start start
  alias enter_hud_update update
  alias enter_hud_terminate terminate

  def start
    enter_hud_start #alias
    @hud = SurvivorHUD.new($game_party.members[0])
  end
 
  def update
    #------------------------
     @groupp = $game_party.members[0]
     if @groupp.stamina <= 1
        $Ncorre = true
        else
        $Ncorre = false
   end
    if Input.trigger?(:A)
        @decrease = 10
        @groupp.stamina = @groupp.stamina - @decrease  
      end
      if @groupp.THIRST <= 1 || @groupp.HUNGER<= 1 || @groupp.hp <= 1
        SceneManager.goto(Scene_Gameover)
        end
    #-------------------------
    enter_hud_update #alias
    @hud.visible = Input.press?(:Y) #S key
    #@hud.scoreVisible = Input.press?(:A) # shift key
    #-------------------
    #--------------------------
    #@hud.THIRSTVisible = true
    @hud.update
    
        
  end
 
  def terminate
    enter_hud_terminate
    @hud.dispose
  end
end
class Game_Interpreter #thanks Sixth
  
  def change_hunger(actor_id,value)
    old_val = $game_party.members[actor_id].HUNGER
    new_val = old_val + value
    $game_party.members[actor_id].HUNGER = new_val
  end
  
  def change_stamina(actor_id,value)
    old_val = $game_party.members[actor_id].stamina
    new_val = old_val + value
    $game_party.members[actor_id].stamina = new_val
  end  
   def change_hp(actor_id,value)
    old_val = $game_party.members[actor_id].hp
    new_val = old_val + value
    $game_party.members[actor_id].hp = new_val
  end 
  
  def change_sp(actor_id,value)
    old_val = $game_party.members[actor_id].sp
    new_val = old_val + value
    $game_party.members[actor_id].sp = new_val
  end 
end

15/04/2015 às 00:24 #1 Última edição: 19/04/2015 às 14:22 por Enter
14/04/2015
https://www.youtube.com/watch?v=0bOKVf48M6Q
Script atualizado, novas funcionalidades:
<> Sistema de Sede, se chegar a 1 Game Over;
e Stamina é reduzida a cada vez que é utilizado a corrida (tecla Shift)
Caso não haja stamina, não poderá utilizar o sistema de corrida.


OBS: as barras (hud) tornam-se visíveis somente se você apertar a tecla: "S"
Para mais informações: ler o primeiro post desse tópico.
Obrigado.

Bom seu script!
Vai útil para os jogos de sobrevivência!

Ah ficou legal manolo!

E realmente para um primeiro script está muito bom!

Espero que siga esse rumo dos scripts e que logo venha novos scripts diferentes :)

legal ! to iniciando um jogo pequeno de Survival horror
só pra teste pegando alguns musicas de resident evil
LMCK produções

30/05/2015
Script atualizado, novas funcionalidades:
versão 2.0
https://www.youtube.com/watch?t=49&v=kNyK-22ZayQ
<> 30/05/2015: Ajustar comentarios e variaveis para ingles(V)
<>  facilitar a chamada da manipulação com a criação de um metodo na classe Game Interpreter(V)
<> Colocar game over quando chegar em zero em todos os status(V)