一般向けの掲示板です。 疑問・質問などはこちらにお願いします。
No.539と同じ内容の質問をさせていただきます。エラー内容は下記のようなメッセージです。programのinc-turn.cgi 285行目あたりにエラーが発生defined(%hash) is deprecated at・・・・CGIについては全く分かりませんので、ご指導いただきたいと思います。どうぞよろしくお願いします。
サーバーは、こちらと同じ「さくら」です。現在はPerl 5.14.4 [標準のPerl]になっているようです。
#市場在庫上限下限チェック&補正 CheckWholeStore(); #イベント終了処理 @event::DT=@DT; @event::ITEM=@ITEM; my %group=(); if(defined(%DTevent))の最後の行を、if((%DTevent)としてみるとどうでしょうか。イベントの終了判定のようですので、一見直っているようでも、イベントが終わらずにいつまでも続いているようだと失敗です。もしくは、if(defined(%DTevent)){を消してしまってもPerlだと動作する気もします。この場合、317行目の } ← この閉じ括弧も消してください。 #イベント開始処理
正しくは、if(%DTevent)に置き換えてください。こちらで試したところ、おそらく動作大丈夫でした。ほかでも、if(defined(%○○))があってエラーが出るようでしたら、if(%○○)にしてもたぶんいいと思います。この辺は商人物語というよりPerl全般のことなので、専門家に聞いてみないとなんともいえないのですが。
試しに動作確認までしていただいて、ありがとうございます。早速No.552のご指示通りinc-turn.cgiのほかにguild.cgiで1ヵ所、jcordpl.cgiで2ヵ所のdefinedを削除したら上手くいきました。ご面倒をおかけしました。また分からないことがありましたら、よろしくお願いします。
うまく動いているようでよかったです。私のほうでもそのうちこの対応が必要かもしれません。
「トップ 5の店舗」と詳細「順位」ランクの「店名人気」項目の優勝回数アイコンに並べて、独自に追加配布したアイコンを表示することはできるでしょうか?もし可能であれば教えていただけると幸いです。「資金資産」項目に表示させる方法は、てんしのはね様の世界樹版を参照させていただいたのですが、「店名人気」の項目に表示できるものなら・・・と思って、おたずねいたします。ご多忙だとは思いますが、よろしくお願いいたします。報告が後回しになりましたが、こちらの追加スクリプトや店舗内改造等を使わせていただいております。 ありがとうございます。
スクリプトご利用ありがとうございます。ご質問の件ですが、実際試してはいないのですが、「inc-html-top.cgi (トップ5の店舗の表示)」と、「inc-html-ranking.cgi (順位)」の、以下のあたりが関係していると思います。$disp.= GetTagImgGuild($DT->{guild}).$job.$DT->{shopname}; 【ギルドのアイコン表示】+ 【店名】$disp.= "</a>" if !$GUEST_USER;$disp.=GetTopCountImage($DT->{rankingcount}+0) if $DT->{rankingcount}; 【優勝回数】$disp.="<BR>";【優勝回数】の下あたりに、$disp.="<img src="追加配布アイコンのパス">";とすると、アイコンが出ると思います。何かを持っている時アイコンが出るのであれば、$disp.= "<img src=アイコンのパス alt=○○所有>" if (あるアイテムの所持数 > 0);※alt=は、マウスカーソルを重ねたときに表示する文章。アイコンの種類を増やすなら、この文章をずらずらと並べます。$disp.= "<img src=アイコン1のパス alt=○○1所有>" if (あるアイテム1の所持数 > 0);$disp.= "<img src=アイコン2のパス alt=○○2所有>" if (あるアイテム2の所持数 > 0);$disp.= "<img src=アイコン3のパス alt=○○3所有>" if (あるアイテム3の所持数 > 0);※<IMG class=i src= alt=> class=iというのも入れたほうがいいかもしれない。inc-html-top.cgi と、inc-html-ranking.cgi に対してコピーペーストで同じように設定します。念のため、改造前のファイルを別の名前で保存しておいてから、改造したらいいと思います。よろしくお願いします。
早速ご回答下さいましてありがとうございます。ご指示通りのタグを追加して表示できるようになりました。ただアイテム2種類を表示させたいので2行にしたところ、未だ所持していないものまで表示されてしまいます。所持数0では表示されず所持数1で表示と解釈しましたので、下記のように記述しました。$disp.= "<IMG class=i src=./image/item-no-100.gif alt=レアアイテム>" if (1 > 0);何度も申し訳ありませんが、よろしくお願いいたします。
$DT->{item}[商品番号-1] に、商品番号の商品の在庫数が入っています。 if (1 > 0);のところは、 if ($DT->{item}[商品番号-1] > 0);としてください。番号が100でしたら、100 - 1 で、 if ($DT->{item}[99] > 0);となります。
完璧なアイコン表示ができました。お力を拝借できたお蔭で、想像通りに表示されて嬉しいです。いろいろお手数をおかけして申し訳ありませんでした。本当にありがとうございました。
初めまして、いつも見させていただいています。設置のことで聞きたいのですが、Perl 5.12以降だとdefinedの挙動が変わってるみたいで、defined(%hash) is deprecated at 〜というエラーが出てしまいます。Perlは始めたばかりでよくわからないのですが、これの解決方法はわかりますか?つたない文章ですみません。よろしくお願いします。
確認遅れましてすいません。とりあえず、どのファイルのどの箇所でエラーが出ているのかわかりますか。場合によってはプログラムの書き換えで対応できるかもしれません。もう解決されているかもしれませんが。
大学院試が近いので煩悩を断つべくWアトラスの店の凍結をお願いしたいです。およそ一ヶ月半程度の凍結になるかと思いますが、(あってはならないが)不合格だったら閉店を考える必要が出てくるかもしれません…。掲示板のチェック程度なら割と時間を食わないのですぐできると思いますが、店の手入れまで手を回せるとは思えませんので、この投稿を確認できましたら凍結をお願いしたいです。
休止にしました。院試がんばってください。
院試は終わりましたが、このまま実家に帰りますので引き続き凍結をお願いします。
あろうことか院試に失敗してしまいました。折角応援していただいたのですが期待に添えず。次回失敗するわけにもゆきませんので店も畳みたいと思います。ただ、店をたたむ前に資産の処分ぐらいはやって街に貢献するぐらいはしたいので凍結の解除、または管理人さんの側から資産の寄贈処理をしていただけないでしょうか。ご迷惑をおかけいたしますが、よろしくお願いします。
院試お疲れ様です。次回がんばってください。卒業論文などもあるのでしょうか。忙しそうですね。書き込みに気づくのが遅れてすいません。こちらでうまい具合に寄贈処理させていただきます。院試うまくいきましたら、また再開してください。よろしくお願いします。
お久しぶりです。板違いですが、続きという形なのでこちらに。以前失敗して今年はリベンジ(とはちょっと違いますが、後ほど)して無事合格を勝ち取りましたことを報告いたします。やはり院試というやつは簡単には受からないものですね…当たり前ですが、周囲がほぼ全員受かってるような状況でしたから尚更痛感しました。実を言うと、(記憶違いでなければ)GEN氏と同じく、私は材料関係の分野を専攻していました。ですので、GEN氏の日記や実験風景などはかなり共感の持てる部分が多くて楽しめましたし、「しっかり予習してこないから実験がスムーズに進まない」「機材の扱いが雑だ」というのはまさに自分に当てはまるので耳(目?)が痛い言葉でした。ただ前の書き込みの通り私は一度失敗してしまったので、卒業後は別の専攻へと移動することになりました(きちんと言えば、同専攻の院試は受験せず、違う専攻の院試を受験した)。今現在では希望留年という形で卒論はまだ通過していない状態ですから、これから卒論で慌ただしくなることが予想されますので当面再開は見送る形になりますが、とりあえず報告だけさせていただきます。
合格おめでとうございます。わざわざご連絡いただきまして、すいません。おっしゃる通り、私は材料分野です。材料の知識は、化学や機械・環境など他の分野にも役立つと聞きますから、幅を広げるという意味では、別の専攻もいいのではないでしょうか。卒論で落ちるということはないと思いますので、締め切りに間に合うように計画的に進められたら良いと思います。また気が向いたら参加してください。
アイテム使用時の必要設定で、一定以上の爵位(経験地もしくは伯爵などの称号)や優勝回数を指定することは可能でしょうか?可能でしたら、教えていただきたいです。それと、アトラスのitem-date内の都市建設で[@@ITEMNO "ワイン",20,10],とありますが、アイテム名の次の数字は何を示しているのでしょうか?今までは適当に設定してきたのですが、気になりますので、この際にこの件も教えていただきたいです。お手数をおかけしますが、お暇なときにどうかよろしくお願いします。
確認が遅れてすいません。■アイテムの必要条件の設定funcbというのを使います。アイテム内に直接記述するか、別に@@FUNCITEM以下に記述します。同じ処理を複数に適用する場合は後者が便利です。例えば、 @@USE time 10m action 引き換え name 高度プログラムと引き換え info 高度プログラムの詰め合わせです okmsg ご利用ありがとうございました use 1 ギフト券 get 300 高度プログラムのすぐ下に、 get 300 高度プログラム funcb _local_ return 1 if($DT->{dignity} < 3); return 0; _local_と続けると、爵位3より小のときは、そのアイテムの表示が???になります。???ではなくて、メッセージを表示するときは以下のようにします。 get 300 高度プログラム funcb _local_ my($USE)=@_; if($DT->{dignity} < 3) { $USE->{name}.='[爵位が3pt以上必要です]'; return 2; } return 0; _local_あと、同じ処理をいろんなUSEに適用するなら、以下のように分けると文字数の節約になります。例えば、 get 300 高度プログラム funcb dignity_judgeとしておいて、@function以下に、@@FUNCITEM# ★爵位の判定sub dignity_judge{my($USE)=@_;if($DT->{dignity} < 3) {$USE->{name}.='[爵位が3pt以上必要です]'; return 2;} return 0;}を追加します。優勝回数なら、$DT->{rankingcount}ですね。この辺は、マニュアル3-3のDTを参照してください。あと、アトラスの件ですが、my $price=int($ITEM[$msg[0]]->{price} * ($msg[1] + rand($msg[2])) / 100);この、msg[1]が、20、msg[2]が10に相当します。仕入値 = ワインの値段 * (20% + (0〜10%のランダムな数))という感じですね。つまり、ワインの仕入れ値は、定価の20%から30%に設定されるということです。デフォルトでは、新大陸など、遠くに行くほど、仕入れ値が低くなって、それだけ利益が多くなるように設定されているようですね。仕入値は商館にも表示されています。
詳しいご回答・ご解説ありがとうございました!参考にさせていただきます。お手数おかけいたしました。
この質問に関してなのですが、マニュアル3−3DTの欄を見ると、『foundation:創業日時刻(GMT)』とあります。これは、創業してから何日、というよりも創業日のように思われるのですが、アイテムを使うときに創業して10日以上が必要、とする際に、funcb _local_return 1 if($DT->{foundation} < 10);return 0;_local_として問題ないでしょうか?
上記のやり方では、おそらくうまく動かないと思います。$_->{foundation}には、1970年1月1日0:00から、開店したときまでの経過秒数が入っています。そして、$NOW_TIMEという変数は、1970年1月1日0:00から現在までの経過秒数を取得できます。よって、この2つの差から、創業後に何秒経っているか出します。日数に直して整数化するとこんな感じです。int(($NOW_TIME-$DT->{foundation})/3600/24念のため、この変数を外部に出力してみて、開店時間と一致するか確認してみてください。if (($NOW_TIME-$DT->{foundation}) < 10*24*3600)のほうが正しいかもしれません。
試してみましたが、出来ませんでした(^^;アドバイスを参考に自分でやってみます。ありがとうございました!余談ですが、>>534の日数に直して〜ってところの文の最後に)が抜けてます。
カッコが抜けていてすいません。$NOW_TIMEは、使う前に以下の文を入れる必要があったかもしれません。これを最初に入れてやってみてください。$NOW_TIME=time();