じ☆ve冰风 发表于 2024-4-19 16:13:55

《我们的事件》第一话 从标题开始旅程

注明:此系列教程提供给已经熟悉RM工具基本的框架并且可以使用简单的事件以及脚本进行制作游戏的同学学习。



Say:脚本与事件共行。奇思妙想者居上
         So.什么方便用什么



友情提示:坚持走事件征途的同学可以尝试一下开拓自己的制作思路.



                           ◆第一话◆
                     
                  


其实这个用主站图片标题脚本也能解决,只不过效果没有事件来得灵活罢了

开首语:其实事件用起来关键就只有那几个.只是你的思路有没有结合他们让其更强大罢了.

那么,第一话,从事件变量和条件分歧开始.这个在游戏里很多的地方会用到.



条件分歧是什么?
      将要做的事的前提条件(在这里指变量值)是否被满足从而进行判断做出变化

易懂的比喻:当我有一块钱的时候我才能买到A物品 当我有两块钱的时候我才能买到B物品.

简单的变量事件如下:
如建立一个"苹果"的变量.(默认的数值为0)

当这个变量达到你所需要的前提后将会触发.
数值通过自己的事件可以用多种方式进行变化.然后利用条件分歧进行判断。如

http://rpg.blue/upload_program/d/塑望_标题范例_117750851.jpg


这个就是每次对话后1号变量(苹果)+1 。当为10的时候即满足触发条件。

那么,制作事件标题便是实践变量和条件分歧的最好方式。

制作事件标题的方式有很多。可以根据自己的需要进行制作。在这里只讲一下最简单的(路人:懒人~懒人~)

咳咳,进一步简单化。这里讲的事件标题就是通过判断不同的变量来显示不同的图片(可以自己试着拓展一下思路。)然后通过不同的图片(变量)来判断是否进行游戏。读档。结束(作者介绍,图鉴以及其他的都能实现)

那么具体化的简单思路:

当玩家按下键盘的方向键(←,↓,→,↑)变化变量来显示图片。

如下。
设定变量1名称为“标题变量”
条件分歧:
当↑被按下的时候“标题变量”-1
默认为0(这里设置不显示任何图片),即按一下的时候变量=-1
显示图片“结束游戏”(也可以利用公共事件进行关联)

当↓被按下的时候“标题变量”+1
即按一下的时候变量=1
显示图片“结束游戏”(也可以利用公共事件进行关联)

P.s 尝试一下假如是←,→又怎么做呢?

询问:那么假如我一直按下去,那么变量一直在变化。可图片只有3张而已怎么办
       回答:这个时候加一思路进去:当“标题变量”=-1的时候“标题变量”=3,当“标题变量”=4的时候“标题变量”=1。这里就又有一个小小的循环了。

接下来是判断另一个按键。也就是确认键。

RM默认的为C键(空格或回车)。那么判断C键按下后“标题变量”停留在什么数值即算完毕。如:

当C键为按下的时候 “标题变量”=1.
那么场所移动到自己设置的开始地图(因为标题事件是建立在主角初始地图的).这个就是所谓的“新游戏”

当C键为按下的时候 “标题变量”=2.
也就是进行读档。因为需要知道是否有档读,这里就需要再加上一个脚本判断。
$continue_enabled = true的情况下
$scene = Scene_Load.new(读档画面)
.这个就是所谓的“继续”

当C键为按下的时候 “标题变量”=3.
设立游戏结束.这个就是所谓的“结束游戏”使用脚本也可以($scene = Scene_End.new)

------至此简单的沉默在这里介绍一个简单的标题的简单方式你是不是认为很简单呢 -_-.

以下为附带范例以及跳过默认标题的脚本.

跳过标题脚本 直接覆盖掉Scene_Title#==============================================================================# ■ Scene_Title#------------------------------------------------------------------------------#  处理标题画面的类。#==============================================================================class Scene_Title#--------------------------------------------------------------------------# ● 住处理#--------------------------------------------------------------------------def main    # 战斗测试的情况下    if $BTEST      battle_test      return    end    # 载入数据库    $data_actors      = load_data("Data/Actors.rxdata")    $data_classes       = load_data("Data/Classes.rxdata")    $data_skills      = load_data("Data/Skills.rxdata")    $data_items         = load_data("Data/Items.rxdata")    $data_weapons       = load_data("Data/Weapons.rxdata")    $data_armors      = load_data("Data/Armors.rxdata")    $data_enemies       = load_data("Data/Enemies.rxdata")    $data_troops      = load_data("Data/Troops.rxdata")    $data_states      = load_data("Data/States.rxdata")    $data_animations    = load_data("Data/Animations.rxdata")    $data_tilesets      = load_data("Data/Tilesets.rxdata")    $data_common_events = load_data("Data/CommonEvents.rxdata")    $data_system      = load_data("Data/System.rxdata")    # 生成系统对像    $game_system = Game_System.new    # 存档文件一个也不存在的时候也调查    # 有効为 @continue_enabled 为 true、無効为 false    for i in 0..3      if FileTest.exist?("Sav_Scr/Save#{i+1}.rxdata")      $continue_enabled = true      else      $continue_enabled = false      end   end    # 继续为有效的情况下、光标停止在继续上    # 无效的情况下、继续的文字显示为灰色    # 停止演奏 ME、BGS    Audio.me_stop    Audio.bgs_stop    # 执行过渡    Graphics.transition    # 主循环    loop do      # 刷新游戏画面      Graphics.update      # 刷新输入信息      Input.update      # 刷新画面      update      # 如果画面被切换就中断循环      if $scene != self      break      end    end    # 装备过渡    Graphics.freeze    # 释放命令窗口    end#--------------------------------------------------------------------------# ● 刷新画面#--------------------------------------------------------------------------def updatecommand_new_gamecommand_continueend#--------------------------------------------------------------------------# ● 命令 : 新游戏#--------------------------------------------------------------------------def command_new_game    # 停止 BGM    Audio.bgm_stop    # 重置测量游戏时间用的画面计数器    Graphics.frame_count = 0    # 生成各种游戏对像    $game_temp          = Game_Temp.new    $game_system      = Game_System.new    $game_switches      = Game_Switches.new    $game_variables   = Game_Variables.new    $game_self_switches = Game_SelfSwitches.new    $game_screen      = Game_Screen.new    $game_actors      = Game_Actors.new    $game_party         = Game_Party.new    $game_troop         = Game_Troop.new    $game_map         = Game_Map.new    $game_player      = Game_Player.new    # 设置初期同伴位置    $game_party.setup_starting_members    # 设置初期位置的地图    $game_map.setup($data_system.start_map_id)    # 主角向初期位置移动    $game_player.moveto($data_system.start_x, $data_system.start_y)    # 刷新主角    $game_player.refresh    # 执行地图设置的 BGM 与 BGS 的自动切换    $game_map.autoplay    # 刷新地图 (执行并行事件)    $game_map.update    # 切换地图画面    $scene = Scene_Map.newend    #--------------------------------------------------------------------------# ● 指令 : 继续游戏-__-#--------------------------------------------------------------------------def command_continue    # 继续无效的情况下    unless @continue_enabled      # 演奏无效 SE      #$game_system.se_play($data_system.buzzer_se)      return    end    # 演奏确定 SE    $game_system.se_play($data_system.decision_se)    # 切换到读档画面    $scene = Scene_Load.newend#--------------------------------------------------------------------------# ● 命令 : 退出#--------------------------------------------------------------------------def command_shutdown    # 演奏确定 SE    $game_system.se_play($data_system.decision_se)    # BGM、BGS、ME 的淡入淡出    Audio.bgm_fade(800)    Audio.bgs_fade(800)    Audio.me_fade(800)    # 退出    $scene = nilend#--------------------------------------------------------------------------# ● 战斗测试#--------------------------------------------------------------------------def battle_test    # 载入数据库 (战斗测试用)    $data_actors      = load_data("Data/BT_Actors.rxdata")    $data_classes       = load_data("Data/BT_Classes.rxdata")    $data_skills      = load_data("Data/BT_Skills.rxdata")    $data_items         = load_data("Data/BT_Items.rxdata")    $data_weapons       = load_data("Data/BT_Weapons.rxdata")    $data_armors      = load_data("Data/BT_Armors.rxdata")    $data_enemies       = load_data("Data/BT_Enemies.rxdata")    $data_troops      = load_data("Data/BT_Troops.rxdata")    $data_states      = load_data("Data/BT_States.rxdata")    $data_animations    = load_data("Data/BT_Animations.rxdata")    $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")    $data_common_events = load_data("Data/BT_CommonEvents.rxdata")    $data_system      = load_data("Data/BT_System.rxdata")    # 重置测量游戏时间用的画面计数器    Graphics.frame_count = 0    # 生成各种游戏对像    $game_temp          = Game_Temp.new    $game_system      = Game_System.new    $game_switches      = Game_Switches.new    $game_variables   = Game_Variables.new    $game_self_switches = Game_SelfSwitches.new    $game_screen      = Game_Screen.new    $game_actors      = Game_Actors.new    $game_party         = Game_Party.new    $game_troop         = Game_Troop.new    $game_map         = Game_Map.new    $game_player      = Game_Player.new    # 设置战斗测试用同伴    $game_party.setup_battle_test_members    # 设置队伍 ID、可以逃走标志、战斗背景    $game_temp.battle_troop_id = $data_system.test_troop_id    $game_temp.battle_can_escape = true    $game_map.battleback_name = $data_system.battleback_name    # 演奏战斗开始 BGM    $game_system.se_play($data_system.battle_start_se)    # 演奏战斗 BGM    $game_system.bgm_play($game_system.battle_bgm)    # 切换到战斗画面    $scene = Scene_Battle.newendend复制代码范例地址(大小:175K):http://rpg.blue/upload_program/d ... ��题_117751195.zip

另外链接一个完整版的VX事件标题
http://rpg.blue/upload_program/d/塑望_YUI_107388803.rar

如果有什么不明了或者我遗漏的可以留言.

学不会也没有关系,慢慢往下深入.以后回头看看你会发现一下就能理会了

下一话:双子游戏(也就是同时操作2个人的事件范例)

P.s 以上预告70%真实 =_=,也许是其他的范例.


第二话 伪-双子连心

            本帖来自P1论坛作者塑望,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=120437若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 《我们的事件》第一话 从标题开始旅程