Project1
标题:
请问我写的显示全身像脚本哪里有错误?
[打印本页]
作者:
abc1236762
时间:
2012-7-10 19:34
标题:
请问我写的显示全身像脚本哪里有错误?
本帖最后由 abc1236762 于 2012-7-11 12:14 编辑
我想要做到在选单里选择人物时可以在右边看到角色全身像,但不知道哪里写错了,有谁可以帮我检查。
例如选择装备时不是要选人物吗,指标到第一个人物时,显示第一个人物的全身像,到第n个的时候,显示第n个的全身像,按Enter键之前可以用上下键切换到不同角色的全身像
module Cache
#--------------------------------------------------------------------------
# ● 取得角色全身像图
#--------------------------------------------------------------------------
def self.Body(filename)
load_bitmap("Graphics/Bodies/", filename)
end
end
#encoding:utf-8
#==============================================================================
# ■ Window_MenuStatusBody
#------------------------------------------------------------------------------
# 选单画面中,显示队伍成员全身像的窗口
#==============================================================================
class Windows_MenuStutasBody < Window_Base
#--------------------------------------------------------------------------
# ● 初始化物件
#--------------------------------------------------------------------------
def initialize
super(x, y, windows_width, windows_height)
# refresh
end
#--------------------------------------------------------------------------
# ● 取得窗口的坐标与大小
#--------------------------------------------------------------------------
def x
return 0 - standard_padding
end
def y
return 0 - standard_padding
end
def windows_width
return Graphics.width + standard_padding * 2
end
def windows_height
return Graphics.height + standard_padding * 2
end
#--------------------------------------------------------------------------
# ● 取得全身像的名称
#--------------------------------------------------------------------------
def body_name
if actor_id = 1
return "o1t"
else if actor_id = 2
return "o2t"
else if actor_id = 3
return "o3t"
else if actor_id = 4
return "o4t"
else if actor_id = 5
return "o22t"
else if actor_id = 6
return "o39t"
else if actor_id = 7
return "o40t"
else if actor_id = 8
return "o41t"
else if actor_id = 9
return "o54t"
else if actor_id = 10
return "o72t"
else if actor_id = 11
return "c6t"
else if actor_id = 12
return "f1t"
else if actor_id = 13
return "h2t"
else if actor_id = 14
return "l2t"
else if actor_id = 15
return "m6t"
else if actor_id = 16
return "t1t"
else if actor_id >= 17
return ""
else if actor_id = 0
return ""
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
#--------------------------------------------------------------------------
# ● 绘制角色全身图
#--------------------------------------------------------------------------
def draw_body(body_name, x, y)
bitmap = Cache.body(body_name)
rect = Rect.new(0, 0, bitmap.width, bitmap.height)
bitmap.new(x, y)
bitmap.dispose
end
#--------------------------------------------------------------------------
# ● 绘制角色肖像图
#--------------------------------------------------------------------------
def draw_actor_body(body_name, x, y)
draw_body(Graphics.width - x, Graphics.height - y)
end
#--------------------------------------------------------------------------
# ● 绘制专案
#--------------------------------------------------------------------------
def draw_item(index)
draw_actor_body(actor, rect.x, rect.y)
end
end
end
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# ● 开始处理
#--------------------------------------------------------------------------
def start
super
create_menustutasbody_window
create_command_window
create_information_window
create_status_window
end
#--------------------------------------------------------------------------
# ● 生成角色全身像窗口
#--------------------------------------------------------------------------
def create_menustutasbody_window
@menustutasbody_window = Windows_MenuStutasBody.new
@menustutasbody_window.opacity = 0
end
end
复制代码
如图,右边显示不出全身像,但又没显示出错误。
3.png
(186.61 KB, 下载次数: 20)
下载附件
保存到相册
2012-7-10 19:37 上传
http://115.com/file/an8a1cnv#
Project2 .rar
作者:
feizhaodan
时间:
2012-7-10 19:46
好吧,我只指出语法错误。
1,
#--------------------------------------------------------------------------
# ● 取得全身像的名称
#--------------------------------------------------------------------------
def body_name
if actor_id = 1
return "o1t"
else if actor_id = 2
return "o2t"
else if actor_id = 3
return "o3t"
else if actor_id = 4
return "o4t"
else if actor_id = 5
return "o22t"
else if actor_id = 6
return "o39t"
else if actor_id = 7
return "o40t"
else if actor_id = 8
return "o41t"
else if actor_id = 9
return "o54t"
else if actor_id = 10
return "o72t"
else if actor_id = 11
return "c6t"
else if actor_id = 12
return "f1t"
else if actor_id = 13
return "h2t"
else if actor_id = 14
return "l2t"
else if actor_id = 15
return "m6t"
else if actor_id = 16
return "t1t"
else if actor_id >= 17
return ""
else if actor_id = 0
return ""
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
复制代码
这种类型,请活用elsif
#--------------------------------------------------------------------------
# ● 取得全身像的名称
#--------------------------------------------------------------------------
def body_name
if actor_id = 1
return "o1t"
elsif actor_id = 2
return "o2t"
elsif actor_id = 3
return "o3t"
elsif actor_id = 4
return "o4t"
elsif actor_id = 5
return "o22t"
elsif actor_id = 6
return "o39t"
elsif actor_id = 7
return "o40t"
elsif actor_id = 8
return "o41t"
elsif actor_id = 9
return "o54t"
elsif actor_id = 10
return "o72t"
elsif actor_id = 11
return "c6t"
elsif actor_id = 12
return "f1t"
elsif actor_id = 13
return "h2t"
elsif actor_id = 14
return "l2t"
elsif actor_id = 15
return "m6t"
elsif actor_id = 16
return "t1t"
elsif actor_id >= 17
return ""
elsif actor_id = 0
return ""
end
end
复制代码
2,初心者经常有的符号错误。
actor_id = 0
复制代码
相等的符号不是一个等号(=)而是两个等号(==)。如你输入的话,那就表示将actor_id代入0之后,再if其返回值。所以无论如何也不会发生你所希望的结果。
3,
#--------------------------------------------------------------------------
# ● 取得角色全身像图
#--------------------------------------------------------------------------
def self.Body(filename)
load_bitmap("Graphics/Bodies/", filename)
end
复制代码
这里的 def self.Body(filename),方法名称最好不要用大写开头。
大概就是这些吧
作者:
abc1236762
时间:
2012-7-10 21:26
本帖最后由 abc1236762 于 2012-7-10 21:31 编辑
还是显示不出来,可以帮我检查一下draw_body和draw_actor_body这两个定义有没有问题?
还是还有其他的问题?
可以用类似显示头像的方式显示出来吗?
如果可以要怎么写,里面有些语法我看不懂。
作者:
abc1236762
时间:
2012-7-11 11:59
我换了个方式写,但是要如何在进入装备和技能时或取消选择技能或装备时消除Window_MenuStutasBody窗口?
#encoding:utf-8
#==============================================================================
# ■ Cache
#------------------------------------------------------------------------------
# 此模块加载所有图像,建立并储存 Bitmap 对象。为加快加载速度并节省内存,
# 此模块将以建立的 bitmap 对象储存在内定哈希表中,使得程序在需要已存在
# 的图像时能快速读取 bitmap 对象。
#==============================================================================
module Cache
#--------------------------------------------------------------------------
# ● 取得角色全身像图
#--------------------------------------------------------------------------
def self.body(filename)
load_bitmap("Graphics/Bodies/", filename)
end
end
#encoding:utf-8
#==============================================================================
# ■ Window_MenuStutasBody
#------------------------------------------------------------------------------
# 选单画面中,显示队伍成员全身像的窗口
#==============================================================================
class Window_MenuStutasBody < Window_Base
#--------------------------------------------------------------------------
# ● 初始化物件
#--------------------------------------------------------------------------
def initialize(actor)
super(x, y, windows_width, windows_height)
@actor = actor
@graphic = Sprite.new(self.viewport)
@graphic.x = 960
@graphic.y = 544
refresh
end
#--------------------------------------------------------------------------
# ● 取得窗口的坐标与大小
#--------------------------------------------------------------------------
def x
return 0 - standard_padding
end
def y
return 0 - standard_padding
end
def windows_width
return Graphics.width + standard_padding * 2
end
def windows_height
return Graphics.height + standard_padding * 2
end
#--------------------------------------------------------------------------
# ● 设定角色
#--------------------------------------------------------------------------
def actor=(actor)
return if @actor == actor
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
@graphic.dispose
super
end
#--------------------------------------------------------------------------
# ● 显示
#--------------------------------------------------------------------------
def refresh
self.contents.clear
name = "Character" + @actor.id.to_s
begin
@graphic.bitmap = Cache.body(name)
@graphic.ox = @graphic.bitmap.width
@graphic.oy = @graphic.bitmap.height
rescue
end
end
end
#encoding:utf-8
#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
# 选单画面
#==============================================================================
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# ● 开始处理
#--------------------------------------------------------------------------
def start
super
create_command_window
create_information_window
create_status_window
end
#--------------------------------------------------------------------------
# ● 生成指令窗口
#--------------------------------------------------------------------------
def create_command_window
@command_window = Window_MenuCommand.new
@command_window.y = 2
@command_window.opacity = 0
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:skill, method(:command_personal))
@command_window.set_handler(:equip, method(:command_personal))
@command_window.set_handler(:status, method(:command_personal))
@command_window.set_handler(:formation, method(:command_formation))
@command_window.set_handler(:save, method(:command_save))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# ● 切换角色
#--------------------------------------------------------------------------
def on_actor_change
@menustutasbody_window.actor = @actor
@menustutasbody_window.activate
end
#--------------------------------------------------------------------------
# ● 生成游戏信息窗口
#--------------------------------------------------------------------------
def create_information_window #
@gold_window = Window_Information.new
@gold_window.x = 0
@gold_window.y = Graphics.height - @gold_window.height - 2
@gold_window.opacity = 0
end #
#--------------------------------------------------------------------------
# ● 生成状态窗口
#--------------------------------------------------------------------------
def create_status_window
@status_window = Window_MenuStatus.new(0, @command_window.height - 2 + 2)
@status_window.opacity = 0
end
#--------------------------------------------------------------------------
# ● 指令“物品”
#--------------------------------------------------------------------------
def command_item
SceneManager.call(Scene_Item)
end
#--------------------------------------------------------------------------
# ● 指令“技能”“装备”“状态”
#--------------------------------------------------------------------------
def command_personal
@status_window.select_last
@menustutasbody_window = Window_MenuStutasBody.new(@actor)
@menustutasbody_window.opacity = 0
@status_window.activate
@menustutasbody_window.activate
@status_window.set_handler(:ok, method(:on_personal_ok))
@status_window.set_handler(:cancel, method(:on_personal_cancel))
end
#--------------------------------------------------------------------------
# ● 指令“整队”
#--------------------------------------------------------------------------
def command_formation
@status_window.select_last
@status_window.activate
@status_window.set_handler(:ok, method(:on_formation_ok))
@status_window.set_handler(:cancel, method(:on_formation_cancel))
end
#--------------------------------------------------------------------------
# ● 指令“存盘”
#--------------------------------------------------------------------------
def command_save
SceneManager.call(Scene_Save)
end
#--------------------------------------------------------------------------
# ● 指令“结束游戏”
#--------------------------------------------------------------------------
def command_game_end
SceneManager.call(Scene_End)
end
#--------------------------------------------------------------------------
# ● 个人指令“确定”
#--------------------------------------------------------------------------
def on_personal_ok
case @command_window.current_symbol
when :skill
SceneManager.call(Scene_Skill)
when :equip
SceneManager.call(Scene_Equip)
when :status
SceneManager.call(Scene_Status)
end
end
#--------------------------------------------------------------------------
# ● 个人指令“取消”
#--------------------------------------------------------------------------
def on_personal_cancel
@status_window.unselect
@command_window.activate
end
#--------------------------------------------------------------------------
# ● 整队“确定”
#--------------------------------------------------------------------------
def on_formation_ok
if @status_window.pending_index >= 0
$game_party.swap_order(@status_window.index,
@status_window.pending_index)
@status_window.pending_index = -1
@status_window.redraw_item(@status_window.index)
else
@status_window.pending_index = @status_window.index
end
@status_window.activate
end
#--------------------------------------------------------------------------
# ● 整队“取消”
#--------------------------------------------------------------------------
def on_formation_cancel
if @status_window.pending_index >= 0
@status_window.pending_index = -1
@status_window.activate
else
@status_window.unselect
@command_window.activate
end
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1