Project1

标题: 省时,省力,省蛋疼!想省?——公共特性! [打印本页]

作者: 九夜神尊    时间: 2012-8-22 19:27
标题: 省时,省力,省蛋疼!想省?——公共特性!
本帖最后由 九夜神尊 于 2020-4-18 08:32 编辑
什么叫公共特性呢?

今天导演一再嘱咐说他设置的那17属性相克什么的是灵魂,怎么怎么!
我说你给每一个角色的特性上加上不就OK了?
导演一听,觉得不错!

然而我知道,往这所有的角色身上加那多特性,麻烦不说,不便于管理。于是,创意来了 !!!

为什么叫公共特性呢,这名字灵感来自于公共事件!


公共事件大家都知道,用一个事件代表事先写好的一大堆事件。

所以公共特性也就是用一个特性代表一大堆特性!!

就好比



这意图很明白,第二张图片的公共事件代表了第一页的全部事件!

公共特性的效果也是一样的!
并且支持无限递归!(递归是什么,能吃么?) !注意,两个公共特性相互调用的结果我不知道


使用方法:
首先设置好对应的状态。公共特性只能在状态栏里设置


然后下一步注意了。

在攻击栏里面设置,攻击附加状态 效果为 0%(因为原本这样设置是没有意义的,所以才不会产生冲突)
然后设置对应的状态。
这样一来,就会调用对应的状态的全部特性资料。。

好吧,我只能解释到这样了。看不懂没办法
RUBY 代码复制
  1. class RPG::BaseItem
  2.   def features
  3.     result = []
  4.     @features.each do |feature|
  5.       if feature.code == 32 and feature.value == 0
  6.         result+=$data_states[feature.data_id].features
  7.       else
  8.         result.push feature
  9.       end
  10.     end
  11.     return result
  12.   end
  13.  
  14. end


看了脚本别打我,就像魔术,创意是关键。!!!
因为不少新手根本就不知道这是做什么用的。所以就再做点点诠释!


对于那些做短片小游戏的作者们,这脚本可以不用,但是如果工程非常打,武器防具角色状态特别多,那么这脚本的效果就体现出来了。


一个大一点的工程,到处都需要设定特性,那么每个特性都像右边的小尼玛那样设置。
1是麻烦不说,如果什么时候有一个大的变动!是不是所有的特性都要大动干戈???

本来编程就注重代码的重复利用。。。

利用公共特性,将需要重复设定的特性设置成一个特性,然后直接调用。

就像调用公共事件那样。

作者: ·雾逝者·    时间: 2012-8-22 19:34
嗯?好比啥= =
没写完去吃饭了么
作者: 九夜神尊    时间: 2012-8-22 20:31
顶起,卖钱
作者: 羁绊の终    时间: 2012-8-22 21:55
好像是。。明白了。。
作者: 疯狂异形    时间: 2012-8-22 23:00
很不错啊!
但是如果想让帖子的受众面更广,可能你需要稍微讲解一下这些东西所能带来的结果。

我相信这世界上还是有不少有经验但不知道为什么他们应该买这个的用户。
作者: 358429534    时间: 2012-8-23 08:01
用途不详
作者: b64496752    时间: 2012-8-23 08:06
路过- -
作者: ♂雨    时间: 2012-8-23 10:34
本来以为付了经验就能看懂,没想到出现一堆代码还是没看懂!
作者: 九夜神尊    时间: 2012-8-23 11:16
♂雨 发表于 2012-8-23 10:34
本来以为付了经验就能看懂,没想到出现一堆代码还是没看懂!

会用公共事件不?这东西跟公共事件一个道理。
作者: b64496752    时间: 2012-8-23 13:50
感觉好像更麻烦- -
作者: lirn    时间: 2012-8-23 14:18
没有示范工程吗?
作者: Luciffer    时间: 2012-8-23 14:20
楼主有点想法嘛。。。不过吐槽游戏什么的。。。
=3=。。。怒求严肃游戏或者同人作品啊XD~
作者: 月下耶鲁夫    时间: 2012-8-23 15:01
虽然不知道是什么 但是看起来很好吃的样子
作者: 姬文翔    时间: 2012-8-23 16:16
猥琐的某导演路过……话说小九乃把俺们家猥琐数据库的前35个春也梦给泄露了哇~还好还有116个没泄露的
PS:其实我也是现在才明白你的意思。原来是把属性效果整合在一个状态的特性里啊……
作者: 咕噜    时间: 2012-8-24 11:40
我被雷死了……还有就是主要作用是什么…………选人?……
作者: ·雾逝者·    时间: 2012-8-24 12:36
表示理解了一些……
可能有人对为什么要弄0状态攻击不是太明白……
作者: 越前リョーマ    时间: 2012-8-25 02:01
类似PM那种庞大的数据库,但是种族对应的克制是一定的情况下,这样做省事太多太多了
很实用的创意啊
作者: lirn    时间: 2012-8-26 14:43
这个脚本能不能做到只是某种技能临时增加命中或者必杀率?
作者: 艾拉·贝尔    时间: 2012-8-26 15:02
\

当我看到这个的时候我选择喷了

已下噗出来 特别是第三行
作者: 彭格列第XI代    时间: 2012-8-26 16:06
没看懂- -
作者: 冰舞蝶恋    时间: 2012-8-26 19:54
啊噢,小玖果然一直很有创意……
作者: 疯狂异形    时间: 2012-8-26 23:40
顶一下小九的作品,顶一下顶一下
再接再厉~

对了……果然有很多新人看不懂啊,不准备出个分解教程么
作者: 黑色的笔    时间: 2012-8-27 00:00
我不明白= =但是我的工程又不大我为什么要懂呢.......
作者: 九夜神尊    时间: 2012-8-27 02:27
疯狂异形 发表于 2012-8-26 23:40
顶一下小九的作品,顶一下顶一下
再接再厉~

可以帮帮么?反正我是管不来了,触手太恐怖了。
作者: 疯狂异形    时间: 2012-8-27 02:36
本帖最后由 疯狂异形 于 2012-8-26 18:44 编辑
九夜神尊 发表于 2012-8-26 18:27
可以帮帮么?反正我是管不来了,触手太恐怖了。


刚刚试了一下……
好像真的已经解释得很清楚了……

  一个状态代表一系列特性特征,状态本身为一个集合。
因此在为职业,角色,单位调用特性特征时,不再需要对职业应有的每一个细节特性进行设置,而直接引用这一个状态,这一个集合就可以获得所对应的一切细节特性。

程序调用自身的编程技巧称为递归( recursion)。
  一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
  注意:
  (1) 递归就是在过程或函数里调用自身;
  (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

……真的看不懂?
作者: lirn    时间: 2012-8-27 11:03
其实我觉得解释这些名词没任何意义吧。

不知道我这么理解对不对。

假如有十种性格,那么同一种职业对应这十个性格就需要创造十个角色或者更多,这会使给游戏设置带来很大的麻烦以及添加很多工作量。

而现在,只需要为其所使用的武器添加一个攻击附加几率为0状态,那就相当于为这个角色本身附加了这样的属性状态,从而不需要为每个角色都设置同样的属性,不知道对不对。
作者: 九夜神尊    时间: 2012-8-27 12:39
本帖最后由 九夜神尊 于 2012-8-27 12:48 编辑
lirn 发表于 2012-8-27 11:03
其实我觉得解释这些名词没任何意义吧。

不知道我这么理解对不对。


你的理解不对,但是有一点点靠边了。
比方说有100个怪物,但是这些怪物总共就分为,人型,爬行,飞行,水性,虫,不死,金属。8个种类。
根据种类不同,对各种技能,属性的抵抗性也不同。

假如这100个敌人里面有20个是人型的。
那么我们就要给这20个人型敌人都设置同样的特性。别的种类也都要设置,这样100个敌人就设置了100次。
然后什么时候加入了新元素,对这些属性需要有一些改动,比方说人型怪物对物理攻击抵抗需要+20%,那么作者需要找到这20人型怪物,然后一个一个更改,,数据库设计的整齐还好,如果数据库各种怪物顺序混乱,找到这20个人型怪,比较复杂,甚至还会漏几个。

如果使用了这个脚本,对于人型怪物,只需要事先设置好一个关于人型怪物的特性,然后在每个人形怪物里,设置一下攻击附加几率0,这样这所有的人型怪物都有了相同的特性了。
假如需要什么时候更改,物理抵抗+20%的话,只需要对那一个状态改一次就OK了。不需要找到全部人形怪物。

再次拿公共事件做比较。

比方说你要做一个事件ARPG,
说一个最简单计算方式
首先就是变量主角和怪物的坐标。
如果击中了就计算伤害
伤害计算需要调用怪物的各种属性,主角的各种属性 。
当然这变量计算有多大一堆大家都知道。
最后在增减主角或者怪物的HP。

对于这一堆事件,每一个作者都会放到公事件里吧,然后在事件里直接调用公共事件吧?
没有人就在每一个敌人的事件里都设置一遍吧?
如果每一个事件都设置一遍,虽然可以复制粘贴,但是如果有一点点变动,那么所有的事件都要改一遍,我保证没有一个人会这么做。

特性也是同样的道理,你把每一个特性当成一个事件,一个怪物的特性是很多特性组成的列表。而公共特性就是将许多地方重复使用的特性集合在一起,然后直接调取。
作者: lirn    时间: 2012-8-27 12:46
如果技能也设置这样,能不能做到临时加上这种状态的数值?理论上。
作者: www.wuyoudk.com    时间: 2012-8-27 16:27
顶顶顶顶顶顶
作者: 绯红    时间: 2012-8-27 22:57
名字大亮
作者: 1243852    时间: 2012-9-8 01:31
经过测试,这东西似乎有一部分特性不支持。。 比如说装备类型。  我把装备类型放入公共特性,似乎没有效果。
作者: 清远    时间: 2012-10-11 20:32
这个脚本相当的实用呀 果断购买 虽然看到代码确实很简单
但是效果绝对不错




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1