スクリプト公開所

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
53 / 101 ツリー ←次へ | 前へ→

パーティ清算金自動分配 Rayce 06/10/9(月) 22:52 [添付]
Re:パーティ清算金自動分配 Rayce 06/10/11(水) 3:02 [添付]
Re:パーティ清算金自動分配 稜夜 06/10/13(金) 2:41
Re:パーティ清算金自動分配 Blaze 06/10/13(金) 18:43
Re:パーティ清算金自動分配 Rayce 06/10/13(金) 20:52 [添付]
Re:パーティ清算金自動分配 Rayce 06/10/13(金) 20:56

パーティ清算金自動分配
 Rayce  - 06/10/9(月) 22:52 -
  
何か作りたくなったので久しぶりに食指を動かしてみた。
ただこんな回りくどいことするくらいならeAからgetiteminfo関数を持ってくるべきだと思った…。
引用なし
パスワード

[添付]〜添付ファイル〜
・名前 : npc_distributer.txt
・サイズ : 4.7KB

Re:パーティ清算金自動分配
 Rayce  - 06/10/11(水) 3:02 -
  
getskilllv() なんていう便利な関数があることに今頃気付いた…。
やっぱり久しぶりにスクリプト書くと命令・関数を忘れててダメダメですね。
引用なし
パスワード

[添付]〜添付ファイル〜
・名前 : npc_distributer-fix.txt
・サイズ : 4.5KB

Re:パーティ清算金自動分配
 稜夜  - 06/10/13(金) 2:41 -
  
私のサーバーで使わせてもらいました。
仕様なのかなーと?思い質問。

クリップにcを刺して装備をしていて
クリップを持っている場合。
装備しているはずのアイテムは売られない?はず
だと思うのですが、装備のc刺しクリップが売られて
持っている普通のクリップは売られてないです。

ちょっと、書いていておかしいなと思ったんですが
がんばって読んでください(´・ω・`)。。。スミマセン
引用なし
パスワード

Re:パーティ清算金自動分配
 Blaze E-MAILWEB  - 06/10/13(金) 18:43 -
  
delitem命令は装備している物まで削除してしまうので、

・クリップを所持し、装備もしている状態
1.所持クリップをgetinventorylistにて認識
2.delitem命令で所持クリップを消耗するはずが、装備しているクリップを認識
3.所持分だけ削除なので、未装備の所持クリップは残る

という状態になってしまったと思われます。
本鯖でもたまにある装備品削除バグです。(アインブロッククエストなど)


対処案としては、
・装備品を認識する場合、装備箇所をチェックし、その装備品と同じ物を装備していたら弾く
・削除命令の時、装備品をチェックして、削除対象を分別
・もういっそ装備品は売らない

Rayceさんでしたらもっと良い方法が出てくると思いますが・・・
引用なし
パスワード

Re:パーティ清算金自動分配
 Rayce  - 06/10/13(金) 20:52 -
  
まさにおっしゃる通りです…。
こんな駄作を使うような人はあまり居ないだろうと踏んで、半ば確信犯的にテスト不足でアップしたのが原因とも言いますが…。

Blazeさんの対処案が正解なのですがどれも妥協案にならざるを得ないので、delinventory命令を追加することにしました。
getinventorylistで取得した情報を自前でチェックして、そのままindex番号のものを削除できるようになりますので
同種の装備品を持っていても大丈夫です。
この命令を使えば、同様のバグを持つAthena付属の委託販売を改善することも可能ですので
試してみたい方はdelinventory命令を利用してみてはいかがでしょうか。
引用なし
パスワード

[添付]〜添付ファイル〜
・名前 : npc_distributer-fix2.txt
・サイズ : 7.2KB

Re:パーティ清算金自動分配
 Rayce  - 06/10/13(金) 20:56 -
  
追記:
 あまり深くロジックを練らずにfix2を作りましたので、実行速度がかなり犠牲になってます。
(特にcopyarrayと手動memcmpが最悪ですね…)
処理改善してくれる方に一任します…。
引用なし
パスワード

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
53 / 101 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:   
151962
(SS)C-BOARD v3.8 is Free