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

Project1

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

[已经解决] 怎么给脚本加这么一个属性。。高手来帮忙下

[复制链接]

Lv2.观梦者

梦石
0
星屑
501
在线时间
301 小时
注册时间
2010-7-3
帖子
133
跳转到指定楼层
1
发表于 2013-9-19 00:35:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
比如

特殊1  属性

如果敌人持有特殊1效果的话。。角色对这个敌人伤害无效。。
如果角色也有这个特殊1效果   角色则可以对其伤害
A B C D F E

如果 角色1
持有

属性1   A
的话伤害敌人为   自身伤害100%

属性1   B
的话伤害敌人为 自身伤害90%

属性1   C
的话伤害敌人为自身伤害80%

属性1   D
的话伤害敌人为自身伤害70%

属性1   F
的话伤害敌人为自身伤害60%

属性1   E
的话伤害敌人为自身伤害50%

如果角色没有这个  特殊  属性1的话对怪伤害无效
这个设置值设置在职业哪里的。。
前辈们怎么改啊。。
我不会脚本呢
我想要改的是对所有的角色起效果。。

Lv2.观梦者

梦石
0
星屑
501
在线时间
301 小时
注册时间
2010-7-3
帖子
133
2
 楼主| 发表于 2013-9-20 00:33:14 | 只看该作者
????没谁吗???????
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

3
发表于 2013-9-20 08:57:37 | 只看该作者
楼主的问题我好像不是很明白,下面是我理解的,看看是不是这个意思。
设置一个特殊的状态S(不是属性),如果战斗的两个人同时具有或者同时不具有状态S,那么可以互相进行伤害;如果只有一个人具有状态S,则没有该状态的人无法对有该状态的人产生伤害。
如果产生了伤害,那么属性伤害修正值和游戏内部设定(也就是ABCDEF)相同。
不过不知道为啥楼主要更改那个属性修正值的百分比,这样做没有什么意义啊,而且那些百分比差别不大,也没多大效果。
如果是这个意思我就写脚本了,不是的话,还请做详细说明。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
501
在线时间
301 小时
注册时间
2010-7-3
帖子
133
4
 楼主| 发表于 2013-9-30 03:37:45 | 只看该作者
RyanBern 发表于 2013-9-20 08:57
楼主的问题我好像不是很明白,下面是我理解的,看看是不是这个意思。
设置一个特殊的状态S(不是属性),如 ...

是脚本的。。。其实我说的有点复杂了。。说简单点就是 当敌人拥有属性 自定义  在脚本加的这个属性
而角色没有持有这个属性的话,那么角色对怪物的伤害就是0了,如果有了这个属性的话,那么伤害可以以ABCDEF来定义。。具体一点就是那么一个意思,好心人。。真的我的游戏做很久了,如果你能够帮助我的话。。我也会帮助到你的。。这一步如果我这个属性改不了的话。那么游戏。没有创作下去的构想系统了
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

5
发表于 2013-9-30 08:27:05 | 只看该作者
a111a 发表于 2013-9-30 03:37
是脚本的。。。其实我说的有点复杂了。。说简单点就是 当敌人拥有属性 自定义  在脚本加的这个属性
而角 ...

已经做好了一个,楼主看看行不行吧,有问题随时找我就好。
  1. #==============================================================================
  2. # 特殊的伤害处理脚本
  3. # 作者:RyanBern
  4. #==============================================================================
  5. # 主要功能:
  6. #     增加一个特殊的属性,当被攻击者具有这个属性时,如果攻击的人不具有这个属性
  7. #     则无法进行伤害。(对敌人和主角都是如此)
  8. #     只有在普通攻击和特技攻击时,本脚本生效,使用物品时脚本无效。并且如果角色
  9. #     持有[普通攻击同伴]的状态时,脚本不会生效。
  10. #------------------------------------------------------------------------------
  11. # 使用方法:
  12. #     定义下面两个数组,表示具有该属性的角色ID和敌人ID。
  13. #     比如说SPECIAL_ENEMIES = [1],SPECIAL_ACTORS = [1],这样,除了1号角色意外
  14. #     别的角色都不能对1号敌人造成伤害,除了1号敌人以外,别的敌人都不能对1号角
  15. #     色造成伤害。
  16. #     如果不想要角色无伤害的效果,只要删除脚本第42行到第48行,第134行到第140行即可。
  17. #     直接放到Main组后面即可。
  18. #==============================================================================

  19. SPECIAL_ENEMIES = []
  20. SPECIAL_ACTORS = []

  21. class Game_Battler
  22.   #--------------------------------------------------------------------------
  23.   # ● 应用通常攻击效果
  24.   #     attacker : 攻击者 (battler)
  25.   #--------------------------------------------------------------------------
  26.   def attack_effect(attacker)
  27.     # 清除会心一击标志
  28.     self.critical = false
  29.     # 第一命中判定
  30.     hit_result = (rand(100) < attacker.hit)
  31.     # 命中的情况下
  32.     if hit_result == true
  33.       # 特殊伤害处理(敌人用)
  34.       if self.is_a?(Game_Enemy) and attacker.is_a?(Game_Actor)
  35.         if SPECIAL_ENEMIES.include?(self.id) and not SPECIAL_ACTORS.include?(attacker.id)
  36.           self.damage = 0
  37.           return true
  38.         end
  39.       end
  40.       # 特殊伤害处理(角色用)
  41.       if self.is_a?(Game_Actor) and attacker.is_a?(Game_Enemy)
  42.         if SPECIAL_ACTORS.include?(self.id) and not SPECIAL_ENEMIES.include?(attacker.id)
  43.           self.damage = 0
  44.           return true
  45.         end
  46.       end
  47.       # 计算基本伤害
  48.       atk = [attacker.atk - self.pdef / 2, 0].max
  49.       self.damage = atk * (20 + attacker.str) / 20
  50.       # 属性修正
  51.       self.damage *= elements_correct(attacker.element_set)
  52.       self.damage /= 100
  53.       # 伤害符号正确的情况下
  54.       if self.damage > 0
  55.         # 会心一击修正
  56.         if rand(100) < 4 * attacker.dex / self.agi
  57.           self.damage *= 2
  58.           self.critical = true
  59.         end
  60.         # 防御修正
  61.         if self.guarding?
  62.           self.damage /= 2
  63.         end
  64.       end
  65.       # 分散
  66.       if self.damage.abs > 0
  67.         amp = [self.damage.abs * 15 / 100, 1].max
  68.         self.damage += rand(amp+1) + rand(amp+1) - amp
  69.       end
  70.       # 第二命中判定
  71.       eva = 8 * self.agi / attacker.dex + self.eva
  72.       hit = self.damage < 0 ? 100 : 100 - eva
  73.       hit = self.cant_evade? ? 100 : hit
  74.       hit_result = (rand(100) < hit)
  75.     end
  76.     # 命中的情况下
  77.     if hit_result == true
  78.       # 状态冲击解除
  79.       remove_states_shock
  80.       # HP 的伤害计算
  81.       self.hp -= self.damage
  82.       # 状态变化
  83.       @state_changed = false
  84.       states_plus(attacker.plus_state_set)
  85.       states_minus(attacker.minus_state_set)
  86.     # Miss 的情况下
  87.     else
  88.       # 伤害设置为 "Miss"
  89.       self.damage = "Miss"
  90.       # 清除会心一击标志
  91.       self.critical = false
  92.     end
  93.     # 过程结束
  94.     return true
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 应用特技效果
  98.   #     user  : 特技的使用者 (battler)
  99.   #     skill : 特技
  100.   #--------------------------------------------------------------------------
  101.   def skill_effect(user, skill)
  102.     # 清除会心一击标志
  103.     self.critical = false
  104.     # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  105.     # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  106.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  107.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  108.       # 过程结束
  109.       return false
  110.     end
  111.     # 清除有效标志
  112.     effective = false
  113.     # 公共事件 ID 是有效的情况下,设置为有效标志
  114.     effective |= skill.common_event_id > 0
  115.     # 第一命中判定
  116.     hit = skill.hit
  117.     if skill.atk_f > 0
  118.       hit *= user.hit / 100
  119.     end
  120.     hit_result = (rand(100) < hit)
  121.     # 不确定的特技的情况下设置为有效标志
  122.     effective |= hit < 100
  123.     # 命中的情况下
  124.     if hit_result == true
  125.       # 特殊伤害处理(敌人用)
  126.       if self.is_a?(Game_Enemy) and user.is_a?(Game_Actor)
  127.         if SPECIAL_ENEMIES.include?(self.id) and not SPECIAL_ACTORS.include?(user.id)
  128.           self.damage = 0
  129.           return true
  130.         end
  131.       end
  132.       # 特殊伤害处理(角色用)
  133.       if self.is_a?(Game_Actor) and user.is_a?(Game_Enemy)
  134.         if SPECIAL_ACTORS.include?(self.id) and not SPECIAL_ENEMIES.include?(user.id)
  135.           self.damage = 0
  136.           return true
  137.         end
  138.       end
  139.       # 计算威力
  140.       power = skill.power + user.atk * skill.atk_f / 100
  141.       if power > 0
  142.         power -= self.pdef * skill.pdef_f / 200
  143.         power -= self.mdef * skill.mdef_f / 200
  144.         power = [power, 0].max
  145.       end
  146.       # 计算倍率
  147.       rate = 20
  148.       rate += (user.str * skill.str_f / 100)
  149.       rate += (user.dex * skill.dex_f / 100)
  150.       rate += (user.agi * skill.agi_f / 100)
  151.       rate += (user.int * skill.int_f / 100)
  152.       # 计算基本伤害
  153.       self.damage = power * rate / 20
  154.       # 属性修正
  155.       self.damage *= elements_correct(skill.element_set)
  156.       self.damage /= 100
  157.       # 伤害符号正确的情况下
  158.       if self.damage > 0
  159.         # 防御修正
  160.         if self.guarding?
  161.           self.damage /= 2
  162.         end
  163.       end
  164.       # 分散
  165.       if skill.variance > 0 and self.damage.abs > 0
  166.         amp = [self.damage.abs * skill.variance / 100, 1].max
  167.         self.damage += rand(amp+1) + rand(amp+1) - amp
  168.       end
  169.       # 第二命中判定
  170.       eva = 8 * self.agi / user.dex + self.eva
  171.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  172.       hit = self.cant_evade? ? 100 : hit
  173.       hit_result = (rand(100) < hit)
  174.       # 不确定的特技的情况下设置为有效标志
  175.       effective |= hit < 100
  176.     end
  177.     # 命中的情况下
  178.     if hit_result == true
  179.       # 威力 0 以外的物理攻击的情况下
  180.       if skill.power != 0 and skill.atk_f > 0
  181.         # 状态冲击解除
  182.         remove_states_shock
  183.         # 设置有效标志
  184.         effective = true
  185.       end
  186.       # HP 的伤害减法运算
  187.       last_hp = self.hp
  188.       self.hp -= self.damage
  189.       effective |= self.hp != last_hp
  190.       # 状态变化
  191.       @state_changed = false
  192.       effective |= states_plus(skill.plus_state_set)
  193.       effective |= states_minus(skill.minus_state_set)
  194.       # 威力为 0 的场合
  195.       if skill.power == 0
  196.         # 伤害设置为空的字串
  197.         self.damage = ""
  198.         # 状态没有变化的情况下
  199.         unless @state_changed
  200.           # 伤害设置为 "Miss"
  201.           self.damage = "Miss"
  202.         end
  203.       end
  204.     # Miss 的情况下
  205.     else
  206.       # 伤害设置为 "Miss"
  207.       self.damage = "Miss"
  208.     end
  209.     # 不在战斗中的情况下
  210.     unless $game_temp.in_battle
  211.       # 伤害设置为 nil
  212.       self.damage = nil
  213.     end
  214.     # 过程结束
  215.     return effective
  216.   end
  217. end
复制代码

评分

参与人数 1星屑 +75 收起 理由
myownroc + 75 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
501
在线时间
301 小时
注册时间
2010-7-3
帖子
133
6
 楼主| 发表于 2013-9-30 19:08:07 | 只看该作者
RyanBern 发表于 2013-9-30 08:27
已经做好了一个,楼主看看行不行吧,有问题随时找我就好。

OK了~~~谢谢好心人了,成功了~另外我留联系地址:[email protected]
有啥需要帮助的找我。。
素材收集我很多。。
也请好心人能够多多指教我。。相互帮助。。有需要我会力所能及的。
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

7
发表于 2013-9-30 19:13:34 | 只看该作者
a111a 发表于 2013-9-30 19:08
OK了~~~谢谢好心人了,成功了~另外我留联系地址:
有啥需要帮助的找我。。
素材收集我很多。。

好的,其实我已经很长时间不写游戏了,很多东西都生疏了……
曾经写过一个又臭又长的游戏,不过一直没有发布……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
501
在线时间
301 小时
注册时间
2010-7-3
帖子
133
8
 楼主| 发表于 2013-9-30 19:16:54 | 只看该作者
本帖最后由 a111a 于 2013-9-30 19:18 编辑
RyanBern 发表于 2013-9-30 08:27
已经做好了一个,楼主看看行不行吧,有问题随时找我就好。


怎么加开关??

我想加入多项开关
类似
if $game_switches[??]这类

if $game_switches(2)
SPECIAL_ENEMIES = [1]
SPECIAL_ACTORS = [1,2]
else
if $game_switches(1)
SPECIAL_ENEMIES = [1]
SPECIAL_ACTORS = [1]
end
想这样的多重变量。。
如果变量打开才能进行伤害。。
就像是角色修炼了某项对这种特殊怪物的招式然后才能对怪物进行伤害。。
设置开关


我看了一下RPG MAKE XP 的F1 ···好复杂看不懂,,求指教
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

9
发表于 2013-9-30 19:23:25 | 只看该作者
a111a 发表于 2013-9-30 19:16
怎么加开关??

我想加入多项开关

这样吧,那个邮箱号码是你QQ么?加QQ说吧。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
501
在线时间
301 小时
注册时间
2010-7-3
帖子
133
10
 楼主| 发表于 2013-9-30 19:41:36 | 只看该作者
RyanBern 发表于 2013-9-30 19:23
这样吧,那个邮箱号码是你QQ么?加QQ说吧。

QQ1161971299~~~好的。。太谢谢你的,如果可以的话。。合作也行
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-30 12:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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