Project1

标题: 如何实时判断变量上下限 [打印本页]

作者: 喵kano    时间: 2014-8-24 22:35
标题: 如何实时判断变量上下限
  | ω・´)这回的问题是如何给变量定一个上下限,并保证在对话的情况下不会打断对限制的判定。
  在并行处理的公共事件里给变量定了下限后(比如为0),如果在变量变化的同时触发事件对话,对变量下限的检测就会被打断(即有可能出现负值,对话结束后归0)。所以想问下有没有其他事件方法或脚本方法。
作者: 三途亚梦    时间: 2014-8-24 22:45
本帖最后由 三途亚梦 于 2014-8-24 22:56 编辑

难道不是加一个条件判断当变量XXX > 多少时候则 变量XXX=多少  就可以了么……
作者: 喵kano    时间: 2014-8-24 23:42
三途亚梦 发表于 2014-8-24 22:45
难道不是加一个条件判断当变量XXX > 多少时候则 变量XXX=多少  就可以了么…… ...

(`・ω・)于是请看图,首先这个变量ID为7,然后设置了下限为0。用了喵呜巨巨的地图变量脚本。(猜测:难道是喵呜巨巨的地图变量脚本的刷新问题?)

然后给它一个正常的初始值,比如65

然后瞬间让它减154,并显示一段对话,然后就会发现只要对话不消失,它的值就是负的。

点掉对话后,变量值因超过下限而归0。
作者: VIPArcher    时间: 2014-8-24 23:58
喵kano 发表于 2014-8-24 23:42
(`・ω・)于是请看图,首先这个变量ID为7,然后设置了下限为0。用了喵呜巨巨的地图变量脚本。(猜测:难 ...

那么@喵kano 君,我给你个坑爷爷的办法,你可敢一试
  1. module VIPArcher
  2.   SX = 100 #上限
  3.   XX = 0   #下限
  4. end

  5. class Game_Interpreter
  6.   alias vip20140824_ov operate_variable
  7.   #--------------------------------------------------------------------------
  8.   # ● 操作变量
  9.   #--------------------------------------------------------------------------
  10.   def operate_variable(variable_id, operation_type, value)
  11.     if variable_id == 1
  12.       begin
  13.       case operation_type
  14.       when 0  # 代入
  15.         if value >= VIPArcher::XX && value <= VIPArcher::SX
  16.           $game_variables[variable_id] = value
  17.         end
  18.       when 1  # 加法
  19.         if $game_variables[variable_id] + value <= VIPArcher::SX &&
  20.            $game_variables[variable_id] + value >= VIPArcher::XX
  21.           $game_variables[variable_id] += value
  22.         end
  23.       when 2  # 减法
  24.         if $game_variables[variable_id] - value >= VIPArcher::XX &&
  25.             $game_variables[variable_id] - value >= VIPArcher::XX
  26.           $game_variables[variable_id] -= value
  27.         end
  28.       when 3  # 乘法
  29.         if $game_variables[variable_id] * value <= VIPArcher::SX &&
  30.            $game_variables[variable_id] * value >= VIPArcher::XX
  31.           $game_variables[variable_id] *= value
  32.         end
  33.       when 4  # 除法
  34.         if $game_variables[variable_id] / value <= VIPArcher::SX &&
  35.            $game_variables[variable_id] / value >= VIPArcher::XX
  36.           $game_variables[variable_id] /= value
  37.         end
  38.       when 5  # 取余
  39.           $game_variables[variable_id] %= value
  40.       end
  41.     rescue
  42.       $game_variables[variable_id] = 0
  43.     end
  44.     else
  45.       vip20140824_ov(variable_id, operation_type, value)
  46.     end
  47.   end
  48. end
复制代码

作者: 喵呜喵5    时间: 2014-8-24 23:58
本帖最后由 喵呜喵5 于 2014-8-25 12:36 编辑

https://rpg.blue/home.php?mod=sp ... o=blog&id=13598




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