Tạo Trò Chơi - [XP] Serene Simple Skill Cooldown

Tạo Trò Chơi

Phiên bản đầy đủ: [XP] Serene Simple Skill Cooldown
Bạn đang xem phiên bản rút gọn. Xem phiên bản đầy đủ với định dạng thích hợp.
Không biết forum còn ai dùng RPG Maker XP như em không nhỉ Undecided , sau 1 thời gian tìm tòi vọc về Ruby, nay ra lò thử 1 script xem như là thực hành, code có lỗi gì mong các senpai chỉ dẫn :3 

Giới Thiệu

Thêm cooldown cho skill (skill tạm thời không sử dụng được trong vài turn sau khi sử dụng, good for turn-based battle system)

Script:

PHP Code:
#==============================================================================
# [XP] Simple Skill Cooldown
#------------------------------------------------------------------------------
# Allows you to add Cooldown to skills
# Author: Serene (just a simple script, no require credit)
#
# Works fine for both actor and enemy
#
# Script call:
# $game_party.actors[Actor ID].get_cooldown(Skill ID)
# $game_party.actors[Actor ID].set_cooldown(Skill ID, Value)
# $game_party.actors[Actor ID].increase_cooldown(Skill ID, Value)
# $game_party.actors[Actor ID].decrease_cooldown(Skill ID, Value)
#
# This script is just a simple idea when I realized we can rely on existing
# methods to make your project more differences
# Feel free to develop/customize/add more features to it
#==============================================================================

class Game_Battler
  
  unless 
$@
    alias skill_cooldown_init initialize
    alias skill_cooldown_use
skill_can_use?
    alias skill_cooldown_reset remove_states_battle
    alias skill_cooldown_auto remove_states_auto
    alias skill_cooldown_effect skill_effect
  end
  
  
# List of Skill IDs that will reset the Cooldown after the end of battle
  COOLDOWN_BATTLE_END = [123]
    
  
#--------------------------------------------------------------------------
  # * Initialize
  #--------------------------------------------------------------------------
  def initialize
    skill_cooldown_init
    
@skills_turn = {}
    @skills_turn.default = -1
  end
  
#--------------------------------------------------------------------------
  # * Set Cooldown
  #--------------------------------------------------------------------------
  def set_cooldown(skill_idvalue)
    value = -if (value < -1)
    @skills_turn[skill_id] = value
  end
  
#--------------------------------------------------------------------------
  # * Get Cooldown
  #--------------------------------------------------------------------------
  def get_cooldown(skill_id)
    return @skills_turn[skill_id]
  end
  
#--------------------------------------------------------------------------
  # * Increase Cooldown
  #--------------------------------------------------------------------------
  def increase_cooldown(skill_idvalue=1)
    cooldown = @skills_turn[skill_id]
    @skills_turn[skill_id] = [cooldown value, -1].max
  end
  
#--------------------------------------------------------------------------
  # * Decrease Cooldown
  #--------------------------------------------------------------------------
  def decrease_cooldown(skill_idvalue=1)
    cooldown = @skills_turn[skill_id]
    @skills_turn[skill_id] = [cooldown value, -1].max
  end
  
#--------------------------------------------------------------------------
  # * Preventing using a skill if it has Cooldown
  #--------------------------------------------------------------------------
  def skill_can_use?(skill_id)
    return false if @skills_turn[skill_id] > -1
    
return skill_cooldown_use?(skill_id)
  end
  
#--------------------------------------------------------------------------
  # * Reset Skill's Cooldown at the end of battle
  #--------------------------------------------------------------------------
  def remove_states_battle
    skill_cooldown_reset
    
for i in @skills_turn.keys.clone
      if COOLDOWN_BATTLE_END.include?(i)
        @skills_turn[i] = -1
      end
    end
  end
  
#--------------------------------------------------------------------------
  # * Decrease Cooldown each turn
  #--------------------------------------------------------------------------
  def remove_states_auto
    skill_cooldown_auto
    
for i in @skills_turn.keys.clone
      self.decrease_cooldown(i)
    end
  end
  
#--------------------------------------------------------------------------
  # * Apply Cooldown for Skill
  #--------------------------------------------------------------------------
  def skill_effect(userskill)
    effective skill_cooldown_effect(userskill)
    skill_id skill.id
    
# config Cooldown for Skills here
    case skill_id
    when 1 
# Skill ID
      user.set_cooldown(13# (Skill ID, number of turns in battle)
      # or can use user.increase_cooldown(1, 3)
      # (when Skill 1 is used, Skill 2 also cooldowns)
      user.set_cooldown(23) if @skills_turn[2] == -1
    
# Also can use "else statement" to set default Cooldown for other Skills
    # else
    #   user.set_cooldown(skill_id, 1) # every skills have Cooldown 1 turn by default
    end
    
#------------------------------------------------------------------------
    return effective
  end
end 

Hướng Dẫn:

Đặt script này dưới tất cả, nhưng trên main.
Hướng dẫn trong script.

Điều Khoản

Thoải mái

Tác Giả Script

Serene

Nguồn

taotrochoi.com
tôi tuy giờ không còn dùng XP nhưng vẫn nhớ về thời ấy, thời bố mới mua cho chiếc máy tính để bàn, màn hình thì dày cộp, case máy thì to khủng bố. Tôi bắt đầu chập chững vọc vặt máy, từ cái nhỏ nhặt nhất. Đầu tiên là tắt mở máy rồi cài chương trình. Hồi xưa đâu biết muốn dùng chương trình thì phải cài đâu, thế là ra quán cop các icon game vào usb, sau đó mang về cop vào máy. Bật icon đương nhiên là không được rồi, tôi cứ nghĩ là máy bị lỗi liền đi hỏi ông anh hàng xóm, ông ấy chỉ cho tôi là phải cài đặt thì mới chơi được. Tôi bắt đầu biết cài đặt chương trình, bắt đầu biết sử dụng các phần mềm và trên hết mục đích có máy tính của tôi là chơi game. Tiếp đến là những tháng ngày với word và excel do ở trường dạy. Đến bây giờ tôi vẫn nhớ về cái ngày đầu tiên ấy, cái ngày đào vàng xuyên đêm, chơi line 98. Cảm ơn window XP đã cho tôi những trải nghiệm đầu tiên về sử dụng máy tính.

Script của bạn rất hay, cố gắng phát huy nhé !!! :3 :3
Ông thần này spam cái gì thế này, đọc thấy chả liên quan gì luôn :v
bác này ghê quá, mình mãi vẫn chưa học nổi ruby =((
Cái script trên thật ra là kế thừa từ default script, nên chỉ cần biết chút ý, chủ yếu là về variable, hash, array, conditional branch là làm được, không cần tạo mới cái gì cả, thật ra chỉ cần edit ngay ruột mấy cái class có sẵn là có thể thêm được nhiều chức năng mới, chỉ là dùng alias để tách ra 1 script riêng để nhìn cho sáng sủa dễ nhìn
có tài liệu không bé
Không có tài liệu, nhưng luyện tập căn bản ở đây (cực kì căn bản như abc): https://ruby.github.io/TryRuby/
Bắt tay vào thực hành+lý thuyết cùng lúc luôn, chỉ cần 30p là có thể biết hết những thứ căn bản, đã đủ để tự tay edit script
cảm ơn bé nha :3
Giỏi quá, lâu rồi không đọc ruby, nhìn không hiểu gì luôn
Big Grin Big Grin Big Grin