エラー報告:固有スキンの荷物袋が開けない
自作スキンで-4_Camp.xmlや02_Yado2.xmlの「荷物袋」のメニューカードで
以下の指定で荷物袋を展開すると操作不可能になり、ウィンドウ×で閉じた際にエラーログが出力されます。
=========================
<MenuCard>
<Property>
<Name>荷物袋</Name>
<ImagePath>Resource/Image/Card/COMMAND7.png</ImagePath>
<Description>パーティが共有する手札カードの一覧を表示します。手札カードの分配や処分はここで行います。</Description>
<Flag />
<Location left="0" top="0" />
<Size scale="100%" />
</Property>
<Events>
<Event>
<Ignitions>
<Number>1</Number>
<KeyCodes />
</Ignitions>
<Contents>
<ContentsLine>
<Start name="クリック" />
<Post type="Event" arg="BACKPACK" command="ShowDialog"></Post>
</ContentsLine>
</Contents>
</Event>
</Events>
</MenuCard>
=========================
Classicスキンに同様のメニューカードを追加しても再現しないため、
スキン固有情報で発生していると思われますが、特定できておりません。
また、Classic スキンと同じメニューカードで開くときは発生しません。
「交易都市リューン」のCamp上で確認した際のエラーログは以下です。
=========================
Version : 4.3 (32-bit) / 2021-01-23 23:56:17
DateTime: 2021-01-24 17:53:39
Traceback (most recent call last):
File ".\cw\frame.py", line 995, in OnBACKPACK
File ".\cw\frame.py", line 1063, in _get_cardcontrolparams
AssertionError
=========================
2021-01-16 17:43:15 版では発生せず、2021-01-23 23:56:17 で発生することを確認しています。
以上、よろしくお願いいたします。
Comments (9)
-
repo owner -
reporter ご確認ありがとうございます。
本スキンではダイアログ表示前に幾つかイベントを置いているため、メニューカード自体ではなく
Post
イベントを利用しておりました。もしPy仕様として
Post
イベントを利用して荷物袋ダイアログの表示が不可にするのであれば、それに合わせてスキンもカスタマイズしてみようかと思います。
ご検討いただければと存じます。
-
repo owner とりあえずクリックイベントが設定されていた場合はそちらを実行するようにしました。
ただし上記した通りシステムはメニューカードの役割を識別する必要があるので
command
とarg
は依然として使用します。ですので、command
とarg
を指定しつつクリックイベントも作る、というふうにしてください。 -
reporter 最新版でクリックイベントを実行させつつ荷物袋が利用できることを確認いたしました。
対応ありがとうございます。
これに派生した問題かは分かりませんが、スキン独自エリアの荷物袋メニューカード(
command
+arg
+Post
設定)クリックした後、以下により右クリックでシステムエリアに戻る際にエラーが発生致しました。<BackgroundAction>ReturnSystemArea</BackgroundAction>
エラーログは以下です。
====================
Version : 4.3 (32-bit) / 2021-01-24 20:19:45
DateTime: 2021-01-24 21:40:17
Traceback (most recent call last):
File ".\cw\frame.py", line 825, in OnMENUCARDINFO
File ".\cw\dialog\cardinfo.py", line 254, in init
ValueError: <MenuCard DirtySprite(in 0 groups)> is not in list====================
-
repo owner ログを見た感じ、右クリック等によってカード情報を開こうとした時に、メニューカードのリストの中に開こうとしている該当カードが存在しないというエラーが発生しています。
背景をクリックした時になぜかカード情報を開こうとしているのでしょうか? 手許で再現しようとしてみましたができませんでした。
BackgroundAction
以外の要素が絡んでいるのかもしれません。 -
repo owner メニューカードでないものからカード情報を開こうとするケースがないか探してみたのですが、いまのところ見つけられていません。また、エラーログを見る限り、実際にメニューカードのスプライトに対してカード情報を開こうとしているように思えます。
となると、そのメニューカードがリストにない事が問題です。リストには、メニューカードのうち、表示されており、解説テキストのあるもののみが含まれています。そのため解説テキストのないメニューカードや表示されていないメニューカードのカード情報を開いたような場合にはこのエラーが発生するはずですが、そういうカードはそもそも右クリックできません。この判定にも問題はないように見えます。
差し支えなければ、問題の発生するエリアがどのような作りになっているか教えていただけないでしょうか。
-
reporter - attached test.zip
ご連絡が遅くなり申し訳ございません。
私の環境では添付したファイルをClassicスキンに上書きすることで再現しておりますのでご確認いただければと思います。
-
repo owner ありがとうございます。修正できました。
発生条件が少し分かりにくかったのですが、
- カード移動特殊エリアが展開されている状態(カード選択ダイアログが開いている状態)でカード置場か荷物袋を選択する。
- ダイアログを閉じ、特殊エリアを解除する。
- 他のスプライトにカーソルが触れる前に背景をクリックする。
という手順で再現できました。見せていただいたスキンは荷物袋以外のカードがないので他のスプライトに触れにくく、再現しやすかったのだと思います。
-
reporter - changed status to resolved
最新版に更新することで事象改善したことを確認致しました。 対応ありがとうございます!
- Log in to comment
ご報告ありがとうございます。
カード選択ダイアログを開く時にダイアログ側から選択中のメニューカード/プレイヤーカードを特定する必要があるのですが、一般にイベントが開始される時にはメニューカードの選択は解除されます(≒反転表示が解除される)。
そのため、たしかバージョン1より前の事だったと思うのですが、荷物袋を開くようなシステムに近すぎる処理を行うカードは一般的なイベント処理を避けてメニューカード自体に機能を指定するようになっています。
このようにすればエラーは発生しなくなるはずです。
今回のエラーは荷物袋を開く際に選択中のカードが特定できないというものですが、16日のバージョンでは発生しないというのがちょっと謎です。このあたりのチェックは1月1日に追加したもので、手許で16日の版を試したところやはり発生するようです。
さて、では
Post
イベントでは荷物袋を開けないのかというと、現状では確かにできないという事になりそうです。ちょっと記憶が曖昧なのですが、このような問題があります。これを解決するには、何かスキンの仕様を付け加える必要がありそうです。