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

Project1

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

夜想曲的事件問題

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2006-5-22
帖子
35
跳转到指定楼层
1
发表于 2008-11-1 21:43:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
各位有用過夜想曲這個範例遊戲的高手們。

我發現使用了夜想曲的範例腳本後,無法在怪物的事件開始出現裡加上開關。

然後也沒辦法在事件頁面加上開關,也是會有問題。

也就是說如果我想要設個開關,開關開啟後怪物才出現的話,是做不到的,會發生錯誤。

還有事件頁裡也無法加入註釋。加了註釋的話,也會發生錯誤。


是否可以有辦法解決呢?


此贴于 2008-11-2 12:51:58 被版主darkten提醒,请楼主看到后对本贴做出回应。
此贴于 2008-11-5 11:44:56 被版主darkten提醒,请楼主看到后对本贴做出回应。
此贴于 2008-11-9 10:59:32 被版主darkten提醒,请楼主看到后对本贴做出回应。
此贴于 2008-11-12 15:12:52 被版主darkten提醒,请楼主看到后对本贴做出回应。
『幻影新世紀』-台灣RPG製作交流網站。 http://www.50rpg.com/
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
2 小时
注册时间
2008-9-20
帖子
72
2
发表于 2008-11-1 22:30:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2006-5-22
帖子
35
3
 楼主| 发表于 2008-11-2 20:57:04 | 只看该作者
那有誰會修改腳本呢?如果沒人會改就算了。

還有啊。我發現夜想曲裡,沒有金錢視窗的顯示。是否可以把金錢顯示在狀態的視窗裡呢?

或是按某鍵就能呼叫金錢視窗。可以教我怎麼弄嗎。

『幻影新世紀』-台灣RPG製作交流網站。 http://www.50rpg.com/
回复 支持 反对

使用道具 举报

Lv3.寻梦者

永久的旅行者

梦石
1
星屑
110
在线时间
404 小时
注册时间
2006-12-13
帖子
3091

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

4
发表于 2008-11-4 18:59:24 | 只看该作者
以下引用fgsky于2008-11-2 12:57:04的发言:

那有誰會修改腳本呢?如果沒人會改就算了。

還有啊。我發現夜想曲裡,沒有金錢視窗的顯示。是否可以把金錢顯示在狀態的視窗裡呢?

或是按某鍵就能呼叫金錢視窗。可以教我怎麼弄嗎。
应该是没有人会改这个脚本的...

至于那个金钱窗口,应该可以使用 地图显示变量脚本 来实现效果...
你再主站搜索“变量”应该可以找得到...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
5
发表于 2008-11-4 20:39:44 | 只看该作者
楼上结论好武断~~

开关判断事件出现是没有问题的
因为怪物属性都是用注释写的,注意Game_Event读取事件页信息那里
如果你有注释,但是注释的行数不对,会出错.请注意(默认好像是读取前21行,就是如果有注释,前21行必须都为注释,不然就出错)

想改的友善点,可以修改读取事件页信息的相关代码
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2006-5-22
帖子
35
6
 楼主| 发表于 2008-11-5 21:00:30 | 只看该作者
謝謝二位的回答。但hitlerson大大說開關判斷事件出現是沒有問題的。可是我在怪物的事件頁裡設了開關後,就是會發生錯誤。

然後我之所以想要在事件頁裡加上註釋,是想要使用美觀的小地圖腳本。這個腳本需要在事件頁裡加上註釋才能有效果。
『幻影新世紀』-台灣RPG製作交流網站。 http://www.50rpg.com/
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
7
发表于 2008-11-6 18:55:47 | 只看该作者
你贴个夜想曲 Game_Event的脚本来,我没XP.是下面那个他改过的event
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2006-5-22
帖子
35
8
 楼主| 发表于 2008-11-7 05:12:40 | 只看该作者
我不知道你要我貼什麼腳本,那我就貼怪物事件頁裡的內容,

事件第一頁就是:

註釋:@hp = 120
@sp = 40
@atk = 8
@pdef = 5
@mdef = 1
@exp = 5
@str = 5
@dex = 4
@agi = 3
@int = 5


我如果在事件開始條件設定開關的話,就會跟arpg_battle腳本發生問題。

  1. #==============================================================================
  2. # ■ ARPG_BATTLE
  3. #------------------------------------------------------------------------------
  4. #  處理ARPG 戰鬥的類。
  5. #  如果事件的第一個內容是註釋的話就會被認為是敵人....所以如果只是NPC的話~
  6. #  事件的內容的第一行一定不能是註釋``不然會有一大堆問題-________-~||||
  7. #==============================================================================
  8. class ARPG_BATTLE
  9.   HP_BAR_DISP_TIME = 50 # 敵人血條消失時間
  10.   ENEMY_HP = 1 # 敵人回血的技能ID #-___-無視這個`要敵人會加血的話直接在敵人的技能數組裡加上恢復HP的技能就好了``
  11.   YC = false # 敵人被攻擊是否增加延遲
  12.   KEYS = {
  13.   "A"=>$R_Key_A,
  14.   "S"=>$R_Key_S,
  15.   "D"=>$R_Key_D,
  16.   "F"=>$R_Key_F,
  17.   "G"=>$R_Key_G}#Kboard.trigger?
  18.   LVUP_ME = "Audio/ME/OS_13.wav" # 升級音效
  19.   $refresh = {} # 全局化一個刷新列表
  20.   #--------------------------------------------------------------------------
  21.   # ● 初始化對像
  22.   #--------------------------------------------------------------------------
  23.   def initialize
  24.     @actor = $game_party.actors[0]
  25.     @x = $game_player.x
  26.     @y = $game_player.y
  27.     @d = $game_player.direction
  28.     # 血條消失的時間
  29.     @hp_disp_time = 0
  30.     # 攻擊延遲
  31.     @actor_atktime = 0
  32.     #
  33.     @bullets = []
  34.     # 敵人攻擊延遲
  35.     # 事件ID->延遲時間
  36.     @event_atk = {}
  37.     for event in $game_map.events.values
  38.       next if !event.is_enemy?
  39.       @event_atk[event.id] = 0
  40.     end
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 釋放
  44.   #--------------------------------------------------------------------------
  45.   def dispose
  46.     @sprite.dispose if [email protected]?
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 刷新
  50.   #--------------------------------------------------------------------------
  51.   def update
  52.     if @hp_disp_time >= 0
  53.       @hp_disp_time -= 1
  54.       if @hp_disp_time <= 0
  55.         @attev = nil
  56.       end
  57.     end
  58.     if @actor_atktime > 0
  59.       @actor_atktime -= 1
  60.     end
  61.     update_actor
  62.     update_event
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 刷新事件
  66.   #--------------------------------------------------------------------------
  67.   def update_event
  68.     for event in $game_map.events.values
  69.       next if !event.is_enemy?
  70.       if @event_atk[event.id] > 0
  71.         @event_atk[event.id] -= 1
  72.       end
  73.       new_x = event.x + (event.direction == 6 ? 1 : event.direction == 4 ? -1 : 0)
  74.       new_y = event.y + (event.direction == 2 ? 1 : event.direction == 8 ? -1 : 0)
  75.       if event.hp <= event.maxhp*0.4 and rand(101)>100-event.escape_rand and event.escape? and event.sp >= $game_skills[ENEMY_HP].sp_cost
  76.         if (event.x - $game_player.x).abs < 64 and
  77.           (event.y - $game_player.y).abs < 64
  78.           for i in 0..randg(2,3)
  79.             break if rand(100) < 10
  80.             event.move_away_from_player
  81.           end
  82.         end
  83.         damage_skill_enemy(event, $game_skills[ENEMY_HP])
  84.         break
  85.       end
  86.       if new_x == @x and new_y == @y and @event_atk[event.id] <= 0
  87.         if event.skill.size > 0 and rand(101)>100-event.skill_rand
  88.           skill = event.skill[rand(event.skill.size)]
  89.           damage_skill_enemy(event, $game_skills[skill])
  90.           break
  91.         end
  92.         dagame_acon_actor(@actor,event_damage(event,@actor),event.animation2_id,event)
  93.         break
  94.       end
  95.     end
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 判斷可否移動
  99.   #--------------------------------------------------------------------------
  100.   def move?
  101.     if @actor.states.size == 0
  102.       return true
  103.     end
  104.     for i in @actor.states
  105.       if $data_states[i].restriction == 4
  106.         return false
  107.       end
  108.     end
  109.     return true
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 是否可以用技能
  113.   #--------------------------------------------------------------------------
  114.   def skill?
  115.     if @actor.states.size == 0
  116.       return true
  117.     end
  118.     for i in @actor.states
  119.       if $data_states[i].restriction == 1
  120.         return false
  121.       end
  122.     end
  123.     return true
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 刷新角色
  127.   #--------------------------------------------------------------------------
  128.   def update_actor
  129.     refresh(0) if @x != $game_player.x
  130.     refresh(1) if @y != $game_player.y
  131.     refresh(2) if @d != $game_player.direction
  132.     update_actor_attk if move?
  133.     update_actor_skill if move? and skill?
  134.     update_actor_item
  135.     update_bullet if @bullets.size > 0
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   # ● 刷按下物品鍵時
  139.   #--------------------------------------------------------------------------
  140.   def update_actor_item
  141.     if Kboard.trigger?($R_Key_Z)
  142.       item = $data_items[@actor.item_key["Z"]]
  143.       return if item.nil?
  144.       item_effect(item)
  145.       if item.common_event_id > 0
  146.         $game_temp.common_event_id = item.common_event_id
  147.       end
  148.     end
  149.     if Kboard.trigger?($R_Key_X)
  150.       item = $data_items[@actor.item_key["X"]]
  151.       return if item.nil?
  152.       item_effect(item)
  153.       if item.common_event_id > 0
  154.         $game_temp.common_event_id = item.common_event_id
  155.       end
  156.     end
  157.     if Kboard.trigger?($R_Key_C)
  158.       item = $data_items[@actor.item_key["C"]]
  159.       return if item.nil?
  160.       item_effect(item)
  161.       if item.common_event_id > 0
  162.         $game_temp.common_event_id = item.common_event_id
  163.       end
  164.     end
  165.     if Kboard.trigger?($R_Key_V)
  166.       item = $data_items[@actor.item_key["V"]]
  167.       return if item.nil?
  168.       item_effect(item)
  169.       if item.common_event_id > 0
  170.         $game_temp.common_event_id = item.common_event_id
  171.       end
  172.     end
  173.     def item_effect(item)
  174.       damage = @actor.item_effect(item)
  175.       $game_player.animation_id = item.animation2_id
  176.       $game_system.se_play(item.menu_se)
  177.       if item.consumable
  178.         $game_party.lose_item(item.id,1)
  179.       end      
  180.       $refresh["item"] = true
  181.     end
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 刷新按下技能鍵時
  185.   #--------------------------------------------------------------------------
  186.   def update_actor_skill
  187.       if @actor_atktime <= 0
  188.        if Kboard.trigger?(KEYS["A"])
  189.         skill = $game_skills[@actor.key["A"]]
  190.         return if skill.nil?
  191.         if skill.scope == 2
  192.           rangs = ARPG_Rangs.new($game_player, skill.rang).rangs
  193.           damage_skill(@actor, skill, rangs, skill.dop?)
  194.         elsif skill.scope == 1 or skill.scope == 3
  195.           damage_skill(@actor, skill)
  196.            $game_temp.common_event_id = skill.common_event_id
  197.         end
  198.       end
  199.       if Kboard.trigger?(KEYS["S"])
  200.         skill = $game_skills[@actor.key["S"]]
  201.         return if skill.nil?
  202.         if skill.scope == 2
  203.           rangs = ARPG_Rangs.new($game_player, skill.rang).rangs
  204.           damage_skill(@actor, skill, rangs,skill.dop?)
  205.         elsif skill.scope == 1 or skill.scope == 3
  206.           damage_skill(@actor, skill)
  207.            $game_temp.common_event_id = skill.common_event_id
  208.         end
  209.       end
  210.       if Kboard.trigger?(KEYS["D"])
  211.         skill = $game_skills[@actor.key["D"]]
  212.         return if skill.nil?
  213.         if skill.scope == 2
  214.           rangs = ARPG_Rangs.new($game_player, skill.rang).rangs
  215.           damage_skill(@actor, skill, rangs,skill.dop?)
  216.         elsif skill.scope == 1 or skill.scope == 3
  217.           damage_skill(@actor, skill)
  218.            $game_temp.common_event_id = skill.common_event_id
  219.         end
  220.       end
  221.       if Kboard.trigger?(KEYS["F"])
  222.         skill = $game_skills[@actor.key["F"]]
  223.         return if skill.nil?
  224.         if skill.scope == 2
  225.           rangs = ARPG_Rangs.new($game_player, skill.rang).rangs
  226.           damage_skill(@actor, skill, rangs,skill.dop?)
  227.         elsif skill.scope == 1 or skill.scope == 3
  228.           damage_skill(@actor, skill)
  229.            $game_temp.common_event_id = skill.common_event_id
  230.         end
  231.       end
  232.       if Kboard.trigger?(KEYS["G"])
  233.         skill = $game_skills[@actor.key["G"]]
  234.         return if skill.nil?
  235.         if skill.scope == 2
  236.           rangs = ARPG_Rangs.new($game_player, skill.rang).rangs
  237.           damage_skill(@actor, skill, rangs,skill.dop?)
  238.         elsif skill.scope == 1 or skill.scope == 3
  239.           damage_skill(@actor, skill)
  240.            $game_temp.common_event_id = skill.common_event_id
  241.         end
  242.       end
  243.   end
  244. end
  245.   #--------------------------------------------------------------------------
  246.   # ● 刷新角色普通攻擊行為
  247.   #--------------------------------------------------------------------------
  248.   def update_actor_attk
  249.     # C按下時
  250.     if ((Kboard.trigger?($R_Key_B) or Kboard.trigger?($R_Key_RETURN)) or S[1])and @actor_atktime <= 0
  251.       if @actor.weapon_id.between?(50, 65) # and $data_weapons[@actor.weapon_id].rang >= 1
  252.         new_x = @x + (@d == 6 ? 1 : @d == 4 ? -1 : 0)
  253.         new_y = @y + (@d == 2 ? 1 : @d == 8 ? -1 : 0)
  254.         event = $game_map.events[$game_map.check_event(new_x,new_y)]
  255.         return if !event.nil? and !event.is_enemy?
  256.         rang_atk#(@actor.animation1_id)
  257.         return
  258.       end
  259.       new_x = @x + (@d == 6 ? 1 : @d == 4 ? -1 : 0)
  260.       new_y = @y + (@d == 2 ? 1 : @d == 8 ? -1 : 0)
  261.       event = $game_map.events[$game_map.check_event(new_x,new_y)]
  262.       show_ain(@actor.animation1_id,true)
  263.       if $data_weapons[@actor.weapon_id].element_set.include?(17)
  264.         tag = []
  265.         rang = ARPG_Rangs.new($game_player, 2).rangs
  266.         for xy in rang
  267.           event = $game_map.events[$game_map.check_event(xy[0],xy[1])]
  268.           if !event.nil? and event.maxhp > 0
  269.             tag.push(event)
  270.           end
  271.         end
  272.         tag.each{|t|dagame_acon(t,event_damage(@actor, t),@actor.animation2_id)}
  273.       end
  274.       if $data_weapons[@actor.weapon_id].element_set.include?(18)
  275.         tag = []
  276.         rang = ARPG_Rangs.new($game_player, 4).rangs
  277.         for xy in rang
  278.           event = $game_map.events[$game_map.check_event(xy[0],xy[1])]
  279.           if !event.nil? and event.maxhp > 0
  280.             tag.push(event)
  281.           end
  282.         end
  283.         tag.each{|t|dagame_acon(t,event_damage(@actor, t),@actor.animation2_id)}
  284.       end
  285.       if !event.nil? and event.maxhp > 0 and @actor_atktime <= 0
  286.         @attev = event
  287.         dagame_acon(event,event_damage(@actor, event),@actor.animation2_id)
  288.       end
  289.     end
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ● 刷新精靈的移動以及接觸判斷
  293.   #--------------------------------------------------------------------------
  294.   def update_bullet
  295.     for bullet in @bullets
  296.       bullet.update
  297.       case bullet.hit_event
  298.       when String
  299.         if bullet.opacity <= 10
  300.           $scene.spriteset.delete_bullet(bullet)
  301.           @bullets.delete(bullet)
  302.         end
  303.       when Game_Event
  304.         event = bullet.hit_event
  305.         next if !event.is_enemy?
  306.         @attev = event
  307.         dagame_acon(event,event_damage(@actor, event),@actor.animation2_id)
  308.         $scene.spriteset.delete_bullet(bullet)
  309.         @bullets.delete(bullet)
  310.       end
  311.     end
  312.   end
  313.   #--------------------------------------------------------------------------
  314.   # ● 生成遠程攻擊的精靈
  315.   #--------------------------------------------------------------------------
  316.   def rang_atk
  317.     bullet = ARPG_Bullet.new("Arrow", @x, @y, @d)
  318.     $scene.spriteset.add_bullet(bullet)
  319.     @bullets.push(bullet)
  320.     @actor_atktime = $data_weapons[@actor.weapon_id].time
  321.   end
  322.   #--------------------------------------------------------------------------
  323.   # ● 獲取被攻擊中的事件
  324.   #--------------------------------------------------------------------------
  325.   def target
  326.     return @attev
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● 敵人死亡處理
  330.   #--------------------------------------------------------------------------
  331.   def chae_deal(event)
  332.     if event.hp <= 0
  333.       $game_system.enemy_cun += 1
  334.       list_level = @actor.level
  335.       list_maxhp = @actor.maxhp
  336.       list_maxsp = @actor.maxsp
  337.       list_skill = @actor.skills.dup
  338.       list_hp = @actor.hp
  339.       list_sp = @actor.sp
  340.       list_str = @actor.str
  341.       list_dex = @actor.dex
  342.       list_agi = @actor.agi
  343.       list_int = @actor.int
  344.       @actor.exp += event.exp
  345.       Mess_Text.write("#{@actor.name}擊敗了#{event.name}")
  346.       Mess_Text.write("#{@actor.name}獲得#{event.exp}經驗值")
  347.       if event.item.size > 0
  348.         for item in event.item
  349.           if rand(101) > 100-item[1]
  350.             Mess_Text.write("#{event.name}掉落了#{$data_items[item[0]].name}")
  351.             $game_party.gain_item(item[0], 1)
  352.           end
  353.         end
  354.       end
  355.       if event.weapon.size > 0
  356.         for weapon in event.weapon
  357.           if rand(101) > 100-weapon[1]
  358.             Mess_Text.write("#{event.name}掉落了#{$data_weapons[weapon[0]].name}")
  359.             $game_party.gain_weapon(weapon[0], 1)
  360.           end
  361.         end
  362.       end
  363.       if event.armor.size > 0
  364.         for armor in event.armor
  365.           if rand(101) > 100-armor[1]
  366.             Mess_Text.write("#{event.name}掉落了#{$data_armors[armor[0]].name}")
  367.             $game_party.gain_armor(armor[0], 1)
  368.           end
  369.         end
  370.       end
  371.       if @actor.level > list_level
  372.         @actor.hp = list_hp
  373.         @actor.sp = list_sp
  374.         Audio.me_play(LVUP_ME)
  375.         Mess_Text.write("#{@actor.name}等級提升:")
  376.         Mess_Text.write("#{@actor.name}HP最大值 上升 #{@actor.maxhp - list_maxhp}")
  377.         Mess_Text.write("#{@actor.name}SP最大值 上升 #{@actor.maxsp - list_maxsp}")
  378.       end
  379.       ls = []
  380.       if list_skill != @actor.skills
  381.         for s in @actor.skills
  382.           if !list_skill.include?(s)
  383.             ls.push s
  384.           end
  385.         end
  386.       end
  387.       ls.each{|skill|
  388.       Mess_Text.write("#{@actor.name}領悟:#{$game_skills[skill].name}")
  389.       }
  390.       $refresh["item"] = true
  391.       delete_event(event)
  392.       @attev = nil
  393.     end
  394.   end
  395.   #--------------------------------------------------------------------------
  396.   # ●  刪除事件
  397.   #--------------------------------------------------------------------------
  398.   def delete_event(event)
  399.     # 生成獨立開關鍵
  400.     key = [$game_map.map_id, event.id, 'A']
  401.     # 更改獨立開關
  402.     $game_self_switches[key] = true
  403.     $game_map.need_refresh = true
  404.     #$game_map.events.delete(event.id)
  405.     #$scene.spriteset.dispose
  406.     #$scene.spriteset = Spriteset_Map.new
  407.   end
  408.   #--------------------------------------------------------------------------
  409.   # ● 敵人被攻擊傷害處理(也就是角色的攻擊)
  410.   #--------------------------------------------------------------------------
  411.   def dagame_acon(event,damage,ani_id)
  412.     event.hp -= damage.to_i
  413.     event.animation_id = ani_id
  414.     @hp_disp_time = HP_BAR_DISP_TIME
  415.     @actor_atktime = $data_weapons[@actor.weapon_id].time
  416.     if YC
  417.       @event_atk[event.id] = [[@event_atk[event.id]+randg(5,8), event.atk_time*3].min, 0].max
  418.     end
  419.     event.damage = damage
  420.     event.damage_pop = true
  421.     if rand(2)==1
  422.       #event.turn_toward_player
  423.       if randg(1,4) == 2
  424.         @event_atk[event.id] += randg(5,8)
  425.       end
  426.     end
  427.     if event.move_type == 1
  428.       event.move_type = 2
  429.       event.move_speed = 3
  430.       event.move_frequency = 6
  431.     end
  432.    
  433.     if event.damage == "Miss"
  434.       Mess_Text.write("#{event.name}沒有受到傷害")
  435.     else
  436.       Mess_Text.write("#{event.name}受到了#{event.damage}點傷害")
  437.     end
  438.    

  439.     chae_deal(event)
  440.     if $game_party.all_dead?
  441.       $scene = Scene_Gameover.new
  442.     end
  443.   end
  444.   #--------------------------------------------------------------------------
  445.   # ● 角色被攻擊傷害處理(也就是敵人的攻擊)
  446.   #--------------------------------------------------------------------------
  447.   def dagame_acon_actor(actor,damage,ani_id,event)
  448.     event.white_flash = true
  449.     actor.hp -= damage.to_i
  450.     if YC
  451.       @actor_atktime = [[@actor_atktime+randg(5,8), $data_weapons[@actor.weapon_id].time*3].min, 0].max
  452.     end
  453.    
  454.     if event.attk_states[0] > 0 and rand(100) > 100-event.attk_states[1]
  455.       unless @actor.state_guard?(event.attk_states[0])
  456.         @actor.add_state(event.attk_states[0])
  457.       end
  458.     end
  459.    
  460.     $game_player.animation_id = ani_id
  461.     @event_atk[event.id] = event.atk_time
  462.     $game_player.damage = damage
  463.     $game_player.damage_pop = true
  464.    
  465.     if damage != "Miss"
  466.       Mess_Text.write("#{@actor.name}受到了#{$game_player.damage}點傷害")
  467.     else
  468.       Mess_Text.write("#{actor.name}沒有受到傷害")
  469.     end
  470.    
  471.     if $game_party.all_dead?
  472.       $scene = Scene_Gameover.new
  473.     end
  474.   end
  475.   #--------------------------------------------------------------------------
  476.   # ● 敵人使用技能處理
  477.   #--------------------------------------------------------------------------
  478.   def damage_skill_enemy(user, skill, skill_rang=[])
  479.     return if user.sp < skill.sp_cost
  480.     if skill.scope == 1 or skill.scope == 2
  481.       user.animation_id = skill.animation1_id
  482.       Mess_Text.write("#{user.name}使用了#{skill.name}")
  483.       damage = event_damage_skill(user,@actor,skill)
  484.       dagame_acon_actor(@actor,damage,skill.animation2_id,user)
  485.       user.sp -= skill.sp_cost
  486.     elsif skill.scope == 3
  487.       user.animation_id = skill.animation1_id
  488.       user.animation_id = skill.animation2_id
  489.       #damage = event_damage(user,user)
  490.       damage = event_damage_skill(user,user,skill)
  491.       user.hp -= damage.to_i
  492.       user.sp -= skill.sp_cost
  493.       @event_atk[user.id] = user.atk_time
  494.       Mess_Text.write("#{user.name}使用了#{skill.name}恢復了#{damage.abs}HP")
  495.      end
  496.    end
  497.   #--------------------------------------------------------------------------
  498.   # ● 角色使用技能處理
  499.   #--------------------------------------------------------------------------
  500.   def damage_skill(user, skill, skill_rang=[],d = false)
  501.     if user.sp < skill.sp_cost
  502.       Mess_Text.write("SP不足")
  503.       return
  504.     end
  505.     if skill.scope == 1     
  506.       new_x = @x + (@d == 6 ? 1 : @d == 4 ? -1 : 0)
  507.       new_y = @y + (@d == 2 ? 1 : @d == 8 ? -1 : 0)
  508.       event = $game_map.events[$game_map.check_event(new_x,new_y)]
  509.       if !event.nil? and event.maxhp > 0 and @actor_atktime <= 0
  510.         Mess_Text.write("#{user.name}使用了#{skill.name}")
  511.         @attev = event
  512.         $game_player.animation_id = skill.animation1_id
  513.         damage = event_damage_skill(user, event, skill)
  514.         dagame_acon(event,damage,skill.animation2_id)
  515.         user.sp -= skill.sp_cost
  516.         @actor_atktime = skill.time
  517.         $game_skills[skill.id].exp += (damage/5).abs+(randg(damage*0.8,damage*1.2)/10)
  518.       end   
  519.     elsif skill.scope == 2
  520.       tag = []
  521.       for xy in skill_rang
  522.         event = $game_map.events[$game_map.check_event(xy[0],xy[1])]
  523.         if !event.nil? and event.maxhp > 0
  524.           tag.push(event)
  525.         end
  526.       end
  527.       if tag.size == 0
  528.         show_ain(skill.animation1_id ,d)
  529.         user.sp -= skill.sp_cost
  530.         @actor_atktime = skill.time#$data_weapons[@actor.weapon_id].time
  531.         return
  532.       end
  533.       Mess_Text.write("#{user.name}使用了#{skill.name}")
  534.       for e in tag
  535.         @attev = e
  536.         damage = event_damage_skill(user, e, skill)
  537.         dagame_acon(e,damage,skill.animation2_id)
  538.         @hp_disp_time = 0 if tag.size > 1
  539.       end
  540.       show_ain(skill.animation1_id,d)
  541.       @actor_atktime = skill.time
  542.       if tag != []
  543.         user.sp -= skill.sp_cost
  544.         $game_skills[skill.id].exp += (damage/5).abs+(randg(damage*0.8,damage*1.2)/10)
  545.       end
  546.     elsif skill.scope == 3
  547.       $game_player.animation_id = skill.animation1_id
  548.       $game_player.animation_id = skill.animation2_id
  549.       damage = @actor.skill_effect(@actor,skill)#event_damage_skill(user, @actor, skill)
  550.       #user.hp -= damage
  551.       #user.sp -= skill.sp_cost
  552.       $game_player.damage = damage.to_i
  553.       $game_player.damage_pop = true
  554.       #Mess_Text.write("#{user.name}使用了#{skill.name}恢復了#{damage.abs}HP")
  555.       @actor_atktime = skill.time#$data_weapons[@actor.weapon_id].time
  556.     end
  557.   end
  558.   #--------------------------------------------------------------------------
  559.   # ● 獲取普通攻擊傷害
  560.   #--------------------------------------------------------------------------
  561.   def event_damage(attk,event)
  562.     hit_result = (rand(100) < attk.hit)
  563.     if hit_result
  564.       atk = [attk.atk - event.pdef / 2, 0].max
  565.       damage = atk * (20 + attk.str) / 20
  566.       amp = [damage.abs * 15 / 100, 1].max
  567.       damage += rand(amp+1) + rand(amp+1) - amp
  568.       damage = damage.abs
  569.       
  570.       if attk.plus_state_set.size > 0
  571.         if rand(100) > randg(85,100)
  572.           event.add_state(attk.plus_state_set[0])
  573.         end
  574.       end
  575.    
  576.     else
  577.       damage = "Miss"
  578.     end
  579.     return damage
  580.   end
  581.   #--------------------------------------------------------------------------
  582.   # ● 獲取技能攻擊傷害
  583.   #--------------------------------------------------------------------------
  584.   def event_damage_skill(user,event,skill)
  585.     # 計算威力
  586.     power = skill.power + user.atk * skill.atk_f / 100
  587.     if power > 0
  588.       power -= event.pdef * skill.pdef_f / 200
  589.       power -= event.mdef * skill.mdef_f / 200
  590.       power = [power, 0].max
  591.     end
  592.     # 計算倍率
  593.     rate = 20
  594.     rate += (user.str * skill.str_f / 100)
  595.     rate += (user.dex * skill.dex_f / 100)
  596.     rate += (user.agi * skill.agi_f / 100)
  597.     rate += (user.int * skill.int_f / 100)
  598.     # 計算基本傷害
  599.     damage = power * rate / 20
  600.     # 分散
  601.       if skill.variance > 0 and damage.abs > 0
  602.         amp = [damage.abs * skill.variance / 100, 1].max
  603.         damage += rand(amp+1) + rand(amp+1) - amp
  604.       end
  605.       if skill.plus_state_set.size > 0
  606.         if rand(100) > 100-rand(skill.hit)
  607.           event.add_state(skill.plus_state_set[0])
  608.         end
  609.       end
  610.     return damage
  611.   end
  612.   #--------------------------------------------------------------------------
  613.   # ● 更新一下坐標
  614.   #--------------------------------------------------------------------------
  615.   def refresh(type)
  616.     case type
  617.     when 0 then @x = $game_player.x
  618.     when 1 then @y = $game_player.y
  619.     when 2 then @d = $game_player.direction
  620.     end
  621.   end
  622.   #--------------------------------------------------------------------------
  623.   # ● 角色顯示動畫#skill.animation1_id
  624.   #--------------------------------------------------------------------------
  625.   def show_ain(ain_id,d)
  626.     if d
  627.     case @d
  628.     when 2 then $game_player.animation_id = ain_id
  629.     when 4 then $game_player.animation_id = ain_id + 1
  630.     when 6 then $game_player.animation_id = ain_id + 2
  631.     when 8 then $game_player.animation_id = ain_id + 3
  632.     end
  633.     else
  634.       $game_player.animation_id = ain_id
  635.     end
  636.   end
  637. end
复制代码


貼個圖:

『幻影新世紀』-台灣RPG製作交流網站。 http://www.50rpg.com/
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
9
发表于 2008-11-9 00:28:38 | 只看该作者
{/pz}game_event 不是这个{/ruo}
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2006-5-22
帖子
35
10
 楼主| 发表于 2008-11-9 03:30:25 | 只看该作者
不好意思,之前貼錯腳本。不過發生問題時確實是跟arpg_battle這個有關。呵呵。


下面這個就是你要的腳本。



  1. #==============================================================================
  2. # ■ Game_Event
  3. #------------------------------------------------------------------------------
  4. #  处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能
  5. # 在 Game_Map 类的内部使用。
  6. #==============================================================================
  7. class Game_Event < Game_Character
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :name                     # 事件的名字
  12.   attr_reader   :trigger                  # 目标
  13.   attr_reader   :list                     # 执行内容
  14.   attr_reader   :starting                 # 启动中标志
  15.   attr_reader   :hp                       # HP
  16.   attr_reader   :sp                       # SP
  17.   attr_reader   :atk                      # 攻击力
  18.   attr_reader   :pdef                     # 防御力
  19.   attr_reader   :mdef                     # 魔御力
  20.   attr_reader   :exp                      # 经验
  21.   attr_reader   :animation2_id            # 攻击动画
  22.   attr_reader   :skill_rand               # 使用技能几率
  23.   attr_reader   :escape_rand              # 逃跑几率
  24.   attr_reader   :atk_time                 # 攻击延迟时间
  25.   attr_reader   :skill                    # 技能
  26.   attr_reader   :item                     # 会掉落的物品
  27.   attr_reader   :weapon                   # 会掉落的武器
  28.   attr_reader   :armor                    # 会掉落的防具
  29.   attr_reader   :attk_states              # 攻击所附加的状态
  30.   attr_reader   :states                   # 状态
  31.   attr_accessor :move_type                # 移动类型
  32.   attr_accessor :move_speed               # 移动速度
  33.   attr_accessor :move_frequency           # 移动频率
  34.   attr_accessor :states_time              # 状态时间
  35.   #--------------------------------------------------------------------------
  36.   # ● 初始化对像
  37.   #     map_id : 地图 ID
  38.   #     event  : 事件 (RPG::Event)
  39.   #--------------------------------------------------------------------------
  40.   def initialize(map_id, event)
  41.     super()
  42.     @map_id = map_id
  43.     @event = event
  44.     @id = @event.id
  45.     @name = @event.name
  46.     @erased = false
  47.     @starting = false
  48.     @through = true
  49.     @hp = 0
  50.     @sp = 0
  51.     @atk = 0
  52.     @pdef = 0
  53.     @mdef = 0
  54.     @exp = 0
  55.     @escape = false
  56.     @animation2_id = 0
  57.     @skill = []
  58.     @item = []
  59.     @weapon = []
  60.     @armor = []
  61.     @states = []
  62.     @escape_rand = 0
  63.     @atk_time = 35
  64.     @attk_states = [0,0]
  65.     @states_time = {}
  66.     @plus_state_set = []
  67.     # 初期位置的移动
  68.     moveto(@event.x, @event.y)
  69.     refresh
  70.   end
  71.   def plus_state_set
  72.     return []
  73.   end
  74.   # 是否逃跑
  75.   def escape?;return @escape;end
  76.   #--------------------------------------------------------------------------
  77.   # ● 设置HP
  78.   #--------------------------------------------------------------------------
  79.   def hp=(hp)
  80.     @hp = [[hp, maxhp].min, 0].max
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 设置SP
  84.   #--------------------------------------------------------------------------
  85.   def sp=(sp)
  86.     @sp = [[sp, maxsp].min, 0].max
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 获取力量
  90.   #--------------------------------------------------------------------------
  91.   def str
  92.     n = [[@str, 1].max, 999].min
  93.     for i in @states
  94.       n *= $data_states[i].str_rate / 100.0
  95.     end
  96.     n = [[Integer(n), 1].max, 999].min
  97.     return n
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 获取灵巧
  101.   #--------------------------------------------------------------------------
  102.   def dex
  103.     n = [[@dex, 1].max, 999].min
  104.     for i in @states
  105.       n *= $data_states[i].dex_rate / 100.0
  106.     end
  107.     n = [[Integer(n), 1].max, 999].min
  108.     return n
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 获取速度
  112.   #--------------------------------------------------------------------------
  113.   def agi
  114.     n = [[@agi, 1].max, 999].min
  115.     for i in @states
  116.       n *= $data_states[i].agi_rate / 100.0
  117.     end
  118.     n = [[Integer(n), 1].max, 999].min
  119.     return n
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 获取魔力
  123.   #--------------------------------------------------------------------------
  124.   def int
  125.     n = [[@int, 1].max, 999].min
  126.     for i in @states
  127.       n *= $data_states[i].int_rate / 100.0
  128.     end
  129.     n = [[Integer(n), 1].max, 999].min
  130.     return n
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 获取攻击力
  134.   #--------------------------------------------------------------------------
  135.   def atk
  136.     n = @atk
  137.     for i in @states
  138.       n *= $data_states[i].atk_rate / 100.0
  139.     end
  140.     return Integer(n)
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 获取物理防御
  144.   #--------------------------------------------------------------------------
  145.   def pdef
  146.     n = @pdef
  147.     for i in @states
  148.       n *= $data_states[i].pdef_rate / 100.0
  149.     end
  150.     return Integer(n)
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 获取魔法防御
  154.   #--------------------------------------------------------------------------
  155.   def mdef
  156.     n = @mdef
  157.     for i in @states
  158.       n *= $data_states[i].mdef_rate / 100.0
  159.     end
  160.     return Integer(n)
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● 获取回避修正
  164.   #--------------------------------------------------------------------------
  165.   def eva
  166.     n = @eva
  167.     for i in @states
  168.       n += $data_states[i].eva
  169.     end
  170.     return n
  171.   end
  172. =begin   
  173.   #--------------------------------------------------------------------------
  174.   # ● 获取最大HP
  175.   #--------------------------------------------------------------------------
  176.   def maxhp
  177.     if !@erased and @list[0].code == 108
  178.       return @maxhp
  179.     else
  180.       return 0
  181.     end
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 获取最大SP
  185.   #--------------------------------------------------------------------------
  186.   def maxsp
  187.     if !@erased and @list[0].code == 108
  188.       return @maxsp
  189.     else
  190.       return 0
  191.     end
  192.   end
  193. =end  
  194.   #--------------------------------------------------------------------------
  195.   # ● 获取 MaxHP
  196.   #--------------------------------------------------------------------------
  197.   def maxhp
  198.     if !is_enemy?
  199.       return 0
  200.     end
  201.     n = @maxhp
  202.     for i in @states
  203.       n *= $data_states[i].maxhp_rate / 100.0
  204.     end
  205.     n = [[Integer(n), 1].max, 999999].min
  206.     return n
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 获取 MaxHP
  210.   #--------------------------------------------------------------------------
  211.   def maxsp
  212.     if !is_enemy?
  213.       return 0
  214.     end
  215.     n = @maxsp
  216.     for i in @states
  217.       n *= $data_states[i].maxsp_rate / 100.0
  218.     end
  219.     n = [[Integer(n), 1].max, 999999].min
  220.     return n
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ● 获取命中率
  224.   #--------------------------------------------------------------------------
  225.   def hit
  226.     n = 100
  227.     for i in @states
  228.       n *= $data_states[i].hit_rate / 100.0
  229.     end
  230.     return Integer(n)
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 是否敌人
  234.   #--------------------------------------------------------------------------
  235.   def is_enemy?
  236.     if !@erased and [email protected]? and @list[0].code == 108
  237.       return true
  238.     else
  239.       return false
  240.     end
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 全恢复
  244.   #--------------------------------------------------------------------------
  245.   def recover_all
  246.     @hp = maxhp
  247.     @sp = maxsp
  248.     @states = []
  249.     @states_time = {}
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # ● 获取状态动画ID
  253.   #--------------------------------------------------------------------------
  254.   def state_animation_id
  255.     if @states.size == 0 or @erased or maxhp == 0
  256.       return 0
  257.     end
  258.     return $data_states[@states[0]].animation_id
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ● 判断状态 [连续伤害]
  262.   #--------------------------------------------------------------------------
  263.   def slip_damage?
  264.     for i in @states
  265.       if $data_states[i].slip_damage
  266.         return true
  267.       end
  268.     end
  269.     return false
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● 附加状态
  273.   #     
  274.   #--------------------------------------------------------------------------
  275.   def add_state(state_id, force = false)
  276.     # 无效状态的情况下
  277.     if $data_states[state_id] == nil
  278.       # 过程结束
  279.       return
  280.     end
  281.     # 无法附加本状态的情况下
  282.     unless @states.include?(state_id)
  283.       # 状态 ID 追加到 @states 序列中
  284.       @states.push(state_id)
  285.       @states_time[state_id] = $data_states[state_id].hold_turn
  286.     end
  287.     # 检查 HP 及 SP 的最大值
  288.     @hp = [@hp, maxhp].min
  289.     @sp = [@sp, maxsp].min
  290.     $refresh["enemy_states"] = true
  291.   end
  292.   #--------------------------------------------------------------------------
  293.   # ● 清除移动中标志
  294.   #--------------------------------------------------------------------------
  295.   def clear_starting
  296.     @starting = false
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ● 越过目标判定 (不能将相同位置作为启动条件)
  300.   #--------------------------------------------------------------------------
  301.   def over_trigger?
  302.     # 图形是角色、没有开启穿透的情况下
  303.     if @character_name != "" and not @through
  304.       # 启动判定是正面
  305.       return false
  306.     end
  307.     # 地图上的这个位置不能通行的情况下
  308.     unless $game_map.passable?(@x, @y, 0)
  309.       # 启动判定是正面
  310.       return false
  311.     end
  312.     # 启动判定在同位置
  313.     return true
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● 启动事件
  317.   #--------------------------------------------------------------------------
  318.   def start
  319.     # 执行内容不为空的情况下
  320.     if @list.size > 1 and !self.is_enemy?
  321.       @starting = true
  322.     end
  323.   end
  324.   #--------------------------------------------------------------------------
  325.   # ● 暂时消失
  326.   #--------------------------------------------------------------------------
  327.   def erase
  328.     @erased = true
  329.     refresh
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● 暂时消失?
  333.   #--------------------------------------------------------------------------
  334.   def erase?
  335.     return @erased
  336.   end
  337.   #--------------------------------------------------------------------------
  338.   # ● 刷新
  339.   #--------------------------------------------------------------------------
  340.   def refresh
  341.     # 初始化本地变量 new_page
  342.     new_page = nil
  343.     # 无法暂时小时的情况下
  344.     unless @erased
  345.       # 从编号大的事件页按顺序调查
  346.       for page in @event.pages.reverse
  347.         # 可以参考事件条件 c
  348.         c = page.condition
  349.         # 确认开关条件 1
  350.         if c.switch1_valid
  351.           if $game_switches[c.switch1_id] == false
  352.             next
  353.           end
  354.         end
  355.         # 确认开关条件 2
  356.         if c.switch2_valid
  357.           if $game_switches[c.switch2_id] == false
  358.             next
  359.           end
  360.         end
  361.         # 确认变量条件
  362.         if c.variable_valid
  363.           if $game_variables[c.variable_id] < c.variable_value
  364.             next
  365.           end
  366.         end
  367.         # 确认独立开关条件
  368.         if c.self_switch_valid
  369.           key = [@map_id, @event.id, c.self_switch_ch]
  370.           if $game_self_switches[key] != true
  371.             next
  372.           end
  373.         end
  374.         # 设置本地变量 new_page
  375.         new_page = page
  376.         # 放弃循环
  377.         break
  378.       end
  379.     end
  380.     # 与上次同一事件页的情况下
  381.     if new_page == @page
  382.       # 过程结束
  383.       return
  384.     end
  385.     # @page 设置为现在的事件页
  386.     @page = new_page
  387.     # 清除启动中标志
  388.     clear_starting
  389.     # 没有满足条件的页面的时候
  390.     if @page == nil
  391.       # 设置各实例变量
  392.       @tile_id = 0
  393.       @character_name = ""
  394.       @character_hue = 0
  395.       @move_type = 0
  396.       @through = true
  397.       @trigger = nil
  398.       @list = nil
  399.       @interpreter = nil
  400.       # 过程结束
  401.       return
  402.     end
  403.     # 设置各实例变量
  404.     @tile_id = @page.graphic.tile_id
  405.     @character_name = @page.graphic.character_name
  406.     @character_hue = @page.graphic.character_hue
  407.     if @original_direction != @page.graphic.direction
  408.       @direction = @page.graphic.direction
  409.       @original_direction = @direction
  410.       @prelock_direction = 0
  411.     end
  412.     if @original_pattern != @page.graphic.pattern
  413.       @pattern = @page.graphic.pattern
  414.       @original_pattern = @pattern
  415.     end
  416.     @opacity = @page.graphic.opacity
  417.     @blend_type = @page.graphic.blend_type
  418.     @move_type = @page.move_type
  419.     @move_speed = @page.move_speed
  420.     @move_frequency = @page.move_frequency
  421.     @move_route = @page.move_route
  422.     @move_route_index = 0
  423.     @move_route_forcing = false
  424.     @walk_anime = @page.walk_anime
  425.     @step_anime = @page.step_anime
  426.     @direction_fix = @page.direction_fix
  427.     @through = @page.through
  428.     @always_on_top = @page.always_on_top
  429.     @trigger = @page.trigger
  430.     @list = @page.list
  431.     @interpreter = nil
  432.     if @list[0].code == 108
  433.       @maxhp = eval @list[0].parameters[0]
  434.       @maxsp = eval @list[1].parameters[0]
  435.       for i in [email protected]
  436.         next if @list[i].parameters[0].nil?
  437.         eval @list[i].parameters[0]
  438.       end
  439.     end
  440.     # 目标是 [并行处理] 的情况下
  441.     if @trigger == 4
  442.       # 生成并行处理用解释器
  443.       @interpreter = Interpreter.new
  444.     end
  445.     # 自动事件启动判定
  446.     check_event_trigger_auto
  447.   end
  448.   #--------------------------------------------------------------------------
  449.   # ● 接触事件启动判定
  450.   #--------------------------------------------------------------------------
  451.   def check_event_trigger_touch(x, y)
  452.     # 事件执行中的情况下
  453.     if $game_system.map_interpreter.running?
  454.       return
  455.     end
  456.     # 目标为 [与事件接触] 以及和主角坐标一致的情况下
  457.     if @trigger == 2 and x == $game_player.x and y == $game_player.y
  458.       # 除跳跃中以外的情况、启动判定就是正面的事件
  459.       if not jumping? and not over_trigger?
  460.         start
  461.       end
  462.     end
  463.   end
  464.   #--------------------------------------------------------------------------
  465.   # ● 自动事件启动判定
  466.   #--------------------------------------------------------------------------
  467.   def check_event_trigger_auto
  468.     # 目标为 [与事件接触] 以及和主角坐标一致的情况下
  469.     if @trigger == 2 and @x == $game_player.x and @y == $game_player.y
  470.       # 除跳跃中以外的情况、启动判定就是同位置的事件
  471.       if not jumping? and over_trigger?
  472.         start
  473.       end
  474.     end
  475.     # 目标是 [自动执行] 的情况下
  476.     if @trigger == 3
  477.       start
  478.     end
  479.   end
  480.   #--------------------------------------------------------------------------
  481.   # ● 更新画面
  482.   #--------------------------------------------------------------------------
  483.   def update
  484.     super
  485.     # 自动启动事件判定
  486.     check_event_trigger_auto
  487.     # 并行处理有效的情况下
  488.     if @interpreter != nil
  489.       # 不在执行中的场合的情况下
  490.       unless @interpreter.running?
  491.         # 设置事件
  492.         @interpreter.setup(@list, @event.id)
  493.       end
  494.       # 更新解释器
  495.       @interpreter.update
  496.     end
  497.   end
  498. end
复制代码

『幻影新世紀』-台灣RPG製作交流網站。 http://www.50rpg.com/
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-21 15:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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