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

Project1

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

[已经解决] 设计一个技能

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
跳转到指定楼层
1
发表于 2014-11-22 20:57:32 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 morningboo 于 2014-11-22 20:58 编辑

请教如何设计这样一个技能,技能的效果为如果a有此技能,攻击对手b后有一定概率使其产生状态c(这个很好实现,重点是后面的状态),状态c的效果为每回合减少对手b的hp,减少b的hp值为a的攻击力的15%~20%,且此技能可以叠加,比如a1,a2,a3均有此技能,同时攻击对手b后均产生状态c,那么对手b每回合减少a1攻击力的15%~20%的hp,a2攻击力的15%~20%的hp,a3攻击力的15%~20%的hp,轮到下回合时,如果a1,a2,a3又使b产生状态c,且上回合状态c未解除,那么继续叠加,请各位大大指点,谢谢

点评

光是状态叠加做起来就挺麻烦的了……更何况还要一直判断状态来源……你真要用状态当然可以,但是麻烦……而且工作量……口可口可  发表于 2014-11-22 21:22

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
7
 楼主| 发表于 2014-11-24 11:35:37 | 只看该作者
企鹅达达 发表于 2014-11-24 10:37
http://artificialprovidence.web.fc2.com/rgss3/r3enhance/RGSS3DAMAGEBOND.txt
http://www.rpgmakervxace ...

谢谢大大分享,第一个翻墙后注释是乱码,大大能帮忙翻下墙贴出来吗?

点评

OK,搞定,谢谢大大  发表于 2014-11-24 12:38
浏览器功能-工具-编码-自动检测  发表于 2014-11-24 12:20
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
180
在线时间
829 小时
注册时间
2010-6-26
帖子
671
6
发表于 2014-11-24 10:37:07 | 只看该作者
本帖最后由 企鹅达达 于 2014-11-24 10:41 编辑

http://artificialprovidence.web. ... RGSS3DAMAGEBOND.txt
http://www.rpgmakervxace.net/topic/1208-z11-states/
前者是持续伤害和攻击者攻击力、被攻击者等属性相关的脚本
后者是状态重复叠加的脚本
两者不知道会不会冲突,所以还是得你慢慢整合和测试
网址可能需要挂代理
新手们!不要被看扁了!我们也会用论坛搜索,我们也会自己找脚本,我们也会自己点击关闭按钮旁边的小问号!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
5
 楼主| 发表于 2014-11-23 19:23:55 | 只看该作者
谢谢大大解答,去好好研究下,如果看不懂的话也就不用考虑做这个技能了,请结贴
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

4
发表于 2014-11-22 21:30:39 | 只看该作者
本帖最后由 taroxd 于 2014-11-23 07:40 编辑
morningboo 发表于 2014-11-22 21:25
本人水平较低,根据大大说的,自己想了下,貌似得从伤害结算入手,配合一个公式中可以使用公共事件的脚本 ...


用一个新的类来保存状态的信息,包括“a1, a2, a3”,“还有几回合结束”等等

并且,在每回合结算时,更新一次“状态”信息和角色信息。

这种事情不建议在公共事件完成,建议纯脚本+技能公式。

不想打开 RM 参考默认脚本了,就给你个思路吧:

RUBY 代码复制
  1. class MyState
  2.  
  3.   def initialze
  4.     @users = []
  5.   end
  6.  
  7.   def add_user(user, turn)
  8.     @users.push [user, turn]
  9.   end
  10.  
  11.   # how much hp to change
  12.   def value
  13.     @users.inject(0) {|a, (user, _)| a + user.atk * (rand * 0.05 + 0.15) }
  14.   end
  15.  
  16.   # should be invoked every turn
  17.   def update
  18.     @users.delete_if {|pair| (pair[1] -= 1) <= 0 }
  19.   end
  20.  
  21.   # define state-like methods such as :priority, :restriction if necessary
  22.  
  23. end
  24.  
  25. class Game_BattlerBase
  26.  
  27.   # when initialize
  28.   #   @my_state = MyState.new
  29.  
  30.   # when turn starts
  31.   #   @my_state.update
  32.   #   self.hp -= @my_statue.value.to_i
  33.  
  34.   # override methods such as :states if necessary
  35.  
  36.   # should be invoked in the formula
  37.   def add_my_state(user, turn)
  38.     @my_state.add_user user, turn
  39.   end
  40. end

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
116 小时
注册时间
2009-7-17
帖子
139
3
 楼主| 发表于 2014-11-22 21:25:22 | 只看该作者
taroxd 发表于 2014-11-22 21:02
这种时候,就不应该依靠状态,建议干脆直接用脚本实现另一个系统即可

本人水平较低,根据大大说的,自己想了下,貌似得从伤害结算入手,配合一个公式中可以使用公共事件的脚本,可以试试,但是这个对敌我双方都是有效的,并且如何能够获取是谁发出的技能,大大能给个思路吗?
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-11-22 21:02:03 | 只看该作者
这种时候,就不应该依靠状态,建议干脆直接用脚本实现另一个系统即可
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 15:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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