Project1
标题:
請問能讓事件自動接觸另一個事件來引發新劇情嗎
[打印本页]
作者:
sai90306
时间:
2012-4-9 23:30
标题:
請問能讓事件自動接觸另一個事件來引發新劇情嗎
本帖最后由 sai90306 于 2012-4-9 23:45 编辑
請問麼樣才能設定一個事件自動移動到另一個事件然後觸發劇情?
例如作ARPG的同伴,讓同伴自動接近敵人並且進行攻擊這樣的
dsu_plus_rewardpost_czw
作者:
Wind2010
时间:
2012-4-13 12:04
写一个事件向事件移动的方法,然后条件分歧判断两事件的直线距离来触发事件
另外如果是做ARPG的话这些功能在ARPG系统里应该已经有设置了的
作者:
hys111111
时间:
2012-4-13 14:02
本帖最后由 hys111111 于 2012-4-13 14:02 编辑
用接触事件判断……
$game_map.event[@event_id]
复制代码
作者:
hk0768
时间:
2012-4-13 14:27
像这样的?
工程.rar
(852.49 KB, 下载次数: 348)
2012-4-13 14:27 上传
点击文件名下载附件
作者:
Wind2010
时间:
2012-4-13 16:47
本帖最后由 Wind2010 于 2012-4-13 17:11 编辑
class Game_Character
def move_toward_event(event_id)
sx = @x - $game_map.events[event_id].x
sy = @y - $game_map.events[event_id].y
if sx == 0 and sy == 0
return
end
abs_sx = sx.abs
abs_sy = sy.abs
if abs_sx == abs_sy
rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
end
if abs_sx > abs_sy
sx > 0 ? move_left : move_right
if not moving? and sy != 0
sy > 0 ? move_up : move_down
end
else
sy > 0 ? move_up : move_down
if not moving? and sx != 0
sx > 0 ? move_left : move_right
end
end
end
end
复制代码
事件-移动规则-自定义-脚本:「move_toward_event(需要移动向的事件的ID)」,并勾上“忽略不能移动的场合”
作者:
hys111111
时间:
2012-4-13 18:07
本帖最后由 hys111111 于 2012-4-13 18:10 编辑
class Scene_Map
alias HYS_updata update
def update
HYS_updata
for f in $game_map.events.values
if $game_map.events[f.id].moving?
unless $game_player.passable?(f.x,f.y,f.direction) #未实验,如判断失效,请在本行前面和下面其中一个end加“#”号
case f.direction
when 2
f.y+=1
when 4
f.x-=1
when 6
f.x+=1
when 8
f.y-=1
end
for i in $game_map.events.values
if f.x == i.x and f.y == i.y
$game_map.events[i.id].start
end
end
end
end
end
end
end
复制代码
整体脚本就是这样了。
如果前方无法通过,并且正在移动中,就会执行事件前方的事件(就像角色接触事件那样子)
加入脚本,立刻生效
作者:
end55rpg
时间:
2012-4-13 18:21
小狗狗,用XAS吧,不用自己研究了,很头痛的做ARPG
作者:
hys111111
时间:
2012-4-14 09:42
本帖最后由 hys111111 于 2012-4-14 12:34 编辑
class Scene_Map
alias xy_HYS_main main
def main
xy_HYS_main
updata
end
alias xy_HYS_updata update
def update
xy_HYS_updata
xy_event = {}
#格式:xy_event = [[A,B],[A,B]]
#A为事件所在地图,B为事件编号
xy_event = [[1,3]]#设置部分
for a in 0...xy_event.size
if xy_event[a][0] == $game_map.map_id
for f in $game_map.events.values
if xy_event[a][1] == f.id
#if f.moving?
# unless $game_map.passable?(f.x,f.y,f.direction) #未实验,如判断失效,请在本行前面加“#”号
case f.direction
when 2
xx=f.x
yy=f.y+1
when 4
xx=f.x-1
yy=f.y
when 6
xx=f.x+1
yy=f.y
when 8
xx=f.x
yy=f.y-1
end
for i in $game_map.events.values
p "test"
if xx == i.x and yy == i.y
i.start
end
end
end
end
end
end
end
end
#end
#end
复制代码
从新修正一下,就在12行那里设置
补充说明:设置的那个事件相当于角色,如果接触别的事件就会触发
作者:
sai90306
时间:
2012-4-14 12:54
這是我目前設置的樣子
class Scene_Map
alias xy_HYS_main main
def main
xy_HYS_main
updata
end
alias xy_HYS_updata update
def update
xy_HYS_updata
xy_event = {}
#格式:xy_event = [[A,B],[A,B]]
#A为事件所在地图,B为事件编号
xy_event = [[1,3],[1,4]]#地圖1上有事件3和4 都沒有設定移動路線
for a in 0...xy_event.size
if xy_event[a][0] == $game_map.map_id
for f in $game_map.events.values
if xy_event[a][1] == f.id
#if f.moving?
# unless $game_map.passable?(f.x,f.y,f.direction) #未实验,如判断失效,请在本行前面加“#”号
case f.direction
when 2
xx=f.x
yy=f.y+1
when 4
xx=f.x-1
yy=f.y
when 6
xx=f.x+1
yy=f.y
when 8
xx=f.x
yy=f.y-1
end
for i in $game_map.events.values
# p "test"
if xx == i.x and yy == i.y
i.start
end
end
end
end
end
end
end
end
#end
#end
复制代码
作者:
hys111111
时间:
2012-4-14 14:04
本帖最后由 hys111111 于 2012-4-17 12:35 编辑
class Game_Character
alias xy_up move_up
def move_up(turn_enabled = true)
if self.is_a?(Game_Player)
xy_up
end
if $game_player.passable?(@x,@y,8) and self.is_a?(Game_Event)
xy_up
else
turn_up
pd
end
end
alias xy_down move_down
def move_down(turn_enabled = true)
if self.is_a?(Game_Player)
xy_down
end
if $game_player.passable?(@x,@y,2) and self.is_a?(Game_Event)
xy_down
else
turn_down
pd
end
end
alias xy_left move_left
def move_left(turn_enabled = true)
if self.is_a?(Game_Player)
xy_left
end
if $game_player.passable?(@x,@y,4) and self.is_a?(Game_Event)
xy_left
else
turn_left
pd
end
end
alias xy_right move_right
def move_right(turn_enabled = true)
if self.is_a?(Game_Player)
xy_right
end
if $game_player.passable?(@x,@y,6) and self.is_a?(Game_Event)
xy_right
else
turn_right
pd
end
end
def pd
@move_route_waiting = true
xy_event = {}
#格式:xy_event = [[A,B],[A,B]]
#A为事件所在地图,B为事件编号
xy_event = [[1,3]]#设置部分
for a in 0...xy_event.size
if xy_event[a][0] == $game_map.map_id and self.is_a?(Game_Event)
if xy_event[a][1] == @id
case @direction
when 2
xx=@x
yy=@y+1
when 4
xx=@x-1
yy=@y
when 6
xx=@x+1
yy=@y
when 8
xx=@x
yy=@y-1
end
for i in $game_map.events.values
if xx == i.x and yy == i.y
case @direction
when 2
i.turn_up
when 4
i.turn_right
when 6
i.turn_left
when 8
i.turn_down
end
i.start
end
end
end
end
end
end
end
复制代码
我现在会用alias了,测试无误,可以拿去用了(另外,执行事件的过程事件可以移动哦)
真的就像角色接触事件那样子了。自己再使用试试……已经修复……
作者:
sai90306
时间:
2012-4-14 15:25
本帖最后由 sai90306 于 2012-4-14 15:25 编辑
兩位大大太感謝你們了!
兩位的腳本都很好 功能不太一樣 都能完美運行
其實我最初想要的是Wind2010大的那種腳本
不過看到hys111111大的腳本後讓我也很感興趣...所以就一直追問了@@
所以最後選答案的時候好掙扎...原因就像我上面說的 抱歉了Wind2010大
作者:
hys111111
时间:
2012-4-17 12:31
本帖最后由 hys111111 于 2012-4-17 12:31 编辑
sai90306 发表于 2012-4-14 15:25
兩位大大太感謝你們了!
兩位的腳本都很好 功能不太一樣 都能完美運行
其實我最初想要的是Wind2010大的那種 ...
脚本已修正,见10楼
(我忘了考虑到角色了)
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1