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

Project1

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

[已经解决] 有关于处理物品选择的事件命令

[复制链接]

Lv2.观梦者

梦石
0
星屑
532
在线时间
238 小时
注册时间
2011-7-17
帖子
101
跳转到指定楼层
1
发表于 2014-10-30 23:13:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
有没有办法 使该命令只显示指定的几个物品来选择    或者是 有没有类似这种命令的开关或变量的选择   另外再问一下 可不可以 在菜单的贵重物品里隐藏显示几个指定的已拥有的贵重物品

Lv2.观梦者

梦石
0
星屑
352
在线时间
377 小时
注册时间
2013-1-30
帖子
219
2
发表于 2014-10-31 07:49:02 | 只看该作者
如果只是几个物品的话,推荐楼主还是用选项来选择送礼吧,另外附上拓展选项及开关控制的隐藏选项的脚本,使用方法为选项后接上 if(s[X]),X为开关的编号,这样只有该开关打开时才会出现这个选项
  1. =begin

  2. ▼ 選択肢拡張 ver 1.3

  3. RPGツクールVXAce用スクリプト

  4. 制作 : 木星ペンギン
  5. URL  : http://woodpenguin.blog.fc2.com/

  6. ------------------------------------------------------------------------------
  7. 概要

  8. □ 選択肢を連続して設定した場合、つなげて一つの選択肢にする機能の追加。
  9. □ 条件を設定することで、その項目を表示しない機能の追加。
  10. □ 選択肢内容が前回と同じだった場合、
  11.     カーソルの初期位置を前回選んだ項目にする機能の追加。

  12. ------------------------------------------------------------------------------
  13. 使い方

  14. □ 選択肢を繋げる方法
  15.   ・選択肢の表示を続けて配置すると、一つの選択肢にまとめられます。
  16.   ・まとめたくない場合は、間に注釈などを入れることで通常通り分けることができます。
  17.   ・「キャンセルの場合」の処理は、無効以外を設定したものが適用されます。
  18.   ・「キャンセルの場合」の処理が複数ある場合、
  19.    あとに設定された選択肢のものが適用されます。
  20.   
  21. □ 条件によって、項目を表示させない方法
  22.   ・選択肢の文章の最後に if(条件) と書くことで、
  23.    その条件が偽になると項目が表示されなくなります。
  24.   ・s でスイッチを参照できます。
  25.      (例 : if(s[3]) でスイッチ番号 3 が ON のとき項目が表示されます)
  26.   ・v で変数を参照できます。
  27.      (例 : if(v[5] >= 4) で変数番号 5 が 4 以上のとき項目が表示されます)
  28.   ・これらの条件は eval によって判定されてるので、and や or なども使用できます。
  29.   ・この機能により選択肢の項目数が 0 となった場合、
  30.    何も選択しなかったことになります。
  31.    「キャンセルの場合」の処理が適用されるわけではありません。
  32.   ・この機能により「キャンセルの場合」の項目が表示されない場合、
  33.    無効と同じ処理をします。

  34. =end
  35. module Wooden
  36. module ChoiceEX
  37. #//////////////////////////////////////////////////////////////////////////////
  38. #
  39. # 設定項目
  40. #
  41. #//////////////////////////////////////////////////////////////////////////////
  42.   #--------------------------------------------------------------------------
  43.   # ● 選択肢の最大行数
  44.   #     選択肢を表示するウィンドウの行数の最大数です。
  45.   #     選択肢がこの数より小さければ、通常通り行数は少なくなります。
  46.   #--------------------------------------------------------------------------
  47.   LineMax = 4
  48.   
  49.   #--------------------------------------------------------------------------
  50.   # ● 選択肢の位置記憶
  51.   #     前回表示した選択肢と全く同じ内容の選択肢を表示する場合、
  52.   #     カーソルの初期位置を前回選んだ項目にする機能です。
  53.   #     false で無効化できます。
  54.   #--------------------------------------------------------------------------
  55.   Store = true
  56.   
  57. end
  58. end

  59. #//////////////////////////////////////////////////////////////////////////////
  60. #
  61. # 以降、変更する必要なし
  62. #
  63. #//////////////////////////////////////////////////////////////////////////////

  64. #==============================================================================
  65. # ■ Game_Interpreter
  66. #==============================================================================
  67. class Game_Interpreter
  68.   #--------------------------------------------------------------------------
  69.   # ☆ 選択肢のセットアップ
  70.   #--------------------------------------------------------------------------
  71.   def setup_choices(params)
  72.     result = []
  73.     add_choices(params, @index, result)
  74.     unless $game_message.choices.empty?
  75.       result << $game_message.choice_cancel_type - 1
  76.       $game_message.choice_proc = Proc.new {|n| @branch[@indent] = result[n] }
  77.     else
  78.       @branch[@indent] = -1
  79.     end
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 選択肢の追加
  83.   #--------------------------------------------------------------------------
  84.   def add_choices(params, i, result, d = 0)
  85.     params[0].each_with_index do |s, n|
  86.       choice = s.dup
  87.       next if choice.slice!(/\s*if\((.+)\)$/i) && !choice_eval($1)
  88.       $game_message.choices << choice
  89.       result << n + d
  90.     end
  91.     if params[1] == 5 || (params[1] > 0 && result.include?(params[1] + d - 1))
  92.       $game_message.choice_cancel_type = params[1] + d
  93.     end
  94.     indent = @list[i].indent
  95.     i += 1 until @list[i].code == 404 && @list[i].indent == indent
  96.     i += 1
  97.     add_choices(@list[i].parameters, i, result, d + 5) if @list[i].code == 102
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 分岐終了の場合
  101.   #--------------------------------------------------------------------------
  102.   def choice_eval(formula)
  103.     s = $game_switches
  104.     v = $game_variables
  105.     begin
  106.       Kernel.eval(formula)
  107.     rescue
  108.       msgbox "以下の条件判定でエラーが出ました。\n\n", formula
  109.       true
  110.     end
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● 分岐終了の場合
  114.   #--------------------------------------------------------------------------
  115.   def command_404
  116.     if next_event_code == 102
  117.       @branch[@indent] -= 5
  118.       @index += 1
  119.       command_skip
  120.     end
  121.   end
  122. end

  123. #==============================================================================
  124. # ■ Window_ChoiceList
  125. #==============================================================================
  126. class Window_ChoiceList
  127.   #--------------------------------------------------------------------------
  128.   # ● 指定行数に適合するウィンドウの高さを計算
  129.   #--------------------------------------------------------------------------
  130.   def fitting_height(line_number)
  131.     super([line_number, Wooden::ChoiceEX::LineMax].min)
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ☆ 入力処理の開始
  135.   #--------------------------------------------------------------------------
  136.   def start
  137.     last_choices = @list.collect {|c| c[:name] }
  138.     update_placement
  139.     unless Wooden::ChoiceEX::Store && last_choices == $game_message.choices
  140.       refresh
  141.       select(0)
  142.     end
  143.     open
  144.     activate
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ☆ キャンセルハンドラの呼び出し
  148.   #--------------------------------------------------------------------------
  149.   def call_cancel_handler
  150.     $game_message.choice_proc.call(item_max)
  151.     close
  152.   end
  153. end
复制代码
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 2014-10-31 11:36:53 | 只看该作者
https://rpg.blue/forum.php?mod=redirect&goto=findpost&ptid=373105&pid=2562014
物品栏要隐藏道具的话就插入这段脚本
  1. class Window_ItemList < Window_Selectable
  2.   alias hide_include? include?
  3.   def include?(item)
  4.     hide_include?(item) && !item.note.include?("<key_hide>")
  5.   end
  6. end
复制代码
然后在需要隐藏的物品的备注栏备注<key_hide>
回复 支持 反对

使用道具 举报

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
4
发表于 2014-10-31 13:32:16 | 只看该作者
这种物品选择功能大扩张的脚本我有一个推荐。

该脚本来源于日站:CACAO SOFT
地址为:http://cacaosoft.web.fc2.com/
为本站授权推广素材站
该站有墙,且禁止二次发布,这次我搬运一次给你,之后如果有类似情况请到站点自取。

该脚本可以做到物品选择任何道具,
物品选择可以以任何形式过滤选择的道具。
我觉得这个脚本可以完美的达到你的要求。
脚本不要的部分已经帮你翻译了。

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
532
在线时间
238 小时
注册时间
2011-7-17
帖子
101
5
 楼主| 发表于 2014-10-31 20:40:03 | 只看该作者
三途亚梦 发表于 2014-10-31 13:32
这种物品选择功能大扩张的脚本我有一个推荐。

该脚本来源于日站:CACAO SOFT

Game_Interpreter的1411行:    eval(script)   出错

点评

能帮帮忙吧 我直接是复制上脚本里注释上的脚本命令行 到底哪里不对啊  发表于 2014-10-31 21:10
怎么回事? 我这样写的事件不对的吗? 脚本都看了好几遍了  发表于 2014-10-31 21:04
我事件是写的 脚本$game_message.item_choice_hide_number = true 脚本$game_message.item_choice_category =“keyword” 处理物品选择【变量?...   发表于 2014-10-31 20:55
你的事件脚本没写对,再好好看看注释是怎么说的  发表于 2014-10-31 20:41
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
532
在线时间
238 小时
注册时间
2011-7-17
帖子
101
6
 楼主| 发表于 2014-10-31 20:49:01 | 只看该作者
三途亚梦 发表于 2014-10-31 13:32
这种物品选择功能大扩张的脚本我有一个推荐。

该脚本来源于日站:CACAO SOFT

显示说   unexpected‘=’,expecting$end=“keyword”
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
532
在线时间
238 小时
注册时间
2011-7-17
帖子
101
7
 楼主| 发表于 2014-10-31 20:56:19 | 只看该作者
我事件是写的  脚本$game_message.item_choice_hide_number = true
                    脚本$game_message.item_choice_category =“keyword”
                   处理物品选择【变量?】
                    条件分歧 当变量=?时

点评

果然是自动换行害的··· 把自动下来的移上去就解决了····  发表于 2014-10-31 21:15
我实测没有碰到任何问题,你确定一下是不是事件脚本奇葩的自动换行导致的错误。  发表于 2014-10-31 21:01
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
532
在线时间
238 小时
注册时间
2011-7-17
帖子
101
8
 楼主| 发表于 2014-10-31 20:57:39 | 只看该作者
qq1014850720 发表于 2014-10-31 20:56
我事件是写的  脚本$game_message.item_choice_hide_number = true
                    脚本$game_message ...

我将设置里改成了 变量是物品ID    PLUS_ID = 1
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
532
在线时间
238 小时
注册时间
2011-7-17
帖子
101
9
 楼主| 发表于 2014-10-31 21:11:54 | 只看该作者
三途亚梦 发表于 2014-10-31 13:32
这种物品选择功能大扩张的脚本我有一个推荐。

该脚本来源于日站:CACAO SOFT

层主在吗? 为什么会报错  下面说事件脚本没写对 我脚本句明明是从注释里复制的啊

点评

解决了 多谢了 果然是自动换行弄的  发表于 2014-10-31 21:18
现在解决了是吗?  发表于 2014-10-31 21:17
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

10
发表于 2014-10-31 21:12:33 | 只看该作者
qq1014850720 发表于 2014-10-31 20:57
我将设置里改成了 变量是物品ID    PLUS_ID = 1

https://rpg.blue/thread-276636-1-1.html
试试这个,(链接没错,不用质疑
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 18:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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