Project1

标题: 如何在角色狀態裡添加一個爆擊率? [打印本页]

作者: 鲔鱼吐司    时间: 2008-11-18 22:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: clap_pl    时间: 2008-11-18 23:02
在状态窗口类的refresh里面
self.contents.clear后面
加入一句
critical = XXXXXX #这里的XXXXX表示里的致命计算公式
#比如 敏捷/29 (29敏捷一致命)啊什么的
self.contents.draw_text(x,y,48,32,"爆击率:")
self.contents.draw_text(x+100,y,48,32,critical.to_s+"%")
#彩色部分表示 坐标 以及显示范围  请自行调整
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 鲔鱼吐司    时间: 2008-11-18 23:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: clap_pl    时间: 2008-11-19 00:00
要看你想在哪个窗口里添加了
内容其实就那么多 就几句话 解释一下好了
self.contents.clear 清空窗口内容
critical = XXXXXX #这里的XXXXX表示里的致命计算公式 把暴击的几率赋予这个变量
#比如 敏捷/29 (29敏捷一致命)啊什么的
self.contents.draw_text(x,y,48,32,"爆击率:")#显示文字 "暴击率:"
self.contents.draw_text(x+100,y,48,32,critical.to_s+"%") #把critical这个变量转换成字符串并显示出来

作者: 鲔鱼吐司    时间: 2008-11-19 00:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: 忧伤的小猫    时间: 2008-11-19 00:50
致命攻击概率 是受到双方敏捷能力影响的,如果你非要加上这一项,也可以,
设一个变量,代入自身敏捷值, 然后做点简单的数据处理,最后让他显示出来就行了
作者: 天圣的马甲    时间: 2008-11-19 00:53
这个ID我有印象,曾经伸手伸了三页差点把我问吐血的那个……
我觉得,还是自己学实在些。
http://rpg.blue/web/htm/news124.htm
http://rpg.blue/web/htm/news125.htm
作者: 忧伤的小猫    时间: 2008-11-19 00:54
以下引用天圣的马甲于2008-11-18 16:53:14的发言:

这个ID我有印象,曾经伸手伸了三页差点把我问吐血的那个……
我觉得,还是自己学实在些。
http://rpg.blue/web/htm/news124.htm
http://rpg.blue/web/htm/news125.htm

您说的是我么? [LINE]1,#dddddd[/LINE]版主对此帖的评论:『我说LZ,你紧张个啥= =』,积分『-0』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
作者: clap_pl    时间: 2008-11-19 01:36
呼 用下面这段代替脚本里的 Window_Status吧
我是在原版的脚本上改的  
因为考虑到致命的几率和敌人的速度有关
你可以把致命的判断公式改了
我这里用的致命的公式是 敏捷/10+5
也就是说如果敏捷为20 那么就是2+5=7的致命
在Game_battler 3里面修改致命的计算公式

if self.damage > 0
        # 会心一击修正
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
改成

if self.damage > 0
        # 会心一击修正
        if rand(100) < (attacker.dex / 10 + 5)#致命几率为 敏捷/10再+5
          self.damage *= 2
          self.critical = true


如下的替换 Window_Status 里的全部内容

#==============================================================================
# ■ Window_Status
#------------------------------------------------------------------------------
#  显示状态画面、完全规格的状态窗口。
#==============================================================================

class Window_Status < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     actor : 角色
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 0, 640, 480)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_graphic(@actor, 40, 112)
    draw_actor_name(@actor, 4, 0)
    draw_actor_class(@actor, 4 + 144, 0)
    draw_actor_level(@actor, 96, 32)
    draw_actor_state(@actor, 96, 64)
    draw_actor_hp(@actor, 96, 112, 172)
    draw_actor_sp(@actor, 96, 144, 172)
   
    self.contents.font.color = system_color
    self.contents.draw_text(96, 276, 120, 32, "致命")
    self.contents.font.color = normal_color
    critical = @actor.dex/10 + 5
   #这里要和Game_battler 3 里面的致命公式保持一致
   
    self.contents.draw_text(96 + 120, 276, 36, 32, critical.to_s + "%", 2)

    draw_actor_parameter(@actor, 96, 180, 0)
    draw_actor_parameter(@actor, 96, 212, 1)
    draw_actor_parameter(@actor, 96, 244, 2)
    draw_actor_parameter(@actor, 96, 304, 3)
    draw_actor_parameter(@actor, 96, 336, 4)
    draw_actor_parameter(@actor, 96, 368, 5)
    draw_actor_parameter(@actor, 96, 400, 6)
    self.contents.font.color = system_color
    self.contents.draw_text(320, 48, 80, 32, "EXP")
    self.contents.draw_text(320, 80, 80, 32, "NEXT")
    self.contents.font.color = normal_color
    self.contents.draw_text(320 + 80, 48, 84, 32, @actor.exp_s, 2)
    self.contents.draw_text(320 + 80, 80, 84, 32, @actor.next_rest_exp_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(320, 160, 96, 32, "装备")
    draw_item_name($data_weapons[@actor.weapon_id], 320 + 16, 208)
    draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 256)
    draw_item_name($data_armors[@actor.armor2_id], 320 + 16, 304)
    draw_item_name($data_armors[@actor.armor3_id], 320 + 16, 352)
    draw_item_name($data_armors[@actor.armor4_id], 320 + 16, 400)
  end
  def dummy
    self.contents.font.color = system_color
    self.contents.draw_text(320, 112, 96, 32, $data_system.words.weapon)
    self.contents.draw_text(320, 176, 96, 32, $data_system.words.armor1)
    self.contents.draw_text(320, 240, 96, 32, $data_system.words.armor2)
    self.contents.draw_text(320, 304, 96, 32, $data_system.words.armor3)
    self.contents.draw_text(320, 368, 96, 32, $data_system.words.armor4)
    draw_item_name($data_weapons[@actor.weapon_id], 320 + 24, 144)
    draw_item_name($data_armors[@actor.armor1_id], 320 + 24, 208)
    draw_item_name($data_armors[@actor.armor2_id], 320 + 24, 272)
    draw_item_name($data_armors[@actor.armor3_id], 320 + 24, 336)
    draw_item_name($data_armors[@actor.armor4_id], 320 + 24, 400)
  end
end [LINE]1,#dddddd[/LINE]版主对此帖的认可:『同情地抚摸一下这位老兄,有劳你继续给LX这位SSD同学写好现成东西吧……』,积分『+50』。
作者: 鲔鱼吐司    时间: 2008-11-19 15:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: clap_pl    时间: 2008-11-19 18:27
那不是一样的啊?
和这句大同小异
critical = @actor.dex/10 + 5
self.contents.draw_text(96 + 120, 276, 36, 32, critical.to_s + "%", 2)

Game_battler 3 里面有句
eva = 8 * self.agi / attacker.dex + self.eva
这个就是计算回避的
回避率为  (eva)  %



作者: 塑望    时间: 2008-11-19 18:39
嗯。。坚持。。

我曾经和LZ周旋了3页。。。结果泪流而去。。。。某某人继续顶这。。

你继续。。。LZ伸手无敌状态ing
作者: 鲔鱼吐司    时间: 2008-11-19 18:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: clap_pl    时间: 2008-11-19 19:14
eva = 8 * self.agi / attacker.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
if hit_result == true
          self.hp -= self.damage
else
           self.damage = "Miss"

根据这一段 应该 是 5% 吧

作者: 鲔鱼吐司    时间: 2008-11-19 19:37
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1