设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2900|回复: 9
打印 上一主题 下一主题

事件编辑器功能扩充

 关闭 [复制链接]

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
跳转到指定楼层
1
发表于 2009-1-6 22:08:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
经过很长时间的制作

发现事件编辑器,很多东西不支持变量操作,比如图像移动时,放大率

在这里我扩充了很多功能,主要时让绝大多数的东西支持变量指定。

不过还得先看完说明!
  1. #=========================================================================
  2. #■  事件编辑器的功能已经相当完善
  3. #    不过有时候发现也有点不足,因为似乎有些东西不支持变量指定
  4. #    种种,问题在这里可以解决
  5. #    你只需要把要用的变量处理一下,然后在那个位置填写11
  6. #=========================================================================

  7. #-------------------------------------------------------------------------
  8. #使用方法,增加事件编辑器的功能采用约定的方法
  9. #不同的事件可能方法不同,不过大致统一 ,当然,在使用前要先处理这个变量的
  10. # 当每次使用 11 数值时都会产生一些约定的东西,
  11. # 如果想暂时屏蔽,你可以让 变量A = 11,这样就没有影响了
  12. # ●等待时间——约定设定为 11 时使用 变量A (绝大多数约定使用11)
  13. # ●条件分歧——
  14. #      开关 设定为11号时,使用编号为变量A
  15. #      变量 设定第一个为11时,使用编号为$变量A,第二个使用$变量B
  16. #      扩充支持变量指定 角色id,约定 当选定的是11号角色,则判断 id = 变量A角色
  17. #                 武器,防具等
  18. # ●变量操作——约定当变量编号设定为11时,变量id为变量A
  19. #               操作对应为 11,则使用Id为变量B
  20. #      
  21. # ●增减物品——约定当增减id设定为 11时,增减id为 变量A 的物品
  22. # ●增减武器——约定当增减id设定为 11时,增减id为 变量A 的武器
  23. # ●增减防具——约定当增减id设定为 11时,增减id为 变量A 的防具
  24. # ●画面卷动——约定当移动距离设定为 11时,移动距离为 变量A
  25. # ●显示动画——约定当动画id设定为 11时,使用ID为$变量A的动画
  26. # ●移动图片——约定将放大率设定为 11时,X使用$变量A,Y使用变量B(实现变量指定放大率)
  27. # ●更改角色姓名——在角色名内填写1-99的数字,即可成功将角色名该为,该id的角色名
  28. # ●敌人变身——约定当变身id设为11是,使用id = 变量A敌人
  29. #   为了适合不同作者,约定数值也作更改,更改后,将约定这个数值
  30.     $约定 = 1
  31.     $变量A_ID = 4  #你还是要设定下变量A的ID,1号变量的好处就是变量操作的时候默认就在1号
  32.     $变量B_ID = 5  
  33. #--------------总之,很多时候,只要选择的关于11,都可能约定为指定变量---------   
  34. class Interpreter
  35.   #--------------------------------------------------------------------------
  36.   # ● 等待
  37.   #--------------------------------------------------------------------------
  38. def command_106
  39.     # 设置等待计数
  40.   @parameters[0] = $game_variables[$变量A_ID] if @parameters[0] == $约定
  41.     @wait_count = @parameters[0] * 2
  42.     # 继续
  43.     return true
  44.   end
  45.   
  46. #--------------------------------------------------------------------------
  47.   # ● 条件分支
  48.   #--------------------------------------------------------------------------
  49.   def command_111
  50.     # 初始化本地变量 result
  51.     result = false
  52.     # 条件判定
  53.     case @parameters[0]
  54.     when 0  # 开关
  55.       @parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
  56.       result = ($game_switches[@parameters[1]] == (@parameters[2] == 0))
  57.     when 1  # 变量
  58.       @parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
  59.       value1 = $game_variables[@parameters[1]]
  60.       if @parameters[2] == 0
  61.         value2 = @parameters[3]
  62.       else
  63.         @parameters[3] = $game_variables[$变量B_ID] if @parameters[3] == $约定
  64.         value2 = $game_variables[@parameters[3]]
  65.       end
  66.       case @parameters[4]
  67.       when 0  # 等于
  68.         result = (value1 == value2)
  69.       when 1  # 以上
  70.         result = (value1 >= value2)
  71.       when 2  # 以下
  72.         result = (value1 <= value2)
  73.       when 3  # 超过
  74.         result = (value1 > value2)
  75.       when 4  # 未满
  76.         result = (value1 < value2)
  77.       when 5  # 以外
  78.         result = (value1 != value2)
  79.       end
  80.     when 2  # 独立开关
  81.       if @event_id > 0
  82.         key = [$game_map.map_id, @event_id, @parameters[1]]
  83.         if @parameters[2] == 0
  84.           result = ($game_self_switches[key] == true)
  85.         else
  86.           result = ($game_self_switches[key] != true)
  87.         end
  88.       end
  89.     when 3  # 计时器
  90.       if $game_system.timer_working
  91.         sec = $game_system.timer / Graphics.frame_rate
  92.         if @parameters[2] == 0
  93.           result = (sec >= @parameters[1])
  94.         else
  95.           result = (sec <= @parameters[1])
  96.         end
  97.       end
  98.     when 4  # 角色
  99.      @parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
  100.      @parameters[3] = $game_variables[$变量B_ID] if @parameters[3] == $约定
  101.       actor = $game_actors[@parameters[1]]
  102.       if actor != nil
  103.         case @parameters[2]
  104.         when 0  # 同伴
  105.           result = ($game_party.actors.include?(actor))
  106.         when 1  # 名称
  107.           result = (actor.name == @parameters[3])
  108.         when 2  # 特技
  109.           result = (actor.skill_learn?(@parameters[3]))
  110.         when 3  # 武器
  111.           result = (actor.weapon_id == @parameters[3])
  112.         when 4  # 防具
  113.   result = (actor.armor1_id == @parameters[3] or
  114.                     actor.armor2_id == @parameters[3] or
  115.                     actor.armor3_id == @parameters[3] or
  116.                     actor.armor4_id == @parameters[3])
  117.         when 5  # 状态
  118.           result = (actor.state?(@parameters[3]))
  119.         end
  120.       end
  121.     when 5  # 敌人
  122.       enemy = $game_troop.enemies[@parameters[1]]
  123.       if enemy != nil
  124.         case @parameters[2]
  125.         when 0  # 出现
  126.           result = (enemy.exist?)
  127.         when 1  # 状态
  128.           result = (enemy.state?(@parameters[3]))
  129.         end
  130.       end
  131.     when 6  # 角色
  132.       character = get_character(@parameters[1])
  133.       if character != nil
  134.         result = (character.direction == @parameters[2])
  135.       end
  136.     when 7  # 金钱
  137.       if @parameters[2] == 0
  138.         result = ($game_party.gold >= @parameters[1])
  139.       else
  140.         result = ($game_party.gold <= @parameters[1])
  141.       end
  142.     when 8  # 物品
  143.       @parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
  144.       result = ($game_party.item_number(@parameters[1]) > 0)
  145.     when 9  # 武器
  146.       @parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
  147.       result = ($game_party.weapon_number(@parameters[1]) > 0)
  148.     when 10  # 防具
  149.       @parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
  150.       result = ($game_party.armor_number(@parameters[1]) > 0)
  151.     when 11  # 按钮
  152.       result = (Input.press?(@parameters[1]))
  153.     when 12  # 活动块
  154.       result = eval(@parameters[1])
  155.     end
  156.     # 判断结果保存在 hash 中
  157.     @branch[@list[@index].indent] = result
  158.     # 判断结果为真的情况下
  159.     if @branch[@list[@index].indent] == true
  160.       # 删除分支数据
  161.       @branch.delete(@list[@index].indent)
  162.       # 继续
  163.       return true
  164.     end
  165.     # 不符合条件的情况下 : 指令跳转
  166.     return command_skip
  167.   end
  168.   
  169.   #--------------------------------------------------------------------------
  170.   # ● 增减物品
  171.   #--------------------------------------------------------------------------
  172.   alias swtf_command_126 command_126
  173.     # 获取要操作的值
  174.    def command_126
  175.     if @parameters[0] == $约定
  176.       @parameters[0] = $game_variables[$变量A_ID]
  177.     end   
  178.     swtf_command_126
  179.     # 继续
  180.     return true
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● 增减武器
  184.   #--------------------------------------------------------------------------
  185.   alias swtf_command_127 command_127
  186.   def command_127
  187.     # 获取要操作的值
  188.     if @parameters[0] == $约定
  189.       @parameters[0] = $game_variables[$变量A_ID]
  190.     end   
  191.     swtf_command_127
  192.     return true
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ● 增减防具
  196.   #--------------------------------------------------------------------------
  197.   alias swtf_command_128 command_128
  198.   def command_128
  199.     # 获取要操作的值
  200.     if @parameters[0] == $约定
  201.       @parameters[0] = $game_variables[$变量A_ID]
  202.     end   
  203.     swtf_command_128
  204.     return true
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● 地图的滚动
  208.   #--------------------------------------------------------------------------
  209.   def command_203
  210.     # 战斗中的情况下
  211.     if $game_temp.in_battle
  212.       # 继续
  213.       return true
  214.     end
  215.     # 已经在滚动中的情况下
  216.     if $game_map.scrolling?
  217.       # 结束
  218.       return false
  219.     end
  220.     # 开始滚动
  221.     @parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
  222.     $game_map.start_scroll(@parameters[0], @parameters[1], @parameters[2])
  223.     # 继续
  224.     return true
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● 显示动画
  228.   #--------------------------------------------------------------------------
  229.   def command_207
  230.     # 获取角色
  231.     character = get_character(@parameters[0])
  232.     # 角色不存在的情况下
  233.     if character == nil
  234.       # 继续
  235.       return true
  236.     end
  237.     # 设置动画 ID
  238.     @parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
  239.     character.animation_id = @parameters[1]
  240.     # 继续
  241.     return true
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # ● 移动图片
  245.   #--------------------------------------------------------------------------
  246.   def command_232
  247.     # 获取图片编号
  248.     number = @parameters[0] + ($game_temp.in_battle ? 50 : 0)
  249.     # 指定方法为 [直接指定] 的情况下
  250.     if @parameters[3] == 0
  251.       x = @parameters[4]
  252.       y = @parameters[5]
  253.     # 指定方法为 [使用变量指定] 的情况下
  254.     else
  255.       x = $game_variables[@parameters[4]]
  256.       y = $game_variables[@parameters[5]]
  257.     end
  258.     # 移动图片
  259.     @parameters[6] = $game_variables[$变量A_ID] if @parameters[6] == $约定
  260.     @parameters[7] = $game_variables[$变量B_ID] if @parameters[7] == $约定
  261.     $game_screen.pictures[number].move(@parameters[1] * 2, @parameters[2],
  262.       x, y, @parameters[6], @parameters[7], @parameters[8], @parameters[9])
  263.     # 继续
  264.     return true
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ● 战斗处理
  268.   #--------------------------------------------------------------------------
  269.   def command_301
  270.     # 如果不是无效的队伍
  271.      @parameters[0] = $game_variables[$变量A_ID] if @parameters[0] == $约定
  272.     if $data_troops[@parameters[0]] != nil
  273.       # 设置中断战斗标志
  274.       $game_temp.battle_abort = true
  275.       # 设置战斗调用标志
  276.       $game_temp.battle_calling = true
  277.       $game_temp.battle_troop_id = @parameters[0]
  278.       $game_temp.battle_can_escape = @parameters[1]
  279.       $game_temp.battle_can_lose = @parameters[2]
  280.       # 设置返回调用
  281.       current_indent = @list[@index].indent
  282.       $game_temp.battle_proc = Proc.new { |n| @branch[current_indent] = n }
  283.     end
  284.     # 推进索引
  285.     @index += 1
  286.     # 结束
  287.     return false
  288.   end
  289.   #--------------------------------------------------------------------------
  290.   # ● 更改角色的名字
  291.   #--------------------------------------------------------------------------
  292.   def command_320
  293.     # 获取角色
  294.     actor = $game_actors[@parameters[0]]
  295.     # 更改名字
  296.     if actor != nil
  297.       for i in 0..99
  298.       @parameters[1] = $game_actors[i].name if @parameters[1] == "#{i}"
  299.     end  
  300.       actor.name = @parameters[1]
  301.     end
  302.     # 继续
  303.     return true
  304.   end
  305.   #--------------------------------------------------------------------------
  306.   # ● 敌人变身
  307.   #--------------------------------------------------------------------------
  308.   def command_336
  309.     # 获取敌人
  310.     enemy = $game_troop.enemies[@parameters[0]]
  311.     # 变身处理
  312.     if enemy != nil
  313.       @parameters[1] = $game_variables[$变量A_ID] if @parameters[1] == $约定
  314.       enemy.transform(@parameters[1])
  315.     end
  316.     # 继续
  317.     return true
  318.   end
  319. #--------------------------------------------------------------------------
  320.   # ● 变量操作
  321.   #--------------------------------------------------------------------------
  322.   def command_122
  323.     # 初始化值
  324.     value = 0
  325.     # 操作数的分支
  326.     case @parameters[3]
  327.     when 0  # 恒量
  328.       value = @parameters[4]
  329.     when 1  # 变量
  330.       @parameters[4] = $game_variables[$变量B_ID] if @parameters[4] == $约定
  331.       value = $game_variables[@parameters[4]]
  332.     when 2  # 随机数
  333.       value = @parameters[4] + rand(@parameters[5] - @parameters[4] + 1)
  334.     when 3  # 物品
  335.       @parameters[4] = $game_variables[$变量B_ID] if @parameters[4] == $约定
  336.       value = $game_party.item_number(@parameters[4])
  337.     when 4  # 角色
  338.       @parameters[4] = $game_variables[$变量B_ID] if @parameters[4] == $约定
  339.       actor = $game_actors[@parameters[4]]
  340.       if actor != nil
  341.         case @parameters[5]
  342.         when 0  # 等级
  343.           value = actor.level
  344.         when 1  # EXP
  345.           value = actor.exp
  346.         when 2  # HP
  347.           value = actor.hp
  348.         when 3  # SP
  349.           value = actor.sp
  350.         when 4  # MaxHP
  351.           value = actor.maxhp
  352.         when 5  # MaxSP
  353.           value = actor.maxsp
  354.         when 6  # 力量
  355.           value = actor.str
  356.         when 7  # 灵巧
  357.           value = actor.dex
  358.         when 8  # 速度
  359.           value = actor.agi
  360.         when 9  # 魔力
  361.           value = actor.int
  362.         when 10  # 攻击力
  363.           value = actor.atk
  364.         when 11  # 物理防御
  365.           value = actor.pdef
  366.         when 12  # 魔法防御
  367.           value = actor.mdef
  368.         when 13  # 回避修正
  369.           value = actor.eva
  370.         end
  371.       end
  372.     when 5  # 敌人
  373.       @parameters[4] = $game_variables[$变量B_ID] if @parameters[4] == $约定
  374.       enemy = $game_troop.enemies[@parameters[4]]
  375.       if enemy != nil
  376.         case @parameters[5]
  377.         when 0  # HP
  378.           value = enemy.hp
  379.         when 1  # SP
  380.           value = enemy.sp
  381.         when 2  # MaxHP
  382.           value = enemy.maxhp
  383.         when 3  # MaxSP
  384.           value = enemy.maxsp
  385.         when 4  # 力量
  386.           value = enemy.str
  387.         when 5  # 灵巧
  388.           value = enemy.dex
  389.         when 6  # 速度
  390.           value = enemy.agi
  391.         when 7  # 魔力
  392.           value = enemy.int
  393.         when 8  # 攻击力
  394.           value = enemy.atk
  395.         when 9  # 物理防御
  396.           value = enemy.pdef
  397.         when 10  # 魔法防御
  398.           value = enemy.mdef
  399.         when 11  # 回避修正
  400.           value = enemy.eva
  401.         end
  402.       end
  403.     when 6  # 角色
  404.       character = get_character(@parameters[4])
  405.       if character != nil
  406.         case @parameters[5]
  407.         when 0  # X 坐标
  408.           value = character.x
  409.         when 1  # Y 坐标
  410.           value = character.y
  411.         when 2  # 朝向
  412.           value = character.direction
  413.         when 3  # 画面 X 坐标
  414.           value = character.screen_x
  415.         when 4  # 画面 Y 坐标
  416.           value = character.screen_y
  417.         when 5  # 地形标记
  418.           value = character.terrain_tag
  419.         end
  420.       end
  421.     when 7  # 其它
  422.       case @parameters[4]
  423.       when 0  # 地图 ID
  424.         value = $game_map.map_id
  425.       when 1  # 同伴人数
  426.         value = $game_party.actors.size
  427.       when 2  # 金钱
  428.         value = $game_party.gold
  429.       when 3  # 步数
  430.         value = $game_party.steps
  431.       when 4  # 游戏时间
  432.         value = Graphics.frame_count / Graphics.frame_rate
  433.       when 5  # 计时器
  434.         value = $game_system.timer / Graphics.frame_rate
  435.       when 6  # 存档次数
  436.         value = $game_system.save_count
  437.       end
  438.     end
  439.     # 循环全部操作
  440.     @parameters[0] = $game_variables[$变量A_ID] if @parameters[0] == $约定
  441.     for i in @parameters[0] .. @parameters[1]
  442.       # 操作分支
  443.       case @parameters[2]
  444.       when 0  # 代入
  445.         $game_variables[i] = value
  446.       when 1  # 加法
  447.         $game_variables[i] += value
  448.       when 2  # 减法
  449.         $game_variables[i] -= value
  450.       when 3  # 乘法
  451.         $game_variables[i] *= value
  452.       when 4  # 除法
  453.         if value != 0
  454.           $game_variables[i] /= value
  455.         end
  456.       when 5  # 剩余
  457.         if value != 0
  458.           $game_variables[i] %= value
  459.         end
  460.       end
  461.       # 检查上限
  462.       if $game_variables[i] > 99999999
  463.         $game_variables[i] = 99999999
  464.       end
  465.       # 检查下限
  466.       if $game_variables[i] < -99999999
  467.         $game_variables[i] = -99999999
  468.       end
  469.     end
  470.     # 刷新地图
  471.     $game_map.need_refresh = true
  472.     # 继续
  473.     return true
  474.   end
  475. end  
复制代码
我想不会有冲突吧。没人涉及这一块
如果觉得有什么东西还能扩充,不要吝啬告诉我
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
394 小时
注册时间
2007-4-2
帖子
954
2
发表于 2009-1-7 00:21:48 | 只看该作者
事件完全可以用脚本代替。。还用变量作甚?{/gg}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
3
发表于 2009-1-7 00:59:18 | 只看该作者
以下引用纯子于2009-1-6 16:21:48的发言:

事件完全可以用脚本代替。。还用变量作甚?


  好多人都不喜欢用脚本的。针对这个软件来说:用事件做出华丽的效果,绝对比用脚本做出的同样效果,感觉上过瘾一些。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

4
发表于 2009-1-7 01:27:48 | 只看该作者
对我来说真的是很有用。{/qiang}
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
5
 楼主| 发表于 2009-1-7 03:19:32 | 只看该作者
ad
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

lov Peii 4ever

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-10-28
帖子
423
6
发表于 2009-1-7 05:12:41 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
87 小时
注册时间
2006-1-3
帖子
227
7
发表于 2009-1-7 07:47:52 | 只看该作者
好象不错,对我来说蛮有用的,不过如果知道脚本怎么写就可能没用了。。
感谢楼主~
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
8
 楼主| 发表于 2009-1-8 05:06:02 | 只看该作者
最近发现还有些可以扩充的

就是事件编号,不过那个,有人需要了在解决
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1323
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
9
 楼主| 发表于 2009-1-9 00:19:38 | 只看该作者
{/lh}昨天才学会方法别名
今天正好发现跟得失物品提升有冲突
,调和了一下,这个得放到得失物品提升后面
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
301
在线时间
573 小时
注册时间
2005-10-27
帖子
1164
10
发表于 2009-1-9 02:14:47 | 只看该作者
这个还算实用吧{/cy}
认真地猥琐,猥琐地认真
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 10:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表