Project1
标题:
关于探查脚本的问题。
[打印本页]
作者:
肥龙
时间:
2010-12-20 00:01
标题:
关于探查脚本的问题。
我的探查脚本不知道为什么一使用Game_Enemy的125行就报错
作者:
白鬼
时间:
2010-12-20 10:58
把你用的脚本,和出错的行,都拿出来
作者:
肥龙
时间:
2010-12-20 12:15
本帖最后由 肥龙 于 2010-12-20 17:55 编辑
报错的
#==============================================================================
# ■ Game_Enemy
#------------------------------------------------------------------------------
# 处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的
# 内部使用。
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 初始化对像
# troop_id : 循环 ID
# member_index : 循环成员的索引
#--------------------------------------------------------------------------
def initialize(troop_id, member_index)
super()
@troop_id = troop_id
@member_index = member_index
troop = $data_troops[@troop_id]
@enemy_id = troop.members[@member_index].enemy_id
enemy = $data_enemies[@enemy_id]
@battler_name = enemy.battler_name
@battler_hue = enemy.battler_hue
@hp = maxhp
@sp = maxsp
@hidden = troop.members[@member_index].hidden
@immortal = troop.members[@member_index].immortal
end
#--------------------------------------------------------------------------
# ● 获取敌人 ID
#--------------------------------------------------------------------------
def id
return @enemy_id
end
#--------------------------------------------------------------------------
# ● 获取索引
#--------------------------------------------------------------------------
def index
return @member_index
end
#--------------------------------------------------------------------------
# ● 获取名称
#--------------------------------------------------------------------------
def name
return $data_enemies[@enemy_id].name
end
#--------------------------------------------------------------------------
# ● 获取基本 MaxHP
#--------------------------------------------------------------------------
def base_maxhp
return $data_enemies[@enemy_id].maxhp
end
#--------------------------------------------------------------------------
# ● 获取基本 MaxSP
#--------------------------------------------------------------------------
def base_maxsp
return $data_enemies[@enemy_id].maxsp
end
#--------------------------------------------------------------------------
# ● 获取基本力量
#--------------------------------------------------------------------------
def base_str
return $data_enemies[@enemy_id].str
end
#--------------------------------------------------------------------------
# ● 获取基本灵巧
#--------------------------------------------------------------------------
def base_dex
return $data_enemies[@enemy_id].dex
end
#--------------------------------------------------------------------------
# ● 获取基本速度
#--------------------------------------------------------------------------
def base_agi
return $data_enemies[@enemy_id].agi
end
#--------------------------------------------------------------------------
# ● 获取基本魔力
#--------------------------------------------------------------------------
def base_int
return $data_enemies[@enemy_id].int
end
#--------------------------------------------------------------------------
# ● 获取基本攻击力
#--------------------------------------------------------------------------
def base_atk
return $data_enemies[@enemy_id].atk
end
#--------------------------------------------------------------------------
# ● 获取基本物理防御
#--------------------------------------------------------------------------
def base_pdef
return $data_enemies[@enemy_id].pdef
end
#--------------------------------------------------------------------------
# ● 获取基本魔法防御
#--------------------------------------------------------------------------
def base_mdef
return $data_enemies[@enemy_id].mdef
end
#--------------------------------------------------------------------------
# ● 获取基本回避修正
#--------------------------------------------------------------------------
def base_eva
return $data_enemies[@enemy_id].eva
end
#--------------------------------------------------------------------------
# ● 普通攻击 获取攻击方动画 ID
#--------------------------------------------------------------------------
def animation1_id
return $data_enemies[@enemy_id].animation1_id
end
#--------------------------------------------------------------------------
# ● 普通攻击 获取对像方动画 ID
#--------------------------------------------------------------------------
def animation2_id
return $data_enemies[@enemy_id].animation2_id
end
#--------------------------------------------------------------------------
# ● 获取属性修正值
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 获取对应属性有效度的数值
table = [0,200,150,100,50,0,-100]
result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
# 状态能防御本属性的情况下效果减半
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result /= 2
end
end
# 过程结束
return result
end
#--------------------------------------------------------------------------
# ● 获取属性有效度
#--------------------------------------------------------------------------
def state_ranks
return $data_enemies[@enemy_id].state_ranks
end
#--------------------------------------------------------------------------
# ● 属性防御判定
# state_id : 状态 ID
#--------------------------------------------------------------------------
def state_guard?(state_id)
return false
end
#--------------------------------------------------------------------------
# ● 获取普通攻击属性
#--------------------------------------------------------------------------
def element_set
return []
end
#--------------------------------------------------------------------------
# ● 获取普通攻击的状态变化 (+)
#--------------------------------------------------------------------------
def plus_state_set
return []
end
#--------------------------------------------------------------------------
# ● 获取普通攻击的状态变化 (-)
#--------------------------------------------------------------------------
def minus_state_set
return []
end
#--------------------------------------------------------------------------
# ● 获取行动
#--------------------------------------------------------------------------
def actions
return $data_enemies[@enemy_id].actions
end
#--------------------------------------------------------------------------
# ● 获取 EXP
#--------------------------------------------------------------------------
def exp
return $data_enemies[@enemy_id].exp
end
#--------------------------------------------------------------------------
# ● 获取金钱
#--------------------------------------------------------------------------
def gold
return $data_enemies[@enemy_id].gold
end
#--------------------------------------------------------------------------
# ● 获取物品 ID
#--------------------------------------------------------------------------
def item_id
return $data_enemies[@enemy_id].item_id
end
#--------------------------------------------------------------------------
# ● 获取武器 ID
#--------------------------------------------------------------------------
def weapon_id
return $data_enemies[@enemy_id].weapon_id
end
#--------------------------------------------------------------------------
# ● 获取放具 ID
#--------------------------------------------------------------------------
def armor_id
return $data_enemies[@enemy_id].armor_id
end
#--------------------------------------------------------------------------
# ● 获取宝物出现率
#--------------------------------------------------------------------------
def treasure_prob
return $data_enemies[@enemy_id].treasure_prob
end
#--------------------------------------------------------------------------
# ● 取得战斗画面 X 坐标
#--------------------------------------------------------------------------
def screen_x
return $data_troops[@troop_id].members[@member_index].x
end
#--------------------------------------------------------------------------
# ● 取得战斗画面 Y 坐标
#--------------------------------------------------------------------------
def screen_y
return $data_troops[@troop_id].members[@member_index].y
end
#--------------------------------------------------------------------------
# ● 取得战斗画面 Z 坐标
#--------------------------------------------------------------------------
def screen_z
return screen_y
end
#--------------------------------------------------------------------------
# ● 逃跑
#--------------------------------------------------------------------------
def escape
# 设置击中标志
@hidden = true
# 清除当前行动
self.current_action.clear
end
#--------------------------------------------------------------------------
# ● 变身
# enemy_id : 变身为的敌人 ID
#--------------------------------------------------------------------------
def transform(enemy_id)
# 更改敌人 ID
@enemy_id = enemy_id
# 更改战斗图形
@battler_name = $data_enemies[@enemy_id].battler_name
@battler_hue = $data_enemies[@enemy_id].battler_hue
# 在生成行动
make_action
end
#--------------------------------------------------------------------------
# ● 生成行动
#--------------------------------------------------------------------------
def make_action
# 清除当前行动
self.current_action.clear
# 无法行动的情况
unless self.movable?
# 过程结束
return
end
# 抽取现在有效的行动
available_actions = []
rating_max = 0
for action in self.actions
# 确认回合条件
n = $game_temp.battle_turn
a = action.condition_turn_a
b = action.condition_turn_b
if (b == 0 and n != a) or
(b > 0 and (n < 1 or n < a or n % b != a % b))
next
end
# 确认 HP 条件
if self.hp * 100.0 / self.maxhp > action.condition_hp
next
end
# 确认等级条件
if $game_party.max_level < action.condition_level
next
end
# 确认开关条件
switch_id = action.condition_switch_id
if switch_id > 0 and $game_switches[switch_id] == false
next
end
# 符合条件 : 添加本行动
available_actions.push(action)
if action.rating > rating_max
rating_max = action.rating
end
end
# 最大概率值作为 3 合计计算(0 除外)
ratings_total = 0
for action in available_actions
if action.rating > rating_max - 3
ratings_total += action.rating - (rating_max - 3)
end
end
# 概率合计不为 0 的情况下
if ratings_total > 0
# 生成随机数
value = rand(ratings_total)
# 设置对应生成随机数的当前行动
for action in available_actions
if action.rating > rating_max - 3
if value < action.rating - (rating_max - 3)
self.current_action.kind = action.kind
self.current_action.basic = action.basic
self.current_action.skill_id = action.skill_id
self.current_action.decide_random_target_for_enemy
return
else
value -= action.rating - (rating_max - 3)
end
end
end
end
end
end
复制代码
探查的
#==============================================================================
# 探查技能 BY绿发的Eclair
#------------------------------------------------------------------------------
# 使用方法:在数据库中设定一个叫“探查”的状态(想要用别的名字在下面改啦~)
# 然后把想要做成有探查效果的特技或物品附加这个状态。就这样简单~~
# 修改自然属性的个数在第16行。
#==============================================================================
$探查状态名 = "识破" #探查状态的名字
class Window_cateyes < Window_Base
def initialize
super(120,40,400,400)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z = 9999
self.back_opacity = 160 #信息窗口的透明度
@element = 8 #自然属性个数
end
def set_target(target)
self.contents.clear
self.visible = true
@target = target
self.contents.draw_text(10,10,360-32,32,"#{@target.name}",0)
draw_actor_hp(@target,10,100 - 32 - 25,160)
draw_actor_sp(@target,10,100 - 32,160)
self.contents.font.color = system_color
self.contents.draw_text(10,100,180,32,"种族",0)
draw_actor_parameter(@target, 10, 112 + 20, 0)
draw_actor_parameter(@target, 10, 144 + 20, 1)
draw_actor_parameter(@target, 10, 176 + 20, 2)
draw_actor_parameter(@target, 10, 208 + 20, 3)
draw_actor_parameter(@target, 10, 240 + 20, 4)
draw_actor_parameter(@target, 10, 272 + 20, 5)
draw_actor_parameter(@target, 10, 304 + 20, 6)
if @target.is_a?(Game_Enemy)
self.contents.font.color = system_color
self.contents.draw_text(190,100 - 32 - 25,180-32,32,"经验",0)
self.contents.font.color = normal_color
self.contents.draw_text(190,100 - 32 - 25,180 - 32,32,"#{@target.exp}",2)
self.contents.font.color = system_color
self.contents.draw_text(190,100 - 32 ,180-32,32,$data_system.words.gold,0)
self.contents.font.color = normal_color
self.contents.draw_text(190,100 - 32,180-32,32,"#{@target.gold}",2)
self.contents.font.color = system_color
self.contents.draw_text(190,100 ,180,32,"掉落",0)
self.contents.font.color = normal_color
draw_item_name($data_items[@target.item_id],197,57 + 25 + 25 + 25) if @target.item_id > 0
draw_item_name($data_weapons[@target.weapon_id],197,57 + 25 + 25 + 25) if @target.weapon_id > 0
draw_item_name($data_armors[@target.armor_id],197,57 + 25 + 25 + 25) if @target.armor_id > 0
end
self.contents.font.color = system_color
self.contents.draw_text(190,153 + 12,180,32,"属性抵抗",0)
self.contents.font.color = normal_color
num = @element_max == 0 ? $data_system.elements.size : @element_max
y = 0
weaker = ""
weak = ""
resist = ""
guard = ""
recover = ""
race = ""
for i in 1..@element
case @target.element_rate(i)
when 151..200
weaker += $data_system.elements[i]
when 101..150
weak += $data_system.elements[i]
when 1..99
resist += $data_system.elements[i]
when 0
guard += $data_system.elements[i]
when -200..-1
recover += $data_system.elements[i]
end
end
if weaker != ""
weaker += "超弱"
self.contents.draw_text(190,153 + 32+ 12,180,32,weaker,0)
y += 1
end
if weak != ""
weak += "弱点"
self.contents.draw_text(190,153 + 32+ 12 + 32 * y,180,32,weak,0)
y += 1
end
if resist != ""
resist += "抵抗"
self.contents.draw_text(190,153 + 32+ 12 + 32 * y,180,32,resist,0)
y += 1
end
if guard != ""
guard += "无效"
self.contents.draw_text(190,153 + 32+ 12 + 32 * y,180,32,guard,0)
y += 1
end
if recover != ""
recover += "吸收"
self.contents.draw_text(190,153 + 32+ 12 + 32 * y,180,32,recover,0)
end
for i in @element + 1..$data_system.elements.size - 1
if @target.element_rate(i) > 100
race = $data_system.elements[i]
break
end
end
self.contents.font.color = normal_color
self.contents.draw_text(70,100,100,32,race,2)
end
def draw_item_name(item, x, y)
if item == nil
return
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.font.color = normal_color
self.contents.draw_text(x + 28, y, 150, 32, item.name)
end
end
class Scene_Battle
alias update_phase4_step5_eclair2 :update_phase4_step5
def update_phase4_step5
for i in 1..$data_states.size - 1
if $data_states[i].name == $探查状态名
$探查状态ID = i
break
end
end
if (@active_battler.current_action.kind == 1 and $data_skills[@active_battler.current_action.skill_id].plus_state_set.include?($探查状态ID))
@eye_window = Window_cateyes.new
for target in @target_battlers
target.damage = ""
@eye_window.set_target(target)
for i in 0...120
Input.update
@eye_window.update
Graphics.update
@spriteset.update
if Input.trigger?(Input::C) or Input.trigger?(Input::B)
$game_system.se_play($data_system.decision_se)
break
end
end
end
@eye_window.dispose
@eye_window = nil
end
update_phase4_step5_eclair2
end
end
#==============================================================================
# 探查技能 BY绿发的Eclair
#==============================================================================
复制代码
肥龙于2010-12-22 23:25补充以下内容:
帮帮忙啊~
肥龙于2010-12-22 23:56补充以下内容:
[attachimg]40194[/attachimg]附加图片
肥龙于2010-12-22 23:58补充以下内容:
[attachimg]40195[/attachimg]
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1