赞 | 0 |
VIP | 4 |
好人卡 | 43 |
积分 | 94 |
经验 | 75226 |
最后登录 | 2019-3-3 |
在线时间 | 1131 小时 |
Lv4.逐梦者
- 梦石
- 3
- 星屑
- 6420
- 在线时间
- 1131 小时
- 注册时间
- 2007-12-26
- 帖子
- 2402
|
3楼

楼主 |
发表于 2011-12-13 15:00:57
|
只看该作者
本帖最后由 幻耶 于 2011-12-13 15:11 编辑
feizhaodan 发表于 2011-12-13 14:40 ![]()
在Update_cursor中在光标移动判定结束之后:这个就是移动了光标的话。
越向上数值越小,越向下数值越 ...
我用了一个技能树脚本,我把 if last_cursor != self.cursor 放在这个脚本的 def update 下会出错,我希望当光标上下移动的同时,对右边的图片作某些处理(比如更改图片位置)- class Window_mp_Command < Window_Selectable
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # width : 窗口的宽
- # commands : 命令字符串序列
- #--------------------------------------------------------------------------
- def initialize(width, commands)
- # 由命令的个数计算出窗口的高
- super(0, 0, width, 480)#commands.size * 32 + 32)
- @item_max = 13
- @commands = commands
- self.contents = Bitmap.new(width - 32, @item_max * 32)
-
- refresh
- self.index = 0
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- for i in 0...@item_max
- draw_item(i, normal_color)
- end
- end
- #--------------------------------------------------------------------------
- # ● 描绘项目
- # index : 项目编号
- # color : 文字色
- #--------------------------------------------------------------------------
- def draw_item(index, color)
- self.contents.font.color = color
- rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- self.contents.draw_text(rect, @commands[index].to_s)
- end
- #--------------------------------------------------------------------------
- # ● 项目无效化
- # index : 项目编号
- #--------------------------------------------------------------------------
- def disable_item(index) ####把按钮灰色显示(代表不能按)
- draw_item(index, disabled_color)
- end
- def able_item(index) ####把按钮正常显示
- draw_item(index, normal_color)
- end
- end
- class Window_Base < Window
- def draw_skilltree(actor, x, y)############描绘技能树的方法
- bitmap=Bitmap.new("Graphics/Pictures/skill")#技能树的图
- #技能树的图的地址是 Graphics\Pictures下的skill.png 文件 可以自己改
- src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
- self.contents.blt(x, y, bitmap, src_rect)
- x = 244 #############技能的点数显示位置的 x值 根据技能树的不同调整
- y = 69
- self.contents.draw_text(x , y, 96, 32, @actor.skill3.to_s )
- self.contents.draw_text(x , y+160, 96, 32, @actor.skill2.to_s )
- self.contents.draw_text(x , y+316, 96, 32, @actor.skill1.to_s )
- #####在相应的地方现实技能的点数
- self.contents.draw_text(0 , 400, 96, 32, "剩余技能点" )
- self.contents.draw_text(100 , 400, 96, 32, @actor.skillp.to_s )
- #######现实剩余技能点数
- end
- end
-
- #==============================================================================
- class Window_skilltree < Window_Base #技能树窗口
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # actor : 角色
- #--------------------------------------------------------------------------
- def initialize(actor)
- super(0, 0, 500, 480)
- self.contents = Bitmap.new(width - 32, height - 32)
- @actor = actor
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- draw_skilltree(@actor, 160, -40) #调用draw_skilltree绘制技能树
- end
- end
- #============================================================================
- #------------------------------------------------------------------------------
- #
- #==============================================================================
- class Scene_skilltree######技能树场景
- #include OPACITY_66RPG
- #--------------------------------------------------------------------------
- # ● 初始化对像
- # actor_index : 角色索引
- # menu_index : 选项起始位置
- #--------------------------------------------------------------------------
- def initialize(actor_index = 0 , menu_index = 0)
- @actor_index = actor_index
- @menu_index = menu_index
- end
- #--------------------------------------------------------------------------
- # ● 主处理
- #--------------------------------------------------------------------------
- def main
- s1 = "学习火球术" #########技能树菜单 根据人物不同 可以加个when 语句
- s2 = "学习火山爆发"
- s3 = "学习流星火雨"
- s4 = "调整结束"
- @command_window = Window_mp_Command.new(180, [s1,s2,s3,s4])
- @command_window.index = @menu_index
- @actor = $game_party.actors[@actor_index]
- s_disable #####################
- # 生成技能树窗口 #技能树窗口的坐标
- @skilltree_window = Window_skilltree.new(@actor)
- @skilltree_window.x = 180
- @skilltree_window.y = 0 #技能树窗口的坐标
- # 执行过渡 渐变图形的文件位置 自己设定
- Graphics.transition
- # 主循环
- loop do# 刷新游戏画面
- Graphics.update
- Input.update # 刷新输入信息
- update# 刷新画面
- if $scene != self # 如果切换画面就中断循环
- break
- end
- end
- # 准备过渡
- Graphics.freeze# 释放窗口
- @command_window.dispose
- @skilltree_window.dispose
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def update
- # 刷新窗口
- @command_window.update
- # 选项明暗判断
- s_disable
- @skilltree_window.update
- #=============================================================
- # 按下 B 键的情况下
- #=============================================================
- if Input.trigger?(Input::B)
- #如果按取消键,则把光标移动到调整结束按钮的位置
- # 演奏取消 SE
- #$scene = Scene_Map.new
- $game_system.se_play($data_system.cancel_se)
- @command_window.index = 3
- return
- end
- #=============================================================
- # 按下 C 键的情况下
- #=============================================================
- if Input.trigger?(Input::C)
- if @command_window.index == 3
- # 演奏确定 SE
- $game_system.se_play($data_system.decision_se)
- skill_learn ##############学会和遗忘
- $scene = Scene_Map.new####回到地图
- return
- end
- case @command_window.index
- when 0 ###############
- if @actor.skillp == 0 or @actor.skill1 == 3
- ##如果技能点为0 或者 技能1已经是3级 就不能再升
- # 演奏冻结 SE
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- # 演奏确定 SE
- $game_system.se_play($data_system.decision_se)
- @actor.skill1 += 1 #######技能1升一级
- @actor.skillp -= 1 #############技能点-一点
- @skilltree_window.refresh ########刷新窗口
- s_disable #####刷新按钮明暗的显示
- return
- when 1
- if @actor.skillp == 0 or @actor.skill2 == 3 or @actor.skill1 ==0
- #如果技能点为0 或者 技能 2已经是最大等级3 或者 技能1没有升点 就不能再升级技能2
- # 演奏冻结 SE
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- # 演奏确定 SE
- $game_system.se_play($data_system.decision_se)
- @actor.skillp -= 1 #技能点-1
- @actor.skill2 += 1 #技能2升1级
- @skilltree_window.refresh
- s_disable
- return
- when 2 ###############
- if @actor.skillp == 0 or @actor.skill3 == 3 or @actor.skill2 ==0
- #如果技能点为0 或者 技能 2已经是最大等级3 或者 技能1没有升点 就不能再升级技能2
- # 演奏冻结 SE
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- # 演奏确定 SE
- $game_system.se_play($data_system.decision_se)
- @actor.skill3 += 1 ###技能3升1级
- @actor.skillp -= 1 ####技能点减1
- @skilltree_window.refresh
- s_disable
- return
- end
- end
- #=============================================================
- # 什么都没有按下的情况
- #=============================================================
- textNo = @command_window.index
- #=============================================================
- # 按下R与L换人的情况
- #=============================================================
- if Input.trigger?(Input::RIGHT)
-
- # 演奏光标 SE
- $game_system.se_play($data_system.cursor_se)
- # 移至下一位角色
- @actor_index += 1
- @actor_index %= $game_party.actors.size
- # 切换到别的状态画面
- @command_window.index = 0
- $scene = Scene_skilltree.new(@actor_index , @command_window.index)
- return
- end
- # 按下 L 键的情况下
- if Input.trigger?(Input::LEFT)
- # 演奏光标 SE
- $game_system.se_play($data_system.cursor_se)
- # 移至上一位角色
- @actor_index += $game_party.actors.size - 1
- @actor_index %= $game_party.actors.size
- # 切换到别的状态画面
- @command_window.index = 0
- $scene = Scene_skilltree.new(@actor_index , @command_window.index)
-
- return
- end
- end
- #--------------------------------------------------------------------------
- # ● 选项明暗判断
- #--------------------------------------------------------------------------
- def skill_learn###############结算技能点 并习得技能的方法
- learn_num = $game_party.actors.size###判断有几个角色
- for i in 0 ... learn_num
- @learner = $game_party.actors
- @s1 = @actor.skill1#@learner.skill1
- @s2 = @actor.skill2#@learner.skill2
- @s3 = @actor.skill3#@learner.skill3
- case @s1
- when 1
- @learner.learn_skill(1)#学会等级1的技能1 id为1
- when 2
- @learner.learn_skill(2)#学会等级2的技能1 id为2
- @learner.forget_skill(1)#把等级1的技能1 忘掉
- when 3
- @learner.learn_skill(3) #学会等级3的技能1 id为3
- @learner.forget_skill(2)#把等级2的技能1 忘掉
- @learner.forget_skill(1)#把等级1的技能1 忘掉
- end
-
- case @s2
- when 1
- @learner.learn_skill(4)#学会等级1的技能2 id为4
- when 2
- @learner.learn_skill(5)#学会等级2的技能2 id为5
- @learner.forget_skill(4)#把等级1的技能2 忘掉
- when 3
- @learner.learn_skill(6) #学会等级3的技能2 id为6
- @learner.forget_skill(4)#把等级1的技能2 忘掉
- @learner.forget_skill(5)#把等级2的技能2 忘掉
- end
-
- case @s3
- when 1
- @learner.learn_skill(7)#学会等级1的技能3 id为7
- when 2
- @learner.learn_skill(8)#学会等级2的技能3 id为8
- @learner.forget_skill(7)#把等级1的技能3 忘掉
- when 3
- @learner.learn_skill(9) #学会等级3的技能3 id为9
- @learner.forget_skill(7)#把等级1的技能3 忘掉
- @learner.forget_skill(8)#把等级2的技能3 忘掉
- end
-
- end
- end
- def s_disable
- #如果技能点数为0 或者 该技能已经升满 又或者前提技能一级都没有升 就把按钮现实成灰色
- if @actor.skillp == 0 or @actor.skill1 == 3
- @command_window.disable_item(0)
- else
- @command_window.able_item(0)
- end
- if @actor.skillp == 0 or @actor.skill2 == 3 or @actor.skill1 == 0
- @command_window.disable_item(1)
- else
- @command_window.able_item(1)
- end
- if @actor.skillp == 0 or @actor.skill3 == 3 or @actor.skill2 == 0
- @command_window.disable_item(2)
- else
- @command_window.able_item(2)
- end
- end
- end
复制代码 |
|