0

わかりましたので、問題は、diablo 2 にアイテムがあるのと同様の多くのアイテム タイプを持つゲーム用のプラグインを作成しようとしていることです。ディアブロ 2 のように、このアイテムは魔法またはレアとしてスポーンする可能性があります。

アイテムがマジカルまたはレアであると選択された場合、接頭辞と接尾辞を付けることができます。

プレフィックス/サフィックスを選択する方法は次のとおりです。次に、アイテムを maxlevel (より高いレベルのアイテムには表示されないものもあります)、および適切なアイテム タイプと除外タイプ (除外アイテム タイプ) でフィルター処理します。

また、既に選択されている接辞と同じグループ番号を持つ接辞も除外する必要があります。次に、接辞を取得する可能性を判断するには、その特定のタイプ (プレフィックス/サフィックス) の頻度を合計し、その特定の接辞の可能性を affix_frequency/frequency_sum で取得する必要があります。

この説明は以下から引用されました: http://diablo2.diablowiki.net/index.php?title=Item_Generation_v1.09&action=edit§ion=18

また、プレフィックス/サフィックス データを含むさまざまな txt ファイルへのリンク: https://code.google.com/p/d2spe/source/browse/trunk/data/global/excel/MagicSuffix.txt https://code.google .com/p/d2spe/source/browse/trunk/data/global/excel/MagicPrefix.txt

接辞レベルに基づいて接頭辞/接尾辞のグループに効率的にアクセスするための適切なデータ構造は何ですか?

現在、グループ化を静的に生成し、巨大なルックアップ テーブルを用意することを考えていますが、入力として、affixLevel、項目タイプ、および項目に既にある接辞のリストを受け取るデータ構造にそれらを格納する方がはるかに優れています。 . この関数は基本的に、選択できる有効な接辞のグループを返します。

4

1 に答える 1

0

必要な接頭辞/接尾辞を見つける最も簡単な方法は、おそらく接頭辞と接尾辞のリストを作成し、フィルタリングするすべてのプロパティの個別のリストを作成することです。

例えば:

List<String> prefixes = Arrays.asList("Sturdy", "Strong", "Glorious", "Blessed", "Saintly");
List<String> suffixes = Arrays.asList("of Health", "of Protection", "of Absorption", "of Life", "of Warding");

List<Integer> prefixMinLevel = Arrays.asList(1,3,7,22,59);
List<Integer> suffixMinLevel = Arrays.asList(10,4,8,3,11);

List<Integer> prefixType = Arrays.asList(1,1,1,2,2);
List<Integer> suffixType = Arrays.asList(1,2,3,3,3);

そして、アイテムに基づいてプレフィックス/サフィックスの有効なリストを取得するためのカスタム メソッドを作成するだけです。

public List<String> getPrefixList(List<String> prevPrefixes, int itemLevel, int itemType){
    List<String> newPrefixes = new ArrayList<String>();

    for(int i = 0; i < prefixes.size(); i++){
        if(!prevPrefixes.contains(prefixes.get(i)))//Filtering out previous prefixes
        if(itemLevel >= prefixMinLevel.get(i))//Checking item level
        if(itemType == prefixType.get(i)){//Checking item type
            newPrefixes.add(prefixes.get(i));
        }
    }

    return newPrefixes;
}

おそらく、サフィックスに対して同様の関数を作成できます。

アイテムの希少性やアイテムの価値など、さまざまな基準を追加することもできます。次に、上記の例のようにそれらの条件をリストに追加し、さらに getPrefixList() 関数に追加します。

于 2013-11-06T07:23:19.773 に答える