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

Project1

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

[已经解决] 請問能讓事件自動接觸另一個事件來引發新劇情嗎

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
461 小时
注册时间
2008-11-19
帖子
607
跳转到指定楼层
1
发表于 2012-4-9 23:30:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sai90306 于 2012-4-9 23:45 编辑

請問麼樣才能設定一個事件自動移動到另一個事件然後觸發劇情?
例如作ARPG的同伴,讓同伴自動接近敵人並且進行攻擊這樣的

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2012-4-13 12:04:09 | 只看该作者
写一个事件向事件移动的方法,然后条件分歧判断两事件的直线距离来触发事件
另外如果是做ARPG的话这些功能在ARPG系统里应该已经有设置了的

点评

我想問的就是大大說的"事件向事件移动的方法"用RMXP要怎麼寫><  发表于 2012-4-13 14:18

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

3
发表于 2012-4-13 14:02:35 | 只看该作者
本帖最后由 hys111111 于 2012-4-13 14:02 编辑

用接触事件判断……
  1. $game_map.event[@event_id]
复制代码

点评

编辑掉了,从新写一下脚本先  发表于 2012-4-13 17:47
請問能再多說明一些細節嗎? @event_id要怎麼設定?  发表于 2012-4-13 14:20
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
83 小时
注册时间
2010-8-18
帖子
50
4
发表于 2012-4-13 14:27:44 | 只看该作者
像这样的?
工程.rar (852.49 KB, 下载次数: 348)

回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
5
发表于 2012-4-13 16:47:52 | 只看该作者
本帖最后由 Wind2010 于 2012-4-13 17:11 编辑
  1. class Game_Character
  2.   def move_toward_event(event_id)
  3.     sx = @x - $game_map.events[event_id].x
  4.     sy = @y - $game_map.events[event_id].y
  5.     if sx == 0 and sy == 0
  6.       return
  7.     end
  8.     abs_sx = sx.abs
  9.     abs_sy = sy.abs
  10.     if abs_sx == abs_sy
  11.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  12.     end
  13.     if abs_sx > abs_sy
  14.       sx > 0 ? move_left : move_right
  15.       if not moving? and sy != 0
  16.         sy > 0 ? move_up : move_down
  17.       end
  18.     else
  19.       sy > 0 ? move_up : move_down
  20.       if not moving? and sx != 0
  21.         sx > 0 ? move_left : move_right
  22.       end
  23.     end
  24.   end
  25. end
复制代码
事件-移动规则-自定义-脚本:「move_toward_event(需要移动向的事件的ID)」,并勾上“忽略不能移动的场合”

点评

但是hys111111大大好像花了好多時間幫我解決問題 我想大大也會支持鼓勵這樣的新人吧? 所以選擇了hys111111大大的答案 不好意思><  发表于 2012-4-14 15:18
抱歉沒有選擇您的答案>< 大大的腳本確實簡潔正確而且設置方便 我一收到就採用了 雖然大大的腳本讓我很受用  发表于 2012-4-14 15:13
感激!可以用! 好像還要勾上重複動作 不然只會走一格  发表于 2012-4-13 20:17

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

6
发表于 2012-4-13 18:07:59 | 只看该作者
本帖最后由 hys111111 于 2012-4-13 18:10 编辑
  1. class Scene_Map
  2.   alias HYS_updata update
  3.   def update
  4.     HYS_updata
  5.     for f in $game_map.events.values
  6.       if $game_map.events[f.id].moving?
  7.         unless $game_player.passable?(f.x,f.y,f.direction) #未实验,如判断失效,请在本行前面和下面其中一个end加“#”号
  8.           case f.direction
  9.           when 2
  10.             f.y+=1
  11.           when 4
  12.             f.x-=1
  13.           when 6
  14.             f.x+=1
  15.           when 8
  16.             f.y-=1
  17.           end
  18.           for i in $game_map.events.values
  19.             if f.x == i.x and f.y == i.y
  20.               $game_map.events[i.id].start
  21.             end
  22.           end
  23.         end
  24.       end
  25.     end
  26.   end
  27. end
复制代码
整体脚本就是这样了。
如果前方无法通过,并且正在移动中,就会执行事件前方的事件(就像角色接触事件那样子)
加入脚本,立刻生效

点评

难道还想真的要设定事件吗?我修正一下脚本。我很乐意帮忙  发表于 2012-4-14 08:46
抱歉我還是有些困惑...在MAIN前插入後 不需要給指定的事件設定什麼嗎?  发表于 2012-4-14 02:07
有什么问题,跟我说,我立刻修正  发表于 2012-4-13 20:22
插入后,自动启动  发表于 2012-4-13 20:21
請問這個腳本插入後要怎麼使用?  发表于 2012-4-13 20:18
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
690
在线时间
791 小时
注册时间
2011-10-20
帖子
2394

开拓者

7
发表于 2012-4-13 18:21:17 | 只看该作者
小狗狗,用XAS吧,不用自己研究了,很头痛的做ARPG

点评

我也是新手啊,= =  发表于 2012-4-14 13:29
瞎扯别误导新人。  发表于 2012-4-14 13:17
一般都难得看别人的脚本,看看游戏内部教程一般很简单的啦  发表于 2012-4-13 20:29
感覺XAS功能太強了 我這新手玩不起><  发表于 2012-4-13 20:23
看见我头像没这就是自己做得arpg,做了很久也还没完工啊!  发表于 2012-4-13 20:03
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险ARPG赢回你的疆域新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复

使用道具 举报

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

8
发表于 2012-4-14 09:42:02 | 只看该作者
本帖最后由 hys111111 于 2012-4-14 12:34 编辑
  1. class Scene_Map
  2.   alias xy_HYS_main main
  3.   def main
  4.     xy_HYS_main
  5.     updata
  6.   end
  7.   alias xy_HYS_updata update
  8.   def update
  9.     xy_HYS_updata
  10.     xy_event = {}

  11.     #格式:xy_event = [[A,B],[A,B]]
  12.     #A为事件所在地图,B为事件编号
  13.     xy_event = [[1,3]]#设置部分
  14.    
  15.     for a in 0...xy_event.size
  16.       if xy_event[a][0] == $game_map.map_id
  17.         for f in $game_map.events.values
  18.           if xy_event[a][1] == f.id
  19.             #if f.moving?
  20.              # unless $game_map.passable?(f.x,f.y,f.direction) #未实验,如判断失效,请在本行前面加“#”号
  21.                 case f.direction
  22.                 when 2
  23.                   xx=f.x
  24.                   yy=f.y+1
  25.                 when 4
  26.                   xx=f.x-1
  27.                   yy=f.y
  28.                 when 6
  29.                   xx=f.x+1
  30.                   yy=f.y
  31.                 when 8
  32.                   xx=f.x
  33.                   yy=f.y-1
  34.                 end
  35.                 for i in $game_map.events.values
  36.                   p "test"
  37.                   if xx == i.x and yy == i.y
  38.                     i.start
  39.                   end
  40.                 end
  41.               end
  42.             end
  43.           end
  44.         end
  45.       end
  46.     end
  47.   #end
  48. #end
复制代码
从新修正一下,就在12行那里设置

补充说明:设置的那个事件相当于角色,如果接触别的事件就会触发

点评

........的确更方便  发表于 2012-4-14 13:11
其实用xy坐标的差的绝对值的和来判断就可以了啊XD  发表于 2012-4-14 13:04
我把17行改了一下,正常了……  发表于 2012-4-14 12:40
直接把上面的脚本复制下来就可以了……p "test"是我的测试结果……  发表于 2012-4-14 12:39
一直跳"test"循環...  发表于 2012-4-14 12:38
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
461 小时
注册时间
2008-11-19
帖子
607
9
 楼主| 发表于 2012-4-14 12:54:38 | 只看该作者
這是我目前設置的樣子
  1.     class Scene_Map
  2.       alias xy_HYS_main main
  3.       def main
  4.         xy_HYS_main
  5.         updata
  6.       end
  7.       alias xy_HYS_updata update
  8.       def update
  9.         xy_HYS_updata
  10.         xy_event = {}

  11.         #格式:xy_event = [[A,B],[A,B]]
  12.         #A为事件所在地图,B为事件编号
  13.         xy_event = [[1,3],[1,4]]#地圖1上有事件3和4 都沒有設定移動路線
  14.       
  15.         for a in 0...xy_event.size
  16.           if xy_event[a][0] == $game_map.map_id
  17.             for f in $game_map.events.values
  18.               if xy_event[a][1] == f.id
  19.                 #if f.moving?
  20.                  # unless $game_map.passable?(f.x,f.y,f.direction) #未实验,如判断失效,请在本行前面加“#”号
  21.                     case f.direction
  22.                     when 2
  23.                       xx=f.x
  24.                       yy=f.y+1
  25.                     when 4
  26.                       xx=f.x-1
  27.                       yy=f.y
  28.                     when 6
  29.                       xx=f.x+1
  30.                       yy=f.y
  31.                     when 8
  32.                       xx=f.x
  33.                       yy=f.y-1
  34.                     end
  35.                     for i in $game_map.events.values
  36.                       # p "test"
  37.                       if xx == i.x and yy == i.y
  38.                         i.start
  39.                       end
  40.                     end
  41.                   end
  42.                 end
  43.               end
  44.             end
  45.           end
  46.         end
  47.       #end
  48.     #end
复制代码

点评

確實要引發事件沒問題了! 不過我怎麼因為一直被事件面對...變成無限循環引發事件?  发表于 2012-4-14 13:20
“可是我想要做的是依據兩個事件的位置自動決定移動路線@@”我终于知道了……不会冲突的  发表于 2012-4-14 13:14
我准备测试已经正常了  发表于 2012-4-14 13:10
让3或4号经过其他事件旁边并且3、4号事件还要朝向那个事件  发表于 2012-4-14 13:09
不過沒有反應捏?  发表于 2012-4-14 12:54
回复

使用道具 举报

Lv3.寻梦者

双子人

梦石
0
星屑
3185
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

10
发表于 2012-4-14 14:04:18 | 只看该作者
本帖最后由 hys111111 于 2012-4-17 12:35 编辑
  1. class Game_Character
  2.   
  3.   alias xy_up move_up
  4.   def move_up(turn_enabled = true)
  5.     if self.is_a?(Game_Player)
  6.       xy_up
  7.     end
  8.     if $game_player.passable?(@x,@y,8)  and self.is_a?(Game_Event)
  9.       xy_up
  10.     else
  11.       turn_up
  12.       pd
  13.     end
  14.   end
  15.   
  16.   alias xy_down move_down
  17.   def move_down(turn_enabled = true)
  18.     if self.is_a?(Game_Player)
  19.       xy_down
  20.     end
  21.     if $game_player.passable?(@x,@y,2) and self.is_a?(Game_Event)
  22.       xy_down
  23.     else
  24.       turn_down
  25.       pd
  26.     end
  27.   end
  28.   
  29.   alias xy_left move_left
  30.   def move_left(turn_enabled = true)
  31.     if self.is_a?(Game_Player)
  32.       xy_left
  33.     end
  34.     if $game_player.passable?(@x,@y,4) and self.is_a?(Game_Event)
  35.       xy_left
  36.     else
  37.       turn_left
  38.       pd
  39.     end
  40.   end
  41.   
  42.   alias xy_right move_right
  43.   def move_right(turn_enabled = true)
  44.     if self.is_a?(Game_Player)
  45.       xy_right
  46.     end
  47.     if $game_player.passable?(@x,@y,6) and self.is_a?(Game_Event)
  48.       xy_right
  49.     else
  50.       turn_right
  51.       pd
  52.     end
  53.   end
  54.   
  55.   def pd
  56.     @move_route_waiting = true
  57.     xy_event = {}

  58.     #格式:xy_event = [[A,B],[A,B]]
  59.     #A为事件所在地图,B为事件编号
  60.     xy_event = [[1,3]]#设置部分
  61.    
  62.     for a in 0...xy_event.size
  63.       if xy_event[a][0] == $game_map.map_id and self.is_a?(Game_Event)
  64.         if xy_event[a][1] == @id
  65.           case @direction
  66.           when 2
  67.             xx=@x
  68.             yy=@y+1
  69.           when 4
  70.             xx=@x-1
  71.             yy=@y
  72.           when 6
  73.             xx=@x+1
  74.             yy=@y
  75.           when 8
  76.             xx=@x
  77.             yy=@y-1
  78.           end
  79.           for i in $game_map.events.values
  80.             if xx == i.x and yy == i.y
  81.               case @direction
  82.               when 2
  83.                 i.turn_up
  84.               when 4
  85.                 i.turn_right
  86.               when 6
  87.                 i.turn_left
  88.               when 8
  89.                 i.turn_down
  90.               end
  91.               i.start
  92.             end
  93.           end
  94.         end
  95.       end
  96.     end
  97.   end
  98. end
复制代码
我现在会用alias了,测试无误,可以拿去用了(另外,执行事件的过程事件可以移动哦)
真的就像角色接触事件那样子了。自己再使用试试……已经修复……

点评

測試無誤了!感謝!這個腳本一定能讓遊戲更有趣的  发表于 2012-4-17 19:11
後來發現您的腳本有BUG...再使用後會有http://bbs.66rpg.com/thread-228682-1-1.html的情形 本來以為是角色跟隨腳本的問題...後發現問題在於我裝了您的腳本...  发表于 2012-4-17 00:58
這次完美了!感激不遺餘力幫忙!  发表于 2012-4-14 15:04
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 02:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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