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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
打印 上一主题 下一主题

2刀,搞了半天都不行

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-10-29
帖子
53
11
 楼主| 发表于 2008-9-7 05:21:23 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-8-3
帖子
976
12
发表于 2008-9-7 06:27:15 | 只看该作者
刚改了半天,终于发现问题所在。。。。。

这样可以了吧
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取基本攻击力
  3.   #--------------------------------------------------------------------------
  4.   def base_atk
  5.     n = actor.parameters[2, @level]

  6.     n += weapons[0].atk if weapons[0]!=nil
  7.     n += weapons[1].atk if weapons[1]!=nil

  8.     return n
  9.   end
复制代码


是否二刀流都可以不写,因为非二刀流没有weapons[1]
如果没有if weapons[0]!=nil、if weapons[1]!=nil ,一拆下装备就报错给你看

回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-10-29
帖子
53
13
 楼主| 发表于 2008-9-7 06:49:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-8-3
帖子
976
14
发表于 2008-9-7 07:40:40 | 只看该作者
以下引用←妖狐の丰→于2008-9-6 22:49:54的发言:

是否二刀流都可以不写,因为非二刀流没有weapons[1]
这句话我不太理解啊........个人理解能力,没办法.................

那个...我该如何把两个武器攻击力先加起来,而不通过base_atk?

是   if weapons[0]!=nil  and if  weapons[1]!=nil
   n ***= (weapons[1].atk + weapons[0].atk)

那非2刀的就是weapons[0].atk了吗?
这样吗?(感觉怪怪的).......弱弱的问下...nil 理解为什么?


nil就是空,就是没有这东西。。。。
比如你把第一个位置的武器卸下来,weapons[0]就变成了nil,
nil是没有atk的,所以报错

非二刀也要判断
if  weapons[0]!=nil
   n ***= weapons[0].atk
end
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-10-29
帖子
53
15
 楼主| 发表于 2008-9-7 08:37:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-8-3
帖子
976
16
发表于 2008-9-7 09:20:26 | 只看该作者
以下引用←妖狐の丰→于2008-9-7 0:37:03的发言:

发现一个很XXX的问题:(2刀里)
以下格式为:
装备(A为一号武器,B为2号)(装备本身攻击力)----人物最后伤害值(正确与否)
装备A(5)-----3(正确)
   装备B(5)-----11(...)
   装备B(9)-----11(...)
   装备B(15)-----11(...)

装备A(9)-----6(正确)
   装备B(5)-----36(...)
   装备B(9)-----36(...)
   装备B(15)-----36(...)

装备A(15)-----10(正确)
   装备B(5)-----100(...)
   装备B(9)-----100(...)
   装备B(15)-----100(...)

我把脚本内容加了几个end , return n
如果不加的时候两把都是个位数的武器装再一起.......上百了,弱些的400,强的999
但是单武器则为正确值

大人看看还有什么能更改的吗?


你的问题总是很难看懂= =

加了几个end什么意思?end不是随便加的,而是有对应语句需要后面加end的时候才加。。。
return n是返回值嘛。。。比如你定义的def str之类的函数内部计算以后得到的值作为返回值,别的地方使用到str时候就用返回值代替str
(...)什么意思……

还有你说值很大是不是用了 n *= XXX 。    *= 的意思知道吗……

话说问题现在到底是解决了没有。。。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-10-29
帖子
53
17
 楼主| 发表于 2008-9-7 16:29:16 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2008-8-3
帖子
976
18
发表于 2008-9-7 18:08:56 | 只看该作者
end 加得应该没想象中那么乱吧?不然的话系统不就出错了?

——但是至少也要知道是什么东西需要加END:

  1. class XXX
  2.   ……
  3. end

  4. def XXX
  5.   ……
  6. end

  7. if XXXXX
  8. ……
  9. end

  10. …… if  XXXXX   不需要加end

  11. for X in XXXX
  12. ……
  13. end

  14. 综合起来比如:
  15. class AAA
  16. def BBB
  17.    for C in DDD
  18.      …… if KKK (无end)
  19.      if EEE
  20.        ……
  21.      end (if的)
  22.    end (for的)
  23. end(BBB的)
  24. end(AAA的)
复制代码


(..)错误啦~~当武器A为定值时,装备武器B的伤害也为定值(只与武器A有关,与武器B无关)
——那肯定是公式的问题了

因为武器攻与base_atk有些差距,所以脚本能不能作成这样呢:
for weapon in weapons.compact
n ***= weapon.atk
如果是2刀时返回失败(并运用以下公式)
——不能返回失败,否则二刀就都是返回0了,一旦前面已经有个返回值成立,后面的代码就全部不执行。应该改成 如果2刀,就n = actor.parameters[2, @level]重来,或者干脆 n ***= weapon.atk就必须非2刀才执行
n ***=(weapon1+weapon2)(当武器AB装备时)(重点啊,我想这也是我和大人分歧的原因)
   n ***=weapon1  当武器A装备时——并且B不装备时!
   n ***=weapon2  当武器B装备时——并且A不装备时!
end(应该先不return n吧?因为下面还有)
for armor in armors.compact do n ***= armor.atk end(这是后面的了,暂且不管)

举个例子,当***为乘除而并非加减的情况下........(比如大人代个乘来写写看)

代乘的话,依大人原来给的公式2刀会变成n*=a*b(而我需要的是n*=(a+b)),现在就需要那a+b

麻烦大人了!~~
——不是很清楚的话不要老用*=、+=之类的符号,用最简单的 n = n *** ( a + b )更直观点 
这样好了……


  1.   def XXX
  2.     n = actor.parameters[2, @level]
  3.     n = n *** weapons[0].atk if ( weapons[0]!=nil and !two_swords_style )
  4.     if two_swords_style
  5.       n = n *** weapons[0].atk if ( weapons[0]!=nil and weapons[1] == nil)
  6.       n = n *** weapons[1].atk if ( weapons[1]!=nil and weapons[0] == nil)
  7.       n = n *** ( weapons[0].atk +  weapons[1].atk ) if  ( weapons[0]!=nil and weapons[1] != nil)
  8.     end
  9.     for item in armors.compact do n += item.atk end
  10.     return n
  11.   end
复制代码


[/quote]

系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-10-29
帖子
53
19
 楼主| 发表于 2008-9-8 04:47:10 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-29 09:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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