0

このコードでエラーが発生します。戦闘コマンドを使用するときにバフを追加しようとしています。インデントエラーでめちゃくちゃになっているようです。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

^私が得るエラーです。

4

3 に答える 3

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また、現在は効果がないため、dedentするか、完全に削除することもできます。

しかし、これが問題であるかどうかはわかりませんが、確か問題です (指定したコード全体が別の関数定義内にある場合を除きます。この状況では奇妙に思えます)。

それができない場合は、ここに投稿するときにコードを間違ってインデントしたか、タブとスペースが混在していると思われます (そうしないでください)。

于 2013-10-22T14:36:02.477 に答える
1

スペースとタブを混同していないことを確認するには、tabnannyを使用できます。これを使用するには、端末を使用して、ファイルが保存されているディレクトリに移動し、実行します。

>>> python -m tabnanny .

この例は、Python モジュール オブ ザ ウィーク: http://pymotw.com/2/tabnanny/からの抜粋です。

于 2013-10-22T14:46:27.010 に答える