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

Project1

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

[已经过期] 请教一下关于属性的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
5 小时
注册时间
2012-12-23
帖子
5
跳转到指定楼层
1
 楼主| 发表于 2013-2-8 09:52:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
让攻击附加一个吸收SP的属性,不用公共事件,在“炎,雷”等属性里增加一个“吸收SP”的属性,怎么在脚本里增加这个效果?

Lv1.梦旅人

梦石
0
星屑
217
在线时间
828 小时
注册时间
2010-6-22
帖子
120

开拓者

2
发表于 2013-2-8 12:42:39 | 只看该作者
本帖最后由 hcm 于 2013-2-24 14:04 编辑

這樣行不樓主??
把這段腳本直接加到 Main 之上, Scene_Debug 之下
  1. # 紀錄吸收 SP 的屬性 ID , 必須與資料庫設定一樣
  2. SP_Damage_ID = 17
  3. #==============================================================================
  4. # ■ Game_Battler (第三部份)
  5. #------------------------------------------------------------------------------
  6. # 處理戰鬥者的類別。這個類別作為 Game_Actor 類別與 Game_Enemy 類別總綱來使用。
  7. #==============================================================================

  8. class Game_Battler
  9.   #--------------------------------------------------------------------------
  10.   # ● 應用特技效果
  11.   #     user  : 特技的使用者 (battler)
  12.   #     skill : 特技
  13.   #--------------------------------------------------------------------------
  14.   def skill_effect(user, skill)
  15.     # 清除會心一擊標誌
  16.     self.critical = false
  17.     # 特技的效果範圍是 HP 1 以上的我方、自己的 HP 為 0、
  18.     # 或者特技的效果範圍是 HP 0 的我方、自己的 HP 為 1 以上的情況下
  19.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  20.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  21.       # 過程結束
  22.       return false
  23.     end
  24.     # 清除有效標誌
  25.     effective = false
  26.     # 共通事件 ID 是有效的情況下,設定為有效標誌
  27.     effective |= skill.common_event_id > 0
  28.     # 第一命中判斷
  29.     hit = skill.hit
  30.     if skill.atk_f > 0
  31.       hit *= user.hit / 100
  32.     end
  33.     hit_result = (rand(100) < hit)
  34.     # 不確定特技的情況下設定為有效標誌
  35.     effective |= hit < 100
  36.     # 命中的情況下
  37.     if hit_result == true
  38.       # 計算威力
  39.       power = skill.power + user.atk * skill.atk_f / 100
  40.       if power > 0
  41.         power -= self.pdef * skill.pdef_f / 200
  42.         power -= self.mdef * skill.mdef_f / 200
  43.         power = [power, 0].max
  44.       end
  45.       # 計算倍率
  46.       rate = 20
  47.       rate += (user.str * skill.str_f / 100)
  48.       rate += (user.dex * skill.dex_f / 100)
  49.       rate += (user.agi * skill.agi_f / 100)
  50.       rate += (user.int * skill.int_f / 100)
  51.       # 計算基本傷害
  52.       self.damage = power * rate / 20
  53.       sp_damege = power * rate / 20
  54.       # 屬性修正
  55.       self.damage *= elements_correct(skill.element_set)
  56.       self.damage /= 100
  57.       sp_damege *= elements_correct(skill.element_set)
  58.       sp_damege /= 100
  59.       # 傷害符號正確的情況下
  60.       if self.damage > 0
  61.         # 防禦修正
  62.         if self.guarding?
  63.           self.damage /= 2
  64.           sp_damege /= 2
  65.         end
  66.       end
  67.       # 分散
  68.       if skill.variance > 0 and self.damage.abs > 0
  69.         amp = [self.damage.abs * skill.variance / 100, 1].max
  70.         self.damage += rand(amp+1) + rand(amp+1) - amp
  71.         sp_damege += rand(amp+1) + rand(amp+1) - amp
  72.       end
  73.       # 第二命中判斷
  74.       eva = 8 * self.agi / user.dex + self.eva
  75.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  76.       hit = self.cant_evade? ? 100 : hit
  77.       hit_result = (rand(100) < hit)
  78.       # 不確定特技的情況下設定為有效標誌
  79.       effective |= hit < 100
  80.     end
  81.     # 命中的情況下
  82.     if hit_result == true
  83.       # 威力 0 以外的物理攻擊的情況下
  84.       if skill.power != 0 and skill.atk_f > 0
  85.         # 狀態衝擊解除
  86.         remove_states_shock
  87.         # 設定有效標誌
  88.         effective = true
  89.       end
  90.       # HP 的傷害減法運算
  91.       last_hp = self.hp
  92.       self.hp -= self.damage
  93.       # 如果有吸收 SP 傷害的屬性技能
  94.       if skill.element_set.include?(SP_Damage_ID)
  95.         self.sp -= self.damage
  96.         user.sp += sp_damege
  97.       end
  98.       effective |= self.hp != last_hp
  99.       # 狀態變化
  100.       @state_changed = false
  101.       effective |= states_plus(skill.plus_state_set)
  102.       effective |= states_minus(skill.minus_state_set)
  103.       # 威力為 0 的場合
  104.       if skill.power == 0
  105.         # 傷害設定為空的字串
  106.         self.damage = ""
  107.         # 狀態沒有變化的情況下
  108.         unless @state_changed
  109.           # 傷害設定為 "Miss"
  110.           self.damage = "Miss"
  111.         end
  112.       end
  113.     # Miss 的情況下
  114.     else
  115.       # 傷害設定為 "Miss"
  116.       self.damage = "Miss"
  117.     end
  118.     # 不在戰鬥中的情況下
  119.     unless $game_temp.in_battle
  120.       # 傷害設定為 nil
  121.       self.damage = nil
  122.     end
  123.     # 過程結束
  124.     return effective
  125.   end
  126. end
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
445
在线时间
377 小时
注册时间
2012-11-5
帖子
267
3
发表于 2013-2-8 13:35:35 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-29 20:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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