查看: 3418|回复: 6

[综合信息] [XP/VA]求助占其系統如何做地形影響?

[复制链接]
梦石
0
星屑
6830
在线时间
1251 小时
注册时间
2011-12-18
回帖
1127
发表于 2018-10-7 21:39:08 | 显示全部楼层 |阅读模式

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

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

×
有找到一些人的範例但想改成移動範圍受地形不同而及時增減...
(非根據腳色立足點 而是根據原本的最大範圍內所有地形做增減... 類似機戰那樣)
無奈 想/試 不出該如何改造

点评

嗷嗷那没事就好(  发表于 2021-7-9 16:39
應該是有廣告帳號發廣告吧... (我猜  发表于 2021-7-7 22:53
????? 俺不清楚發生甚麼  发表于 2021-7-7 22:52
看到楼主前几天自己举报了本帖子,想问下是有什么问题吗(  发表于 2021-7-7 14:09

老黄鸡

梦石
4
星屑
45692
在线时间
7947 小时
注册时间
2009-7-6
回帖
13335

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2018-10-10 11:37:47 | 显示全部楼层
不要直接以步数为半径生成移动范围,去尝试每条可行路径就行。
下面是我很久以前写的战旗获取可行动范围的方法,有点不堪入目,但是应该能看懂意思
楼主的需求需要再定义个行动力,以及地形对行动力的影响


[pre lang="ruby"]module SLG_Module
  Node = Struct.new(:x,:y,:mp)
  def self.get_movable_area(event,maxp)
    cutflag=0
    offx = [-1, 0, 1, 0]
    offy = [0, 1, 0, -1]
    pMap = Table.new($game_map.width,$game_map.height)
    temp = Node.new(event.x,event.y,maxp)
    rets = []
    retable = Table.new($game_map.width,$game_map.height)
    retable[temp.x,temp.y] = 1
    allpath = [temp.clone]
    while cutflag<allpath.size
      n=allpath.size
      i = cutflag
      while i < allpath.size
        for j in 0...4
          temp.x=allpath.x+offx[j]
          temp.y=allpath.y+offy[j]
          temp.mp=allpath.mp-1
          next if temp.mp<0
          next unless event.passable?(temp.x,temp.y,0)
          next if pMap[temp.x,temp.y]>0
          allpath << temp.clone
          rets << Point.new(temp.x,temp.y)
          retable[temp.x,temp.y] = 1
        end
        pMap[allpath.x,allpath.y] = 1
        i+=1
      end
      cutflag=n
    end
    bit = SLG_Area.new
    bit.set_data(rets)
    return [bit,retable]
  end
end[/pre]

点评

感謝~ 請問這個有包含範圍預覽的處理嗎?  发表于 2018-10-10 21:29

评分

参与人数 2赞 +2 收起 理由
sdgn + 1
VIPArcher + 1 醋瞎

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部