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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
215 小时
注册时间
2010-12-21
帖子
517
跳转到指定楼层
1
发表于 2012-2-6 21:58:17 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我想用事件加攻防,但是好像只能赋值不能加……我的事件脚本是这么写的:
$game_actors[1].pdef += 1
结果出错
没有签名

Lv1.梦旅人

梦石
0
星屑
50
在线时间
57 小时
注册时间
2009-7-9
帖子
124
7
发表于 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
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3657
在线时间
4466 小时
注册时间
2008-6-12
帖子
802
6
发表于 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
本人三无老人,请大神轻拍
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
215 小时
注册时间
2010-12-21
帖子
517
5
 楼主| 发表于 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
没有签名
回复

使用道具 举报

Lv3.寻梦者

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

使用道具 举报

Lv1.梦旅人

Mr.Gandum

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

贵宾

3
发表于 2012-2-6 22:29:19 | 只看该作者
自己在Game_Actor项加一个方法不就行了?
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2012-2-6 21:59:56 | 只看该作者
不如用状态吧
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 04:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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