Project1

标题: 教你写脚本[1] [打印本页]

作者: 304475881    时间: 2008-10-21 05:10
标题: 教你写脚本[1]
咳咳…………现在开课…………
[LINE]1,#dddddd[/LINE]
主要目的:写一个画面脚本。
难度系数:高。
[LINE]1,#dddddd[/LINE]
写一个画面脚本主要是可以调用,那好,我们先打一个框架。
#==============================================================================
# ■ Scene_Xsdygjb
#------------------------------------------------------------------------------
#  这是新手做的第一个画面脚本。
#==============================================================================

class Scene_Xsdygjb
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 如果画面切换的话就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
  end
end

[LINE]1,#dddddd[/LINE]
但光是那样也看不出什么,那我们就加个窗口把。
#==============================================================================
# ■ Scene_Xsdygjb
#------------------------------------------------------------------------------
#  这是新手做的第一个画面脚本。
#==============================================================================

class Scene_Xsdygjb
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    # 生成信息窗口
    @message_window = Window_Message.new
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 如果画面切换的话就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放信息窗口
    @message_window.dispose
  end
end

[LINE]1,#dddddd[/LINE]
这样子也看不什么,别着急,我们接着写。
#==============================================================================
# ■ Scene_Xsdygjb
#------------------------------------------------------------------------------
#  这是新手做的第一个画面脚本。
#==============================================================================

class Scene_Xsdygjb
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     dyck       : 是从那个脚本调用过来的
  #--------------------------------------------------------------------------
  def initialize(dyck = Scene_Map.new)
    # 变成可用话
    @dyck = dyck
  end
  #--------------------------------------------------------------------------
  # ● 主处理
  #--------------------------------------------------------------------------
  def main
    # 生成信息窗口
    @message_window = Window_Message.new
    # 生成命令窗口
    s1 = "看介绍"
    s2 = "不看了"
    @command_window = Window_Command.new(3 * 32, [s1, s2])
    @command_window.back_opacity = 160
    @command_window.x = 320 - @command_window.width / 2
    @command_window.y = 288
    # 需要显示的介绍
    @xysdjs = "这是新手做的第一的画面脚本!"
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果画面切换的话就中断循环
      if $scene != self
        break
      end
    end
    # 准备过渡
    Graphics.freeze
    # 释放信息窗口
    @message_window.dispose
    # 释放命令窗口
    @command_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 刷新信息窗口
    @message_window.update
    # 显示信息窗口中的情况下
    if $game_temp.message_window_showing
      # 取消继续
      return
    end
    # 刷新命令窗口
    @command_window.update
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 命令窗口的光标位置的分支
      case @command_window.index
      when 0  # 看介绍
        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 显示介绍
        $game_temp.message_text = "#{@xysdjs}"
      when 1  # 不看了
        # 演奏取消 SE
        $game_system.se_play($data_system.cancel_se)
        # 切换的地图画面
        $scene = @dyck
      end
      # 取消继续
      return
    end
  end
end

[LINE]1,#dddddd[/LINE]
哎呀,终于写完了,这下你可以分享你的成果了,在事件中使用脚本$scene = Scene_Xsdygjb.new,自己看看把。
[LINE]1,#dddddd[/LINE]
我是初次写教学帖子的请多多指教,谢谢了,拜拜…………
[LINE]1,#dddddd[/LINE]
作者: Denis    时间: 2008-10-21 05:18
两个字:不懂
四个字:一头雾水
建议:从最简单的开始,脚本初学者就是不知从哪入门,就像偶!
     语句、判断式一堆,没有收到效果,关键是认清每个语句、判断式的意思和具体用法实例,楼主如能有此耐心,实乃我辈福音!
作者: 四水上木    时间: 2008-10-31 01:14
糨糊!!!!!!!!!!!!!!!{/kuk}
作者: 地龙    时间: 2008-10-31 02:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: 如释重负、    时间: 2008-10-31 03:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: sizz123    时间: 2008-10-31 03:19
以下引用Denis于2008-10-20 21:18:55的发言:

两个字:不懂
四个字:一头雾水
[本贴由作者于 2008-10-20 21:26:50 最后编辑]


先引用一下

对于这种教学帖,首先要有一个定位
1,让别人掌握知识
2,开拓学者的思路

   首先,你没有做热身运动,比如"@message_window = Window_Message.new"是什么意思?为什么放在这里?前面那个@是干什么用的?这些你都没有告诉别人.
   然后,你的脚本是干什么的?也没有一个说明

对于新手来说:没有一个详细注释的脚本,他们是看不懂的.
对于我来说:一个复制scece_menu的脚本,到底有什么意义呢?






作者: 游戏的新手1    时间: 2008-10-31 03:24

以下引用Denis于2008-10-20 21:18:55的发言:

两个字:不懂
四个字:一头雾水
[本贴由作者于 2008-10-20 21:26:50 最后编辑]
以下引用sizz123于2008-10-30 19:19:40的发言:
先引用一下

对于这种教学帖,首先要有一个定位
1,让别人掌握知识
2,开拓学者的思路

  首先,你没有做热身运动,比如"@message_window = Window_Message.new"是什么意思?为什么放在这里?前面那个@是干什么用的?这些你都没有告诉别人.
  然后,你的脚本是干什么的?也没有一个说明

对于新手来说:没有一个详细注释的脚本,他们是看不懂的.
对于我来说:一个复制scece_menu的脚本,到底有什么意义呢?

不厚道的引用
话说,我也是“新手”
但,对于那些新手来说
LS说的话有道理。
那些新手针对
"@message_window = Window_Message.new"
可能会提出:
“为什么要在前面加‘@’?”
“请问这句话有什么意义呢?”
“..."
"..."
作者: 长安12    时间: 2009-7-28 19:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: ★_茄孓    时间: 2009-7-28 19:26
改标题,教人创建窗口吧:(以及窗口的处理
作者: 越前リョーマ    时间: 2009-7-28 19:28
总觉得等于什么也没讲……
作者: DemonPanda    时间: 2009-7-28 19:37
呃,建议楼主哦,可以把添加了脚本时候的情况和没有添加时候的情况做下对比,比如:
既然生成了 @message_window = Window_Message.new 实例,窗口会一直停留在游戏界面上,那么怎么办呢?加一个@message_window.dispose试试吧……这样解释出来可能会更容易让人明白哦




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