Project1
标题:
脚本出错,不知道原因啊
[打印本页]
作者:
qq306481897
时间:
2012-4-25 20:18
标题:
脚本出错,不知道原因啊
本帖最后由 iisnow 于 2012-4-25 20:51 编辑
我弄好一个游戏发给我朋友帮我测试 结果他说换装备时出错了
D:我的文档Desktop
提示这个
但是我也跟他一样换武器(铁剑)
都没有问题 求高手帮忙看看啊
#队伍最大人数
ACTORS = 5
#战斗人数
BATTLER_ACTORS =5
#战斗画面修补
#目标 3人 200, 4人 160, 5人 120
SPRITES_BATTLER = 50
#游戏开始时步行图的显示(1即是角色1的步行图,如此类推)
CHARACTER_GRAPHIC = 1
class Game_Party
#--------------------------------------------------------------------------
# ● 加入同伴
# actor_id : 角色 ID
#--------------------------------------------------------------------------
def add_actor(actor_id)
# 获取角色
actor = $game_actors[actor_id]
# 同伴人数未满 4 人、本角色不在队伍中的情况下
if @actors.size < ACTORS and not @actors.include?(actor)
# 添加角色
@actors.push(actor)
# 还原主角
$game_player.refresh
end
end
#--------------------------------------------------------------------------
# ● 对像角色的顺序确定
# actor_index : 角色索引
#--------------------------------------------------------------------------
def smooth_target_actor(actor_index)
# 取得对像
actor = actors[actor_index]
# 对像存在的情况下
if actor != nil and actor.exist?
return actor
end
# 循环
for actor in actors
# 对像存在的情况下
if actor.exist?
return actor
end
end
end
end
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● 初始化对像
# viewport : 显示端口
# battler : 战斗者 (Game_Battler) 以下重要
#--------------------------------------------------------------------------
def initialize
# 生成显示端口
@viewport1 = Viewport.new(0, 0, 640, 640)#320
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 101
@viewport3.z = 200
@viewport4.z = 5000
# 生成战斗背景活动块
@battleback_sprite = Sprite.new(@viewport1)
# 生成敌人活动块
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
end
# 生成敌人活动块
@actor_sprites = []
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
if BATTLER_ACTORS > 4
for i in 4...BATTLER_ACTORS
@actor_sprites.push(Sprite_Battler.new(@viewport2))
end
end
# 生成天候
@weather = RPG::Weather.new(@viewport1)
# 生成图片活动块
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures[i]))
end
# 生成计时器块
@timer_sprite = Sprite_Timer.new
# 刷新画面
update
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
alias update_actor_change update
def update
if BATTLER_ACTORS > 4
for i in 4...BATTLER_ACTORS
@actor_sprites[i].battler = $game_party.actors[i]
end
end
update_actor_change
end
end
#以上重要
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# 处理菜单画面的类。
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# ● 初始化对像
# menu_index : 命令光标的初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
@actor_change = false
@actor_index = nil
end
#--------------------------------------------------------------------------
# ● 刷新画面 (状态窗口被激活的情况下)
#--------------------------------------------------------------------------
alias update_command_actor_change update_command
def update_command
# 元の処理を実行
update_command_actor_change
# 方向ボタンの左か右が押された场合
if Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
# 决定 SE を演奏
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
@actor_change = true
@actor_index = nil
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (状态窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_status
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 激活命令窗口
@command_window.active = true
@status_window.active = false
@status_window.index = -1
@actor_change = false
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
if @actor_change
# 决定 SE を演奏
$game_system.se_play($data_system.decision_se)
if @actor_index == nil
@actor_index = @status_window.index
else
$game_party.change_actor(@actor_index, @status_window.index)
@actor_index = nil
@status_window.refresh
if $game_party.actors.include?($game_actors[CHARACTER_GRAPHIC]) == false || CHARACTER_GRAPHIC == 0
$game_player.refresh
end
end
return
else
# 命令窗口的光标位置分支
case @command_window.index
when 1 # 特技
# 本角色的行动限制在 2 以上的情况下
if $game_party.actors[@status_window.index].restriction >= 2
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到特技画面
$scene = Scene_Skill.new(@status_window.index)
when 2 # 装备
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换的装备画面
$scene = Scene_Equip.new(@status_window.index)
when 3 # 状态
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到状态画面
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end
end
#==============================================================================
# ■ Scene_Battle (分割定义 2)
#------------------------------------------------------------------------------
# 处理战斗画面的类。
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● アクターコマンドウィンドウのセットアップ
#--------------------------------------------------------------------------
alias phase3_setup_command_window_actor_change phase3_setup_command_window
def phase3_setup_command_window
# 元の処理を実行
phase3_setup_command_window_actor_change
# アクターコマンドウィンドウの位置を设定
@actor_command_window.x = @actor_index * SPRITES_BATTLER
end
end
复制代码
这个是我找的脚本 增加人物上线的
$game_party.change_actor(@actor_index, @status_window.index) 提示是这行有问题
但是我用自己去弄这么都不出错
‘‘──qq306481897于2012-4-25 20:22补充以下内容
提示错误的图片没显示出来。。。
是说 脚本 增加人物上线184行发生错误
undefined method 'change_actor' for #<Game_Party:0x1032438>
脚本是网上下的 我就删了点不要的东西 但是我朋友那出错了
我测试就没 不知道什么原因啊
’’ dsu_plus_rewardpost_czw
作者:
fux2
时间:
2012-4-25 20:24
change_actor此方法没定义,你一定是没复制完整。
作者:
qq306481897
时间:
2012-4-25 20:25
不好意i啊 第一次发不是很懂
#队伍最大人数
ACTORS = 5
#战斗人数
BATTLER_ACTORS =5
#战斗画面修补
#目标 3人 200, 4人 160, 5人 120
SPRITES_BATTLER = 50
#游戏开始时步行图的显示(1即是角色1的步行图,如此类推)
CHARACTER_GRAPHIC = 1
class Game_Party
#--------------------------------------------------------------------------
# ● 加入同伴
# actor_id : 角色 ID
#--------------------------------------------------------------------------
def add_actor(actor_id)
# 获取角色
actor = $game_actors[actor_id]
# 同伴人数未满 4 人、本角色不在队伍中的情况下
if @actors.size < ACTORS and not @actors.include?(actor)
# 添加角色
@actors.push(actor)
# 还原主角
$game_player.refresh
end
end
#--------------------------------------------------------------------------
# ● 对像角色的顺序确定
# actor_index : 角色索引
#--------------------------------------------------------------------------
def smooth_target_actor(actor_index)
# 取得对像
actor = actors[actor_index]
# 对像存在的情况下
if actor != nil and actor.exist?
return actor
end
# 循环
for actor in actors
# 对像存在的情况下
if actor.exist?
return actor
end
end
end
end
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● 初始化对像
# viewport : 显示端口
# battler : 战斗者 (Game_Battler) 以下重要
#--------------------------------------------------------------------------
def initialize
# 生成显示端口
@viewport1 = Viewport.new(0, 0, 640, 640)#320
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 101
@viewport3.z = 200
@viewport4.z = 5000
# 生成战斗背景活动块
@battleback_sprite = Sprite.new(@viewport1)
# 生成敌人活动块
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
end
# 生成敌人活动块
@actor_sprites = []
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
if BATTLER_ACTORS > 4
for i in 4...BATTLER_ACTORS
@actor_sprites.push(Sprite_Battler.new(@viewport2))
end
end
# 生成天候
@weather = RPG::Weather.new(@viewport1)
# 生成图片活动块
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures[i]))
end
# 生成计时器块
@timer_sprite = Sprite_Timer.new
# 刷新画面
update
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
alias update_actor_change update
def update
if BATTLER_ACTORS > 4
for i in 4...BATTLER_ACTORS
@actor_sprites[i].battler = $game_party.actors[i]
end
end
update_actor_change
end
end
#以上重要
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# 处理菜单画面的类。
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# ● 初始化对像
# menu_index : 命令光标的初期位置
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
@actor_change = false #未知 可删
@actor_index = nil #角色索引 未知 可删
end
#--------------------------------------------------------------------------
# ● 刷新画面 (状态窗口被激活的情况下)
#--------------------------------------------------------------------------
alias update_command_actor_change update_command
def update_command
# 元の処理を実行
update_command_actor_change
# 方向ボタンの左か右が押された场合
if Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT)
# 决定 SE を演奏
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
@actor_change = true
@actor_index = nil
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (状态窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_status
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 激活命令窗口
@command_window.active = true
@status_window.active = false
@status_window.index = -1
@actor_change = false
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
if @actor_change
# 决定 SE を演奏
$game_system.se_play($data_system.decision_se)
if @actor_index == nil
@actor_index = @status_window.index
else
$game_party.change_actor(@actor_index, @status_window.index)
@actor_index = nil
@status_window.refresh
if $game_party.actors.include?($game_actors[CHARACTER_GRAPHIC]) == false || CHARACTER_GRAPHIC == 0
$game_player.refresh
end
end
return
else
# 命令窗口的光标位置分支
case @command_window.index
when 1 # 特技
# 本角色的行动限制在 2 以上的情况下
if $game_party.actors[@status_window.index].restriction >= 2
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到特技画面
$scene = Scene_Skill.new(@status_window.index)
when 2 # 装备
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换的装备画面
$scene = Scene_Equip.new(@status_window.index)
when 3 # 状态
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 切换到状态画面
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end
end
#==============================================================================
# ■ Scene_Battle (分割定义 2)
#------------------------------------------------------------------------------
# 处理战斗画面的类。
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● アクターコマンドウィンドウのセットアップ
#--------------------------------------------------------------------------
alias phase3_setup_command_window_actor_change phase3_setup_command_window
def phase3_setup_command_window
# 元の処理を実行
phase3_setup_command_window_actor_change
# アクターコマンドウィンドウの位置を设定
@actor_command_window.x = @actor_index * SPRITES_BATTLER
end
end
复制代码
就这个了
‘‘──qq306481897于2012-4-25 20:26补充以下内容
范例有80多M不好传把
’’
‘‘──qq306481897于2012-4-25 20:33补充以下内容
undefined method 'change_actor' for #<Game_Party:0x1032438>
实在不方便看 告诉我这个提示错误的具体意思也行啊
’’
作者:
Luciffer
时间:
2012-4-25 20:57
没有关于'change_actor'的定义。。。
你肯定是少了什么脚本。。。
作者:
ppipip110
时间:
2012-4-26 22:05
在Game_Party类中少一个叫做change_actor的方法。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1