我收到此代码的错误。当我使用战斗命令时,我正在尝试添加buff。它似乎与压痕错误搞混了。我正在重塑游戏Star Wars Galaxies。
import sys
def setup(core, actor, target, command):
command.setBuffNameTarget('of_deb_def_1')
if actor.getSkill('expertise_of_advanced_paint_1'):
command.setBuffNameTarget('of_adv_paint_debuff_1')
if actor.getSkill('expertise_of_paint_expose_1'):
command.setBuffNameTarget('of_adv_paint_expose_1')
return
def preRun(core, actor, target, command):
return
def run(core, actor, target, commandString):
return
File "scripts/commands/combat/of_deb_def_1.py", line 5
if actor.getSkill('expertise_of_advanced_paint_1'):
^
IndentationError: unindent does not match any outer indentation level
^
是我得到的错误。
答案 0 :(得分:4)
除了其他任何东西,这里的代码:
if actor.getSkill('expertise_of_advanced_paint_1'):
command.setBuffNameTarget('of_adv_paint_debuff_1')
if actor.getSkill('expertise_of_paint_expose_1'):
command.setBuffNameTarget('of_adv_paint_expose_1')
return
需要缩进。更正后的代码:
def setup(core, actor, target, command):
command.setBuffNameTarget('of_deb_def_1')
if actor.getSkill('expertise_of_advanced_paint_1'):
command.setBuffNameTarget('of_adv_paint_debuff_1')
if actor.getSkill('expertise_of_paint_expose_1'):
command.setBuffNameTarget('of_adv_paint_expose_1')
return
此外,您可能希望提出return
,或将其完全删除,因为它目前无效。
但是我不确定这是否是问题,虽然它肯定是一个问题(除非您给出的整个代码本身在另一个函数定义中,在这种情况下看起来很奇怪)
如果不这样做,我怀疑你在这里发布代码时错误地缩进了你的代码,或者混合了标签和空格(不要这样做)。
答案 1 :(得分:1)
为了确保您没有混淆空格和标签,您可以使用tabnanny。要使用它,只需将您的终端放入保存文件的目录中并执行它:
>>> python -m tabnanny .
此示例取自本周的Python模块:http://pymotw.com/2/tabnanny/
答案 2 :(得分:0)
根据给出的代码,看起来从第一个if actor.getSkill
开始的4行应该属于函数setup()
。
def setup(core, actor, target, command):
command.setBuffNameTarget('of_deb_def_1')
if actor.getSkill('expertise_of_advanced_paint_1'):
command.setBuffNameTarget('of_adv_paint_debuff_1')
if actor.getSkill('expertise_of_paint_expose_1'):
command.setBuffNameTarget('of_adv_paint_expose_1')
return