查看: 2218|回复: 6

[已经解决] 怎么在事件中使用脚本加攻防

[复制链接]
梦石
0
星屑
50
在线时间
215 小时
注册时间
2010-12-21
回帖
462
发表于 2012-2-6 21:58:17 | 显示全部楼层 |阅读模式

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

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

×
我想用事件加攻防,但是好像只能赋值不能加……我的事件脚本是这么写的:
$game_actors[1].pdef += 1
结果出错
没有签名

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
回帖
3515
发表于 2012-2-6 21:59:56 | 显示全部楼层
不如用状态吧
回复

使用道具 举报

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
回帖
2982

贵宾

发表于 2012-2-6 22:29:19 | 显示全部楼层
自己在Game_Actor项加一个方法不就行了?
回复

使用道具 举报

梦石
0
星屑
3677
在线时间
4468 小时
注册时间
2008-6-12
回帖
776
发表于 2012-2-7 00:09:38 | 显示全部楼层
pdef是Game_Battler 1中的一个方法,而Game_Actor中只有一个名为base_pdef的方法
这样做是不对的,你可以修改base_pdef方法来实现想要的效果,比如说在pdef1 + pdef2 + pdef3 + pdef4 + pdef5(分别是武器,四件套防具所加成的防御力)之外,加上第六项,你想设定的加成
本人三无老人,请大神轻拍
回复

使用道具 举报

梦石
0
星屑
50
在线时间
215 小时
注册时间
2010-12-21
回帖
462
 楼主| 发表于 2012-2-7 08:16:53 | 显示全部楼层
本帖最后由 露璐 于 2012-2-7 08:23 编辑
过眼云烟 发表于 2012-2-7 00:09
pdef是Game_Battler 1中的一个方法,而Game_Actor中只有一个名为base_pdef的方法
这样做是不对的,你可以修 ...


    pdef1 = weapon != nil ? weapon.pdef : 0
    pdef2 = armor1 != nil ? armor1.pdef : 0
    pdef3 = armor2 != nil ? armor2.pdef : 0
    pdef4 = armor3 != nil ? armor3.pdef : 0
    pdef5 = armor4 != nil ? armor4.pdef : 0
    pdef6 = $game_variables[51]
    return pdef1 + pdef2 + pdef3 + pdef4 + pdef5 + pdef6

像这样吗?

点评

那就麻烦你选为最佳答案吧,呵呵  发表于 2012-2-7 21:56
没有签名
回复

使用道具 举报

梦石
0
星屑
3677
在线时间
4468 小时
注册时间
2008-6-12
回帖
776
发表于 2012-2-7 08:56:08 | 显示全部楼层
本帖最后由 过眼云烟 于 2012-2-7 08:57 编辑
露璐 发表于 2012-2-7 08:16
pdef1 = weapon != nil ? weapon.pdef : 0
    pdef2 = armor1 != nil ? armor1.pdef : 0
    pdef3  ...


是,这样就可以了,这样的话所有人物的物理防御都会加上变量51的值。不知道这样是你不是你想要的效果
如果不是,再改就是

点评

是那种效果的 因为我做的游戏只有一个人物哈~这个不用管  发表于 2012-2-7 21:51
本人三无老人,请大神轻拍
回复

使用道具 举报

梦石
0
星屑
50
在线时间
57 小时
注册时间
2009-7-9
回帖
100
发表于 2012-2-7 11:07:27 | 显示全部楼层
本帖最后由 awyb3110 于 2012-2-7 16:01 编辑

def initialize
    @pdef = 0

def pdef=(pdef)
    @pdef += pdef - self.pdef
    @pdef = [[@pdef, -999].max, 999].min
  end
  
  def pdef
    n = base_pdef + @pdef
    for i in @states
      n *= $data_states.pdef_rate / 100.0
    end
    return Integer(n)
  end

正确的应该是这个样子,重新看了下,这样才是重新设置防御力。
用$game_party.actors[x] 像hp一样可以随便更改。


‘‘

Game_Battler 1
#--------------------------------------------------------------------------
  # ● 获取物理防御
  #--------------------------------------------------------------------------
  def pdef
    n = base_pdef
    for i in @states
      n *= $data_states.pdef_rate / 100.0
    end
    return Integer(n)
  end

改成

def pdef=(pdef)
    @pdef = 0if @pdef == nil
    @pdef += pdef - self.pdef
    @pdef = [[@pdef, -999].max, 999].min
  end
  
  def pdef
    n = base_pdef + @pdef
    for i in @states
      n *= $data_states.pdef_rate / 100.0
    end
    return Integer(n)
  end




──awyb3110于2012-2-7 22:10补充以上内容’’

点评

我自己已经想到问题解决办法了,谢谢。  发表于 2012-2-7 21:50
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部