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

Project1

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

[已经解决] 这个决定角色移动速度的脚本哪里出问题了?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

跳转到指定楼层
1
发表于 2012-6-16 21:38:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================


  4. # ————————————————————————————————————
  5. # 本脚本来自www.66rpg.com,转载请保留此信息
  6. # ————————————————————————————————————

  7. #==============================================================================
  8. # ■ Game_Player
  9. #==============================================================================
  10. class Game_Player
  11.   #--------------------------------------------------------------------------
  12.   # ● フレーム更新
  13.   #--------------------------------------------------------------------------
  14.   alias old_update update
  15.   def update
  16.     unless moving? or $game_system.map_interpreter.running? or
  17.       @move_route_forcing or $game_temp.message_window_showing
  18.       $game_variables[150]=$game_actors[$game_variables[1]+2].exp
  19.       if $game_switches[12]
  20.       # 速度変更
  21.         @move_speed = $game_variables[150]-$game_variables[56]
  22.         #@move_speed *= $game_variables[56]
  23.       else
  24.         @move_speed = $game_variables[150]
  25.       end
  26.     end
  27.     old_update
  28.   end
  29. end

  30. #==============================================================================
  31. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  32. #==============================================================================
复制代码
不提示出错,速度没改变···
不管如何修改都没有作用
我的本意是打开12号开关,角色速度(由角色2决定角色1的移动速度)减慢25%(变成原速度的75%)
可是不管怎么设定都无效而且不会出错(要是出错就好改了···)
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2012-2-12
帖子
63
2
发表于 2012-6-19 08:32:06 | 只看该作者
你直接用设置移动路线吧...........话说你们那框怎么搞的?
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
 楼主| 发表于 2012-6-19 12:09:41 | 只看该作者
zxcgood2009 发表于 2012-6-19 11:37
脚本我不懂,但我建议你用事件,如果事件不能满足在用脚本,在用脚本吧
就像这样,
...

我用变量决定速度是为了方便增加····当然要脚本···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
94 小时
注册时间
2011-7-2
帖子
79
4
发表于 2012-6-19 18:18:15 | 只看该作者
本帖最后由 凌空飘雪 于 2012-6-19 18:19 编辑

看不懂这句 if $game_switches[12] (22段那里)
啥意思?怎么不加 if $game_switches[12] == true (12号开关开启时)或者 if $game_switches[12] == false (12号开关关闭时)
不需要加开启还是关闭的判断吗?如果要,应该就是这里的问题了
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
 楼主| 发表于 2012-6-19 18:45:25 | 只看该作者
凌空飘雪 发表于 2012-6-19 18:18
看不懂这句 if $game_switches[12] (22段那里)
啥意思?怎么不加 if $game_switches[12] == true (12号开 ...

12号开关判断是否中了慢性毒···就是一中毒就速度减慢···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
94 小时
注册时间
2011-7-2
帖子
79
6
发表于 2012-6-19 18:49:52 | 只看该作者
可是 if $game_switches[12] 这语句没任何意义
你改成 if $game_switches[12] == true 试试

点评

问题是他通过这个语句判断是否减少,如果不加== true,那就直接省略了else的内容  发表于 2012-6-20 10:41
if是只要后面的语句是true就执行,当$game_switches[12]为true时就相当与「if true」,true==true返回的其实也是true  发表于 2012-6-20 08:37
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
94 小时
注册时间
2011-7-2
帖子
79
7
发表于 2012-6-20 11:15:26 | 只看该作者
首先 if $game_switches[12] 改成 if $game_switches[12] == true 这样中毒前后才会有变化
其次(话说LZ都没说那些变量的假想值是多少,很难说的详细)
$game_variables[150]=$game_actors[$game_variables[1]+2].exp
如果 $game_variables[1] 的初始值为1 ,则指的的是3号角色的经验值(LZ确定变量1的值是0的话,那才会确实指向2号角色的经验值)
(变量缺省下貌似不是0,我把0带入变量1中才没弹出错误)
还有2号角色的经验和变量56是多少啊,如果相差太大,也看不出来的,比如中毒前速度 40 中毒后 30 也很难看出分别
以下经过测试没问题(我设2号角色等级为2,所以EXP = 26;变量56=24;变量1=0;所以中毒前速度26,中毒后速度2)
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================


# ————————————————————————————————————
# 本脚本来自www.66rpg.com,转载请保留此信息
# ————————————————————————————————————

#==============================================================================
# ■ Game_Player
#==============================================================================
class Game_Player
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias old_update update
  def update
    unless moving? or $game_system.map_interpreter.running? or
      @move_route_forcing or $game_temp.message_window_showing
      $game_variables[150]=$game_actors[$game_variables[1]+ 2].exp
       if $game_switches[12] == true
      # 速度変更
        @move_speed = $game_variables[150]-$game_variables[56]
        #@move_speed *= $game_variables[56]
      else
        @move_speed = $game_variables[150]
      end
    end
    old_update
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
8
发表于 2012-6-20 20:58:50 | 只看该作者
本帖最后由 wbsy8241 于 2012-6-20 21:06 编辑
凌空飘雪 发表于 2012-6-20 11:15
首先 if $game_switches[12] 改成 if $game_switches[12] == true 这样中毒前后才会有变化
其次(话说LZ都 ...


换个人在对你说次 加不加 == true 完全没关系
F1帮助中说:

if
例子:

if age >= 12 then
  print "adult fee\n"
else
  print "child fee\n"
end
gender = if foo.gender == "male" then "male" else "female" end

语法:

if 表达式 [then]
  表达式 ...
[elsif 表达式 [then]
  表达式 ... ]
...
[else
  表达式 ... ]
end
若条件表达式的计算结果为真时,将计算 then 以下的表达式。若 if 的条件表达式为伪时,将计算 elsif 的条件部分。可以存在若干个 elsif 部分,若所有的 if 以及 elsif 的条件表达式都为伪的话,如果有 else 部分,就计算它的表达式。
if 表达式的结果取决于条件成立部分(或 else 部分)中最后被计算的表达式的结果。若没有 else 部分,且所有条件均不成立的话,就返回 nil。
ruby 中只有 false 和 nil 表示伪,其他的都是真,甚至 0 或空字符串也是如此。
请注意,在 Ruby 中,和 if 对应的是 elsif,而并非 else if(C 的语句)或者 elif(sh 的语句)。

什么是表达式? $game_switches[12] 为TRUE 就是一个表达式 表达式的计算结果已经为真 不需要再加上 == true
按照你的说法 例子要改为:


if (age >= 12)==true then
  print "adult fee\n"
else
  print "child fee\n"
end
gender = if foo.gender == "male" then "male" else "female" end


回到问题:
要判断你的脚本是不是写对了 就要一直用 p 先在 unless 的判断后面直接加 p "任意"
看看你最初的判断语句有没有写错 有没有出现 "任意" 对话框 如果连这个都没有出现过 就表示下面的都白写了
在p $game_actors[$game_variables[1]+2].exp (等等所有值) 看看 得到的值是不是对的 到底是多少
这样问题就能解决了

点评

如果我需要 (age >= 12) == FALSE 是否的结果 不是要写"FALSE"? 那判断真也要加== TRUE  发表于 2012-6-20 21:47
只要 表达式 这3个字的内容结果是真 填入开关 开关本身就可以返回TURE或者FALSE 不需要去判断  发表于 2012-6-20 21:45
age>= 12 等到的结果是TURE或者FALSE 而你判断开关 得到的结果也是TURE或者FALSE 开关不是判断了才得出TURE或者FALSE的 而是本身就等于TURE或者FALSE  发表于 2012-6-20 21:44
兄弟,你也太夸张了if age>= 12 当然不用加 == true 可用来判断开关是开启还是关闭时你不加 ==true 就跟你输入 if age 不加后面的>=12一个性质,OK?  发表于 2012-6-20 21:16
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
94 小时
注册时间
2011-7-2
帖子
79
9
发表于 2012-6-20 21:41:55 | 只看该作者
问题关键可能在于变量$game_variables[56]的值或者2号角色的经验值上
反正我设2号角色等级为2,令EXP = 10(基本值10,增长值10)(如果不用除法或减法什么的,这速度也太快了吧);变量56=7;变量1=0;
当我未开启12号开关时,角色速度为10,开启12号开关时,角色速度为10 - 7 = 3(没改动过你的脚本)  完全没问题
不是你变量设置不对,就是2号角色的当前经验值有问题。(脚本冲突的话,我没话说,不过这类型脚本,冲突的可能性不大吧)

还有,对楼上的兄弟说声sorry,我可能之前实验方法不对,反正我刚又试了一次,确实不用加==true,谢了兄弟
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 03:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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