スクリプト公開所

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

ユーザーリクエストBOX 香流 08/6/30(月) 9:20 [添付]
Re:ユーザーリクエストBOX 斜め読み 08/7/3(木) 0:50
Re:ユーザーリクエストBOX 香流 08/7/3(木) 8:55
Re:ユーザーリクエストBOX 斜め読み 08/7/3(木) 23:51
修正版 その1 香流 08/7/4(金) 11:57
UPし忘れorz 香流 08/7/4(金) 12:19 [添付][添付]
修正版 その2(r497以前用、最終?) 香流 08/7/7(月) 16:26 [添付]
Re:修正版 その2(r497以前用、最終?) ぷりま 08/7/16(水) 20:16
Re:修正版 その2(r497以前用、最終?) 香流 08/7/17(木) 1:10
Re:修正版 その2(r497以前用、最終?) フルフル 08/7/17(木) 1:50
Re:なんかこれ以上弄れない気がしてきた 香流 08/7/18(金) 12:26

ユーザーリクエストBOX
 香流  - 08/6/30(月) 9:20 -
  
はじめまして、初投稿です。

アイテム買取代行スクリプトです。
1キャラクター1品だけ依頼出来て、
アイテムIDと募集個数と1個当たりの単価を入力すると、
他のキャラが依頼を見て納品してくれます。

既知の問題点としては、
  1.アイテムIDが必要なため、@idsearchの解放が必要
  2.スロット数が取れないため、item_DBのJnameに訂正を入れる必要あり
  (itemdbをCSV読込して取るとメモリがきつそうなので…)
現状バグとして、
  1.装備品を受け取る場合、複数受け取ろうとすると1個しか受け取れない。
  (getitem の機能的な問題?)

大変見づらいスクリプトかと思いますが、よろしくお願いします。
改善・修正案頂けたら幸いです。
引用なし
パスワード

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

Re:ユーザーリクエストBOX
 斜め読み  - 08/7/3(木) 0:50 -
  
付属のドキュメントだけでは細部の仕様が不明瞭なのが問題ですよねぇ。
とりあえず気づいたことをつらつらと。

・5行目
    set 'csvid$,"CSVREQUEST";    //CSVファイル
    set 'Margin,5;    //手数料

    この2つの変数だと思いますので、setするのは初回だけでいいはずです。
    OnInit: でサーバ起動時にセットするか、172行目の 'db_first の辺りで
    初回だけsetを実行するようにした方が得策です。

・14行目
    //数値の初期化(念のため)
    set '@MENU_Page,0;

    不要です。
    関数依存変数は初期値が0で保障されています。

・18行目
    function message;

    不要です。
    ユーザ定義関数の宣言は、定義よりも前に呼び出す際にのみ必要です。

・173行目
    csvreload 'csvid$;

    不要です。
    csvファイルの読み込みは、csv命令/関数のいずれかを初めて呼び出したとき
    自動的に行われます。

・178行目ほか
    cleararray @menu$[0],"",1;

    単純に set @menu$[0],""; の方が高速です。

・214行目ほか
    if('@Item_NUM <= 0 | '@Item_NUM >= '@MAX_NUM){

    多分 | ではなく || の間違い。

・241行目ほか
    sleep2 ( 100 );

    sleep2は命令ではなく関数です。
    従って戻り値を受け取る必要があります。
    実行ユーザにアタッチし直さないとスクリプトが続行できなくなります。

・252行目ほか
    csvflush 'csvid$;
    csvreload 'csvid$;

    不要です。
    csvreloadにはcsvflushの機能も含まれています。
    また、csvflushやcsvreloadを使わなくても、csvファイルへの書き出しは
    サーバ停止時に自動的に実行されます。
    ただし、サーバクラッシュなどでデータが保存されないなどの事象を
    考慮しているのであれば、一定時間ごとにcsvflushする方が得策です。
引用なし
パスワード

Re:ユーザーリクエストBOX
 香流  - 08/7/3(木) 8:55 -
  
▼斜め読みさん:
チェックありがとうございます!
色々と思い違いをしてる部分がありました><

csvflush 'csvid$;
csvreload 'csvid$;
を使わなくてもリアルタイムで書き変わるのでしたら、
もしかしてロックとかもいらないんですかね…?

CGIで作るBBS的な考え方でやってたもので、
事あるごとにリロードしてました^^;
引用なし
パスワード

Re:ユーザーリクエストBOX
 斜め読み  - 08/7/3(木) 23:51 -
  
csv関数/命令のいずれかを初回実行時、指定ファイルから読み込んだデータはメモリに保存されます。
csvwirteなどによる書き込み処理は、メモリ上のデータに対して行われます。
よって、csvflush/csvreloadを実行せずとも、常にデータは保存されることになります。
csvflushはこのメモリ上のデータをファイルに書き出すときに必要なだけです。

またcsvreloadは、Athenaの外部からファイルに更新が行われる場合、それを再読み込みするときに利用します。
それ以外の用途ではあまり使うことはないでしょう。

ロックについてですが、Athenaはシングルスレッドで動作していますので、原理的には無くても問題ありません。
しかしながら、一般的なプログラミングの観点からすると排他制御を行うべきものだと考えられますので、ロックを掛けるに越したことはないと思います。
引用なし
パスワード

修正版 その1
 香流  - 08/7/4(金) 11:57 -
  
1.斜め読み様からの指摘部分を修正しました。
csvflushのタイミングだけは、値の変動時の方が確実だと思うので、そのままにしてます。
うちの鯖では人気がないため、だれも依頼しないし納品しないためってのもありますが…orz

2.バグとりと修正
装備品が複数受け取れないところはGMコマンドにすることで対応しました。
依頼残数と納品残数が0の場合にCSVファイルから消えるように修正しました。
その他、メッセージをちょっと変更、単価の計算を変更、不要な読み込みを若干削除しました。

sleep2関数の挙動がよくわかってないのですが、アタッチ出来ない=ログアウトと言うことで、
if (!sleep2 ( 100 )) end; //ユーザーがログアウトしてたら終了
って感じでいいのでしょうか?(><;
常にロックがかかってる状態になってしまうと、ここで無限ループになるのをどうにかしないといけないですね…

item_dbを弄らないとスロット数がわからないのはそのままですorz
引用なし
パスワード

UPし忘れorz
 香流  - 08/7/4(金) 12:19 -
  
パスワードも設定してなかったから消せないしorz
ついでなのでSSも取ってみました。

添付画像
【SS.JPG : 127.7KB】
引用なし
パスワード

[添付]〜添付ファイル〜
・名前 : SS.JPG
・サイズ : 127.7KB

[添付]〜添付ファイル〜
・名前 : user_request(2).txt
・サイズ : 13.6KB

修正版 その2(r497以前用、最終?)
 香流  - 08/7/7(月) 16:26 -
  
Blazeさんがスロット取得関数を作ってくれたようですが、更新してないのでまだ使えてませんorz

・「IDを調べる」をメニューに追加。GMコマンドの解放をしなくていいようにしました。
 すごく手抜きっぽいですが…w

・「募集を見る」時に、募集数0の物を表示しないようにしました。
 動作としては、「納品する」を実行したときに募集数が0になったものを末尾に移動させてます。
 募集数0の物が出てきた時点で、表示を終了させてますので、
 前回までのスクリプトを使用してる方は、募集数0の物を手動で移動させて下さい。

スロット数の取得は更新してから実験してみます。

自分の鯖では、item_dbを
1101,Sword,ソード[3],4,100,,500,25,,1,3,8803555,2,2,1,2,2,1,{},{}
1102,Sword_,ソード[4],4,100,,500,25,,1,4,8803555,2,2,1,2,2,1,{},{}
1103,Sword__,ソード[0],4,100,,500,25,,1,0,8803555,2,2,1,2,2,1,{},{}
と言った感じに変更して使用してます。
引用なし
パスワード

[添付]〜添付ファイル〜
・名前 : user_request(3).txt
・サイズ : 14.0KB

Re:修正版 その2(r497以前用、最終?)
 ぷりま  - 08/7/16(水) 20:16 -
  
▼香流さん:
このスプリクトはこれ以上は更新しないのでしょうか?
発想が良いので期待してるんですが。お忙しいでしょうが
もし時間があれば完成させてほしいです。
引用なし
パスワード

Re:修正版 その2(r497以前用、最終?)
 香流  - 08/7/17(木) 1:10 -
  
▼ぷりまさん:
えぇと、、、一応現状でr497以前のは最終と言うことにしたいのですが…w
自分の鯖では超不人気なので、こう、要望とか感想とか一切出てこなくて
使用する人も少なくて、どうしようか途方に暮れてます。

ぷりまさん的にはどんな感じに改善していけばいいと思います?
やっぱitemdbの改編がダメですかね?;;
引用なし
パスワード

Re:修正版 その2(r497以前用、最終?)
 フルフル  - 08/7/17(木) 1:50 -
  
前スレですが
Blazeさんがスロット取得関数を作ってくれたようですが、更新してないのでまだ使えてませんorz

スロット数の取得は更新してから実験してみます。

といった記載になってる為
進捗(実験結果)が気になったのではないでしょうか
引用なし
パスワード

Re:なんかこれ以上弄れない気がしてきた
 香流  - 08/7/18(金) 12:26 -
  
ちょっとgetitemslotの動作を見てみようと思って、スクリプト見てたら
@idsearchのほうでID調べるときにスロット数表示されないから
結局item_dbを改編しないといけないんですねorz

何か良い案はないでしょうか・・・?(´・ω:;.:...

次やるとしたら、
・キャラクター変数使って、複数依頼可能にするか、

・アカウント変数使って、キャラ管理からアカウント管理にするかですかねぇ…
 (依頼主はキャラクター名になりますがCCしなくてもいいように)
引用なし
パスワード

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