Project1

标题: 新手求教:如何新建一个框架 请大神门指点 [打印本页]

作者: jiushiainilip19    时间: 2015-6-28 06:57
标题: 新手求教:如何新建一个框架 请大神门指点
本帖最后由 jiushiainilip19 于 2015-6-28 07:10 编辑

在RMXP的新建工程中 只有 物品 状态 装备 等几个很少的功能,我想添加一个功能就是:

游戏的介绍 比如:物品
                 特技
                 装备
                 状态
                 存档
                 结束游戏
就是在后面在加个 游戏介绍  === 进去里面是一个干净的界面 大小是最大 我可以在脚本里面通过输写的方式进行描述一些游戏的内容等等 不需要其他的功能



还请大神能够教教我 最好是能做到按键翻页的功能


还想请问一个问题 就是地图显示名字的问题 比如  人物行走图 头上在事件中 我写了某某某名字  然后我击败他以后 人物没了 但是某某某名字还残留在地图上的问题


作者: 上贺茂润    时间: 2015-6-28 08:28
饭一口一口吃 路一步一步走
作者: jiushiainilip19    时间: 2015-6-28 12:31
。。。努力中
作者: 无忧谷主幻    时间: 2015-6-28 12:36
如果你肯用公共事件的话,我想我可以帮你
作者: jiushiainilip19    时间: 2015-6-28 13:07
无忧谷主幻 发表于 2015-6-28 12:36
如果你肯用公共事件的话,我想我可以帮你

公共事件我会用,就是怕用多了公共事件导致游戏卡 脚本上写我已经做到了,现在在想怎么做出翻页的效果
不过还是要感谢你愿意帮我 嘿嘿!
作者: 无忧谷主幻    时间: 2015-6-28 13:26
jiushiainilip19 发表于 2015-6-28 13:07
公共事件我会用,就是怕用多了公共事件导致游戏卡 脚本上写我已经做到了,现在在想怎么做出翻页的效果
不过 ...

简单来说就是给菜单加一个选项,该选项关联一个公共事件
作者: jiushiainilip19    时间: 2015-6-28 13:29
无忧谷主幻 发表于 2015-6-28 13:26
简单来说就是给菜单加一个选项,该选项关联一个公共事件

好的,多谢指点~~
作者: 星辰浩劫    时间: 2015-6-28 13:30
在Scene_Menu里面找到@window_command = Command_window.new(XXX)那一行,上面有几个s1 = XXX,s2=XXX…的东西,你在s6后面接着添加一个s7 = "游戏介绍"在@window_command后面的括号里的s6的后面加上, s7,然后再找到case @command_window.index后面,end的前面添加一个分歧,when X(具体是多少忘记了,如果最后一个是when 5,X就是6,要是when 6,X就是7)另起一行写$scene = Scene_游戏介绍.new,然后建立一个场景:Scene_游戏介绍,然后新建个窗口,用来写文章,然后在窗口上绘制好文字,然后在游戏介绍场景里调用该窗口,至于翻页功能,再场景的update里判断一下就行了。
作者: 无忧谷主幻    时间: 2015-6-28 13:35
算了,还是给你好了,是否用得上自己看着办
Project2.zip (200.84 KB, 下载次数: 50)


作者: jiushiainilip19    时间: 2015-6-28 13:40
星辰浩劫 发表于 2015-6-28 13:30
在Scene_Menu里面找到@window_command = Command_window.new(XXX)那一行,上面有几个s1 = XXX,s2=XXX…的 ...

非常感谢你的指教!!!
作者: jiushiainilip19    时间: 2015-6-28 13:40
无忧谷主幻 发表于 2015-6-28 13:35
算了,还是给你好了,是否用得上自己看着办

谢谢你给的范例!!
作者: RyanBern    时间: 2015-6-28 13:45
本帖最后由 RyanBern 于 2015-6-28 13:46 编辑

RUBY 代码复制
  1. module RB
  2. end
  3. module RB::Description
  4.   # 游戏说明背景图片
  5.   Background_Img = "Help"
  6.   # 翻页过渡图形,如果设置为空则是普通的淡入淡出
  7.   Transition = "Graphics/Transitions/015-Diamond01"
  8.   # 文字设置区域,左边的数字代表页码(不能设置为0或者负数),右侧的是文字
  9.   # 每行文字用引号分割
  10.   Texts = {
  11.     1 => ["说明文字Line1",
  12.           "说明文字Line2"
  13.           ],
  14.     2 => ["第二页说明文字Line1",
  15.           "第二页说明文字Line2"
  16.           ],
  17.     3 => ["RyanBern",
  18.           "脚本编写"
  19.           ]
  20.   }
  21. end
  22.  
  23. class Window_Description < Window_Base
  24.   def initialize
  25.     super(0, 0, 640, 480)
  26.     self.contents = Bitmap.new(width - 32, height - 32)
  27.     self.visible = true
  28.     self.opacity = 0
  29.     @page = 0
  30.     refresh
  31.   end
  32.   def refresh
  33.     self.contents.clear
  34.     texts = RB::Description::Texts[@page]
  35.     return if texts.nil?
  36.     texts.each_with_index do |text, i|
  37.       self.contents.draw_text(4, i * 32, width - 32, 32, text)
  38.     end
  39.   end
  40.   def page=(page)
  41.     if @page != page
  42.       @page = page
  43.       refresh
  44.     end
  45.   end
  46. end
  47.  
  48. class Scene_Help
  49.   def main
  50.     @page = 1
  51.     @sprite = Sprite.new
  52.     @sprite.bitmap = RPG::Cache.picture(RB::Description::Background_Img)
  53.     @description_window = Window_Description.new
  54.     @description_window.page = @page
  55.     Graphics.transition
  56.     loop do
  57.       Graphics.update
  58.       Input.update
  59.       update
  60.       if $scene != self
  61.         break
  62.       end
  63.     end
  64.     Graphics.freeze
  65.     @sprite.bitmap.dispose
  66.     @sprite.dispose
  67.     @description_window.dispose
  68.   end
  69.   def update
  70.     if Input.trigger?(Input::B)
  71.       $game_system.se_play($data_system.cancel_se)
  72.       $scene = Scene_Menu.new
  73.       return
  74.     end
  75.     if Input.trigger?(Input::LEFT)
  76.       if @page > 1
  77.         $game_system.se_play($data_system.cursor_se)
  78.         @page -= 1
  79.         Graphics.freeze
  80.         @description_window.page = @page
  81.         Graphics.transition(20, RB::Description::Transition)
  82.       else
  83.         $game_system.se_play($data_system.buzzer_se)
  84.       end
  85.       return
  86.     end
  87.     if Input.trigger?(Input::RIGHT)
  88.       if @page < RB::Description::Texts.keys.max
  89.         $game_system.se_play($data_system.cursor_se)
  90.         @page += 1
  91.         Graphics.freeze
  92.         @description_window.page = @page
  93.         Graphics.transition(20, RB::Description::Transition)
  94.       else
  95.         $game_system.se_play($data_system.buzzer_se)
  96.       end
  97.       return
  98.     end  
  99.   end
  100. end

插入到main前,不过没有整合到菜单里面。
使用的时候输入事件脚本
RUBY 代码复制
  1. $scene = Scene_Help.new

附效果图:

作者: jiushiainilip19    时间: 2015-6-28 14:18
RyanBern 发表于 2015-6-28 13:45
module RB
end
module RB::Description

3Q3Q3Q!太强大了
作者: jiushiainilip19    时间: 2015-6-28 14:38
本帖最后由 jiushiainilip19 于 2015-6-28 14:51 编辑

我试着自己去按照Meun上的方法去些 但是出现了一种情况  就是在选项的上面 光标在上面 但没有按确定键 居然会自动执行确定键 其他的都还正常  一般这种自动会案件的情况是些什么问题

  1. #==============================================================================
  2. # ■ Scene_MenuSort
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================

  6. class Scene_MenuSort
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9. #     menu_index : 命令光标的初期位置
  10. #--------------------------------------------------------------------------
  11.   def initialize(menu_index = 0)
  12.     @menu_index = menu_index
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 主处理
  16.   #--------------------------------------------------------------------------
  17.   def main
  18.     # 生成命令窗口
  19.     s1 = "内功篇"#$data_system.words.item
  20.     s2 = "身法篇"#$data_system.words.skill
  21.     s3 = "特技篇"#$data_system.words.equip
  22.     s4 = "状态篇"
  23.     s5 = "阵法篇"
  24.    # s6 = "预留"
  25.     @command_window = Window_Command.new(160, [s1, s2, s3, s4,s5 ,])
  26.     @command_window.index = @menu_index
  27.       # 执行过渡
  28.     Graphics.transition
  29.     # 主循环
  30.     loop do
  31.       # 刷新游戏画面
  32.       Graphics.update
  33.       # 刷新输入信息
  34.       Input.update
  35.       # 刷新画面
  36.     update
  37.       # 如果切换画面就中断循环
  38.       if $scene != self
  39.         break
  40.       end
  41.     end
  42.     # 准备过渡
  43.     Graphics.freeze
  44.     # 释放窗口
  45.     @command_window.dispose
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 刷新画面
  49.   #--------------------------------------------------------------------------
  50.   def update
  51.     # 刷新窗口
  52.     @command_window.update
  53.     # 命令窗口被激活的情况下: 调用 update_command
  54.     if @command_window.active
  55.       update_command
  56.      # return
  57.     end
  58.    end
  59.     #--------------------------------------------------------------------------
  60.   # ● 刷新画面 (命令窗口被激活的情况下)
  61.   #--------------------------------------------------------------------------
  62.   def update_command
  63.     # 按下 B 键的情况下
  64.     if Input.trigger?(Input::B)
  65.       # 演奏取消 SE
  66.       $game_system.se_play($data_system.cancel_se)
  67.       # 切换的地图画面
  68.       $scene = Scene_Map.new
  69.       return
  70.     end
  71.     # 按下 C 键的情况下
  72.     if Input.trigger?(Input::C)
  73.         # 演奏冻结 SE
  74.             $game_system.se_play($data_system.buzzer_se)
  75.        end
  76.       # 命令窗口的光标位置分支
  77.       case @command_window.index
  78.       when 0  # 内功篇
  79.         # 演奏确定 SE
  80.         $game_system.se_play($data_system.decision_se)
  81.         # 切换到物品画面
  82.         $scene = Scene_ItemSort.new
  83.        return
  84.     end
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 刷新画面 (状态窗口被激活的情况下)
  88.   #--------------------------------------------------------------------------
  89.   def update_status
  90.     # 按下 B 键的情况下
  91.    
  92.     # 按下 C 键的情况下
  93.    
  94.   end
  95. end
复制代码

作者: jiushiainilip19    时间: 2015-6-28 15:43
问题意境解决,本人再次非常感谢各位大神的指导!谢谢




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1