Project1
标题:
事件编辑器功能扩充
[打印本页]
作者:
九夜神尊
时间:
2009-1-6 22:08
标题:
事件编辑器功能扩充
经过很长时间的制作
发现事件编辑器,很多东西不支持变量操作,比如图像移动时,放大率
在这里我扩充了很多功能,主要时让绝大多数的东西支持变量指定。
不过还得先看完说明!
#=========================================================================
#■ 事件编辑器的功能已经相当完善
# 不过有时候发现也有点不足,因为似乎有些东西不支持变量指定
# 种种,问题在这里可以解决
# 你只需要把要用的变量处理一下,然后在那个位置填写11
#=========================================================================
#-------------------------------------------------------------------------
#使用方法,增加事件编辑器的功能采用约定的方法
#不同的事件可能方法不同,不过大致统一 ,当然,在使用前要先处理这个变量的
# 当每次使用 11 数值时都会产生一些约定的东西,
# 如果想暂时屏蔽,你可以让 变量A = 11,这样就没有影响了
# ●等待时间——约定设定为 11 时使用 变量A (绝大多数约定使用11)
# ●条件分歧——
# 开关 设定为11号时,使用编号为变量A
# 变量 设定第一个为11时,使用编号为$变量A,第二个使用$变量B
# 扩充支持变量指定 角色id,约定 当选定的是11号角色,则判断 id = 变量A角色
# 武器,防具等
# ●变量操作——约定当变量编号设定为11时,变量id为变量A
# 操作对应为 11,则使用Id为变量B
#
# ●增减物品——约定当增减id设定为 11时,增减id为 变量A 的物品
# ●增减武器——约定当增减id设定为 11时,增减id为 变量A 的武器
# ●增减防具——约定当增减id设定为 11时,增减id为 变量A 的防具
# ●画面卷动——约定当移动距离设定为 11时,移动距离为 变量A
# ●显示动画——约定当动画id设定为 11时,使用ID为$变量A的动画
# ●移动图片——约定将放大率设定为 11时,X使用$变量A,Y使用变量B(实现变量指定放大率)
# ●更改角色姓名——在角色名内填写1-99的数字,即可成功将角色名该为,该id的角色名
# ●敌人变身——约定当变身id设为11是,使用id = 变量A敌人
# 为了适合不同作者,约定数值也作更改,更改后,将约定这个数值
$约定 = 1
$变量A_ID = 4 #你还是要设定下变量A的ID,1号变量的好处就是变量操作的时候默认就在1号
$变量B_ID = 5
#--------------总之,很多时候,只要选择的关于11,都可能约定为指定变量---------
class Interpreter
#--------------------------------------------------------------------------
# ● 等待
#--------------------------------------------------------------------------
def command_106
# 设置等待计数
@parameters[0] = $game_variables[$变量A_ID] if @parameters[0] == $约定
@wait_count = @parameters[0] * 2
# 继续
return true
end
#--------------------------------------------------------------------------
# ● 条件分支
#--------------------------------------------------------------------------
def command_111
# 初始化本地变量 result
result = false
# 条件判定
case @parameters[0]
when 0 # 开关
@parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
result = ($game_switches[@parameters[1]] == (@parameters[2] == 0))
when 1 # 变量
@parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
value1 = $game_variables[@parameters[1]]
if @parameters[2] == 0
value2 = @parameters[3]
else
@parameters[3] = $game_variables[$变量B_ID] if @parameters[3] == $约定
value2 = $game_variables[@parameters[3]]
end
case @parameters[4]
when 0 # 等于
result = (value1 == value2)
when 1 # 以上
result = (value1 >= value2)
when 2 # 以下
result = (value1 <= value2)
when 3 # 超过
result = (value1 > value2)
when 4 # 未满
result = (value1 < value2)
when 5 # 以外
result = (value1 != value2)
end
when 2 # 独立开关
if @event_id > 0
key = [$game_map.map_id, @event_id, @parameters[1]]
if @parameters[2] == 0
result = ($game_self_switches[key] == true)
else
result = ($game_self_switches[key] != true)
end
end
when 3 # 计时器
if $game_system.timer_working
sec = $game_system.timer / Graphics.frame_rate
if @parameters[2] == 0
result = (sec >= @parameters[1])
else
result = (sec <= @parameters[1])
end
end
when 4 # 角色
@parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
@parameters[3] = $game_variables[$变量B_ID] if @parameters[3] == $约定
actor = $game_actors[@parameters[1]]
if actor != nil
case @parameters[2]
when 0 # 同伴
result = ($game_party.actors.include?(actor))
when 1 # 名称
result = (actor.name == @parameters[3])
when 2 # 特技
result = (actor.skill_learn?(@parameters[3]))
when 3 # 武器
result = (actor.weapon_id == @parameters[3])
when 4 # 防具
result = (actor.armor1_id == @parameters[3] or
actor.armor2_id == @parameters[3] or
actor.armor3_id == @parameters[3] or
actor.armor4_id == @parameters[3])
when 5 # 状态
result = (actor.state?(@parameters[3]))
end
end
when 5 # 敌人
enemy = $game_troop.enemies[@parameters[1]]
if enemy != nil
case @parameters[2]
when 0 # 出现
result = (enemy.exist?)
when 1 # 状态
result = (enemy.state?(@parameters[3]))
end
end
when 6 # 角色
character = get_character(@parameters[1])
if character != nil
result = (character.direction == @parameters[2])
end
when 7 # 金钱
if @parameters[2] == 0
result = ($game_party.gold >= @parameters[1])
else
result = ($game_party.gold <= @parameters[1])
end
when 8 # 物品
@parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
result = ($game_party.item_number(@parameters[1]) > 0)
when 9 # 武器
@parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
result = ($game_party.weapon_number(@parameters[1]) > 0)
when 10 # 防具
@parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
result = ($game_party.armor_number(@parameters[1]) > 0)
when 11 # 按钮
result = (Input.press?(@parameters[1]))
when 12 # 活动块
result = eval(@parameters[1])
end
# 判断结果保存在 hash 中
@branch[@list[@index].indent] = result
# 判断结果为真的情况下
if @branch[@list[@index].indent] == true
# 删除分支数据
@branch.delete(@list[@index].indent)
# 继续
return true
end
# 不符合条件的情况下 : 指令跳转
return command_skip
end
#--------------------------------------------------------------------------
# ● 增减物品
#--------------------------------------------------------------------------
alias swtf_command_126 command_126
# 获取要操作的值
def command_126
if @parameters[0] == $约定
@parameters[0] = $game_variables[$变量A_ID]
end
swtf_command_126
# 继续
return true
end
#--------------------------------------------------------------------------
# ● 增减武器
#--------------------------------------------------------------------------
alias swtf_command_127 command_127
def command_127
# 获取要操作的值
if @parameters[0] == $约定
@parameters[0] = $game_variables[$变量A_ID]
end
swtf_command_127
return true
end
#--------------------------------------------------------------------------
# ● 增减防具
#--------------------------------------------------------------------------
alias swtf_command_128 command_128
def command_128
# 获取要操作的值
if @parameters[0] == $约定
@parameters[0] = $game_variables[$变量A_ID]
end
swtf_command_128
return true
end
#--------------------------------------------------------------------------
# ● 地图的滚动
#--------------------------------------------------------------------------
def command_203
# 战斗中的情况下
if $game_temp.in_battle
# 继续
return true
end
# 已经在滚动中的情况下
if $game_map.scrolling?
# 结束
return false
end
# 开始滚动
@parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
$game_map.start_scroll(@parameters[0], @parameters[1], @parameters[2])
# 继续
return true
end
#--------------------------------------------------------------------------
# ● 显示动画
#--------------------------------------------------------------------------
def command_207
# 获取角色
character = get_character(@parameters[0])
# 角色不存在的情况下
if character == nil
# 继续
return true
end
# 设置动画 ID
@parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
character.animation_id = @parameters[1]
# 继续
return true
end
#--------------------------------------------------------------------------
# ● 移动图片
#--------------------------------------------------------------------------
def command_232
# 获取图片编号
number = @parameters[0] + ($game_temp.in_battle ? 50 : 0)
# 指定方法为 [直接指定] 的情况下
if @parameters[3] == 0
x = @parameters[4]
y = @parameters[5]
# 指定方法为 [使用变量指定] 的情况下
else
x = $game_variables[@parameters[4]]
y = $game_variables[@parameters[5]]
end
# 移动图片
@parameters[6] = $game_variables[$变量A_ID] if @parameters[6] == $约定
@parameters[7] = $game_variables[$变量B_ID] if @parameters[7] == $约定
$game_screen.pictures[number].move(@parameters[1] * 2, @parameters[2],
x, y, @parameters[6], @parameters[7], @parameters[8], @parameters[9])
# 继续
return true
end
#--------------------------------------------------------------------------
# ● 战斗处理
#--------------------------------------------------------------------------
def command_301
# 如果不是无效的队伍
@parameters[0] = $game_variables[$变量A_ID] if @parameters[0] == $约定
if $data_troops[@parameters[0]] != nil
# 设置中断战斗标志
$game_temp.battle_abort = true
# 设置战斗调用标志
$game_temp.battle_calling = true
$game_temp.battle_troop_id = @parameters[0]
$game_temp.battle_can_escape = @parameters[1]
$game_temp.battle_can_lose = @parameters[2]
# 设置返回调用
current_indent = @list[@index].indent
$game_temp.battle_proc = Proc.new { |n| @branch[current_indent] = n }
end
# 推进索引
@index += 1
# 结束
return false
end
#--------------------------------------------------------------------------
# ● 更改角色的名字
#--------------------------------------------------------------------------
def command_320
# 获取角色
actor = $game_actors[@parameters[0]]
# 更改名字
if actor != nil
for i in 0..99
@parameters[1] = $game_actors[i].name if @parameters[1] == "#{i}"
end
actor.name = @parameters[1]
end
# 继续
return true
end
#--------------------------------------------------------------------------
# ● 敌人变身
#--------------------------------------------------------------------------
def command_336
# 获取敌人
enemy = $game_troop.enemies[@parameters[0]]
# 变身处理
if enemy != nil
@parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
enemy.transform(@parameters[1])
end
# 继续
return true
end
#--------------------------------------------------------------------------
# ● 变量操作
#--------------------------------------------------------------------------
def command_122
# 初始化值
value = 0
# 操作数的分支
case @parameters[3]
when 0 # 恒量
value = @parameters[4]
when 1 # 变量
@parameters[4] = $game_variables[$变量B_ID] if @parameters[4] == $约定
value = $game_variables[@parameters[4]]
when 2 # 随机数
value = @parameters[4] + rand(@parameters[5] - @parameters[4] + 1)
when 3 # 物品
@parameters[4] = $game_variables[$变量B_ID] if @parameters[4] == $约定
value = $game_party.item_number(@parameters[4])
when 4 # 角色
@parameters[4] = $game_variables[$变量B_ID] if @parameters[4] == $约定
actor = $game_actors[@parameters[4]]
if actor != nil
case @parameters[5]
when 0 # 等级
value = actor.level
when 1 # EXP
value = actor.exp
when 2 # HP
value = actor.hp
when 3 # SP
value = actor.sp
when 4 # MaxHP
value = actor.maxhp
when 5 # MaxSP
value = actor.maxsp
when 6 # 力量
value = actor.str
when 7 # 灵巧
value = actor.dex
when 8 # 速度
value = actor.agi
when 9 # 魔力
value = actor.int
when 10 # 攻击力
value = actor.atk
when 11 # 物理防御
value = actor.pdef
when 12 # 魔法防御
value = actor.mdef
when 13 # 回避修正
value = actor.eva
end
end
when 5 # 敌人
@parameters[4] = $game_variables[$变量B_ID] if @parameters[4] == $约定
enemy = $game_troop.enemies[@parameters[4]]
if enemy != nil
case @parameters[5]
when 0 # HP
value = enemy.hp
when 1 # SP
value = enemy.sp
when 2 # MaxHP
value = enemy.maxhp
when 3 # MaxSP
value = enemy.maxsp
when 4 # 力量
value = enemy.str
when 5 # 灵巧
value = enemy.dex
when 6 # 速度
value = enemy.agi
when 7 # 魔力
value = enemy.int
when 8 # 攻击力
value = enemy.atk
when 9 # 物理防御
value = enemy.pdef
when 10 # 魔法防御
value = enemy.mdef
when 11 # 回避修正
value = enemy.eva
end
end
when 6 # 角色
character = get_character(@parameters[4])
if character != nil
case @parameters[5]
when 0 # X 坐标
value = character.x
when 1 # Y 坐标
value = character.y
when 2 # 朝向
value = character.direction
when 3 # 画面 X 坐标
value = character.screen_x
when 4 # 画面 Y 坐标
value = character.screen_y
when 5 # 地形标记
value = character.terrain_tag
end
end
when 7 # 其它
case @parameters[4]
when 0 # 地图 ID
value = $game_map.map_id
when 1 # 同伴人数
value = $game_party.actors.size
when 2 # 金钱
value = $game_party.gold
when 3 # 步数
value = $game_party.steps
when 4 # 游戏时间
value = Graphics.frame_count / Graphics.frame_rate
when 5 # 计时器
value = $game_system.timer / Graphics.frame_rate
when 6 # 存档次数
value = $game_system.save_count
end
end
# 循环全部操作
@parameters[0] = $game_variables[$变量A_ID] if @parameters[0] == $约定
for i in @parameters[0] .. @parameters[1]
# 操作分支
case @parameters[2]
when 0 # 代入
$game_variables[i] = value
when 1 # 加法
$game_variables[i] += value
when 2 # 减法
$game_variables[i] -= value
when 3 # 乘法
$game_variables[i] *= value
when 4 # 除法
if value != 0
$game_variables[i] /= value
end
when 5 # 剩余
if value != 0
$game_variables[i] %= value
end
end
# 检查上限
if $game_variables[i] > 99999999
$game_variables[i] = 99999999
end
# 检查下限
if $game_variables[i] < -99999999
$game_variables[i] = -99999999
end
end
# 刷新地图
$game_map.need_refresh = true
# 继续
return true
end
end
复制代码
我想不会有冲突吧。没人涉及这一块
如果觉得有什么东西还能扩充,不要吝啬告诉我
作者:
纯子
时间:
2009-1-7 00:21
事件完全可以用脚本代替。。还用变量作甚?{/gg}
作者:
sizz123
时间:
2009-1-7 00:59
以下引用
纯子于2009-1-6 16:21:48
的发言:
事件完全可以用脚本代替。。还用变量作甚?
好多人都不喜欢用脚本的。针对这个软件来说:用事件做出华丽的效果,绝对比用脚本做出的同样效果,感觉上过瘾一些。
作者:
越前リョーマ
时间:
2009-1-7 01:27
对我来说真的是很有用。{/qiang}
作者:
九夜神尊
时间:
2009-1-7 03:19
ad
作者:
3nξhα0_lim
时间:
2009-1-7 05:12
提示:
作者被禁止或删除 内容自动屏蔽
作者:
swabwind
时间:
2009-1-7 07:47
好象不错,对我来说蛮有用的,不过如果知道脚本怎么写就可能没用了。。
感谢楼主~
作者:
九夜神尊
时间:
2009-1-8 05:06
最近发现还有些可以扩充的
就是事件编号,不过那个,有人需要了在解决
作者:
九夜神尊
时间:
2009-1-9 00:19
{/lh}昨天才学会方法别名
今天正好发现跟得失物品提升有冲突
,调和了一下,这个得放到得失物品提升后面
作者:
姬文翔
时间:
2009-1-9 02:14
这个还算实用吧{/cy}
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1