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你一会必杀攻击  一会特技命中  一会灵巧 一会又技巧
其实这个是很简单的东西
你说得那么混乱,就算别人想给你弄 也弄不出来

必杀攻击理解为特技.技巧理解为灵巧
保留防御修正和状态修正
特技也可以防御
如果不想要自己删除
敌人没有武器.用数据库敌人属性面板中的攻击力来看作为敌人的武器攻击力
  1. #==============================================================================
  2. # ■ Game_Battler
  3. #==============================================================================

  4. class Game_Battler
  5.   #--------------------------------------------------------------------------
  6.   # ● 应用通常攻击效果
  7.   #     attacker : 攻击者 (battler)
  8.   #--------------------------------------------------------------------------
  9.   def attack_effect(attacker)
  10.     self.critical = false
  11.     # 计算命中
  12.     hzhj_hit = 100 - (attacker.dex - self.dex) * 2
  13.     hit_result = (rand(100) < hzhj_hit)
  14.    
  15.     # 命中的情况
  16.     if hit_result == true
  17.       # 如果攻击者是角色
  18.       if attacker.is_a?(Game_Actor)
  19.         # 攻击者力量 + 攻击者武器攻击力 - 被打者物理防御
  20.         self.damage = attacker.str + $data_weapons[attacker.weapon_id].atk - self.pdef
  21.       # 攻击者是敌人
  22.       else
  23.         # 攻击者力量 + 攻击者攻击力 - 被打者物理防御
  24.         self.damage = attacker.str + attacker.base_atk - self.pdef
  25.       end
  26.       
  27.       # 属性修正
  28.       self.damage *= elements_correct(attacker.element_set)
  29.       self.damage /= 100
  30.       
  31.       # 伤害符号正确的情况下
  32.       if self.damage > 0
  33.         # 暴击概率
  34.         # (攻击者灵巧 - 被打者灵巧) * 2
  35.         hzhj_baoji = (attacker.dex - self.dex) * 2
  36.         if rand(100) < hzhj_baoji
  37.           self.damage *= 2
  38.           self.critical = true
  39.         end
  40.         # 防御修正
  41.         if self.guarding?
  42.           self.damage /= 2
  43.         end
  44.       end
  45.       
  46.       # 状态冲击解除
  47.       remove_states_shock
  48.       # HP 的伤害计算
  49.       self.hp -= self.damage
  50.       # 状态变化
  51.       @state_changed = false
  52.       states_plus(attacker.plus_state_set)
  53.       states_minus(attacker.minus_state_set)
  54.     # Miss 的情况下
  55.     else
  56.       self.damage = "Miss"
  57.       self.critical = false
  58.     end
  59.     return true
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 应用特技效果
  63.   #     user  : 特技的使用者 (battler)
  64.   #     skill : 特技
  65.   #--------------------------------------------------------------------------
  66.   def skill_effect(user, skill)
  67.     self.critical = false
  68.     effective = false
  69.     effective |= skill.common_event_id > 0
  70.     # 计算命中
  71.     hzhj_hit = skill.hit - (user.dex - self.dex) * 2
  72.     hit_result = (rand(100) < hzhj_hit)
  73.     effective |= hzhj_hit < 100
  74.    
  75.     # 命中的情况
  76.     if hit_result == true
  77.       # 攻击者魔力 + 特技威力 - 被打者魔法防御
  78.       self.damage = user.int + skill.power - self.mdef
  79.       
  80.       # 属性修正
  81.       self.damage *= elements_correct(user.element_set)
  82.       self.damage /= 100
  83.       
  84.       # 伤害符号正确的情况下
  85.       if self.damage > 0
  86.         # 暴击概率
  87.         # (攻击者灵巧 - 被打者灵巧) * 2
  88.         hzhj_baoji = (user.dex - self.dex) * 2
  89.         if rand(100) < hzhj_baoji
  90.           self.damage *= 2
  91.           self.critical = true
  92.         end
  93.         # 防御修正
  94.         if self.guarding?
  95.           self.damage /= 2
  96.         end
  97.         effective = true
  98.       end
  99.       
  100.       # 状态冲击解除
  101.       remove_states_shock
  102.       # HP 的伤害计算
  103.       self.hp -= self.damage
  104.       # 状态变化
  105.       @state_changed = false
  106.       effective |= states_plus(skill.plus_state_set)
  107.       effective |= states_minus(skill.minus_state_set)
  108.     # Miss 的情况下
  109.     else
  110.       self.damage = "Miss"
  111.       self.critical = false
  112.     end
  113.     return effective
  114.   end
  115. end
  116. #==============================================================================
  117. # ■ Game_Actor
  118. #==============================================================================

  119. class Game_Actor < Game_Battler
  120.   #--------------------------------------------------------------------------
  121.   # ● 取得属性修正值
  122.   #     element_id : 属性 ID
  123.   #--------------------------------------------------------------------------
  124.   def element_rate(element_id)
  125.     # 获取对应属性有效度的数值
  126.     table = [0,400,200,100,50,0,-100]
  127.     result = table[$data_classes[@class_id].element_ranks[element_id]]
  128.     # 防具能防御本属性的情况下效果减半
  129.     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
  130.       armor = $data_armors[i]
  131.       if armor != nil and armor.guard_element_set.include?(element_id)
  132.         result /= 2
  133.       end
  134.     end
  135.     # 状态能防御本属性的情况下效果减半
  136.     for i in @states
  137.       if $data_states[i].guard_element_set.include?(element_id)
  138.         result /= 2
  139.       end
  140.     end
  141.     # 过程结束
  142.     return result
  143.   end
  144. end
  145. #==============================================================================
  146. # ■ Game_Enemy
  147. #==============================================================================

  148. class Game_Enemy < Game_Battler
  149.   #--------------------------------------------------------------------------
  150.   # ● 获取属性修正值
  151.   #     element_id : 属性 ID
  152.   #--------------------------------------------------------------------------
  153.   def element_rate(element_id)
  154.     # 获取对应属性有效度的数值
  155.     table = [0,400,200,100,50,0,-100]
  156.     result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
  157.     # 状态能防御本属性的情况下效果减半
  158.     for i in @states
  159.       if $data_states[i].guard_element_set.include?(element_id)
  160.         result /= 2
  161.       end
  162.     end
  163.     # 过程结束
  164.     return result
  165.   end
  166. 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