设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4913|回复: 6
打印 上一主题 下一主题

[RMVX发布] 新手教程——在菜单添加“队友对话”项目

[复制链接]

Lv1.梦旅人

战国美少年森兰丸

梦石
0
星屑
204
在线时间
852 小时
注册时间
2008-7-20
帖子
3705
跳转到指定楼层
1
发表于 2010-12-25 18:16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
新手教程——在主菜单添加“队友对话”项目
大家好~今天夕阳也要讲脚本了。夕阳学脚本时没有正式看过f1,所以只懂应用却不明白应用的道理,所以你问我什么也是徒劳了,我不懂怎么解释的。
好了不废话了,正文开始!
首先,我们打开scene-menu脚本,

夕阳建议第一次改脚本可以从title或menu改起,比较简单。
好了,看这里

我们在其中添加一项。。。。。。

然后看看效果

然后。。。

设置脚本的内容

然后设计公共事件

最后效果

这是范例: 队友对话.rar (597.48 KB, 下载次数: 591)

Lv3.寻梦者

梦石
0
星屑
4397
在线时间
1910 小时
注册时间
2010-12-21
帖子
2365
2
发表于 2010-12-25 18:32:32 | 只看该作者
本帖最后由 黄亦天 于 2010-12-25 18:43 编辑

公共事件不是可以直接运行么?
不设定成自动运行可以么?
(就是不使用开关)

点评

菜单里不能直接运行公共事件。  发表于 2010-12-25 21:56
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
33 小时
注册时间
2010-9-18
帖子
173
3
发表于 2010-12-25 18:36:40 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4397
在线时间
1910 小时
注册时间
2010-12-21
帖子
2365
4
发表于 2010-12-25 18:50:02 | 只看该作者
还想请教一下,如果使用了别的有修改菜单效果的脚本(某队伍脚本),是不是就要从那个脚本里改。

点评

是  发表于 2010-12-25 21:56
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
180
在线时间
829 小时
注册时间
2010-6-26
帖子
671
5
发表于 2010-12-26 09:37:02 | 只看该作者

点评

踢馆?(踢不到我7楼的那个自动式了~)  发表于 2011-1-4 22:53
啊,错了,胸襟广阔  发表于 2010-12-26 22:16
啊哈哈,大哥果然胸肌广阔~  发表于 2010-12-26 22:16
小妹当然不会介意~  发表于 2010-12-26 22:12
俺知道大哥很好人不会介意的,对不对  发表于 2010-12-26 15:39
新手们!不要被看扁了!我们也会用论坛搜索,我们也会自己找脚本,我们也会自己点击关闭按钮旁边的小问号!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4397
在线时间
1910 小时
注册时间
2010-12-21
帖子
2365
6
发表于 2011-1-4 17:05:34 | 只看该作者
本帖最后由 黄亦天 于 2011-1-4 17:52 编辑

报告(报错?):
公共事件的运行可以不使用开关。
脚本直接运行公共事件、公共事件运行条件设置为“无”就可以。
队友对话.rar (604.56 KB, 下载次数: 85)

点评

唔…… 大概是双方都会错意了吧……  发表于 2011-1-7 22:13
= =我觉得在沙发那里说的没啥问题啊,默认是不可以在菜单里运行公共事件的= =  发表于 2011-1-7 22:05
相对于工程可以叫优化,但是相对于教程就应该是报错了吧……  发表于 2011-1-5 22:04
可是之前你说……(见沙发)  发表于 2011-1-5 21:59
那叫优化,不叫报错  发表于 2011-1-5 21:57
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5454
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
7
发表于 2011-1-4 22:50:01 | 只看该作者
本帖最后由 一箭烂YiJL 于 2011-1-5 11:48 编辑

其实解释得不错了,只是没有详细说明调用其它东西是什么。
(就是$scene这全局变数,@Window_Command这种对象式的局部变量等等啦)
调用了公共事件就不用再开启开关(这个二选一,可是用公共事件可能会影响原本执行的公共事件哦~)
不过我提议一下,Scene_Leo的return_scene(函数)可以不用了。

这件东西好像不能用于多人的啊~我自己弄了一下(多人版哦~):
  1. #==============================================================================
  2. # ** Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  這個類用來執行顯示ESC選單畫面的程式。
  5. #==============================================================================

  6. class Scene_Menu < Scene_Base
  7.   #--------------------------------------------------------------------------
  8.   # * 物件初始化
  9.   #     menu_index : 命令游標的起始位置
  10.   #--------------------------------------------------------------------------
  11.   def initialize(menu_index = 0)
  12.     @menu_index = menu_index
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # * 程式開始
  16.   #--------------------------------------------------------------------------
  17.   def start
  18.     super
  19.     create_menu_background
  20.     create_command_window
  21.     @gold_window = Window_Gold.new(0, 360)
  22.     @status_window = Window_MenuStatus.new(160, 0)
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # * 程式中止
  26.   #--------------------------------------------------------------------------
  27.   def terminate
  28.     super
  29.     dispose_menu_background
  30.     @command_window.dispose
  31.     @gold_window.dispose
  32.     @status_window.dispose
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # * 更新幀
  36.   #--------------------------------------------------------------------------
  37.   def update
  38.     super
  39.     update_menu_background
  40.     @command_window.update
  41.     @gold_window.update
  42.     @status_window.update
  43.     if @command_window.active
  44.       update_command_selection
  45.     elsif @status_window.active
  46.       update_actor_selection
  47.     end
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # * 創建命令視窗
  51.   #--------------------------------------------------------------------------
  52.   def create_command_window
  53.     s1 = Vocab::item
  54.     s2 = Vocab::skill
  55.     s3 = Vocab::equip
  56.     s4 = Vocab::status
  57.     s5 = Vocab::save
  58.     s6 = Vocab::game_end
  59.     s7 = "队友对话"
  60.     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
  61.     @command_window.index = @menu_index
  62.     if $game_party.members.size == 0          # 如果無人在隊
  63.       @command_window.draw_item(0, false)     # 禁用[用品]
  64.       @command_window.draw_item(1, false)     # 禁用[技能]
  65.       @command_window.draw_item(2, false)     # 禁用[整備]
  66.       @command_window.draw_item(3, false)     # 禁用[狀態]
  67.     end
  68.     if $game_system.save_disabled             # 如果禁止存檔
  69.       @command_window.draw_item(4, false)     # 禁用[存檔]
  70.     end
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # * 更新指令選擇輸入資訊
  74.   #--------------------------------------------------------------------------
  75.   def update_command_selection
  76.     if Input.trigger?(Input::B)
  77.       Sound.play_cancel
  78.       $scene = Scene_Map.new
  79.     elsif Input.trigger?(Input::C)
  80.       if $game_party.members.size == 0 and @command_window.index < 4
  81.         Sound.play_buzzer
  82.         return
  83.       elsif $game_system.save_disabled and @command_window.index == 4
  84.         Sound.play_buzzer
  85.         return
  86.       end
  87.       Sound.play_decision
  88.       case @command_window.index
  89.       when 0       # 用品
  90.         $scene = Scene_Item.new
  91.       when 1,2,3,6 # 技能,整備,狀態,对话
  92.         start_actor_selection
  93.       when 4       # 存檔
  94.         $scene = Scene_File.new(true, false, false)
  95.       when 5       # 結束遊戲
  96.         $scene = Scene_End.new
  97.       end
  98.     end
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # * 開始接收主角選擇指令輸入資訊
  102.   #--------------------------------------------------------------------------
  103.   def start_actor_selection
  104.     @command_window.active = false
  105.     @status_window.active = true
  106.     if $game_party.last_actor_index < @status_window.item_max
  107.       @status_window.index = $game_party.last_actor_index
  108.     else
  109.       @status_window.index = 0
  110.     end
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # * 停止接收主角選擇指令輸入資訊
  114.   #--------------------------------------------------------------------------
  115.   def end_actor_selection
  116.     @command_window.active = true
  117.     @status_window.active = false
  118.     @status_window.index = -1
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # * 更新主角選擇指令輸入資訊
  122.   #--------------------------------------------------------------------------
  123.   def update_actor_selection
  124.     if Input.trigger?(Input::B)
  125.       Sound.play_cancel
  126.       end_actor_selection
  127.     elsif Input.trigger?(Input::C)
  128.       $game_party.last_actor_index = @status_window.index
  129.       Sound.play_decision
  130.       case @command_window.index
  131.       when 1  # 技能
  132.         $scene = Scene_Skill.new(@status_window.index)
  133.       when 2  # 整備
  134.         $scene = Scene_Equip.new(@status_window.index)
  135.       when 3  # 狀態
  136.         $scene = Scene_Status.new(@status_window.index)
  137.       when 6  # 对话
  138.         $scene = Scene_Map.new
  139.         @actor = $game_party.members[@status_window.index]
  140.         $game_switches[@actor.id] = true
  141.       end
  142.     end
  143.   end
  144. end
复制代码
重点在92行和138~142里。
和你的用法差不多(设置在公共事件):
1.并行处理
2.对应角色编号设置公共事件开关编号
3.在公共事件最后要有关闭上述的开关(重要)
4.不用对应事件编号,只需对应开关编号(重要)



我后来补充了以下内容:

让我来在解释一下:
@actor = $game_party.members[@status_window.index]
这一句的$game_party.members[x]就是人物基本讯息。
用@status_window.index就是选择窗口的选择位置。
这句$game_switches[@actor.id] = true
的@actor.id代表着主角ID。
其它的夕阳你应该能够解释得来。
还有,我可能会在这一帖再出一个加强的。(用新场景的)

点评

经过种种原因,加强不干了  发表于 2011-1-13 18:52
嗯  发表于 2011-1-5 10:44
支持6人以上队伍了是吗?好啊~~~  发表于 2011-1-5 10:26

评分

参与人数 1星屑 +1998 收起 理由
夕阳武士 + 1998 剑兰辛苦了~

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-14 14:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表