Project1
标题:
帮忙制作rmxp1.02战斗伤害及属性脚本
[打印本页]
作者:
Bsallo
时间:
2009-10-9 19:13
标题:
帮忙制作rmxp1.02战斗伤害及属性脚本
本人属Rmxp白痴一个,想做一个自定义战斗伤害脚本,结果老是报错···没有信心了···所以前来求助!!希望大家帮忙!!
脚本效果要求:
第一单位用A表示 第二单位用B表示
1.普通攻击:(A力量+A武器攻击力)-B的防御力=B伤害HP
2.必杀攻击:(A魔法+A特技威力)-B的魔法防御=B伤害HP
3.普攻命中:100%-(A灵巧-B灵巧)x2 =A攻击命中
4.特技命中:A特技命中%-(A灵巧-B灵巧)x2 =A特技命中
5.暴击概率:(A技巧-B技巧)x2 =A暴击率%
暴击效果=普通效果x2
特技暴击概率同上,效果同上
6.属性效果:(武器、防具、特技效果通用)
F 吸收
E 无效
D 效果减半
C 无效果
B 效果x2
A 效果x4
7.以上所有效果都没有分散度,要求公式绝对精确
就好像 “1+1=2” 一定等于2一样。(废话!高手还不知道“分散度”吗?)
请大侠们多多帮忙,谢谢了!!
作者:
Bsallo
时间:
2009-10-9 19:15
一定还有很多人在关注rmxp1.02吧,我就不相信它就这么被人们所遗忘了!!百度里居然没人鸟我,不知道这里是不是也一样···残念啊···
作者:
九夜神尊
时间:
2009-10-9 19:21
你看看我发布的那个XP战斗公式重新整合
实际上公式看上去还要整齐一些
http://rpg.blue/viewthread.php?tid=114450
作者:
enter9009
时间:
2009-10-9 22:01
RM1.02的使用率本来就是大众级!(也就是说非常多人在用)
你去百度问这些问题,谁会鸟你?!
你不来这个国内唯一最全的的RPG制作大站?
用论坛右上角的"搜索"功能,输入你的关键词.
你想要的东西随手一抓就是一大把....
作者:
Bsallo
时间:
2009-10-10 02:33
唉!现在这个网站和柳柳大哥在的时候大不相同了···话说,柳柳大哥现在不做rpg了??
作者:
Bsallo
时间:
2009-10-10 02:40
不知道【九夜神尊】大哥能不能按我的要求给做个脚本不呢?你的那个貌似圣火徽章的脚本虽然与我需要的很接近,但是有些地方还是不太一样的··· ···拜托了!
作者:
九夜神尊
时间:
2009-10-10 08:13
一点点的不同是可以调节的嘛。还有很多实际上是根据实际测试
才得到得公式,实际上你的那个公式不一定就是合理,就光
战斗公式讲,也不是一开始就很合理的
作者:
Bsallo
时间:
2009-10-10 12:14
···其实我的要求也是很简单的,就是需要一个如我所讲效果的战斗伤害计算公式脚本···对于战斗公式的
合理性,我认为只要是公式它都有合理的地方···偶之Rgss几乎为零,如果让我修改【九夜至尊】大哥的脚
本,恐怕就不能用了······残念啊····
作者:
九夜神尊
时间:
2009-10-10 12:22
谁说要修改了呢,插进去就能用!有什么具体的要求在细说!
作者:
Bsallo
时间:
2009-10-10 12:29
如果直接插进去的话,不就是你的原版圣火徽章公式了吗?偶想要偶第一帖所说的那个效果的战斗脚本···这样的话,就必须修改脚本。但,偶之rgss等级没过关,改了就会报错~~~~所以:lol偶想请【九夜】大哥帮忙弄一弄哦···我想做一个游戏,就需要我所讲的那种脚本效果~~~
作者:
enter9009
时间:
2009-10-10 15:53
唉!现在这个网站和柳柳大哥在的时候大不相同了···话说,柳柳大哥现在不做rpg了??
Bsallo 发表于 2009-10-10 02:33
的确....
看着现在的人气....真是荒凉..的感觉!
关于6子,以下是不负责任传闻:
工作瓶颈+感情危机,正为生存挣扎...闭关修炼ING...
作者:
七夕小雨
时间:
2009-10-10 16:09
本帖最后由 七夕小雨 于 2009-10-10 16:16 编辑
…………
我大体说下吧
伤害的基本计算都是在Game_Battler 3中
比如你要的基本攻击,就在Game_Battler 3第50行有写
暴击是58行
分散度是60行左右……
只要对变量意义足够熟悉,很容易修改。
对了,如果你添加过关于战斗算法的脚本,那就在里面找Game_Battler 3咯
还有就是你说的装备效果,
只要记住装备序号也就可以了
1,判定是否装备
2.伤害计算
举例
if $game_party.actors[角色编号].equip_id = X
atk = [attacker.atk - self.pdef / 2, 0].max
self.damage = -(atk * (20 + attacker.str) / 20)
end
以上就是一个简单的穿装备可以吸血的脚本
判定不一定正确,很久没有做过带战斗的rpg了,过去也只是做过附加一个状态吸血的……
呵呵,我只能帮到这里了
作者:
后知后觉
时间:
2009-10-10 16:29
本帖最后由 后知后觉 于 2009-10-10 18:07 编辑
LZ你一会必杀攻击 一会特技命中 一会灵巧 一会又技巧
其实这个是很简单的东西
你说得那么混乱,就算别人想给你弄 也弄不出来
必杀攻击理解为特技.技巧理解为灵巧
保留防御修正和状态修正
特技也可以防御
如果不想要自己删除
敌人没有武器.用数据库敌人属性面板中的攻击力来看作为敌人的武器攻击力
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 应用通常攻击效果
# attacker : 攻击者 (battler)
#--------------------------------------------------------------------------
def attack_effect(attacker)
self.critical = false
# 计算命中
hzhj_hit = 100 - (attacker.dex - self.dex) * 2
hit_result = (rand(100) < hzhj_hit)
# 命中的情况
if hit_result == true
# 如果攻击者是角色
if attacker.is_a?(Game_Actor)
# 攻击者力量 + 攻击者武器攻击力 - 被打者物理防御
self.damage = attacker.str + $data_weapons[attacker.weapon_id].atk - self.pdef
# 攻击者是敌人
else
# 攻击者力量 + 攻击者攻击力 - 被打者物理防御
self.damage = attacker.str + attacker.base_atk - self.pdef
end
# 属性修正
self.damage *= elements_correct(attacker.element_set)
self.damage /= 100
# 伤害符号正确的情况下
if self.damage > 0
# 暴击概率
# (攻击者灵巧 - 被打者灵巧) * 2
hzhj_baoji = (attacker.dex - self.dex) * 2
if rand(100) < hzhj_baoji
self.damage *= 2
self.critical = true
end
# 防御修正
if self.guarding?
self.damage /= 2
end
end
# 状态冲击解除
remove_states_shock
# HP 的伤害计算
self.hp -= self.damage
# 状态变化
@state_changed = false
states_plus(attacker.plus_state_set)
states_minus(attacker.minus_state_set)
# Miss 的情况下
else
self.damage = "Miss"
self.critical = false
end
return true
end
#--------------------------------------------------------------------------
# ● 应用特技效果
# user : 特技的使用者 (battler)
# skill : 特技
#--------------------------------------------------------------------------
def skill_effect(user, skill)
self.critical = false
effective = false
effective |= skill.common_event_id > 0
# 计算命中
hzhj_hit = skill.hit - (user.dex - self.dex) * 2
hit_result = (rand(100) < hzhj_hit)
effective |= hzhj_hit < 100
# 命中的情况
if hit_result == true
# 攻击者魔力 + 特技威力 - 被打者魔法防御
self.damage = user.int + skill.power - self.mdef
# 属性修正
self.damage *= elements_correct(user.element_set)
self.damage /= 100
# 伤害符号正确的情况下
if self.damage > 0
# 暴击概率
# (攻击者灵巧 - 被打者灵巧) * 2
hzhj_baoji = (user.dex - self.dex) * 2
if rand(100) < hzhj_baoji
self.damage *= 2
self.critical = true
end
# 防御修正
if self.guarding?
self.damage /= 2
end
effective = true
end
# 状态冲击解除
remove_states_shock
# HP 的伤害计算
self.hp -= self.damage
# 状态变化
@state_changed = false
effective |= states_plus(skill.plus_state_set)
effective |= states_minus(skill.minus_state_set)
# Miss 的情况下
else
self.damage = "Miss"
self.critical = false
end
return effective
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 取得属性修正值
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 获取对应属性有效度的数值
table = [0,400,200,100,50,0,-100]
result = table[$data_classes[@class_id].element_ranks[element_id]]
# 防具能防御本属性的情况下效果减半
for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
armor = $data_armors[i]
if armor != nil and armor.guard_element_set.include?(element_id)
result /= 2
end
end
# 状态能防御本属性的情况下效果减半
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result /= 2
end
end
# 过程结束
return result
end
end
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ● 获取属性修正值
# element_id : 属性 ID
#--------------------------------------------------------------------------
def element_rate(element_id)
# 获取对应属性有效度的数值
table = [0,400,200,100,50,0,-100]
result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
# 状态能防御本属性的情况下效果减半
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result /= 2
end
end
# 过程结束
return result
end
end
复制代码
作者:
九夜神尊
时间:
2009-10-10 18:14
用我的脚本的话,是给我挖坟。但是要我给你写脚本的话,
我没时间啦
作者:
Bsallo
时间:
2009-10-10 20:50
由于引用了阁下的脚本,结果提示:game_Battler 3的第29行发生NoMethoderror··· ···与我类似的报错···不知道这个错误是什么原因呢···
作者:
Bsallo
时间:
2009-10-10 20:51
13#
后知后觉
由于引用了阁下的脚本,结果提示:game_Battler 3的第29行发生NoMethoderror··· ···与我类似的报错···不知道这个错误是什么原因呢···
作者:
Bsallo
时间:
2009-10-10 21:06
13#
后知后觉
阁下的脚本貌似不太正常啊···我设置的主角灵巧为60,速度60 敌人灵巧10,速度10 结果主角攻击敌人必不中,而敌人攻击主角必中且暴击机率很大:dizzy: 这是怎么回事啊??!请阁下帮忙看看!!谢谢诶~~~~
作者:
后知后觉
时间:
2009-10-10 21:47
如果我的脚本帖到新开的工程里会报告错误
那的确是我的脚本的问题
如果新开的工程里一切正常,那就不是我的脚本问题了~
作者:
Bsallo
时间:
2009-10-10 21:54
18#
后知后觉
您确定您测试过吗?我刚才测试了一下您的脚本,主要存在的问题有:
1.速度高了反而不能击中敌人(也许是"<"要改为">")
# 计算命中
hzhj_hit = 100 - (attacker.dex - self.dex) * 2
hit_result = (rand(100) < hzhj_hit)
2.没有暴击。
3.当敌人防御力高于主角攻击力的时候,攻击变成对敌人“加血”
偶是新开的工程,再粘贴的您的脚本。(偶没有责备的意思,您肯帮忙我已经非常感谢了)
作者:
后知后觉
时间:
2009-10-10 22:22
你主楼写的是
3.普攻命中:100%-(A灵巧-B灵巧)x2 =A攻击命中
100-(60-10)*2=?
当然不会命中
你给的所有资料里可没有说过 速度
至于加血的确是个BUG
self.damage = [attacker.str + $data_weapons[attacker.weapon_id].atk - self.pdef, 0].max
self.damage = [attacker.str + attacker.base_atk - self.pdef, 0].max
self.damage = [user.int + skill.power - self.mdef, 0].max
这样改了后没有加血特技
作者:
Bsallo
时间:
2009-10-10 22:45
20#
后知后觉
真的糊涂了···现在又出现“回避无视”的效果,即使速度为0,命中也是100(命中相关偶改成速度了)阁下就好人做到底吧,给我一个修正后的脚本,偶就不至于那么抓狂了···
万分的感谢bz阁下!!!偶再说明一下偶的脚本要求哈···
作者:
Bsallo
时间:
2009-10-10 23:07
脚本效果要求:
第一单位用A表示 第二单位用B表示
1.普通攻击:(A力量+A武器攻击力)-B的防御力=B伤害HP
2.特技攻击:(A魔力+A特技威力)-B的魔法防御=B伤害HP
3.普攻命中:80%-(B速度-A速度)x2 =A攻击命中
4.特技命中:A特技命中%-(B灵巧-A灵巧)x2 =A特技命中
5.暴击概率:(A技巧-B技巧)x2 =A暴击率%
暴击效果=普通效果x2
特技暴击概率同上,效果同上
6.属性效果:(武器、防具、特技效果通用)
F 吸收
E 无效
D 效果减半
C 无效果
B 效果x2
A 效果x4
7.以上所有效果都没有分散度,要求公式绝对精确
作者:
Bsallo
时间:
2009-10-10 23:51
13#
后知后觉
感谢BZ大人的帮助,偶给您的脚本改了一下,现在基本没有问题了!万分感谢!!再次感谢!!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1