記事一覧

TheSignダンス挙動修正

各所でTheSignのダンスで詰まってしまうという声をたくさん頂いております。
ただ、これに関してはソースの不具合なので、スクリプトとは別途に修正を要します。

不具合の内容は
OnTouchしているNPCがハイドすると、タッチしているプレイヤーがNPC情報を保持したままとなり、連続した他のNPCのOnTouchが認識されない
というものです。

ここでは、次の対処法
npc.cのnpc_enableに、ハイドした時(無効になった時)にnpc_enable_subを呼び出すようにし、
npc_enable_subの処理に無効時にTouchしているプレイヤーがいる場合はareanpc_id情報をリセットする
を紹介します。

修正対象はnpc.cのみです。
続き
npc.cの119行目あたり、npc_enableでmap_foreachinarea関数を呼び出す条件を次のように変更します。

    if(flag&3 && (nd->u.scr.xs > 0 || nd->u.scr.ys >0))

    if(nd->u.scr.xs > 0 || nd->u.scr.ys >0)

次に少し上の90行目あたり、NPCのフラグ判定のあたりに次の処理を加えます。

    if(!nd->flag&3) {
        sd->areanpc_id=0;
        return 1;
    }

毎度のようですが、バックアップを取ってから修正に取り掛かってください。

コメント一覧

ほえほえ 2007年06月10日(日)22時41分 編集・削除

いつもお世話になります~。
そのように修正してみたんですが、やはり、チャットルームが
出なくて先に進めなくなってしまうようです。
お時間がありましたら、検証、よろしくお願いします。

Blaze 2007年06月10日(日)23時18分 編集・削除

もしかして、スクリプト本体を古いバージョンをお使いでしょうか?
AthenaDevさんにて最新の物がありますので、そちらもご確認ください。

チャットルームが出ない件について、古いものはNPC座標が
「cmd_in01.gat」→「ccmd_in01.gat」
となっているので、変なマップを指定してしまっています。
cを一つ削除することで表示されると思いますが、どうでしょうか。

ほえほえ 2007年06月11日(月)14時06分 編集・削除

やはり、スクリプトが5/11時点の物でその後、大きく変わったんですね。
最新のにしたらチャットルームが出るようになり、先に進めるようになりました。

そして、6012行目辺り、ヴァルキリーのところへ転送される、
ところで進めないという報告があったので、
//if(SIGN_QUE > 80) {
//warp "himinn.gat",49,10;
//end;
//}
この条件文がじゃまで先に進まないようなので削除してみて、
進めたのですがこれでいいのでしょうか。

Blaze 2007年06月11日(月)16時46分 編集・削除

今確認してみました。
どうやらフラグ判定の順序がおかしく、判定が正しくなくなるようです。
対処は、#himinnwarpのOnTouchから3つのif文のうち
    if(SIGN_QUE != 80 || countitem(907) < 4 || countitem(953) < 12 || countitem(7013) < 365)
と長いif文を一番下に、
フラグ203の処理が一番上に、80より上のワープ処理が真ん中にくるように入れ替えてみてください。
ご報告ありがとうございました。

コメント投稿

投稿フォーム
名前
コメント
文字色
削除キー
投稿キー
※投稿キーには「auriga」と入力してください。