设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3047|回复: 3
打印 上一主题 下一主题

[转载发布] 搜索一下没找到类似的脚本,分享一个敌人召唤技能的脚本

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3487
在线时间
884 小时
注册时间
2017-1-19
帖子
269
跳转到指定楼层
1
发表于 2019-6-21 11:18:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
这是一个外来脚本,自己做了汉化! 脚本如下↓

Lv3.寻梦者

梦石
0
星屑
3487
在线时间
884 小时
注册时间
2017-1-19
帖子
269
2
 楼主| 发表于 2019-6-21 11:19:14 | 只看该作者
#===============================================================================
#
# Enemy Summon Skill (1.0)
# 30/1/12
# By modern algebra and (ported to VXA) Pacman
# This script allows you to make skills for enemies where they can summon or
# call additional enemies to the battlefield. This is NOT a summon skill that
# can be used by actors - it can ONLY be used by enemies.
# You can set up some basic configuration at line 44. Please check the comments
# to see what each option does.
#
# 要创建召唤技能(只能敌人可使用),只需将以下代码放入技能的备注栏中:
#
# \SUMMON_ENEMY[id, x, y, n]
#
#   id : 召唤的敌人id.
#   x  : 召唤的敌人在召唤者所处的位置的x坐标
#        如果省略,则在脚本中使用设定的值
#   y  : 召唤的敌人在召唤者所处的位置的y坐标
#        如果省略,则在脚本中使用设定的值
#   n  : 召唤成功率
#        如果省略,则默认为1
#
# 正如你所知的那样,你可以在同一个备注栏放置一些这样的代码,
# 这样你就可以使同一技能可以召唤出不同的敌人,你可以通过几率控制它出现
#
#
#  例子:
#
#    像这样在技能备注栏设置的技能:
#      \SUMMON_ENEMY[1, 35, 45, 3]
#      \SUMMON_ENEMY[2, 25, 35, 1]
#
# 当它成功时(由技能的命中率直接控制)会在75%概率召唤ID为1(默认是:史莱姆)的敌人,
# 并且25%概率召唤ID为2的敌人(默认是:蝙蝠),如果它是召唤一个史莱姆,
# 位置将在召唤者的右侧35像素,向下45像素,或者如果它是召唤一个蝙蝠,
# 位置将在召唤者的右边25像素,向下35像素。召唤概率计算,因为3 + 1 = 4,
# 这意味着3/4概率召唤史莱姆,1/4概率召唤蝙蝠
#
#=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です==
#
#
module MA_ESS
  SUMMON_FAILURE = "%s 敌人好像还未到来!" # 召唤失败时显示的信息
  MAX_TROOP_SIZE = 8  # 敌群的最大敌人数量(上限召唤)
  DEFAULT_X_PLUS = 35 # 召唤者召唤的敌人的默认x坐标
                      # 如果您在备注栏中设置的,此项不会被使用
  DEFAULT_Y_PLUS = 25 # 召唤者召唤的敌人的默认y坐标
                      # 如果您在备注栏中设置的,此项不会被使用
end         
#
# 设置结束
#
#=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です==

#==============================================================================
# ** RPG::Skill
#------------------------------------------------------------------------------
#  Data class for skills. Subclass of RPG::UsableItem. Some Japanese twaddle.
#==============================================================================

class RPG::Skill < RPG::UsableItem
  #--------------------------------------------------------------------------
  # * 味方のスキルを呼んでいるのか?
  #--------------------------------------------------------------------------
  def ma_call_ally?
    self.note[/\\SUMMON[_ ]?ENEMY\[\d+.*?\]/i] != nil
  end
  #--------------------------------------------------------------------------
  # * 同盟国統計情報を呼び出す
  #--------------------------------------------------------------------------
  def ma_call_ally
    miss = rand(100)
    return nil if self.success_rate < miss
    possibilities = []
    note = self.note.dup
    note.gsub!(/\\SUMMON[_ ]?ENEMY\[(\d+)[,;]?\s*(-?\d*)[,;]?\s*(-?\d*)[,;]?\s*(\d*)\]/i) { |match|
      i = $1.to_i
      x = $2.empty? ? MA_ESS::DEFAULT_X_PLUS : $2.to_i
      y = $3.empty? ? MA_ESS::DEFAULT_Y_PLUS : $3.to_i
      n = $4.empty? ? 1 : $4.to_i
      (n).times do possibilities.push([i, x, y]) end
      ""
    }
    return *possibilities[rand(possibilities.size)]
  end
end

#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
#  見て、いずれにしてもこれを読んでするつもりはない、ので、私は基本的に私が好きなこの発言を行うことができます。
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :ma_summon_count
  #--------------------------------------------------------------------------
  # * オブジェクトの初期化
  #--------------------------------------------------------------------------
  alias maess_initialize initialize
  def initialize(*args)
    @ma_summon_count = 0
    maess_initialize(*args)
  end
end

#==============================================================================
# ** Game_BattlerBase
#------------------------------------------------------------------------------
#  私は本当にエンターブレインが同時に、英語版と日本語版をリリースしたところは思った。
#==============================================================================

class Game_BattlerBase
  #--------------------------------------------------------------------------
  # エイリアスのリスト
  #--------------------------------------------------------------------------
  alias maess_sklconditionsmet? skill_conditions_met?
  #--------------------------------------------------------------------------
  # * スキルの条件が満たさ?
  #--------------------------------------------------------------------------
  def skill_conditions_met?(skill, *args)
    return false if skill.ma_call_ally? && (self.is_a?(Game_Actor) ||
    $game_troop.members.size >= MA_ESS::MAX_TROOP_SIZE)
    maess_sklconditionsmet?(skill, *args)
  end
end

#==============================================================================
# ** Game_Troop
#------------------------------------------------------------------------------
#  戦闘シーンのクラスはすべての場所を超えているため、このスクリプトでは、予想よりもはるかに困難だった。
#==============================================================================

class Game_Troop < Game_Unit
  #--------------------------------------------------------------------------
  # * コールの味方のスキル
  #--------------------------------------------------------------------------
  def ma_call_ally(user, id, x, y)
    user.ma_summon_count += 1
    enemy = Game_Enemy.new(@enemies.size, id)
    good_position = false
    while !good_position
      enemy.screen_x = user.screen_x + (x * user.ma_summon_count)
      enemy.screen_y = user.screen_y + (y * user.ma_summon_count)
      good_position = true
      @enemies.each { |baddie|
        if baddie.screen_x == enemy.screen_x && baddie.screen_y == enemy.screen_y
          user.ma_summon_count += 1
          good_position = false
        end
      }
    end
    @enemies.push(enemy)
    make_unique_names
    return enemy
  end
end

#==============================================================================
# ** Spriteset_Battle
#------------------------------------------------------------------------------
#  この水は実際に青であることをご存知ですか?
#==============================================================================

class Spriteset_Battle
  #--------------------------------------------------------------------------
  # * コールの敵のスキル
  #--------------------------------------------------------------------------
  def ma_call_enemy(battler)
    @enemy_sprites.push(Sprite_Battler.new(@viewport1, battler))
  end
end

#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  彼らはこの1つを作ったとき、私はエンターブレインのプログラマーたちが、考えていたのか見当がつかない。
# レッツだけでこの作品を願って、えっ?
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # エイリアスのリスト
  #--------------------------------------------------------------------------
  alias maess_use_item use_item
  #--------------------------------------------------------------------------
  # * アイテムを使用してください
  #--------------------------------------------------------------------------
  def use_item(*args)
    item = @subject.current_action.item
    if item.is_a?(RPG::Skill)
      skill = item
      if skill.ma_call_ally?
        id, x, y = skill.ma_call_ally
        if id.nil?
          text = sprintf(MA_ESS::SUMMON_FAILURE, @subject.name)
          @log_window.add_text(text)
          wait(30)
          return
        else
          target = $game_troop.ma_call_ally(@subject, id, x, y)
          @spriteset.ma_call_enemy(target)
          show_animation([target], skill.animation_id)
        end
      end
    end
    maess_use_item(*args)
  end
end

$imported ||= {}
$imported[:pac_maess]

#===============================================================================
#
# スクリプトの最後
# それは、このスクリプトは日本語で書かれていることに思えるかもしれません。
# しかし、実際に、私はちょうど退屈し、すべてのコメントを翻訳しまった。
# 悪い。
#
#=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です=です==[/code]

点评

用脚本框哦  发表于 2019-6-21 21:52
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
407
在线时间
34 小时
注册时间
2017-12-4
帖子
20
3
发表于 2020-8-9 19:35:27 | 只看该作者
涨知识了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-27 09:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表