Project1

标题: [VA]关于事件为主限制玩家战斗使用道具的方法(不完美) [打印本页]

作者: 御曹司    时间: 2015-9-17 09:52
标题: [VA]关于事件为主限制玩家战斗使用道具的方法(不完美)
本帖最后由 御曹司 于 2015-9-17 10:34 编辑


相信很多玩家玩RPG都会玩命刷钱买药、然后BOSS就用拼命嗑药堆打过。
那样虽然实用不过我觉得那样趣味性太差、对玩家的耐心是折磨。
所以一直想着解决方法。后来在一款游戏中发现了不错的解决方法。、


具体来说就是一场战斗中每个角色只能“使用一次道具”。

首先、如下图1、用脚本把战斗的“道具”去掉。创建一个新技能类型“道具”


之后再如下设置
如下图2345


具体来说就是设置防具类型添加技能、设置技能产生效果并指引公共事件、
再用公共事件去掉该装备(道具)





不过这个不完美的方法是:
如果两个或者以上的角色装备了同样的“道具”、战斗中使用道具实际上道具将会按固定的顺序去掉、
而不是去掉使用者的道具...

我无法想出用事件解决的方法、请问大家有什么好方法吗
谢谢。。。

QQ截图20150917092634.png (545.09 KB, 下载次数: 20)

QQ截图20150917092634.png

QQ截图20150917092718.png (87.6 KB, 下载次数: 22)

QQ截图20150917092718.png

QQ截图20150917092740.png (103.98 KB, 下载次数: 18)

QQ截图20150917092740.png

QQ截图20150917092812.png (96.82 KB, 下载次数: 21)

QQ截图20150917092812.png

QQ截图20150917092825.png (114.49 KB, 下载次数: 19)

QQ截图20150917092825.png

作者: dongdongdjh    时间: 2015-9-17 19:21
RUBY 代码复制
  1. module BattleManager
  2.   def self.battle_start
  3.     $game_system.battle_count += 1
  4.     $game_party.on_battle_start
  5.     $game_troop.on_battle_start
  6.     $game_troop.enemy_names.each do |name|
  7.       $game_message.add(sprintf(Vocab::Emerge, name))
  8.     end
  9.     if @preemptive
  10.       $game_message.add(sprintf(Vocab::Preemptive, $game_party.name))
  11.     elsif @surprise
  12.       $game_message.add(sprintf(Vocab::Surprise, $game_party.name))
  13.     end
  14.     for i in 1..4                 #这里可以
  15.       $game_variables[i] = 1      #用迭代
  16.     end                           #不太熟所以用for写了
  17.     wait_for_message
  18.   end
  19. end  
  20. class Scene_Battle < Scene_Base
  21.   alias on_item_ok_20150917 on_item_ok
  22.   def on_item_ok
  23.     on_item_ok_20150917
  24.     $game_variables[BattleManager.actor.index+1] -= 1 #index是0,所以从1号变量开始,可以改
  25.   end
  26.   alias on_item_cancel_20150917 on_item_cancel
  27.   def on_item_cancel
  28.     on_item_cancel_20150917
  29.     $game_variables[BattleManager.actor.index+1] += 1
  30.   end
  31. end
  32. class Window_ActorCommand < Window_Command
  33.   def add_item_command
  34.     @itsw = $game_variables[BattleManager.actor.index+1] == 0 ? false : true
  35.     add_command(Vocab::item, :item,@itsw)
  36.   end
  37. end


写了一个,你可以试试,是不是你要的效果。
应该是可以不占用变量的,我本想用数组的,但是没写成功。
作者: 御曹司    时间: 2015-9-17 22:34
dongdongdjh 发表于 2015-9-17 19:21
module BattleManager
  def self.battle_start
    $game_system.battle_count += 1

我一直在想事件解决方法、
非常感谢大大百忙之中给我写的脚本,,,,
这个是用来记录角色ID就能避免上面粉字解决的 方法了吗
那个...
可以详细说说这个的用法和用途吗(|||゚д゚)
我RUBY语言会的很少,,,

作者: dongdongdjh    时间: 2015-9-18 08:28
御曹司 发表于 2015-9-17 22:34
我一直在想事件解决方法、
非常感谢大大百忙之中给我写的脚本,,,,
这个是用来记录角色ID就能避免上面 ...

插main前就可以用,没什么设置的。我也没学过ruby,全靠看汉化版的F1.
作者: 御曹司    时间: 2015-9-18 12:52
dongdongdjh 发表于 2015-9-18 08:28
插main前就可以用,没什么设置的。我也没学过ruby,全靠看汉化版的F1.

其实我还想知道(´゚Д゚`)
这个脚本的具体用途、以及其作用机理。。。
作者: dongdongdjh    时间: 2015-9-18 13:39
本帖最后由 dongdongdjh 于 2015-9-18 13:40 编辑
御曹司 发表于 2015-9-18 12:52
其实我还想知道(´゚Д゚`)
这个脚本的具体用途、以及其作用机理。。。


赋予每个战斗中的角色一个变量 初始值为1
点击物品选项 该值减1 如果取消则该值加1
不取消则1-1=0,
也就是说该角色使用一次物品后对应的变量变为0,则该角色的物品选项状态变为不激活,也就是不能点击状态。
每次战斗开始,重置变量为1。
不可能没效果啊。


作者: guaneva    时间: 2015-9-22 18:49
哎哟!好长好复杂,技术含量太高,我先看看再说。




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