赞 | 3 |
VIP | 333 |
好人卡 | 91 |
积分 | 2 |
经验 | 55775 |
最后登录 | 2017-7-18 |
在线时间 | 2070 小时 |
Lv1.梦旅人 Mr.Gandum
- 梦石
- 0
- 星屑
- 226
- 在线时间
- 2070 小时
- 注册时间
- 2007-1-31
- 帖子
- 3039
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
嘛,前天昨天一直在和Ace的帮助文档瞪眼,看着看着对自己突然有种说不出来的不信感,所以写了这个脚本。
这个脚本的大体工作方法嘛,其实就是读取每页第一个事件指令,假如这个事件指令是注释,则按照内容来添加条件。
在注释内按照下面的格式输入,用“|”分开。大概可以用这些条件:
1,变量id输入要判断的变量ID,num输入是几以上。
2,开关id输入要判断的开关ID,ft输入开启关闭状态(true为开启,false为关闭)如果省略则为true
3,独立开关type输入药判断的独立开关,用A-D的英文大写字母。tf同上。
4,角色ID输入要判断是否在队伍内的角色ID,tf输入要判定是在(true)还是不在(false)
5,物品ID输入要判定的道具ID,num输入时几以上。若省略为则1
6,独立变量type输入要判定的独立变量类型,用A-D的英文大写字母。num为判定几以上。
独立变量:
一个新的类,可以在保存在存档内,操作时使用一下的命令,在事件指令第三页中的脚本输入:
1,设置值- self_vary_control(key,num)
复制代码 key输入独立变量类型,使用A-D的英文大写字母,用""包上。
num输入要代入的值。
2,增加值key同上,
num输入要增加的值。
3,减少值- self_vary_minus(key, num)
复制代码 key同上,
num输入要减少的值。
4,获取值key同上,用这个来获取该独立变量的值,用于条件分歧等。
最后上脚本:- module RPG
- class Event
- class Page
- class Condition
- alias extra_condition_initialize initialize
- def initialize
- extra_condition_initialize
- @extra_condition = []
- end
- attr_accessor :extra_condition
- end
- end
- end
- end
- module RPG
- class Event
- class Page
- def get_extra_conditions
- @condition.extra_condition = []
- i = 0
- loop do
- break if @list[i].code != 108
- note = @list[i].parameters
- note.each{|arr|
- arr.each_line{|line|
- line.split(/\|/).each{|str|
- pa = str.split(/\,/)
- case pa[0]
- when "角色"
- pa[2] = pa[2] == "false" ? false : true
- @condition.extra_condition.push(["actor",pa[1].to_i, pa[2]])
- when "变量"
- @condition.extra_condition.push(["var",pa[1].to_i,pa[2].to_i])
- when "开关"
- pa[2] = pa[2] == "false" ? false : true
- @condition.extra_condition.push(["swi",pa[1].to_i,pa[2]])
- when "独立开关"
- pa[2] = pa[2] == "false" ? false : true
- @condition.extra_condition.push(["seswi",pa[1],pa[2]])
- when "独立变量"
- @condition.extra_condition.push(["sevar",pa[1],pa[2].to_i])
- when "物品"
- pa[2] = pa[2] == nil ? 1 : pa[2]
- @condition.extra_condition.push(["item",pa[1].to_i,pa[2].to_i])
- end
- }
- }
- }
- i += 1
- end
- end
- end
- end
- end
- #==============================================================================
- # ■ Game_SelfVariables
- #------------------------------------------------------------------------------
- # 处理独立开关的类。编入的是类 Hash 的外壳。本类的实例请参考 $game_self_variables
- #==============================================================================
- class Game_SelfVaribales
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- @data = {}
- end
- #--------------------------------------------------------------------------
- # ● 获取独立变量
- # key : 键
- #--------------------------------------------------------------------------
- def [](key)
- return @data[key] == nil ? 0 : @data[key]
- end
- #--------------------------------------------------------------------------
- # ● 设置独立变量
- # key : 键
- # value : 值
- #--------------------------------------------------------------------------
- def []=(key, value)
- @data[key] = value
- end
- end
- #==============================================================================
- # ■ Game_Interpreter
- #------------------------------------------------------------------------------
- # 执行事件命令的解释器。本类在 Game_Map 类、Game_Troop 类、与
- # Game_Event 类的内部使用。
- #==============================================================================
- class Game_Interpreter
- def self_vary_control(key, num)
- if @original_event_id > 0
- keys = [@map_id, @original_event_id, key]
- $game_self_variables[keys] = num
- end
- $game_map.need_refresh = true
- return true
- end
- def self_vary_plus(key, num)
- if @original_event_id > 0
- keys = [@map_id, @original_event_id, key]
- n = $game_self_variables[keys] + num
- $game_self_variables[keys] = n
- end
- $game_map.need_refresh = true
- return true
- end
- def self_vary_minus(key, num)
- if @original_event_id > 0
- keys = [@map_id, @original_event_id, key]
- n = $game_self_variables[keys] - num
- $game_self_variables[keys] = n
- end
- $game_map.need_refresh = true
- return true
- end
- def self_vary(key)
- if @original_event_id > 0
- keys = [@map_id, @original_event_id, key]
- num = $game_self_variables[keys]
- end
- return num == nil ? 0 : num
- end
- end
- #==============================================================================
- # ■ Scene_Title
- #------------------------------------------------------------------------------
- # 处理标题画面的类。
- #==============================================================================
- class Scene_Title < Scene_Base
- alias self_variable_create_game_objects create_game_objects
- #--------------------------------------------------------------------------
- # ● 生成各种游戏对象
- #--------------------------------------------------------------------------
- def create_game_objects
- $game_self_variables = Game_SelfVaribales.new
- self_variable_create_game_objects
- end
- end
- #==============================================================================
- # ■ Scene_File
- #------------------------------------------------------------------------------
- # 存档画面及读档画面的类。
- #==============================================================================
- class Scene_File < Scene_Base
- alias self_variable_write_save_data write_save_data
- #--------------------------------------------------------------------------
- # ● 写入存档数据
- # file : 写入存档对象(已开启)
- #--------------------------------------------------------------------------
- def write_save_data(file)
- self_variable_write_save_data(file)
- Marshal.dump($game_self_variables, file)
- end
- alias self_variable_read_save_data read_save_data
- #--------------------------------------------------------------------------
- # ● 读出存档数据
- # file : 读出存档对象(已开启)
- #--------------------------------------------------------------------------
- def read_save_data(file)
- self_variable_read_save_data(file)
- $game_self_variables = Marshal.load(file)
- end
- end
- #==============================================================================
- # ■ Game_Event
- #------------------------------------------------------------------------------
- # 处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能
- # 在 Game_Map 类的内部使用。
- #==============================================================================
- class Game_Event < Game_Character
- alias extra_conditions_conditions_met? conditions_met?
- #--------------------------------------------------------------------------
- # ● 判断事件页出现条件
- #--------------------------------------------------------------------------
- def conditions_met?(page)
- result = extra_conditions_conditions_met?(page)
- return false if result == false
- page.get_extra_conditions
- c = page.condition.extra_condition
- for con in c
- case con[0]
- when "actor"
- actor = $game_actors[con[1]]
- if $game_party.members.include?(actor) != con[2]
- result = false
- break
- end
- when "var"
- vari = $game_variables[con[1]]
- if vari < con[2]
- result = false
- break
- end
- when "swi"
- swi = $game_switches[con[1]]
- if swi != con[2]
- result = false
- break
- end
- when "seswi"
- key = [@map_id, @event.id, con[1]]
- seswi = $game_self_switches[key]
- if seswi != con[2]
- result = false
- break
- end
- when "item"
- item = $game_party.item_number($data_items[con[1]])
- if item < con[2]
- result = false
- break
- end
- when "sevar"
- key = [@map_id, @event.id, con[1]]
- sevar = $game_self_variables[key]
- if sevar < con[2]
- result = false
- break
- end
- end
- end
- return result
- end
- end
复制代码 |
|