Project1
标题:
敌人属性变量
[打印本页]
作者:
feizhaodan
时间:
2011-9-21 19:15
标题:
敌人属性变量
本帖最后由 feizhaodan 于 2011-9-21 19:16 编辑
第五弹。不多说,直接上脚本:
#============================================================================
# ☆ 敌人属性变量。
# 由feizhaodan制作。
# 发布于66RPG
# http://rpg.blue/
# 版本号: 1.0.0
# 2011/9/21
# 转载时请连同这里一起转
#============================================================================
# ▽ 使用说明。
# 在敌人的备注栏内填入
# <Vst [+-]n[%][, true]>
# 在ST内填入想要启用的属性
# HP: 血, MP: 魔, ATK:攻击, DEF:防御
# SPI: 智力, AGI:敏捷, EXP:经验, GOLD:金钱
# 在[+-]处输入+号或者-号,不用添加[]
# 在-号时表示随机减少,省略或者加号为增加。
# 在n输入随机增加的量
# 在[%]处输入%号,不用添加[]
# 若输入则量变成元属性的n%,不加入则无用。
# 后面的[, true]若写入,则无视[+-]处,
# 变为随机增减随机量。
#==============================================================================
# ■ RPG::Enemy
#------------------------------------------------------------------------------
# 处理敌人的数据结构。
#==============================================================================
module RPG
class Enemy
def variation
var = []
str = self.note.clone
str.split(/[\r\n]+/).each{|line|
if line =~ /<(?:V)*(HP|MP|ATK|DEF|SPI|AGI|EXP|GOLD)?[ ]*([\+\-]?\d+)([%])?(?:,[ ]*(TRUE|FALSE))?>/i
temp = $~
var.push([temp[1], temp[2].to_i, temp[3], temp[4]])
end
}
return var
end
end
end
#==============================================================================
# ■ Game_Enemy
#------------------------------------------------------------------------------
# 处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的 内部使用。
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ○ 初始化对像(alias)
# index : 队伍中索引
# enemy_id : 敌人 ID
#--------------------------------------------------------------------------
alias variable_initialize initialize
def initialize(index, enemy_id)
@hp_var = 0
@mp_var = 0
@atk_var = 0
@def_var = 0
@spi_var = 0
@agi_var = 0
@exp_var = 0
@gold_var = 0
variable_initialize(index, enemy_id)
make_variation(enemy)
@hp = maxhp
@mp = maxmp
end
#--------------------------------------------------------------------------
# ○ 设置变量(新定义)
# enemy : 敌人
#--------------------------------------------------------------------------
def make_variation(enemy)
variation = enemy.variation
pos = 1
if variation.empty?
@hp_var = 0
@mp_var = 0
@atk_var = 0
@def_var = 0
@spi_var = 0
@agi_var = 0
@gold_var = 0
@exp_var = 0
else
for i in variation
if i[1] == nil
next
end
case i[0]
when nil
if i[4] =~ /TRUE/i
@all_randum = true
i[1] = i[1] * -1 if i[1] < 0
else
@all_randum = false
end
if i[2] != nil
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@hp_var += (rand((enemy.maxhp * i[1] / 100) + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@mp_var += (rand((enemy.maxmp * i[1] / 100) + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@atk_var += (rand((enemy.atk * i[1] / 100) + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@def_var += (rand((enemy.def * i[1] / 100) + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@spi_var += (rand((enemy.spi * i[1] / 100) + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@agi_var += (rand((enemy.agi * i[1] / 100) + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@exp_var += (rand((enemy.exp * i[1] / 100) + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@gold_var += (rand((enemy.gold * i[1] / 100) + 1) * pos)
else
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@hp_var += (rand(i[1] + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@mp_var += (rand(i[1]+ 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@atk_var += (rand(i[1] + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@def_var += (rand(i[1] + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@spi_var += (rand(i[1] + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@agi_var += (rand(i[1] + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@exp_var += (rand(i[1] + 1) * pos)
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
@gold_var += (rand(i[1] + 1) * pos)
end
when /HP/i
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
if i[2] != nil
@hp_var = (rand((enemy.maxhp * i[1] / 100) + 1) * pos)
else
@hp_var = (rand(i[1] + 1) * pos)
end
when /MP/i
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
if i[2] != nil
@mp_var = (rand((enemy.maxmp * i[1] / 100) + 1) * pos)
else
@mp_var = (rand(i[1]+ 1) * pos)
end
when /ATK/i
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
if i[2] != nil
@atk_var = (rand((enemy.atk * i[1] / 100) + 1) * pos)
else
@atk_var = (rand(i[1] + 1) * pos)
end
when /DEF/i
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
if i[2] != nil
@def_var = (rand((enemy.def * i[1] / 100) + 1) * pos)
else
@def_var = (rand(i[1] + 1) * pos)
end
when /SPI/i
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
if i[2] != nil
@spi_var = (rand((enemy.spi * i[1] / 100) + 1) * pos)
else
@spi_var = (rand(i[1] + 1) * pos)
end
when /AGI/i
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
if i[2] != nil
@agi_var = (rand((enemy.agi * i[1] / 100) + 1) * pos)
else
@agi_var = (rand(i[1] + 1) * pos)
end
when /EXP/i
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
if i[2] != nil
@exp_var = (rand((enemy.exp * i[1] / 100) + 1) * pos)
else
@exp_var = (rand(i[1] + 1) * pos)
end
when /GOLD/i
pos = ((rand(10) + 1) > 5) ? 1 : -1 if @all_randum == true
pos = -1 if i[1] < 0
if i[2] != nil
@gold_var = (rand((enemy.gold * i[1] / 100) + 1) * pos)
else
@gold_var = (rand(i[1] + 1) * pos)
end
end
pos = 1
end
end
end
#--------------------------------------------------------------------------
# ○ 获取基本体力最大值(alias)
#--------------------------------------------------------------------------
alias variation_base_maxhp base_maxhp
def base_maxhp
n = variation_base_maxhp
n += @hp_var
return n
end
#--------------------------------------------------------------------------
# ○ 获取基本魔力最大值(alias)
#--------------------------------------------------------------------------
alias variation_base_maxmp base_maxmp
def base_maxmp
n = variation_base_maxmp
n += @mp_var
return n
end
#--------------------------------------------------------------------------
# ○ 获取基本攻击力(alias)
#--------------------------------------------------------------------------
alias variation_base_atk base_atk
def base_atk
n = variation_base_atk
n += @atk_var
return n
end
#--------------------------------------------------------------------------
# ○ 获取基本防御力(alias)
#--------------------------------------------------------------------------
alias variation_base_def base_def
def base_def
n = variation_base_def
n += @def_var
return n
end
#--------------------------------------------------------------------------
# ○ 获取基本精神力(alias)
#--------------------------------------------------------------------------
alias variation_base_spi base_spi
def base_spi
n = variation_base_spi
n += @spi_var
return n
end
#--------------------------------------------------------------------------
# ○ 获取基本敏捷(alias)
#--------------------------------------------------------------------------
alias variation_base_agi base_agi
def base_agi
n = variation_base_agi
n += @agi_var
return n
end
#--------------------------------------------------------------------------
# ○ 获取经验值(alias)
#--------------------------------------------------------------------------
alias variation_exp exp
def exp
n = variation_exp
n += @exp_var
return n
end
#--------------------------------------------------------------------------
# ○ 获取金钱(alias)
#--------------------------------------------------------------------------
alias variation_gold gold
def gold
n = variation_gold
n += @gold_var
return n
end
end
#============================================================================
# ☆ 敌人属性变量。
# 由feizhaodan制作。
# 发布于66RPG
# http://rpg.blue/
# 版本号: 1.0.0
# 2011/9/21
# 转载时请连同这里一起转
#============================================================================
复制代码
说明在脚本刚开始。
把设置的敌人的各种属性按照设置的内容进行随机增减,令同一种敌人也有不同的属性这种个性。
这个脚本的别名《本人的正则表达式练习》(PIA飞)
PS:脚本内容有些乱,请不要介意。
作者:
344143370
时间:
2012-6-16 11:44
怎么都不上个范例啊!!看不懂哦!
作者:
八宝粥先生
时间:
2012-6-16 19:42
有什么用么......
作者:
Front
时间:
2012-8-8 10:11
<VHP [+]2000[][, true]>
<VsHPt [+]2000[][, true]>
为啥没用!求解释~表示无法理解楼主说明上的意思...在st内填..是覆盖掉呢,还是填在里面.
作者:
Front
时间:
2012-8-9 09:41
原来如此!这脚本果断很好用..
<VHP+100%, true> 这样的话,敌人是不是就会随机增减HP了?
true如果换成反词的话,是不是就固定了...
作者:
I爱幻想
时间:
2013-5-21 21:15
这个不错,,
作者:
crow2006
时间:
2013-5-26 13:39
在敌人等级脚本中,用rand也可以。
如图:
#============================================================================
# 〇 让敌人也有等级(敌人能力自动设置)
# By.冰舞蝶恋
#----------------------------------------------------------------------------
#
# 用法:在敌人的备注里写上等级 = 设定的等级即可。
# 如:等级 = 20
# 如果需要随机等级,那么可以用
# 等级 = rand(b)+a
# 那么随机数的最小值是a,最大值是a+b-1
# 比如需要2~5的随机数,那么
# 等级 = rand(4)+2
# 此脚本会显示所设定的敌人等级。
#----------------------------------------------------------------------------
# 设置:请在下方设定敌人的每级增长能力。
#----------------------------------------------------------------------------
# 注意:如果不需要敌人的等级,不在备注中填写相关文字即可。
# 由于该脚本会自动设定敌人的等级和能力,所以当你需要自己设定敌人的能力
# 时,你只需不在备注中填写即可。
#----------------------------------------------------------------------------
# 更新:加入敌人的金钱和经验的计算,更加省力。
#============================================================================
#---------------------- 以下是敌人能力设置部分 ------------------------------
$hpl = rand(21) + 40 # 敌人每级所提高的生命值
$mpl = rand(21) + 40 # 敌人每级所提高的魔法值
$atkl = rand(3) + 3 # 敌人每级所增长的攻击力
$defl = rand(6) + 4 # 敌人每级所增长的防御力
$spil = rand(3) + 3 # 敌人每级所增长的精神力
$agil = 2 # 敌人每级所增长的敏捷度
$goldl = 2 # 敌人每级所能多获得的金钱数量
$expl = 4 # 敌人每级所能多获得的经验数量
#----------------------------------------------------------------------------
class Game_Enemy
#--------------------------------------------------------------------------
# ● 获取并显示敌人的等级
#--------------------------------------------------------------------------
def name
if @plural
$z = $data_enemies[@enemy_id].read_note('等级')
if $z != nil
return @original_name + " #{$z}级"
else
return @original_name + " #{$z}级"
end
else
$z = $data_enemies[@enemy_id].read_note('等级')
return @original_name + " #{$z}级"
end
end
#--------------------------------------------------------------------------
# ● 获取基本体力最大值
#--------------------------------------------------------------------------
def base_maxhp
$z = $data_enemies[@enemy_id].read_note('等级')
if $z == nil
return enemy.maxhp
elsif $game_party.members.size == 1
return $data_enemies[@enemy_id].read_note('等级') * $hpl
elsif $game_party.members.size == 2
return $data_enemies[@enemy_id].read_note('等级') * $hpl * 2
end
end
#--------------------------------------------------------------------------
# ● 获取基本魔力最大值
#--------------------------------------------------------------------------
def base_maxmp
$z = $data_enemies[@enemy_id].read_note('等级')
if $z == nil
return enemy.maxmp
else
return $data_enemies[@enemy_id].read_note('等级') * $mpl
end
end
#--------------------------------------------------------------------------
# ● 获取基本攻击力
#--------------------------------------------------------------------------
def base_atk
$z = $data_enemies[@enemy_id].read_note('等级')
if $z == nil
return enemy.atk
else
return $data_enemies[@enemy_id].read_note('等级') * $atkl
end
end
#--------------------------------------------------------------------------
# ● 获取基本防御力
#--------------------------------------------------------------------------
def base_def
$z = $data_enemies[@enemy_id].read_note('等级')
if $z == nil
return enemy.def
else
return $data_enemies[@enemy_id].read_note('等级') * $defl
end
end
#--------------------------------------------------------------------------
# ● 获取基本精神力
#--------------------------------------------------------------------------
def base_spi
$z = $data_enemies[@enemy_id].read_note('等级')
if $z == nil
return enemy.spi
else
return $data_enemies[@enemy_id].read_note('等级') * $spil
end
end
#--------------------------------------------------------------------------
# ● 获取基本敏捷
#--------------------------------------------------------------------------
def base_agi
$z = $data_enemies[@enemy_id].read_note('等级')
if $z == nil
return enemy.agi
else
return $data_enemies[@enemy_id].read_note('等级') * $agil
end
end
#--------------------------------------------------------------------------
# ● 获取经验值
#--------------------------------------------------------------------------
def exp
$z = $data_enemies[@enemy_id].read_note('等级')
if $z == nil
return enemy.exp
elsif $game_party.members.size == 1
return $data_enemies[@enemy_id].read_note('等级') * $expl
elsif $game_party.members.size == 2
return Integer($data_enemies[@enemy_id].read_note('等级') * $expl * 1.2)
end
end
#--------------------------------------------------------------------------
# ● 获取金钱
#--------------------------------------------------------------------------
def gold
$z = $data_enemies[@enemy_id].read_note('等级')
if $z == nil
return enemy.gold
else
return $data_enemies[@enemy_id].read_note('等级') * $goldl
end
end
end
#----------------------------------------------------------------------------
# 以下大神部分By.沉影不器
#----------------------------------------------------------------------------
module RPG
module ReadNote
def self.read(str, section, mismatch = nil)
str.each_line do |line|
eval("#{line}; return #{section}") if line =~ /^\s*#{section}\s*=/i
end
return mismatch
end
end
class BaseItem
def read_note(section, mismatch = nil)
ReadNote.read(self.note, section, mismatch)
end
end
class Enemy
def read_note(section, mismatch = nil)
ReadNote.read(self.note, section, mismatch)
end
end
class State
def read_note(section, mismatch = nil)
ReadNote.read(self.note, section, mismatch)
end
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1