PyDev に外部の .JAR (保護のために難読化されています) を認識させようと 2 日間検索してきましたが、何をしても機能しません。私はそれを機能させようとして、ほぼ1時間にわたってドキュメントを読みました。
スクリプトに Jython を使用するエミュレーション サーバーの作業を手伝っています。ただし、外部の .jar で難読化されているサーバーのエンジン部分内のメソッドにオートコンプリートを使用しなくても、スクリプトが正常に動作するエミュレーション サーバーをコンパイルして実行できます。難読化された .JAR のメソッドを使用するスクリプトのサンプル コードを次に示します (これはオートコンプリートでは機能しないため、パッケージ エクスプローラーをナビゲートして、使用するメソッドを見つける必要があります)。
import sys
def CreateStartingCharacter(core, object):
testObject = core.objectService.createObject('object/weapon/ranged/rifle/shared_rifle_t21.iff', object.getPlanet())
testObject.setCustomName('This is a Jython Rifle')
testObject.setStringAttribute('crafter', 'Light')
inventory = object.getSlottedObject('inventory')
inventory.add(testObject)
testClothing = core.objectService.createObject('object/tangible/wearables/cape/shared_cape_rebel_01.iff', object.getPlanet())
testClothing.setCustomName('Test Cape')
testCloak = core.objectService.createObject('object/tangible/wearables/robe/shared_robe_jedi_dark_s05.iff', object.getPlanet())
testCloak.setCustomName('Test Cloak')
inventory.add(testClothing)
inventory.add(testCloak)
return
このスクリプトは、Java で次のコマンドによって実行されます (core は外部 JAR 内のクラスであり、難読化されています)。
core.scriptService.callScript("scripts/", "demo", "CreateStartingCharacter", object);
オブジェクトは...
CreatureObject object = (CreatureObject)core.objectService.createObject(sharedRaceTemplate, core.terrainService.getPlanetList().get(0));
上で述べたように、スクリプトで使用したこれらのメソッドはすべて、難読化された JAR からのもので、オートコンプリートでは機能しません。ただし、次のように、その JAR に含まれていないメソッドを問題なく使用できます。
from resources.common import RadialOptions
from services.sui import SUIWindow
from services.sui.SUIWindow import Trigger
from java.util import Vector
import sys
def createRadial(core, owner, target, radials):
radials.clear()
bank = owner.getSlottedObject('bank')
if bank:
radials.add(RadialOptions(0, 21, 1, ''))
radials.add(RadialOptions(0, 7, 1, ''))
radials.add(RadialOptions(1, RadialOptions.bankTransfer, 3, '@sui:bank_credits'))
radials.add(RadialOptions(1, RadialOptions.bankitems, 3, '@sui:bank_items'))
if owner.getBankCredits() > 0:
radials.add(RadialOptions(1, RadialOptions.bankWithdrawAll, 3, '@sui:bank_withdrawall'))
if owner.getCashCredits() > 0:
radials.add(RadialOptions(1, RadialOptions.bankDepositAll, 3, '@sui:bank_depositall'))
return
...そして RadialOptions を使用します。control+space ですべてのメソッドが表示されます。
助けていただければ幸いです。この時点で、JARファイルが難読化されているなどの理由で機能していないと感じています。はい、プロジェクトの bin フォルダーと同様に、既に PYTHONPATH に追加してインタープリターを更新しました。