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

Project1

 找回密码
 注册会员
搜索
楼主: 「旅」

[讨论] (活动讨论贴.顺利结束)ARPG范例- by pudding

 关闭 [复制链接]

Lv3.寻梦者 (版主)

  /) /)<

梦石
0
星屑
3623
在线时间
4836 小时
注册时间
2009-2-16
帖子
8414

开拓者短篇七成年组季军

发表于 2010-10-7 21:48:00 | 显示全部楼层
ARPG群攻技能不可少 再就是有一种靠操作能避免怪打到你 比如减慢怪速度 或怪受攻击有僵直 打下就跑的练法 如果只是靠近怪双方互相掉血 这样和回合制没啥区别了
其实ARPG技能可以参考RO RO技能很丰富的http://ro.sdo.com/web3/spellbook/spellbook_01.html

评分

参与人数 1星屑 +200 收起 理由
六祈 + 200 感谢参与讨论

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
323
在线时间
809 小时
注册时间
2007-12-25
帖子
1545
发表于 2010-10-8 02:12:18 | 显示全部楼层
本帖最后由 九夜神尊 于 2010-10-8 02:14 编辑

说一个XAS也没有实现的效果吧~~~


自己取名,因为不知道名字

攻击树式结构那我画一个
未命名.jpg

用语言来说就是

按c.c.c实现三连砍
   c.c.c--实现重力回击
   c.c   cccccccc实现快速乱砍

如果拿另一个游戏做比较的话,就是鬼泣里面的所有攻击方式。

点评

做这个的话,一定会看到眼花缭乱,并且素材方面……  发表于 2010-10-8 17:31
XAS是有连击系统的,在技能1发动后一定时间内再次攻击,可以发动技能2,以此类推  发表于 2010-10-8 03:04

评分

参与人数 2星屑 +600 收起 理由
「旅」 + 360 主楼有提名哟~~~
六祈 + 240 感谢参与讨论~不错的想法~

查看全部评分

精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
帖子
3940

开拓者贵宾

发表于 2010-10-8 05:22:18 | 显示全部楼层
看到楼上的...满脑子想的都是timer = =bb


暂时没时间认真回...就这么先占着楼好了...下次编辑.

点评

要鼓励下moy老师的Timer么【雾  发表于 2010-10-8 05:45
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
91
在线时间
195 小时
注册时间
2009-10-10
帖子
435
发表于 2010-10-8 06:15:57 | 显示全部楼层
这么早呀,慢慢来实现吧,真希望有人能够协助一下我。
现在正在做BOSS的技能攻击(附加状态),还有19楼建议的移动。
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
帖子
3940

开拓者贵宾

发表于 2010-10-8 07:01:52 | 显示全部楼层
18L提供的脚本的完整版
来源为ZTBS,其真实作者不详0 0(也许是ZTBS的作者?)
自汉化
  1. #==============================================================================
  2. # 「移动方法」 ver1.20
  3. #   by 水夜
  4. #     汉化 by moy
  5. #  http://zenith.ifdef.jp/
  6. #------------------------------------------------------------------------------
  7. # 提供了不少方便调用的移动方法
  8. #==============================================================================
  9. # 给出目录方便查找和使用:
  10. #    中文名           行数          方法名
  11. # "走向某事件"         26         go_to_event(id)
  12. # "远离某事件"         61         move_away_from_event(id)
  13. # "移向指定坐标"       96         go_to_position(x, y)
  14. # "从指定坐标返回"     129        move_away_from_position(x, y)
  15. # "面向某事件"         162        turn_toward_event(id)
  16. # "背向某事件"         183        turn_away_from_event(id)
  17. # "面向某一坐标"       204        turn_toward_position(x, y)
  18. # "背向某一坐标"       223        turn_away_from_position(x, y)
  19. # "随机范围移动"       242        move_random_area(x, y, distance)
  20. #==============================================================================

  21. class Game_Character
  22.   #--------------------------------------------------------------------------
  23.   # ●定义"走向某事件"的方法  
  24.   #--------------------------------------------------------------------------
  25.   def move_toward_event(id)
  26.     # 计算与需要走向的某事件的位移
  27.     sx = @x - $game_map.events[id].x
  28.     sy = @y - $game_map.events[id].y
  29.     # 如果位移为0(也就是说是本事件)则返回
  30.     if sx == 0 and sy == 0
  31.       return
  32.     end
  33.     # 设置XY的绝对值变量
  34.     abs_sx = sx.abs
  35.     abs_sy = sy.abs
  36.     # XY的绝对值相等时
  37.     if abs_sx == abs_sy
  38.       # X或Y自加1
  39.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  40.     end
  41.     # X比Y的绝对值大时
  42.     if abs_sx > abs_s
  43.       # 在X方向位移结束后执行Y方向
  44.       sx > 0 ? move_left : move_right
  45.       if not moving? and sy != 0
  46.         sy > 0 ? move_up : move_down
  47.       end
  48.     # X比Y的绝对值小时
  49.     else
  50.       # 在Y方向位移结束后执行X方向
  51.       sy > 0 ? move_up : move_down
  52.       if not moving? and sx != 0
  53.         sx > 0 ? move_left : move_right
  54.       end
  55.     end
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 定义"远离某事件"的方法
  59.   #--------------------------------------------------------------------------
  60.   def move_away_from_event(id)
  61.     # 计算与需要远离的某事件的位移
  62.     sx = @x - $game_map.events[id].x
  63.     sy = @y - $game_map.events[id].y
  64.     # 如果位移为0(也就是说是本事件)则返回
  65.     if sx == 0 and sy == 0
  66.       return
  67.     end
  68.     # 设置XY的绝对值变量
  69.     abs_sx = sx.abs
  70.     abs_sy = sy.abs
  71.     # XY的绝对值相等时
  72.     if abs_sx == abs_sy
  73.       # X或Y自加1
  74.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  75.     end
  76.     # X比Y的绝对值大时
  77.     if abs_sx > abs_sy
  78.       # 在X方向位移结束后执行Y方向
  79.       sx > 0 ? move_right : move_left
  80.       if not moving? and sy != 0
  81.         sy > 0 ? move_down : move_up
  82.       end
  83.     # X比Y的绝对值小时
  84.     else
  85.       # 在Y方向位移结束后执行X方向
  86.       sy > 0 ? move_down : move_up
  87.       if not moving? and sx != 0
  88.         sx > 0 ? move_right : move_left
  89.       end
  90.     end
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 定义"移向指定坐标"的方法.
  94.   #--------------------------------------------------------------------------
  95.   def move_toward_position(x, y)
  96.     # 计算与目标坐标间的位移
  97.     sx = @x - x
  98.     sy = @y - y
  99.     # 如果是当前所在坐标则返回
  100.     if sx == 0 and sy == 0
  101.       return
  102.     end
  103.     # 设置XY的绝对值变量
  104.     abs_sx = sx.abs
  105.     abs_sy = sy.abs
  106.     # XY的绝对值相等时
  107.     if abs_sx == abs_sy
  108.       # X或Y自加1
  109.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  110.     end
  111.     # X比Y的绝对值大时
  112.     if abs_sx > abs_sy
  113.       sx > 0 ? move_left : move_right
  114.       if not moving? and sy != 0
  115.         sy > 0 ? move_up : move_down
  116.       end
  117.     # X比Y的绝对值小时
  118.     else
  119.       sy > 0 ? move_up : move_down
  120.       if not moving? and sx != 0
  121.         sx > 0 ? move_left : move_right
  122.       end
  123.     end
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 定义"从指定坐标返回"的方法
  127.   #--------------------------------------------------------------------------
  128.   def move_away_from_position(x, y)
  129.     # 计算与目标坐标间的位移
  130.     sx = @x - x
  131.     sy = @y - y
  132.     # 如果是当前所在坐标则返回
  133.     if sx == 0 and sy == 0
  134.       return
  135.     end
  136.     # 设置XY的绝对值变量
  137.     abs_sx = sx.abs
  138.     abs_sy = sy.abs
  139.     # XY的绝对值相等时
  140.     if abs_sx == abs_sy
  141.       # X或Y自加1
  142.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  143.     end
  144.     # X比Y的绝对值大时
  145.     if abs_sx > abs_sy
  146.       sx > 0 ? move_right : move_left
  147.       if not moving? and sy != 0
  148.         sy > 0 ? move_down : move_up
  149.       end
  150.     # X比Y的绝对值小时
  151.     else
  152.       sy > 0 ? move_down : move_up
  153.       if not moving? and sx != 0
  154.         sx > 0 ? move_right : move_left
  155.       end
  156.     end
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 定义"面向某事件"的方法
  160.   #--------------------------------------------------------------------------
  161.   def turn_toward_event(id)
  162.     # 计算与需要面向的事件间的位移
  163.     sx = @x - $game_map.events[id].x
  164.     sy = @y - $game_map.events[id].y
  165.     # 如果是当前所在坐标则返回
  166.     if sx == 0 and sy == 0
  167.       return
  168.     end
  169.     # X比Y的绝对值大时
  170.     if sx.abs > sy.abs
  171.       # X的值为正则转左,负则转右
  172.       sx > 0 ? turn_left : turn_right
  173.     # X比Y的绝对值小时
  174.     else
  175.       # Y的值为正则转上,负则转下
  176.       sy > 0 ? turn_up : turn_down
  177.     end
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   # ● 定义"背向某事件"的方法
  181.   #--------------------------------------------------------------------------
  182.   def turn_away_from_event(id)
  183.     # 计算与需要背向的事件间的位移
  184.     sx = @x - $game_map.events[id].x
  185.     sy = @y - $game_map.events[id].y
  186.     # 如果是当前所在坐标则返回
  187.     if sx == 0 and sy == 0
  188.       return
  189.     end
  190.     # X比Y的绝对值大时
  191.     if sx.abs > sy.abs
  192.       # X的值为正则转右,负则转左
  193.       sx > 0 ? turn_right : turn_left
  194.     # X比Y的绝对值小时
  195.     else
  196.       # Y的值为正则转下,负则转上
  197.       sy > 0 ? turn_down : turn_up
  198.     end
  199.   end
  200.   #--------------------------------------------------------------------------
  201.   # ● 定义"面向某一坐标"的方法
  202.   #--------------------------------------------------------------------------
  203.   def turn_toward_position(x, y)
  204.     # 计算与指定坐标间的位移
  205.     sx = @x - x
  206.     sy = @y - y
  207.     # 如果是当前所在坐标则返回
  208.     if sx == 0 and sy == 0
  209.       return
  210.     end
  211.     # X比Y的绝对值大时
  212.     if sx.abs > sy.abs
  213.       sx > 0 ? turn_left : turn_right
  214.     # X比Y的绝对值小时
  215.     else
  216.       sy > 0 ? turn_up : turn_down
  217.     end
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ● 定义"背向某一坐标"的方法
  221.   #--------------------------------------------------------------------------
  222.   def turn_away_from_position(x, y)
  223.     # 计算与指定坐标间的位移
  224.     sx = @x - x
  225.     sy = @y - y
  226.     # 如果是当前所在坐标则返回
  227.     if sx == 0 and sy == 0
  228.       return
  229.     end
  230.     # X比Y的绝对值大时
  231.     if sx.abs > sy.abs
  232.       sx > 0 ? turn_right : turn_left
  233.     # X比Y的绝对值小时
  234.     else
  235.       sy > 0 ? turn_down : turn_up
  236.     end
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   # ● 定义"随机范围移动"的方法
  240.   #--------------------------------------------------------------------------
  241.   def move_random_area(x, y, distance)
  242.     # 计算与目标原点区域中心间的位移
  243.     sx = @x - x
  244.     sy = @y - y
  245.     # 如果已经在范围外
  246.     if sx.abs + sy.abs > distance
  247.       # 接近区域中心
  248.       move_toward_position(x, y)
  249.       return
  250.     end
  251.     # 在范围内时随机选择方向移动
  252.     case rand(4)
  253.     when 0  # 向下移动
  254.       if sx.abs + sy < distance
  255.         move_down(false)
  256.       end
  257.     when 1  # 向左移动
  258.       if -sx + sy.abs < distance
  259.         move_left(false)
  260.       end
  261.     when 2  # 向右移动
  262.       if sx + sy.abs < distance
  263.         move_right(false)
  264.       end
  265.     when 3  # 向上移动
  266.       if sx.abs - sy < distance
  267.         move_up(false)
  268.       end
  269.     end
  270.   end
  271. end

复制代码
希望能从某种程度上帮助到布丁{:nm_4:}
获取特定事件就如同18L在那里插入的for循环一样添加就好.不过建议在调用行为外使用?因为这些行为也许可以用于NPC的AI,而不仅仅是敌人

点评

moy
暂时是没看到啥.这个脚本在ZTBS里其实是用来进行指针移动的.(战棋脚本,利用主角做指针的)  发表于 2010-10-8 17:32
哇,好东西, 还有什么好东西很适合ARPG 麻烦放出来。 感谢~  发表于 2010-10-8 17:24
moy
汉化基础为liquiz的0.5汉化版,咱没有详细追究脚本作者,只是修正了一些错漏,然后添加了少许注释而已.(名字没打错吧...  发表于 2010-10-8 07:05

评分

参与人数 2星屑 +510 收起 理由
六祈 + 340 感谢参与讨论
pudding + 170 还有什么好东西,麻烦拿出来一起共享。 ...

查看全部评分

Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
8 小时
注册时间
2010-9-13
帖子
448
发表于 2010-10-8 12:09:25 | 显示全部楼层
可以像xas差不多的,这样简单,队友加入后地图上就有个队友一起作战,可以用脚本控制(剧情用)还可以让他跟随。主动点额
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
91
在线时间
195 小时
注册时间
2009-10-10
帖子
435
发表于 2010-10-8 18:07:32 | 显示全部楼层
好象越多东西就越卡,
谁能告诉我,是什么原因导致的?
有什么地方是没必要的,又该如何应对?
麻烦有能力的人士,告知一下。
我只是一个脚本的初学者。
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
帖子
3940

开拓者贵宾

发表于 2010-10-8 18:26:12 | 显示全部楼层
update里面如果有很多东西要执行就会比较杯具....
可以适当的将一些不太必要的刷新加大刷新间隔....
(咱没看你的脚本....仅仅是提出可能性

点评

除了在update里执行,不想到其它地方。  发表于 2010-10-8 18:57
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv1.梦旅人

水土火风重逢处

梦石
0
星屑
64
在线时间
691 小时
注册时间
2010-7-17
帖子
3042
发表于 2010-10-8 18:36:56 | 显示全部楼层
pudding不是美工帝么?这点素材应该没问题
我觉得技能方面应该多从移动连击方面出发
比如,五星斩(自己胡想的)

而不是动画效果,因为这类之前XAS已经发挥到很高的地步,我们不需要再来个类XAS
技能动作多从这些方面考虑,应该会有很大的特色

点评

要画一两张图是没什么问题,问题是数量。。。  发表于 2010-10-8 18:56
独坐望城,望断天涯
回复 支持 反对

使用道具 举报

Lv1.梦旅人

旅之愚者

梦石
0
星屑
60
在线时间
811 小时
注册时间
2007-7-28
帖子
2148

贵宾

发表于 2010-10-9 11:28:09 | 显示全部楼层
本帖最后由 六祈 于 2010-10-9 12:20 编辑

回复 pudding 的帖子
用一个@count的变量,每帧update,@count-1,直到@count等于0时调用一次运算代码,并将@count重新赋值。
目前根据愚者目测,这个@count在VX中调整到60看起来仍然不是很明显的脱线…

ps:pudding君辛苦了~~~

点评

moy
timer函数的使用方法.....-1至0 = =  发表于 2010-10-10 01:02

评分

参与人数 1+4 收起 理由
「旅」 + 4 祈祈酱不要忘记我的主持费哟~~~ ...

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

站长信箱:fux2@moe9th.com|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2020-1-18 08:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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