Project1

标题: 求独立变量的脚本 [打印本页]

作者: 渝川    时间: 2013-11-20 19:51
标题: 求独立变量的脚本
本川正在研究纯事件的arpg,已经初有成效了,现在最大的问题就是代表怪物血量的变量了,如果很多怪物都用同一个变量代表血的话,就会这个怪物剩下一滴血,我去打另一个满血怪物的话,那只满血怪物就会死,而若果多个变量操作起来有很烦,这时看到有一个玩意叫独立变量,大概是每个事件中的同一个变量都是独立的,不会互相影响,所以就来求va的独立变量脚本了!谢谢大家,拜托了!
作者: 喵呜喵5    时间: 2013-11-20 21:00
本帖最后由 喵呜喵5 于 2013-11-21 18:26 编辑

  1. =begin
  2. ===============================================================================
  3.   独立变量 By喵呜喵5
  4. ===============================================================================
  5. 【说明】
  6.   
  7.   给每个事件添加一个独立变量功能
  8.   可以实现类似ARPG中每个怪物事件都有单独的变量储存HP这样的效果
  9.   参考独立开关的脚本以下代码其实挺好写的,
  10.   唯一困难的是我不知道如何让你看懂这个脚本怎么用……
  11.   
  12.   针对完全不懂脚本的人,请看以下说明:
  13.   首先使用事件脚本
  14.     m5_give_value(变量的ID)
  15.   可以让指定ID的变量值变成当前事件的独立变量,

  16.   接着你可以用正常的方式修改该ID变量的数值或者在条件分歧中判断变量的数值

  17.   全部完成以后,使用事件脚本
  18.     m5_send_value(变量的ID)
  19.   将该ID变量的数值保存进这个事件的独立变量,以便下次再读取

  20.   针对稍微懂一点脚本的人,请看以下说明:
  21.   
  22.   使用事件脚本
  23.     m5_give_value(变量的ID,"变量名称(包括双引号)",事件ID,地图ID)
  24.   可以把指定地图指定ID的事件对应名称的独立变量的值赋值给对应ID的变量
  25.   变量ID之后的几个参数可以省略不写,默认为当前地图下本事件名为“self”的独立变量
  26.   
  27.   使用事件脚本
  28.     m5_send_value(变量的ID,"变量名称(包括双引号)",事件ID,地图ID)
  29.   可以把对应ID的变量的值赋值给指定地图指定ID的事件对应名称的独立变量
  30.   变量ID之后的几个参数可以省略不写,默认为当前地图下本事件名为“self”的独立变量

  31. =end
  32. $m5script = {} if $m5script.nil?
  33. $m5script["M5SelfVariables"] = true
  34. module M5SelfVariables
  35. #==============================================================================
  36. #  设定部分
  37. #==============================================================================

  38.   DEA = 100
  39.   
  40.   #这里设置独立变量的初始值

  41. #==============================================================================
  42. #  设定结束
  43. #==============================================================================
  44. end
  45. #==============================================================================
  46. #  脚本部分
  47. #==============================================================================
  48. class << DataManager
  49.   alias m5_20131119_create_game_objects create_game_objects
  50.   alias m5_20131119_make_save_contents make_save_contents
  51.   alias m5_20131119_extract_save_contents extract_save_contents
  52.   def create_game_objects
  53.     m5_20131119_create_game_objects
  54.     $game_self_variables = Game_SelfVariables.new
  55.   end
  56.   def make_save_contents
  57.     m5_20131119_make_save_contents
  58.     contents[:self_variables] = $game_self_variables
  59.     contents
  60.   end
  61.   def extract_save_contents(contents)
  62.     m5_20131119_extract_save_contents(contents)
  63.     $game_self_variables = contents[:self_variables]
  64.   end
  65. end
  66. class Game_SelfVariables < Game_SelfSwitches
  67.   def [](key)
  68.     @data[key]
  69.   end
  70. end
  71. class Game_Interpreter   
  72.   def m5_get_value(key= "self",event_id = @event_id,map_id = @map_id)
  73.     value = $game_self_variables[[map_id,event_id,key]]
  74.     return (value ? value : M5SelfVariables::DEA)
  75.   end
  76.   def m5_change_value(value= 0,key= "self",event_id= @event_id,map_id= @map_id)
  77.     $game_self_variables[[map_id,event_id,key]] = value
  78.   end
  79.   def m5_give_value(var = 0,key = "self",event_id = @event_id,map_id = @map_id)
  80.     $game_variables[var] = m5_get_value(key,event_id,map_id)
  81.   end
  82.   def m5_send_value(var = 0,key= "self",event_id = @event_id,map_id = @map_id)
  83.     m5_change_value($game_variables[var],key,event_id,map_id)
  84.   end
  85. end
复制代码

作者: 渝川    时间: 2013-11-21 17:21
谢谢,不过还是有点小乱,可以具体说说吗?拜托了!
作者: 喵呜喵5    时间: 2013-11-21 18:05
本帖最后由 喵呜喵5 于 2013-11-21 18:25 编辑


(注释写错了,上面的语句最终实现的效果是本事件的HP扣了50 = =…………)

可以的话请@ 或者用回复不然我真心注意不到………………
作者: 渝川    时间: 2013-11-22 22:34
谢谢喵大,终于会了!谢谢
@喵呜喵5




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