スクリプト公開所

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

Re:アイテム作成用 汎用NPC Ver2
 sube  - 07/4/30(月) 9:06 -
  
>らの字さん
>↑これで「メニュー1」に2種類が入ってて、
>「一種類につき二行必要」にはならないと思います。
ああ、すみません、そうですね。よく読んでませんでした。
スクリプト自体はらの字さんのものが汎用性に優れててよいと思います。

今回はBBSで疑問に答えていただいたので、その結果をお知らせしたかったのです。いわゆる習作ですので、らの字さんに迷惑かけてすみませんでした。

>>Blazeさん
>スクリプトを見てみるとarrayselect関数を単体に使っているので、命令や構文と>組み合わせる必要があります。
そのとおりでした。selectの説明に@menuに値が帰るとか書いてあったので
てっきりarrayselectもそのままで大丈夫とか思ってました。

while(1)はプログラム業界の暗黙の了解みたいですね。
無限ループにしてますよっていう。
とりあえず修正したものと頭装備交換に使う予定なので
交換材料ファイル(調べるの面倒でした)をupして終わろうと思います。
色々ありがとうございました。
引用なし
パスワード

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

[添付]〜添付ファイル〜
・名前 : material.txt
・サイズ : 2.0KB
・ツリー全体表示

Re:アイテム作成用 汎用NPC Ver2
 Blaze  - 07/4/30(月) 0:19 -
  
>stack.sp(1) != default(0)
関数を命令として使用した際に出るエラーです。
値を返す関数単体を使用してしまったら値を返す先が見つからず、混乱してしまうという事態に陥ってます。
スクリプトを見てみるとarrayselect関数を単体に使っているので、命令や構文と組み合わせる必要があります。

ちなみにwhile文の無限ループの条件式、while(1)ですが、
条件式は1以上の数値は"真"とみなし、2でも10でも"真"となります。
1以上の数値は動作に関係なく何でもいいのですが、「1」を入れるのがメジャーのようです。
引用なし
パスワード
・ツリー全体表示

Re:アイテム作成用 汎用NPC Ver2
 [名無し]  - 07/4/29(日) 8:47 -
  
1つ気になった点が。
>while(2)
少し前にwhile(1)というのがありますが、
()内は番号振る所じゃなく条件式を入れる所です。
1と言うのはその条件式がtrue(成立)を意味します。
なので2という条件式の結果はありません。

これがstack.spなんたらに関係あるかどうかはわかりませんが。
引用なし
パスワード
・ツリー全体表示

Re:アイテム作成用 汎用NPC Ver2
 sube  - 07/4/29(日) 8:12 -
  
追記すみません。
このスクリプト動かすとathenaのログに
stack.sp(1) != default(0)
ってNPC起動のたびに出るのですが、やっぱりどこかおかしいのでしょうか。
動きはするものの気になります。whileのあたりなのかな
引用なし
パスワード
・ツリー全体表示

[投稿者削除]
   - -
  
この書き込みは投稿者によって削除されました。(07/4/30(月) 19:48)
引用なし
パスワード
・ツリー全体表示

Re:jRO課金アイテム用スクリプト
 Cocoa  - 07/4/19(木) 20:31 -
  
OnPCMoveMapイベント追加
無駄なNPC削除
引用なし
パスワード

[添付]〜添付ファイル〜
・名前 : charged_item(7).txt
・サイズ : 4.9KB
・ツリー全体表示

Re:jRO課金アイテム用スクリプト
 Rayce  - 07/4/19(木) 16:40 -
  
>条件式の最後はelseだけでいいって事でしょうか?
そういうことです。

>全MapServerにスクリプトを読み込ませれば動きますけど、
>名前が同じっていう点が良くないんでしょうか?
duplicate自体が不要ということです。
各MapServerが

-    script    TypePCEvent    -1,{
OnPCLogin:
    callfunc "ChargedItem",0;
}

を読み込んでいれば何処に居てもOnPCLoginイベントは呼び出されます。
動かなかったらスクリプトエンジンのバグかもしれません。

>減る容量も1Bですねorz
容量は減らないですけど・・・。

>たった今気づいたんだけども、強化アイテムって重量0だから重量判定意味なかったorz
重量を設定したい人も居るかもしれないのでcheckweight関数はあった方が正解です。
引用なし
パスワード
・ツリー全体表示

Re:jRO課金アイテム用スクリプト
 Cocoa  - 07/4/19(木) 4:29 -
  
>・無駄な記述
>  if(A && B) ...
>  else if(A || B) ...
>  else ...
条件式の最後はelseだけでいいって事でしょうか?

>・usediteminfo(1)
>  製作者IDを取得してませんか??
orz

>・各MapServerに設置
>  duplicateは(というよりannounce命令などの極一部の命令・関数以外全ては)
>  MAPサーバを越えることができません。
>  各MAPサーバごとにOnPCLoginラベルを持ったNPCを設置する必要があります。
全MapServerにスクリプトを読み込ませれば動きますけど、
名前が同じっていう点が良くないんでしょうか?

>あと前に言うのを忘れてましたが、gettimetick(2)を1000000000で引く理由が
>わかりません。
2G制限とかデータサイズの事を考えたんですが、
よくよく考えれば2Gになるのはまだ25年程あるし、減る容量も1Bですねorz

たった今気づいたんだけども、強化アイテムって重量0だから重量判定意味なかったorz
引用なし
パスワード

[添付]〜添付ファイル〜
・名前 : charged_item(6).txt
・サイズ : 5.3KB
・ツリー全体表示

Re:jRO課金アイテム用スクリプト
 Rayce  - 07/4/19(木) 3:31 -
  
▼Cocoaさん:
>Rayceさんの指摘を元に再修正。
>装備から呼び出すタイプとOnPCLoginで呼び出す2タイプ用意しました。
>環境によって設置する方を変えてください。
>前回の物なら互換性あり。
>
>前回から今回の物に変える際、OnPCLoginタイプだけにしたい時は、
>item_db_addに追加した強化アイテムを削除してください。
>箱に関してはitem.txt内の物に書き換えれば問題ないです。
>
>これが最終版になることを願いつつ・・・

・無駄な記述
  if(A && B) ...
  else if(A || B) ...
  else ...

・usediteminfo(1)
  製作者IDを取得してませんか??

・各MapServerに設置
  duplicateは(というよりannounce命令などの極一部の命令・関数以外全ては)
  MAPサーバを越えることができません。
  各MAPサーバごとにOnPCLoginラベルを持ったNPCを設置する必要があります。

あと前に言うのを忘れてましたが、gettimetick(2)を1000000000で引く理由が
わかりません。
引用なし
パスワード
・ツリー全体表示

Re:jRO課金アイテム用スクリプト
 Cocoa  - 07/4/19(木) 2:02 -
  
Rayceさんの指摘を元に再修正。
装備から呼び出すタイプとOnPCLoginで呼び出す2タイプ用意しました。
環境によって設置する方を変えてください。
前回の物なら互換性あり。

前回から今回の物に変える際、OnPCLoginタイプだけにしたい時は、
item_db_addに追加した強化アイテムを削除してください。
箱に関してはitem.txt内の物に書き換えれば問題ないです。

これが最終版になることを願いつつ・・・
引用なし
パスワード

[添付]〜添付ファイル〜
・名前 : charged_item(5).txt
・サイズ : 4.6KB

[添付]〜添付ファイル〜
・名前 : item(2).txt
・サイズ : 11.9KB
・ツリー全体表示

Re:jRO課金アイテム用スクリプト
 Rayce  - 07/4/17(火) 19:16 -
  
・エラー処理
 予期せぬエラーの部分に到達する可能性は理論上有り得ないはずです。
 条件文をよく見てください。冗長になるだけです。

・強化アイテムの箱を返す
 直前に使用したアイテムのIDはusediteminfo関数で取得できます。
 わざわざcallfuncの引数に入れておく必要はありません。
 それから削除処理に回すかどうかの判定は取得アイテムIDの有無で判定できるので

 1173,村正R, ... ,{ callfunc "ChargedItem",0; ... }
 12936,村正Rの箱, ... ,{ callfunc "ChargedItem",1173; ... }

 としておけば

 //取得処理
 if( getarg(0) > 0 ){
   ...
 //削除処理
 else{

 だけで済みます。
引用なし
パスワード
・ツリー全体表示

Re:jRO課金アイテム用スクリプト
 Cocoa  - 07/4/17(火) 12:48 -
  
>本鯖準拠のシステムであればソースコードレベルでさっさと実装した方が効率的でスマートな気がします。

ソースコードレベルでの実装は本鯖での挙動を全く知らないので・・・
引用なし
パスワード
・ツリー全体表示

Re:再改良版
 kina  - 07/4/17(火) 9:04 -
  
>しかし、削除されたという「先頭のデータ」とは
>なんでしょうか、教えてもらえませんか?

1138,F23,ベインスフィールド01,ve_fild01,362,271
1139,F23,ベインスフィールド02,ve_fild02,196,377
1140,F23,ベインスフィールド03,ve_fild03,352,220
等の、ワープ先のデータを適当に削りました。
多すぎてオーバーフロー起こしちゃうのでしょうか・・・・?
引用なし
パスワード
・ツリー全体表示

Re:jRO課金アイテム用スクリプト
 Cocoa  - 07/4/17(火) 5:29 -
  
ついでに言うと今までのと互換性は全くないので、
実装してしまった鯖管さんは某所のツールなどで一旦削除した方が良いかもしれません。
引用なし
パスワード
・ツリー全体表示

Re:jRO課金アイテム用スクリプト
 Cocoa  - 07/4/17(火) 5:20 -
  
らの字さん、Rayceさんからアドバイスを頂き色々修正しました。
アドバイスありがとうございます。

一応テストはしましたが、大人数が装備した場合の挙動は未確認です。
未確認というか自分の環境じゃ確認不可能orz
マシンパワーにもよりますが、多分処理が遅くなる恐れあり・・・

あとは二度手間になるんでテキスト内の使用する際の注意と履歴を読んで下さい。
引用なし
パスワード

[添付]〜添付ファイル〜
・名前 : charged_item(4).txt
・サイズ : 4.3KB

[添付]〜添付ファイル〜
・名前 : item.txt
・サイズ : 12.4KB
・ツリー全体表示

[投稿者削除]
   - -
  
この書き込みは投稿者によって削除されました。(08/1/28(月) 10:39)
引用なし
パスワード
・ツリー全体表示

Re:再改良版
 kina  - 07/4/16(月) 21:50 -
  
>空行を余計と思って削除したりしてありませんか?
空白を削除等はせずにテキストの設置場所のみを書き換えてそのまま動作させました。

さて、今回は
infinity loop ! のエラー説明を参照
(スクリプトの実行命令数か、goto/menu命令実行回数が多すぎるので、無限ループと判断しました。)して、
先頭のデータを削りましたところ正常に動作しました。
一応解決が出来たことをご報告致します。
引用なし
パスワード
・ツリー全体表示

[投稿者削除]
   - -
  
この書き込みは投稿者によって削除されました。(08/1/28(月) 10:39)
引用なし
パスワード
・ツリー全体表示

Re:再改良版
 kina  - 07/4/16(月) 20:45 -
  
返信有難う御座います。
先程ものは他NPCへ組み込んだものを試用しての報告でありますが、
デフォルトのまま使用したものもサーバーエラーが発生したので報告致します。

athena2286
使用クライアント 2007-04-02a_Sakexe
「街&ダンジョン」「フィールド」共に最初のプロンテラ地域及びモロク地域を選択しますと
MAP鯖のログが埋まり、
最後に「run_script:infinity loop!」
で画面が固まり終了します。

そちらでは何も問題は起こらなかったようですので、私の環境にどこか問題があるのかも知れないですね・・・。
解決しましたら報告致します。
引用なし
パスワード
・ツリー全体表示

[投稿者削除]
   - -
  
この書き込みは投稿者によって削除されました。(08/1/28(月) 10:39)
引用なし
パスワード
・ツリー全体表示

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