私設SoS2オーナー応援BBS

新規発言一覧最新記事過去一覧検索ダウンロードページHOME

スレッド

└◇105:
Re:Colosseum System の投票 [moon] 11/02 15:17

 └◇106:勘違い [moon] 11/03 00:32
  └◇107:ありがとうございます。 [紫猿(しえん)] 11/03 07:55
   └◇108:Re:ありがとうございます。 [moon] 11/03 12:55
    └◇117:Re[2]:ありがとうございます。 [紫猿(しえん)] 11/06 23:30
     └◇118:Re[3]:ありがとうございます。 [moon] 11/06 23:58<-last


105● Re:Colosseum System の投票[ moon ] 2002 11/02 15:17
> Colosseum System を楽しく使用させていただいてます。
> 今日は質問なのですが
> アイテム脱着画面 (sub normal_action のところ)に
> コロシアムの投票期間中だけ(参加受付中のときは表示しない)
> としたいことがあるのですが、単に
> if ($entrysize>=$maxentry) {
> とするだけでは上手くいきません。
> $colodatを読み込んでないのでダメだとは思うのですが…?(違うかもしれません。)
> もし簡単に 投票期間中だけ と、指定できる書き方がありましたら教えていただけませんでしょうか?
>
> 現在は投票中だよ!とわかりやすくして、投票に来てくれる人を増やしたいと思っているのです。
> よろしくお願いいたします。

ええと、ファイルを使用する方法を書いてみます。(うまく動作しないかもしれません。)

---- colo.pl ----
バトル開始処理内の&colo_write;の下に、
  unlink('colobet') if(-f 'colobet');
  close(COLOFILE) if(open(COLOFILE,'>coloentry'));
を追加。
参加登録処理内と'if($now>$next〜'の処理内にある'$next = $prev〜'の下にそれぞれ、
  unlink('coloentry') if(-f 'coloentry');
  close(COLOFILE) if(open(COLOFILE,'>colobet'));
を追加。

---- sos2.cgi ----
参加受付中などを表示させたい箇所に、
  if(-f 'coloentry'){print '参加受付中';}
  elsif(-f 'colobet'){print '投票期間中';}
もしくは、
  print -f 'coloentry' ? '参加受付中' : -f 'colobet' ? '投票期間中' : '';
を追加。

で、おそらく表示できるのではないかと思います。

実際はファイルを1つだけ使えばそれが存在するかどうかにより参加と投票を区別できるのですが、汎用性が効く様に2つ使用してみました。
注意点として、coloentryなどと書かれているところを難しいパスに書き換えるとか、coloentry.cgiのように他人が書き込みできないようにした方が良いです。
スレッド一覧


106● 勘違い[ moon ] 2002 11/03 00:32
今ごろ気付きましたが、投票期間中だけの表示が御希望だったようですね。
書いた変更点のcoloentry関係を無くし少し修正すれば大丈夫かな。(ファイルを一つだけにするということで・・・)
スレッド一覧


107● ありがとうございます。[ 紫猿(しえん) ] 2002 11/03 07:55
No.105で教えていただきましたようにやってみたのですが
受付中でも投票期間でも「参加受付中」になってしまって
教えていただいたことの意味(どうしてそうなるのか)が良くわらならいので
ファイルをひとつにするとかも理解ができませんでした。
教えていただいたことを参考にもう少し勉強してみたいと思います。
お手伝いいただいてありがとうございます。とても助かりました。ぺこり♪
スレッド一覧


108● Re:ありがとうございます。[ moon ] 2002 11/03 12:55
> No.105で教えていただきましたようにやってみたのですが
> 受付中でも投票期間でも「参加受付中」になってしまって
> 教えていただいたことの意味(どうしてそうなるのか)が良くわらならいので
> ファイルをひとつにするとかも理解ができませんでした。
> 教えていただいたことを参考にもう少し勉強してみたいと思います。
> お手伝いいただいてありがとうございます。とても助かりました。ぺこり♪

書いたものの流れは、
1. 参加受け付け終了時:coloentryファイルを削除(unlink)しcolobetファイルを作成。
2. バトル終了時:colobetファイルを削除しcoloentryファイルを作成。
3. また参加受け付け終了になったら1.に戻る。
の繰り返しです。
要するに、参加受付中はcoloentryというファイルのみが存在し、投票期間中はcolobetというファイルのみが存在するということです。
それを、if(-f 'coloentry')〜で判断して文字を表示しています。(-fはファイルがプレーンファイル(普通のファイル)かを返すファイルテスト演算子)

状況としては、参加受け付け終了時にcoloentryが削除されていないようなのでcoloentryをちゃんと''で囲っているかを確認してみてください。
それでも駄目な場合は、-fを-eにしてみてください。
スレッド一覧


117● Re[2]:ありがとうございます。[ 紫猿(しえん) ] 2002 11/06 23:30
本当にありがとうございます。
No.105で書いていただいたものでキチンとなりました。
上手くいかなくて悩んだのですが、流れを教えてくださったので
そのおかげでなんとか上手くいかない原因がわかりました。
原因は、バトル開始処理内ではないところの&colo_write;の下にも
unlink('colobet') if(-f 'colobet'); を付け加えていたせいでした。
&colo_writeはバトル開始処理内だけで良かったのですね。
私の理解不足でお手間を取らせてしまい申し訳ありません。
細かくサポートしていただき本当にありがとうございます。
寒くなりましたので、お風邪などお引きになりませんように・・・それでは
スレッド一覧


118● Re[3]:ありがとうございます。[ moon ] 2002 11/06 23:58
> 本当にありがとうございます。
> No.105で書いていただいたものでキチンとなりました。
> 上手くいかなくて悩んだのですが、流れを教えてくださったので
> そのおかげでなんとか上手くいかない原因がわかりました。
> 原因は、バトル開始処理内ではないところの&colo_write;の下にも
> unlink('colobet') if(-f 'colobet'); を付け加えていたせいでした。
> &colo_writeはバトル開始処理内だけで良かったのですね。
> 私の理解不足でお手間を取らせてしまい申し訳ありません。
> 細かくサポートしていただき本当にありがとうございます。
> 寒くなりましたので、お風邪などお引きになりませんように・・・それでは

出来ましたか。良かったです。
また何かあったら気軽にどうぞ。
スレッド一覧

CGIROOM