| 赞 | 0 |
| VIP | 0 |
| 好人卡 | 0 |
| 积分 | 1 |
| 经验 | 170 |
| 最后登录 | 2021-2-21 |
| 在线时间 | 1 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 70
- 在线时间
- 1 小时
- 注册时间
- 2008-4-17
- 帖子
- 12
|
7楼

楼主 |
发表于 2008-5-15 06:55:09
|
只看该作者
经过算法调整(table),有了一定程度的优化,但行动力到12时还是会有3秒的延迟,还不算攻击范围。如果加上3~15的远程魔法效果,囧rz
由于开的讨论帖,我就边优化边更新,希望能给RGSS初学者一点经验,也能获得高手达人的进一步指教。这个FE系统我一定会坚持做完的,而且会尽量向加贺风格看齐。
@position = Table.new($game_map.data.xsize,$game_map.data.ysize)
@position[@battler.x, @battler.y] = battler.mov
@areas = [[@battler.x, @battler.y,battler.mov + 1]]
# @areas2 = [[@battler.x, @battler.y]]
@route = [[]]
more_step = [0]
for i in more_step
x = @areas[0]
y = @areas[1]
@move = @areas[2]
if @battler.passable?(x, y, 2) and
(@move - battler.need_mov[$game_map.terrain_tag(x,y + 1)]) > @position[x,y + 1]
@move2 = @move - battler.need_mov[$game_map.terrain_tag(x,y + 1)]
@areas.push([x,y + 1,@move2])
@position[x,y + 1] = @move2 - 1
@route.push(@route + [2])
more_step.push(@route.index(@route + [2]))
end
if @battler.passable?(x, y, 4) and
(@move - battler.need_mov[$game_map.terrain_tag(x - 1,y)]) > @position[x - 1,y]
@move4 = @move - battler.need_mov[$game_map.terrain_tag(x - 1,y)]
@areas.push([x - 1,y,@move4])
@position[x - 1,y] = @move4 - 1
@route.push(@route + [4])
more_step.push(@route.index(@route + [4]))
end
if @battler.passable?(x, y, 6) and
(@move - battler.need_mov[$game_map.terrain_tag(x + 1,y)]) > @position[x + 1,y]
@move4 = @move - battler.need_mov[$game_map.terrain_tag(x + 1,y)]
@areas.push([x + 1,y,@move4])
@position[x + 1,y] = @move4 - 1
@route.push(@route + [6])
more_step.push(@route.index(@route + [6]))
end
if @battler.passable?(x, y, 8) and
(@move - battler.need_mov[$game_map.terrain_tag(x,y - 1)]) > @position[x,y - 1]
@move2 = @move - battler.need_mov[$game_map.terrain_tag(x,y - 1)]
@areas.push([x,y - 1,@move2])
@position[x,y - 1] = @move2 - 1
@route.push(@route + [8])
more_step.push(@route.index(@route + [8]))
end
end
@areas2 = []
for j in @areas
a = j[0]
b = j[1]
c = [[a,b]]
@areas2 = @areas2 | c
end
for area in @areas2
x = area[0]
y = area[1]
@area = Sprite_Area.new(@spriteset.viewport1, x, y)
@spriteset.area_sprites.push(@area)
end |
|