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

Project1

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

[已经解决] VA怎么制作成就系统?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2012-2-25
帖子
12
跳转到指定楼层
1
发表于 2012-2-26 13:07:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
最近在研究制作一款VA游戏。结果在成就系统制作犯糊涂了。希望大家帮忙看看。
预期效果:
1.界面出现“成就”选项,点击可显示图片(关于介绍成就内容的)包括几个简单按钮,下一页、返回。
2.游戏ESC菜单里出现“成就”选项,点击出现“成就”界面。包括:成就内容、成就点数、是否获得。
- -希望大家帮忙制作下,脚本和事件的都可以。
十分感谢~

Lv1.梦旅人

梦石
0
星屑
50
在线时间
15 小时
注册时间
2011-12-2
帖子
26
2
发表于 2012-2-26 16:37:14 | 只看该作者
可以用任务系统的那个脚本改下,具体的么,我是新手,先把任务脚本链接送上= =
http://rpg.blue/forum.php?mod=vi ... D368%26typeid%3D368
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
271
在线时间
2088 小时
注册时间
2011-7-28
帖子
1145
3
发表于 2012-2-26 16:37:52 | 只看该作者
  1. #==============================================================================
  2. # ★ RGSS3_成就系统 Ver1.01
  3. #==============================================================================
  4. =begin

  5. 作者:tomoaky
  6. 素材来自:(http://hikimoki.sakura.ne.jp/)

  7. 你可以用事件中“脚本”命令获取成就
  8.   例如)gain_medal(0)   # 获得第零个成就
  9.   设置对应的编号再设置主要内容


  10. 2012.01.25  Ver1.01
  11.   修正改变场景时重置成就
  12.   
  13. 2012.01.16  Ver1.0
  14.   公開

  15. =end

  16. #==============================================================================
  17. # □ 設定項目
  18. #==============================================================================
  19. module TMMEDAL
  20.   COMMAND_MEDAL = "成就"     # 菜单命令名称
  21.   
  22.   # メダルが1枚もない状態でメダルコマンドを隠すかどうか(true で隠す)
  23.   HIDE_COMMAND = false
  24.   
  25.   # メダル獲得時の効果音
  26.   SE_GAIN_MEDAL = RPG::SE.new("Powerup", 90, 140)
  27.   
  28.   # メダル名とアイコンIDと説明文の設定
  29.   MEDAL_DATA = {}
  30.   MEDAL_DATA[0] = ["输入成就名称", 187, "内容详细"]
  31.   MEDAL_DATA[1] = ["", 187, ""]
  32. end

  33. #==============================================================================
  34. # ■ Game_Party
  35. #==============================================================================
  36. class Game_Party
  37.   #--------------------------------------------------------------------------
  38.   # ● 公開インスタンス変数
  39.   #--------------------------------------------------------------------------
  40.   attr_reader   :medals                   # 獲得済みメダル
  41.   attr_reader   :new_medals               # 新規獲得メダル
  42.   attr_accessor :medal_info_count         # メダル情報表示カウント
  43.   attr_accessor :medal_info_opacity       # メダル情報表示不透明度
  44.   #--------------------------------------------------------------------------
  45.   # ● オブジェクト初期化
  46.   #--------------------------------------------------------------------------
  47.   alias tmmedal_game_party_initialize initialize
  48.   def initialize
  49.     tmmedal_game_party_initialize
  50.     @medals = []
  51.     @new_medals = []
  52.     @medal_info_count = 0
  53.     @medal_info_opacity = 0
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ○ メダルの獲得
  57.   #--------------------------------------------------------------------------
  58.   def gain_medal(medal_id)
  59.     return if @medals.any? {|medal| medal[0] == medal_id }
  60.     t = Time.now.strftime(" (%Y/%m/%d %H:%M)")
  61.     @medals.push([medal_id, t])
  62.     @new_medals.push([medal_id, t])
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ○ 獲得メダル情報の消去
  66.   #--------------------------------------------------------------------------
  67.   def delete_new_medal
  68.     @new_medals.shift
  69.   end
  70. end

  71. #==============================================================================
  72. # ■ Game_Interpreter
  73. #==============================================================================
  74. class Game_Interpreter
  75.   #--------------------------------------------------------------------------
  76.   # ○ メダルの獲得
  77.   #--------------------------------------------------------------------------
  78.   def gain_medal(medal_id)
  79.     $game_party.gain_medal(medal_id)
  80.   end
  81. end

  82. #==============================================================================
  83. # ■ Window_MenuCommand
  84. #==============================================================================
  85. class Window_MenuCommand
  86.   #--------------------------------------------------------------------------
  87.   # ● 独自コマンドの追加用
  88.   #--------------------------------------------------------------------------
  89.   alias tmmedal_window_menucommand_add_original_commands add_original_commands
  90.   def add_original_commands
  91.     tmmedal_window_menucommand_add_original_commands
  92.     unless TMMEDAL::HIDE_COMMAND && !medal_enabled
  93.       add_command(TMMEDAL::COMMAND_MEDAL, :medal, medal_enabled)
  94.     end
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ○ メダルの有効状態を取得
  98.   #--------------------------------------------------------------------------
  99.   def medal_enabled
  100.     !$game_party.medals.empty?
  101.   end
  102. end

  103. #==============================================================================
  104. # □ Window_MedalInfo
  105. #==============================================================================
  106. class Window_MedalInfo < Window_Base
  107.   #--------------------------------------------------------------------------
  108.   # ● オブジェクト初期化
  109.   #--------------------------------------------------------------------------
  110.   def initialize
  111.     super(Graphics.width - window_width, 0, window_width, fitting_height(1))
  112.     self.opacity = 0
  113.     self.contents_opacity = $game_party.medal_info_opacity
  114.     refresh
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● ウィンドウ幅の取得
  118.   #--------------------------------------------------------------------------
  119.   def window_width
  120.     return 240
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● フレーム更新
  124.   #--------------------------------------------------------------------------
  125.   def update
  126.     super
  127.     if $game_party.medal_info_count > 0
  128.       self.contents_opacity += 16
  129.       $game_party.medal_info_count -= 1
  130.       $game_party.delete_new_medal if $game_party.medal_info_count == 0
  131.     else
  132.       self.contents_opacity -= 16
  133.       if self.contents_opacity == 0
  134.         open unless $game_party.new_medals.empty?
  135.       end
  136.     end
  137.     $game_party.medal_info_opacity = self.contents_opacity
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● ウィンドウを開く
  141.   #--------------------------------------------------------------------------
  142.   def open
  143.     refresh
  144.     TMMEDAL::SE_GAIN_MEDAL.play
  145.     $game_party.medal_info_count = 150
  146.     self.contents_opacity = 0
  147.     self
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ○ リフレッシュ
  151.   #--------------------------------------------------------------------------
  152.   def refresh
  153.     contents.clear
  154.     unless $game_party.new_medals.empty?
  155.       draw_background(contents.rect)
  156.       medal = TMMEDAL::MEDAL_DATA[$game_party.new_medals[0][0]]
  157.       rect = contents.rect.clone
  158.       draw_icon(medal[1], rect.x, rect.y)
  159.       rect.x += 24
  160.       rect.width -= 24
  161.       draw_text(rect, medal[0])
  162.     end
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   # ○ 背景の描画
  166.   #--------------------------------------------------------------------------
  167.   def draw_background(rect)
  168.     temp_rect = rect.clone
  169.     temp_rect.width /= 2
  170.     contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
  171.     temp_rect.x = temp_rect.width
  172.     contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ○ 背景色 1 の取得
  176.   #--------------------------------------------------------------------------
  177.   def back_color1
  178.     Color.new(0, 0, 0, 192)
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ○ 背景色 2 の取得
  182.   #--------------------------------------------------------------------------
  183.   def back_color2
  184.     Color.new(0, 0, 0, 0)
  185.   end
  186. end

  187. #==============================================================================
  188. # □ Window_Medal
  189. #==============================================================================
  190. class Window_Medal < Window_Selectable
  191.   #--------------------------------------------------------------------------
  192.   # ● オブジェクト初期化
  193.   #--------------------------------------------------------------------------
  194.   def initialize(x, y, width, height)
  195.     super
  196.     refresh
  197.     select(0)
  198.     activate
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 桁数の取得
  202.   #--------------------------------------------------------------------------
  203.   def col_max
  204.     return 1
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● 項目数の取得
  208.   #--------------------------------------------------------------------------
  209.   def item_max
  210.     @data ? @data.size : 1
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ● アイテムの取得
  214.   #--------------------------------------------------------------------------
  215.   def item
  216.     @data && index >= 0 ? @data[index] : nil
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● アイテムリストの作成
  220.   #--------------------------------------------------------------------------
  221.   def make_item_list
  222.     @data = $game_party.medals
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ● 項目の描画
  226.   #--------------------------------------------------------------------------
  227.   def draw_item(index)
  228.     item = @data[index]
  229.     medal = TMMEDAL::MEDAL_DATA[item[0]]
  230.     rect = item_rect(index)
  231.     draw_icon(medal[1], rect.x, rect.y)
  232.     rect.x += 24
  233.     rect.width -= 216
  234.     draw_text(rect, medal[0])
  235.     rect.x = contents.width - 192
  236.     rect.width = 192
  237.     draw_text(rect, item[1], 2)
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ● ヘルプテキスト更新
  241.   #--------------------------------------------------------------------------
  242.   def update_help
  243.     if item
  244.       medal = TMMEDAL::MEDAL_DATA[item[0]]
  245.       text = medal[2]
  246.       @help_window.set_text(text)
  247.     end
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● リフレッシュ
  251.   #--------------------------------------------------------------------------
  252.   def refresh
  253.     make_item_list
  254.     create_contents
  255.     draw_all_items
  256.   end
  257. end

  258. #==============================================================================
  259. # ■ Scene_Map
  260. #==============================================================================
  261. class Scene_Map
  262.   #--------------------------------------------------------------------------
  263.   # ● 全ウィンドウの作成
  264.   #--------------------------------------------------------------------------
  265.   alias tmmedal_scene_map_create_all_windows create_all_windows
  266.   def create_all_windows
  267.     tmmedal_scene_map_create_all_windows
  268.     create_medal_window
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ○ メダルウィンドウの作成
  272.   #--------------------------------------------------------------------------
  273.   def create_medal_window
  274.     @medal_window = Window_MedalInfo.new
  275.   end
  276. end

  277. #==============================================================================
  278. # ■ Scene_Menu
  279. #==============================================================================
  280. class Scene_Menu
  281.   #--------------------------------------------------------------------------
  282.   # ● コマンドウィンドウの作成
  283.   #--------------------------------------------------------------------------
  284.   alias tmmedal_scene_menu_create_command_window create_command_window
  285.   def create_command_window
  286.     tmmedal_scene_menu_create_command_window
  287.     @command_window.set_handler(:medal, method(:command_medal))
  288.   end
  289.   #--------------------------------------------------------------------------
  290.   # ○ コマンド[メダル]
  291.   #--------------------------------------------------------------------------
  292.   def command_medal
  293.     SceneManager.call(Scene_Medal)
  294.   end
  295. end

  296. #==============================================================================
  297. # □ Scene_Medal
  298. #==============================================================================
  299. class Scene_Medal < Scene_MenuBase
  300.   #--------------------------------------------------------------------------
  301.   # ● 開始処理
  302.   #--------------------------------------------------------------------------
  303.   def start
  304.     super
  305.     create_help_window
  306.     create_item_window
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   # ○ アイテムウィンドウの作成
  310.   #--------------------------------------------------------------------------
  311.   def create_item_window
  312.     wy = @help_window.height
  313.     wh = Graphics.height - wy
  314.     @item_window = Window_Medal.new(0, wy, Graphics.width, wh)
  315.     @item_window.viewport = @viewport
  316.     @item_window.help_window = @help_window
  317.     @item_window.set_handler(:cancel, method(:return_scene))
  318.   end
  319. end
复制代码
成就脚本……有记录的时间和详细内容

点评

正要找呢~谢了~  发表于 2012-3-3 13:54

评分

参与人数 1星屑 +200 梦石 +2 收起 理由
zhixin1997 + 200 + 2 认可答案

查看全部评分

[color=Red][b]我没有签名[/b][/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2012-2-25
帖子
12
4
 楼主| 发表于 2012-2-27 22:05:39 | 只看该作者
不会脚本 发表于 2012-2-26 16:37
成就脚本……有记录的时间和详细内容

能说明详细点吗...? 脚本是没有冲突,不过怎么设置呢?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-2-18
帖子
13
5
发表于 2012-2-28 15:41:27 | 只看该作者
可以用公共事件吧
每做一个任务或者达成一个成就获得一个证明,使用证明就对应一个公共事件
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
271
在线时间
2088 小时
注册时间
2011-7-28
帖子
1145
6
发表于 2012-2-28 19:28:54 | 只看该作者
Top丶Brave 发表于 2012-2-27 22:05
能说明详细点吗...? 脚本是没有冲突,不过怎么设置呢?

在36行输入成就名称……你懂吧……后面就是详细的简介,在事件的脚本中插入gain_medal(0)就是得到第0个成就,在括号里填入不同的数字来得到不同成就扩展就是在38行插入MEDAL_DATA[2] = ["", 187, ""],数字是要按顺序

[color=Red][b]我没有签名[/b][/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2012-2-25
帖子
12
7
 楼主| 发表于 2012-3-2 19:25:29 | 只看该作者
很好。谢谢~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2012-5-29
帖子
6
8
发表于 2012-5-29 18:15:47 | 只看该作者
不会脚本 发表于 2012-2-28 19:28
在36行输入成就名称……你懂吧……后面就是详细的简介,在事件的脚本中插入gain_medal(0)就是得到第0个成 ...

在事件的脚本中插入gain_medal(0)就是得到第0个成 ...有点不明白
我将成就及名称都修改了。然后进入游戏发现成就是灰的(点不了)
想问问触发成就怎么做...

点评

嗯...懂了- - 昨天发完帖突然会了。 十分感谢~  发表于 2012-5-30 17:37
第九行有写  发表于 2012-5-29 18:43
= =获得了一个成就后才能开启……  发表于 2012-5-29 18:43
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
154
在线时间
664 小时
注册时间
2011-9-25
帖子
241
9
发表于 2012-5-30 09:24:53 | 只看该作者
不会脚本 发表于 2012-2-26 16:37
成就脚本……有记录的时间和详细内容

只能在菜单里显示吗?能否通过脚本呼出成就界面?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2012-5-27
帖子
5
10
发表于 2012-5-30 14:16:37 | 只看该作者
本帖最后由 darkdeath7121 于 2012-5-30 14:21 编辑



我用了腳本,可是他出現了這個,

「第123行:發生 TypeError。
  no implicit conversion from nil to integer」

這是不是因為我的選單是橫式的?
(我用直式的選單測試是可以用的)



請問要怎麼設定呢?


回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-21 11:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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