楼主: piaoy

[已经过期] 求伤害计算脚本

  [复制链接]
梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
回帖
638
发表于 2011-3-12 19:47:12 | 显示全部楼层
回复 piaoy 的帖子

好热闹~~
被攻击者.attack_effect(攻击者)
被攻击者.damage 就为伤害

比如
ar = $game_actors[2]
$game_actors[1].attack_effect(ar)
p $game_actors[1].damage
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

虚構歪曲

梦石
0
星屑
354
在线时间
1196 小时
注册时间
2010-12-18
回帖
3842

贵宾

发表于 2011-3-12 19:50:10 | 显示全部楼层
沙漠点灰 发表于 2011-3-12 19:47
回复 piaoy 的帖子

好热闹~~

1、重复发帖了。
2、你这个也是要在战斗中吧?(似乎不是)
3、热闹?理解不能
4、原来可以这样写?
5、……先留着。
回复

使用道具 举报

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
回帖
638
发表于 2011-3-12 20:02:30 | 显示全部楼层
回复 忧雪の伤 的帖子
1、重复发帖了。

不好意思,换页了,以为没有发....
2、你这个也是要在战斗中吧?

地图上测试过....
3、热闹?理解不能

个人认为....个人观点....个人....
4、原来可以这样写?

Game_Battler有
  attr_accessor :damage                   # 伤害值
5、……先留着

我也先留着
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

虚構歪曲

梦石
0
星屑
354
在线时间
1196 小时
注册时间
2010-12-18
回帖
3842

贵宾

发表于 2011-3-12 20:10:37 | 显示全部楼层
沙漠点灰 发表于 2011-3-12 20:02
回复 忧雪の伤 的帖子

那啥,会照成实际伤害吗?如果会的话记得加回去血(——大雾)
回复

使用道具 举报

梦石
0
星屑
55
在线时间
323 小时
注册时间
2010-8-21
回帖
638
发表于 2011-3-12 20:18:20 | 显示全部楼层
回复 忧雪の伤 的帖子

不会,因为没有执行
被攻击者.hp -= 被攻击者.damage

点评

额……  发表于 2011-3-12 20:20
>>猛戳>>MetalSagaR游戏主页<<这里<<
欢迎提供您的意见
回复

使用道具 举报

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
回帖
3515
发表于 2011-3-12 20:24:56 | 显示全部楼层
  1. def get_damage_louse(attacker,targer,miss=false)
  2.   louse_damage = 0
  3.   hit_result = (rand(100) < attacker.hit)
  4.   hit_result = false unless miss
  5.   if hit_result == true
  6.     atk = [attacker.atk - targer.pdef / 2, 0].max
  7.     louse_damage = atk * (20 + attacker.str) / 20
  8.     louse_damage *= elements_correct(attacker.element_set)
  9.     louse_damage /= 100
  10.     if louse_damage > 0
  11.       if targer.guarding?
  12.         louse_damage *= 100
  13.         louse_damage /= rand(100)+150
  14.       end
  15.     end
  16.     if louse_damage.abs > 0
  17.       amp = [louse_damage.abs * 15 / 100, 1].max
  18.       louse_damage += rand(amp+1) + rand(amp+1) - amp
  19.     end
  20.     eva = 8 * targer.agi / attacker.dex + targer.eva
  21.     hit = louse_damage < 0 ? 100 : 100 - eva
  22.     hit = targer.cant_evade? ? 100 : hit
  23.     hit_result = (rand(100) < hit)
  24.     hit_result = false unless miss
  25.   end
  26.   unless hit_result
  27.     louse_damage = 0
  28.   end
  29.   return louse_damage
  30. end
复制代码
调用方法:
事件中使用脚本
  1. 计算闪避(如果闪避返回0)
  2. get_damage_louse(攻击方,被攻击方,是否计算闪避)
  3. 不计算闪避:
  4. get_damage_louse(攻击方,被攻击方)
复制代码
注意:

括号中一定要用半角的逗号(,)而不能全角

示例:
  1. 1号角色攻击3号敌人:
  2. get_damage_louse($game_actors[1],$data_enemies[3])
  3. 2号角色攻击6号敌人:
  4. get_damage_louse($game_actors[2],$data_enemies[6])
  5. 1号敌人攻击2号角色:
  6. get_damage_louse($data_enemies[1],$game_actors[2])
复制代码

点评

又来个凑热闹的...  发表于 2011-3-12 20:29

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

咩

梦石
0
星屑
1640
在线时间
381 小时
注册时间
2010-10-9
回帖
286

开拓者

 楼主| 发表于 2011-3-13 08:57:04 | 显示全部楼层
你们这好象是直截调用了原定义的算法吧,我是要“重定义”(虽然算法一样)打个比方,魔塔战斗里不就有这样一段嘛

点评

我的稍微修改了一下……去掉了减少HP和判定会心一击  发表于 2011-3-13 09:45
回复

使用道具 举报

虚構歪曲

梦石
0
星屑
354
在线时间
1196 小时
注册时间
2010-12-18
回帖
3842

贵宾

发表于 2011-3-13 10:03:37 | 显示全部楼层
piaoy 发表于 2011-3-13 08:57
你们这好象是直截调用了原定义的算法吧,我是要“重定义”(虽然算法一样)打个比方,魔塔战斗里不就有这样 ...

虱子君的可是没有调用原算法啊……
回复

使用道具 举报

咩

梦石
0
星屑
1640
在线时间
381 小时
注册时间
2010-10-9
回帖
286

开拓者

 楼主| 发表于 2011-3-13 12:51:51 | 显示全部楼层
算了诺,各位至截告诉我攻击力的变量吧,$actor.atk什么的都不对NILCLASS
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部