Thắc mắc , Ý kiến , Góp ý cho FFTG

Status
Không mở trả lời sau này.
Đề nghị bác Leon cộng thêm level cho các thành viên mới tham gia đi...Mới vào level 1 Damg trung bình 200 mà đánh quái 5000 thì lâu lắm.
 
Bạn vào topic dành cho member mới, đọc xong post 1 bài sẽ có EXP với Gil liền
 
Cho em hỏi,khi tham gia FFTG có phải là mình post bài lên hay ko? Nếu đăng kí rùi thì bao giờ mới có thể tham gia chính thức?
 
1. Đúng.
2. Chờ Mod duyệt đơn đăng ký là có thể tham gia ngay.
 
STEAL SKILL

Sau một hồi lục lọi khắp nơi, cuối cùng cũng tìm ra Script để làm kĩ năng Steal. Đã test, chạy rất tốt :p

Mã:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/                     ◆  Steal Skill - KGC_Steal   ◆ VX ◆
#_/                     ◇    Last update : 2008/03/14     ◇
#_/                     ◇  Translation by Mr. Anonymous   ◇
#_/                     ◇ Extended updates by Touchfuzzy. ◇
#_/-----------------------------------------------------------------------------
#_/                             ◆ 2008/03/14  UPDATE ◆ 
#_/      Coded & incorporated agility-based steal function by Touchfuzzy.
#_/-----------------------------------------------------------------------------
#_/  This script allows you to assign skills that "steal" items, weapons, armor
#_/   and money.
#_/  Setup is simple. To assign a skill as a Steal skill, add the tag "<steal>"
#_/  (without quotations) into the "Note" box on the skill you choose in the
#_/  skills database. Next, to set up enemies you can steal from, in the enemies
#_/  database, you enter <steal X:ID Probability %>
#_/  Where X = Steal type. I = Items, W = Weapons, A = Armor, and G = Gold
#_/  Where ID = The specified item, weapon, or armor's ID #, in the database
#_/             OR the amount of gold that can be stolen.
#_/  Where Probability % = The change of the item being stolen.
#_/=============================================================================
#_/  Example: You have a bandit (enemy) who has a Long Sword and 100 gold you'd
#_/   like to be able to steal from him, at a 50% chance. Tag him with:
#_/    <steal W:2 50%>
#_/    <steal G:100 50%>
#_/  Simple, yes?
#_/
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
#                            ★ Customization ★
#==============================================================================

module KGC
module Steal
  #                         ◆ Display Messages ◆
  #  Target skill used on has nothing to steal.
  #  (Where %s = target)
  #  %s : has nothing to steal!
  VOCAB_STEAL_NO_ITEM = "%s has nothing to steal!"
  # ◆ Steal skill failed.
  VOCAB_STEAL_FAILURE = "Your thievery was amiss!"
  # ◆ When stealing an item.
  #  First %s : Target name
  #  Second %s : Item Name
  VOCAB_STEAL_ITEM    = "%s had a %s stolen!"
  # ◆ When stealing money/gold.
  #  First %s : Target name
  #  Second %s : Amount stolen
  #  Third %s : Gold unit name. (Ex "GP", or"$"
  VOCAB_STEAL_GOLD    = "%s was mugged. %s%s stolen!"
  
  #                         ◆ Agility Based Steal ◆
  #  If this is true then the skill chance is figured as Steal% * Tagi * Eagi.
  #  Steal% = Steal Percentage used in Enemy Notes tag.
  #  Cagi = Thief's (Actor using the skill) Agility
  #  Eagi = Enemy's Agility
  AGILITY_BASED_STEAL = true
end
end

# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
#  Unless you know what you're doing, it's best not to alter anything beyond  #
#  this point, as this only affects the tags used for "Notes" in database.    #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #

#  Whatever word(s) are after the separator ( | ) in the following lines are
#   what are used to determine what is searched for in the "Notes" section of a
#   skill to see if it is an Steal skill.
#  Default STEAL skill tag is <steal>
#  Default STEAL_OBJECT is <steal>

$imported = {} if $imported == nil
$imported["Steal"] = true

module KGC::Steal
  # Regular expressions defined.
  module Regexp
    # Base skill module.
    module Skill
      # Skill: Steal tag string
      STEAL = /<(?:STEAL|steal)>/i
    end

    # Base enemy module.
    module Enemy
      # Enemy: Object to Steal tag string.
      STEAL_OBJECT = /<(?:STEAL|steal)\s*([IWAG]):(\d+)\s+(\d+)([%%])?>/i
    end
  end
end

#==============================================================================
# ■ Vocab
#==============================================================================

module Vocab
  # 盗む関連メッセージ
  StealItem    = KGC::Steal::VOCAB_STEAL_ITEM
  StealGold    = KGC::Steal::VOCAB_STEAL_GOLD
  StealNoItem  = KGC::Steal::VOCAB_STEAL_NO_ITEM
  StealFailure = KGC::Steal::VOCAB_STEAL_FAILURE
end

#==============================================================================
# ■ RPG::Skill
#==============================================================================

class RPG::Skill < RPG::UsableItem
  #--------------------------------------------------------------------------
  # ○ 「盗む」のキャッシュ生成
  #--------------------------------------------------------------------------
  def create_steal_cache
    @__steal = false

    self.note.split(/[\r\n]+/).each { |line|
      case line
      when KGC::Steal::Regexp::Skill::STEAL
        # 盗む
        @__steal = true
      end
    }
  end
  #--------------------------------------------------------------------------
  # ○ 盗む
  #--------------------------------------------------------------------------
  def steal?
    create_steal_cache if @__steal == nil
    return @__steal
  end
end

#==============================================================================
# ■ RPG::Enemy
#==============================================================================

class RPG::Enemy
  #--------------------------------------------------------------------------
  # ○ 「盗む」のキャッシュ生成
  #--------------------------------------------------------------------------
  def create_steal_cache
    @__steal_objects = []

    self.note.split(/[\r\n]+/).each { |line|
      case line
      when KGC::Steal::Regexp::Enemy::STEAL_OBJECT
        # 盗めるオブジェクト
        obj = RPG::Enemy::StealObject.new
        case $1.upcase
        when "I"  # アイテム
          obj.kind = 1
          obj.item_id = $2.to_i
        when "W"  # 武器
          obj.kind = 2
          obj.weapon_id = $2.to_i
        when "A"  # 防具
          obj.kind = 3
          obj.armor_id = $2.to_i
        when "G"  # 金
          obj.kind = 4
          obj.gold = $2.to_i
        else
          next
        end
        # 成功率
        if $4 != nil
          obj.success_prob = $3.to_i
        else
          obj.denominator = $3.to_i
        end
        @__steal_objects << obj
      end
    }
  end
  #--------------------------------------------------------------------------
  # ○ 盗めるオブジェクト
  #--------------------------------------------------------------------------
  def steal_objects
    create_steal_cache if @__steal_objects == nil
    return @__steal_objects
  end
end

#==============================================================================
# □ RPG::Enemy::StealObject
#==============================================================================

class RPG::Enemy::StealObject < RPG::Enemy::DropItem
  #--------------------------------------------------------------------------
  # ○ 定数
  #--------------------------------------------------------------------------
  KIND_ITEM   = 1
  KIND_WEAPON = 2
  KIND_ARMOR  = 3
  KIND_GOLD   = 4
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :gold                     # 金
  attr_accessor :success_prob             # 成功率
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super
    @gold = 0
    @success_prob = 0
  end
end

#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
#  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
# スのスーパークラスとして使用されます。
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :steal_objects            # 盗めるオブジェクト
  attr_accessor :stolen_object            # 前回盗まれたオブジェクト
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_Battler_KGC_Steal initialize
  def initialize
    initialize_Battler_KGC_Steal

    @steal_objects = []
    @stolen_object = nil
  end
  #--------------------------------------------------------------------------
  # ● スキルの効果適用
  #     user  : スキルの使用者
  #     skill : スキル
  #--------------------------------------------------------------------------
  alias skill_effect_KGC_Steal skill_effect
  def skill_effect(user, skill)
    skill_effect_KGC_Steal(user, skill)

    make_obj_steal_result(user, skill)
  end
  #--------------------------------------------------------------------------
  # ○ スキルまたはアイテムによる盗み効果
  #     user : スキルまたはアイテムの使用者
  #     obj  : スキルまたはアイテム
  #    結果は @stolen_object に代入する。
  #--------------------------------------------------------------------------
  def make_obj_steal_result(user, obj)
    return unless obj.steal?                  # 盗み効果なし
    return if @skipped || @missed || @evaded  # 効果なし

    # 何も持っていない
    if self.steal_objects.empty?
      @stolen_object = :no_item
      return
    end

    @stolen_object = nil
    self.steal_objects.each { |sobj|
      # 盗み成功判定
      if KGC::Steal::AGILITY_BASED_STEAL
        sobj.success_prob = sobj.success_prob * user.agi / self.agi
      end
      if sobj.success_prob > 0
        # 確率指定
        next if sobj.success_prob < rand(100)
      else
        # 分母指定
        next if rand(sobj.denominator) != 0
       end
      # 盗み成功
      @stolen_object = sobj
      break
    }
    @steal_objects.delete(@stolen_object)
  end
end

#==============================================================================
# ■ Game_Enemy
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     index    : 敵グループ内インデックス
  #     enemy_id : 敵キャラ ID
  #--------------------------------------------------------------------------
  alias initialize_Enemy_KGC_Steal initialize
  def initialize(index, enemy_id)
    initialize_Enemy_KGC_Steal(index, enemy_id)

    @steal_objects = enemy.steal_objects.clone
  end
end

#==============================================================================
# ■ Scene_Battle
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 戦闘行動の実行 : スキル
  #--------------------------------------------------------------------------
  alias execute_action_skill_KGC_Steal execute_action_skill
  def execute_action_skill
    skill = @active_battler.action.skill
    if skill.steal?
      execute_action_steal
      @status_window.refresh
    else
      execute_action_skill_KGC_Steal
    end
  end
  #--------------------------------------------------------------------------
  # ○ 戦闘行動の実行 : 盗む
  #--------------------------------------------------------------------------
  def execute_action_steal
    skill = @active_battler.action.skill
    text = @active_battler.name + skill.message1
    @message_window.add_instant_text(text)
    unless skill.message2.empty?
      wait(10)
      @message_window.add_instant_text(skill.message2)
    end
    targets = @active_battler.action.make_targets
    display_animation(targets, skill.animation_id)
    @active_battler.mp -= @active_battler.calc_mp_cost(skill)
    $game_temp.common_event_id = skill.common_event_id
    for target in targets
      target.skill_effect(@active_battler, skill)
      display_steal_effects(target, skill)
    end
  end
  #--------------------------------------------------------------------------
  # ○ 盗んだ結果の表示
  #     target : 対象者
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_steal_effects(target, obj = nil)
    unless target.skipped
      line_number = @message_window.line_number
      wait(5)
      if target.hp_damage != 0 || target.mp_damage != 0
        display_critical(target, obj)
        display_damage(target, obj)
      end
      display_stole_object(target, obj)
      display_state_changes(target, obj)
      if line_number == @message_window.line_number
        display_failure(target, obj) unless target.states_active?
      end
      if line_number != @message_window.line_number
        wait(30)
      end
      @message_window.back_to(line_number)
    end
  end
  #--------------------------------------------------------------------------
  # ○ 盗んだオブジェクトの表示
  #     target : 対象者
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_stole_object(target, obj = nil)
    if target.missed || target.evaded
      display_steal_failure(target, obj)
      return
    end

    case target.stolen_object
    when nil       # 盗み失敗
      display_steal_failure(target, obj)
    when :no_item  # 何も持っていない
      display_steal_no_item(target, obj)
    else
      if target.stolen_object.kind == RPG::Enemy::StealObject::KIND_GOLD
        # お金
        display_steal_gold(target, obj)
      else
        # アイテム or 武器 or 防具
        display_steal_item(target, obj)
      end
      target.stolen_object = nil
    end
  end
  #--------------------------------------------------------------------------
  # ○ 盗み失敗の表示
  #     target : 対象者 (アクター)
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_steal_failure(target, obj)
    @message_window.add_instant_text(Vocab::StealFailure)
    wait(30)
  end
  #--------------------------------------------------------------------------
  # ○ 何も持っていない場合の表示
  #     target : 対象者 (アクター)
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_steal_no_item(target, obj)
    text = sprintf(Vocab::StealNoItem, target.name)
    @message_window.add_instant_text(text)
    wait(30)
  end
  #--------------------------------------------------------------------------
  # ○ アイテムを盗んだ場合の表示
  #     target : 対象者 (アクター)
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_steal_item(target, obj)
    # 盗んだアイテムを取得
    sobj = target.stolen_object
    case sobj.kind
    when RPG::Enemy::StealObject::KIND_ITEM
      item = $data_items[sobj.item_id]
    when RPG::Enemy::StealObject::KIND_WEAPON
      item = $data_weapons[sobj.weapon_id]
    when RPG::Enemy::StealObject::KIND_ARMOR
      item = $data_armors[sobj.armor_id]
    else
      return
    end
    $game_party.gain_item(item, 1)

    text = sprintf(Vocab::StealItem, target.name, item.name)
    @message_window.add_instant_text(text)
    wait(30)
  end
  #--------------------------------------------------------------------------
  # ○ お金を盗んだ場合の表示
  #     target : 対象者 (アクター)
  #     obj    : スキルまたはアイテム
  #--------------------------------------------------------------------------
  def display_steal_gold(target, obj)
    gold = target.stolen_object.gold
    $game_party.gain_gold(gold)

    text = sprintf(Vocab::StealGold, target.name, gold, Vocab.gold)
    @message_window.add_instant_text(text)
    wait(30)
  end
end


Cách làm : Rất đơn giản, lập một ô trống trong mục Skill. Đề tên Steal và chọn một Animation thích hợp vào đó. Ở bên dưới sẽ có một ô khá to đề chữ Note, điền lệnh <steal> vào

Sau đó đến phần đặt Item cho quái để chôm. Vào mục Enemy, chọn quái cần Steal, mẫu lệnh là :

<steal X:ID %>

Trong đó

X là loại đồ ( I : Item / W : Weapon / A : Armor / G : Gil )
ID là số thứ tự của món đồ cần Steal trong bảng ( nếu là Steal Gil thì đánh số lượng Gil )
% là sắc xuất Steal trúng

Ví dụ : một con Slime có 1 bình High Potion và 200 Gil với sắc xuất Steal trúng là 50%, chỉ cần viết vào phần Note của Slime là

<steal I:2 50%>
<steal G:200 50%>

đơn giản chứ hả ;))

Chú ý : Vì Demo LK đang sử dụng không cho hiển thị Battle Messenger nến các dòng "Have nothing to steal", "Couldn't steal anything", " .... stolen" đều không hiển thị được. Cách khắc phục duy nhất là quay lại sử dụng loại Side View cho phép hiển thị. Còn không thì mỗi quái chỉ đặt cho nó một loại đồ Steal thôi, chứ đặt nhiều loại, lúc Steal trúng lại không biết mình Steal được cái gì (>_<)


Nguồn : rpgmakervx.net
 
Pa LK dạo này có thấy làm Main Q gì đâu :-w
 
Dạo này bận bù đầu bù cổ không có time làm Main Quest và mem trong box tính hiện h còn vài mem , chừng nào > 10 mem thì MQ trở lại .

@vanthanh : hiện cậu có 15k Exp rùi , có gì cộng điểm trước đi nhé .
 
Vụ relic thì khi nào mới có vậy LK :-/
 
Cho hỏi với các skill ở trong clan hall là ở trong main Q phải ko !? còn text game thì vẫn đầy đủ skill như thường :-/
 
Từ giờ MQ , Mini Quest ... đều làm trong File game và những Skill trong DATA GRID là Skill chính thức .
 
chẹp chẹp! thay đổi như vậy thì lớn quá !lớn quá!
con relic thì chừng nào mới có :-?
 
Oạch, bác Ken chơi ác quá, bây giờ dam cũng chia đôi luôn thế này 8-}. Mà trong dùng file game thì có được xài limit không vậy, nếu được xài thì bùn luôn ...
Nhân tiện đổi cách chơi, bác Ken up hàng mới trong shop đi, lâu lâu phải có đổi mới chứ :))
 
Đề nghi MOD cho test thử 1 phát very hard , để còn biết đường mà chọn Q:'>
 
muốn very hard thì tớ cũng làm dc đấy

muốn thử ko ;))

@ LK : còn Gil trong Bank thì sao :-/
 
very hard là do MOD sắp đặt hay là nó định sẵn trong cái RPG đó rồi :-/
 
do Mod sắp đặt

Very Hard có thể là các chiêu Dam cao hơn, ra chiêu nhiều hơn, effect bất lợi cho char, ...

dính phải effect của LK thì :-s
 
như vậy thì mua hết các accessories thì chắc sẽ ko bị dính efect đâu nhỉ ;))
 
như vậy thì mua hết các accessories thì chắc sẽ ko bị dính efect đâu nhỉ ;))
Mỗi nhân vật chỉ có 2 ô trang bị Accessory thôi , vì vậy không thể kháng hết tất cả trạng thái [-x .
 
mua hết bỏ trong inventory khi cần thì lấy ra equip đc ko MOD :-/
 
Status
Không mở trả lời sau này.
Back
Top