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

Project1

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

[已经解决] 状态改变属性有效度的写法

[复制链接]

Lv4.逐梦者

梦石
0
星屑
13657
在线时间
3854 小时
注册时间
2013-7-18
帖子
2314
跳转到指定楼层
1
发表于 2018-6-11 18:47:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
怪物只有固定的属性有效度,如果状态改变属性有效度呢,当拥有3号状态时,1号属性为1.5倍伤害,2号属性为0.5倍伤害,4号状态时,1号属性为0.5倍伤害,2号属性为2倍伤害,该怎么写...
山岚野人,快人快语,礼数不周,还望海涵....

Lv5.捕梦者

梦石
0
星屑
39034
在线时间
5725 小时
注册时间
2006-11-10
帖子
6622
2
发表于 2018-6-11 20:23:52 | 只看该作者
搜索 element_rate  

用 @states.include?(state_id) 给 table 开分歧就行了

点评

在下愚昧,可否写个例子...  发表于 2018-6-12 15:27
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39034
在线时间
5725 小时
注册时间
2006-11-10
帖子
6622
3
发表于 2018-6-12 15:46:46 | 只看该作者
本帖最后由 灯笼菜刀王 于 2018-6-12 15:47 编辑

emmm,如果不懂脚本写法的话,先F1的入门看一遍,了解下基本的结构,然后再来玩这个

咱就假设你已经看过F1了,明白这些句子是干嘛用的了

栗子:我方game actor 和敌人game enemy 都有element_rate 这个函数,它就是用来判断属性有效度的

然后这个方法下面可以看到这句

# 获取对应属性有效度的数值
table = [0,200,150,100,50,0,-100]

具体数值就是这个数组了,代表了各个等级的伤害比例。从数字上可以判断出,它是按 (第一个0没用到,属于占坑用,因为数组是按0号开始算,无视它就行)ABCDEF这样排列

所以,你想要改不同的属性比例,那就改变里面的数字就可以了

然后,想要不同的状态下有不同的比例,那只要复制一份,然后套个分歧,满足这个条件的时候用新的数组就好了

if @states.include?(1)   #当中了1号状态的时候
  table = [0,1000,1000,1000,1000,1000,1000]   #所有属性全部十倍伤害
elsif $game_variables[1]  #1号开关打开的时候
  table = [0,0,0,0,0,0,0]  #所有属性全部0伤害
else
table = [0,200,150,100,50,0,-100]  
end

就这样,想要条件下用什么比例,一个一个加上去就OK.

点评

而A方案我没看懂,按照你的写法,中了1状态,所有属性都是10倍伤害,是固定的,无法再设置比如火属性是2倍,水属性是0.5倍...  发表于 2018-6-13 15:12
是的,B是我想要的做法,你也提到了,如果是b方案,那系统数据库的原始设定就没用了,会不会出现bug...  发表于 2018-6-13 15:10
而且,B方法对原本的属性判断无效,也就是说,你设置为火A的敌人,中了1号状态,受到火属性技能是4倍伤害,怎么处理,自己想想=。=  发表于 2018-6-13 11:23
两种方法的区别是,A,可以对所有包含“属性修正”起作用。 B,想起作用的地方一个一个加,平砍加一次,技能加一次,道具加一次,装备判断加...  发表于 2018-6-13 11:21
这种做法就是你要的:“按状态和按属性来一个一个设置伤害”最直接做法,也是最没效率做法  发表于 2018-6-13 11:17

评分

参与人数 2星屑 +100 +2 收起 理由
RyanBern + 100 + 1 认可答案
y967 + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39034
在线时间
5725 小时
注册时间
2006-11-10
帖子
6622
4
发表于 2018-6-13 11:47:01 | 只看该作者
本帖最后由 灯笼菜刀王 于 2018-6-13 12:08 编辑

还不会用的话,那你就乖乖的去game_battle3  一个一个在 self.hp -= self.damage 之前加上分歧

if self.states.include?(1) and skill.element_set.include?(1)  #第一个括号里的是状态ID,第二个括号里的是属性ID, 然后 self.damage 乘上你要的比例就好了。

要怎么变一个一个塞,像你主楼的效果,塞个4次就可以了,以后每多加个属性再多 N² 次分歧而已, 另外,记得平砍,技能,物品都要塞一次,至于4倍伤害什么的,自己解决

=========================================================================

咱最后给你的用法例子
[0,-100,0,100,50,150,200]

比例换成这样做会如何?  答案:数据库设置的属性逆转,原本火A的敌人变火属性吸收,水F的敌人变2倍伤害。

[0,100,0,0,0,0,0]

这样会如何? 答案 : 数据库设置的属性,只有属性A才能造成伤害,其他都是0,火A的敌人用火攻可以造成伤害,其他属性全部免疫,

[0,50,100,100,100,100,100]

这样会如何?  答案: 数据库设置的属性,属性A的敌人伤害减半,其他正常。 火A的敌人受到火属性攻击伤害减半,水A的敌人受到水属性攻击伤害减半

-----------------------------------

以上栗子,简单的说,就是,你可以在数据库里设置好某些敌人的弱点,然后通过调整比例,来控制这个弱点的伤害比例,同时不会影响到其他没设置该等级的人(让C都是100,也就是第4个数)

推荐用法: 使用加菲斑竹的“战斗阶段5个公共事件脚本” 在伤害计算前的公共事件里调整比例,就可以直接影响这次技能的结果,然后调回原本的比例,就不会对其他技能和其他敌人有任何影响,而且更容易调整自己需要的效果。

此脚本使用要求:熟悉每个战斗阶段在脚本里的位置,否则你无法驾驭。 自重。

点评

咱给你答案的时候,就已经说明过了: 这个方法是建立在你能消化F1脚本入门基础篇的前提下的  发表于 2018-6-13 16:23
如果还是不能理解,就算了,两条路给你选,一,认真啃下“数组,哈希表”这部分内容, 二,用你能理解的方法去一个一个分歧把。  发表于 2018-6-13 16:21
通过设置1号敌人,不同的属性弱点,来对比下element_ranks 内容的差别,你应该就能理解这串数组是干嘛用的了  发表于 2018-6-13 16:19
不是,这个数组就是“全部属性的有效度”而属性控制在element_ranks这个数组,你可以p 一下 $data_enemies[1].element_ranks 看看里面有什么  发表于 2018-6-13 16:17
[0,50,100,100,100,100,100]这个我又不理解了,火A减半理解,水A减半就不对了吧,水A还是一样2倍啊...  发表于 2018-6-13 15:28
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6245
在线时间
558 小时
注册时间
2018-6-5
帖子
129
5
发表于 2018-6-14 00:08:20 | 只看该作者
按状态和按属性来一个一个设置伤害即可
俄罗斯帝国末代沙皇尼古拉二世
#俄文转写 = Царь Николай II
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13657
在线时间
3854 小时
注册时间
2013-7-18
帖子
2314
6
 楼主| 发表于 2018-6-14 06:36:50 | 只看该作者
灯笼菜刀王 发表于 2018-6-13 11:47
还不会用的话,那你就乖乖的去game_battle3  一个一个在 self.hp -= self.damage 之前加上分歧

...

如果那数组里的那6个数是属性有效度,我有点明白了,你的意思是先在敌人设置属性有效度,尽量把各个属性的有效度设置的不一样,通过改变数组有效度的比例来达到改变怪对属性有效度的伤害....
虽然离我预想的精确改变有点不一样,但这样也是一种方法,而且可以达到生克的效果,无意间获得了我想要的生克效果...只是设定的部分变成了怪物属性有效度里设置...现在明白了

点评

知道了,多谢  发表于 2018-6-19 11:29
然后记得最后,伤害计算完了后,让变量归0,就不影响别的技能  发表于 2018-6-14 15:07
不错,炉子可浇也=v= ,这样只要有设置了弱点的怪,就随便你折腾了。另外,不需要额外开关,直接用变量分歧就可以了,F1查下 case 的用法  发表于 2018-6-14 15:06
1号变量纪录技能id,分歧,当1号变量为1号技能时候打开1号开关,2号技能时打开2号开关,获得不同的tab哈希表,改变属性有效度,达到技能专署效果  发表于 2018-6-14 15:02
找到def skill_effect(user, skill),在下面塞一句 $game_variables[1] = skill.id。 这样使用技能的时候,1号变量就是它的ID了,然后知道下面怎么做了吧  发表于 2018-6-14 11:15
山岚野人,快人快语,礼数不周,还望海涵....
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 19:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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