▼スレッド
│
└◇1030:連続で申し訳ないです・・・_| ̄|○ [CGI初心者炸裂] 05/08 00:54
└◇1031:Re:連続で申し訳ないです・・・_| ̄|○ [CGI初心者炸裂] 05/08 01:31
└◇1032:Re[2]:連続で申し訳ないです・・・_| ̄|○ [moon] 05/08 10:25
└◇1033:Re[3]:連続で申し訳ないです・・・_| ̄|○ [CGI初心者炸裂] 05/08 12:00
└◇1035:Re[4]:連続で申し訳ないです・・・_| ̄|○ [moon] 05/08 14:16
└◇1037:Re[5]:連続で申し訳ないです・・・_| ̄|○ [CGI初心者炸裂] 05/08 15:08
└◇1039:Re[6]:連続で申し訳ないです・・・_| ̄|○ [moon] 05/08 16:45
└◇1040:Re[7]:連続で申し訳ないです・・・_| ̄|○ [CGI初心者炸裂] 05/08 22:38
└◇1041:Re[8]:連続で申し訳ないです・・・_| ̄|○ [moon] 05/09 01:44
└◇1042:Re[9]:連続で申し訳ないです・・・_| ̄|○ [CGI初心者炸裂] 05/09 22:00<-last
トップのスレッド一覧
プレイヤー総数
の表示が0のまんまで登録しても
増えません。自分なりにいろいろやってみたんですが;−;
原因と解決方を教えてください><
あ、あとついでにスレッド一覧
一度戦ったプレイヤーと
一日たったら戦えるようになるように
設定したいんですが、どうしたらいいでしょうか?w
プレイヤー総数のほうは情報が少なく何とも言えないのでとりあえず下記の情報を御願いします。スレッド一覧
・sub sagaの冒頭の3行
・sub sagaの末尾の3行
・sub list_orderの冒頭の3行
> あ、あとついでに
> 一度戦ったプレイヤーと
> 一日たったら戦えるようになるように
> 設定したいんですが、どうしたらいいでしょうか?w
これは、以前satosiさんという方が公開していた変更で大丈夫だと思います。
次の手順で見付かります。
1. 本家SoS2の配布ページに記載されている「改変・改良・改修のコラム」のURLをコピー。
2. コピーしたURLをInternet Archiveで検索。
3. 見付かったページの「33.最終対戦者も、一定時間後には、対戦可にする方法」のURLをコピー。
4. コピーしたURLをInternet Archiveで検索。
# Sub Saga #スレッド一覧
sub saga {
&opensosdat;
&get_champ;
&list_order;
print qq|<tr><td valign=top width=50%><div align=center><img src=$imgdir$ttlimg></div><br>\n|;
print qq|この物語は$hernam$heroと$ricnam$rich、\n|;
print qq|その他多くの勇者、商人達の幾千年にもわたる壮大な歴史の叙事詩である。<br>\n|;
if ($hero || $rich) {
print qq|<table border=0 cellspacing=0 cellpadding=5 align=center>\n|;
print qq|<tr><td align=center>\n|;
print qq|<img src=$imgdir$himg width=$ig_wd height=$ig_ht><br>\n| if $himg;
print qq|$hernam$hero| if $hero;
print qq|</td>\n<td align=center>\n|;
print qq|<img src=$imgdir$rimg width=$ig_wd height=$ig_ht><br>\n| if $rimg;
print qq|$ricnam$rich| if $rich;
print qq|</td>\n<td align=center>\n|;
print qq|<img src=$imgdir$pig width=$ig_wd height=$ig_ht><br>\n|;
print qq|覇王$pnm|;
print qq|</td></tr></table>\n|;
}
# 吟遊詩人の詩
if ($poem) { print qq|<br>$poem<div align=right>$poenam:$poet</div>\n| }
# 探検日誌
if ($note) { print qq|<br>$note<div align=right>$avenam$avenの日誌より</div>\n| }
print qq|</td>\n|;
$info =~ s/(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]*)/<a href=\"$1\:$2\" target=\"_blank\">CLICK<\/a>/ig;
print qq|<td valign=top><b>$intl</b><br><br>\n$info<br><br>\n|;
if (!$totalplayer) { $totalplayer = 0 } if (!$playernow) { $playernow = 0 }
#-ADD-
push (@editor,"簡易掲示板 Ver 1.00 <A href='http://www.sionjam.net/' target='_blank'>by SION</A>");
@bbslines = &opendat("$bbsdat");
foreach (0 .. 4) {
($date,$log) = split(/<>/,$bbslines[$_],2);
$date = "<FONT color=green>$date</FONT>";
$bbs .= $date . $log . '<HR>';
}
&decoration($bbs);
print qq|<A href="$recordcgi" target="_blank">ゲーム内掲示板</A><HR>$bbs|;
#-END of ADD- SION0032v1.00-2-1/3
@rcd3lines = &opendat('rcd3.cgi');
if (!@rcd3lines) { print qq|<center><b>本日は休刊です</b></center><hr>\n| }
else { print qq|<center><b>新聞(最新記事15)</b></center><hr>\n| }#★TOP表示件数指定。この場合15件。0 .. 14)←この数字変更可。希望表示数-1で設定
foreach (0 .. 9) { print qq|$rcd3lines[$_]<br><hr>\n| }#<hr>タグを消すとすっきり表示。
print qq|<div align=right><b>プレイヤー総数:$totalplayer<br>\n|;
print qq|現在のプレイ人数:$playernow</b></div></td></tr>\n|;
}
いろいろ足しててどこだかわかんないので全部w
# Sub List In Order #
sub list_order {
$now = time - $def_dl * 86400;
&get_file; &list_in; &unlock;
foreach (0 .. $#lstlines) {
こんなかんじです。
Internet Archive
なんて便利なサイトがあったんですね!
知らなかった・・・・。
これからも活用していこっとw
そんでまた問題が・・・
人と対戦しようとすると
上のメニューだけ出て
戦闘画面が出なくなっちゃいました・・・。
# Sub Fight #
sub fight {
@rcdlines = &get_user("$Fm{'id'}");
@rcdlines = &get_user("$Fm{'id'}");
if($Fm{'mode'} eq 'fight2'){@prclines = &get_champ}
else{@prclines = &get_partner("$Fm{'pd'}")}
$lapse = 12; #同一対戦の可能経過時間
($plfid,$plftime) = split(/△/,$plf);
$off = (time - $plftime)/(60*60);
if ($plf =~ /$id△/ && $off < $lapse) { push (@msg,"$pnmとは暫く戦えません[$off] "); return }
if ($pav eq 'dead') { push (@msg,"$pnmは死んでいます"); return }
if ($av eq 'dead') { push (@msg,'あなたは死んでいます'); return }
if ($hp <= 2) { push (@msg,'戦闘できる体力がありません'); return }
if ($plf eq $id) { push (@msg,"$pnmとは暫く戦えません"); return }
srand(time | $$);
if ($sp =~ /Qb/) { $uw = (-2,-1,0,1,2) [int(rand(5))] }
if ($sp =~ /Qk/) { $uw = (-1,0,0,1,2) [int(rand(5))] }
if ($sp =~ /Mw/) { $uw = 1 }
if ($sp =~ /Qx/) { $ua = (-1,0,1) [int(rand(3))] }
if ($sp =~ /Ma/) { $ua = 1 }
if ($sp =~ /Sd/ && $sp =~ /Qm/) { $uw += $def_Qm }
if ($psp =~ /Qb/) { $pw = (-2,-1,0,1,2) [int(rand(5))] }
if ($psp =~ /Qk/) { $pw = (-1,0,0,1,2) [int(rand(5))] }
if ($psp =~ /Mw/) { $pw = 1 }
if ($psp =~ /Qx/) { $pa = (-1,0,1) [int(rand(3))] }
if ($psp =~ /Ma/) { $pa = 1 }
if ($psp =~ /Sd/ && $psp =~ /Qm/) { $pw += $def_Qm }
if ($bp =~ /Oi/) { ($uo = $bp) =~ tr/A-Za-z//d }
if ($bp =~ /Pi/) { ($up = $bp) =~ tr/A-Za-z//d }
if ($pbp =~ /Oi/) { ($po = $pbp) =~ tr/A-Za-z//d }
if ($pbp =~ /Pi/) { ($pp = $pbp) =~ tr/A-Za-z//d }
$uatk = $ak + $ab + $uw + $uo; $patk = $pak + $pab + $def_ab + $pw + $po;
$udfd = $dd + $db + $ua + $up; $pdfd = $pdd + $pdb + $pa + $pp;
($php,$ptm) = &hprecover($php,$pxp,$psp,$pav,$ptm,$pfg);
foreach ('a','b','c','d','e') {
$bcount++;
if ($rw >= $def_rp && $psp =~ /X$_/) { $patk += $bcount }
if ($prw >= $def_rp && $sp =~ /X$_/) { $uatk += $bcount }
}
$BE = $wn+$kl; $BE = $MaxBE if $BE > $MaxBE;
$pBE = $pwn+$pkl; $pBE = $MaxBE if $pBE > $MaxBE;
$udice = int(rand($Badice)) + $uatk - $def_dm + $BE; # 己
$pdice = int(rand($Badice)) + $patk - $def_dm + $pBE; # 敵
$udmg=$udice-$BE;
$pdmg=$pdice-$pBE;
$Sidice -= $def_td if $sp =~ /Si/;
$Bedice = int(rand($Bedice)); $Lddice = int(rand($Lddice)); $Dtdice = int(rand($Dtdice));
$Chdice = int(rand($Chdice)); $Mgdice = int(rand($Mgdice)); $Bidice = int(rand($Bidice));
$Cndice = int(rand($Cndice)); $Dkdice = int(rand($Dkdice)); $Sidice = int(rand($Sidice));
$Afdice = int(rand($Afdice)); $Cmdice = int(rand($Cmdice)); $Bkdice = int(rand($Bkdice));
$Drdice = int(rand($Drdice)); $Ctdice = int(rand($Ctdice)); $Bldice = int(rand($Bldice)); $Smdice = int(rand($Smdice)); $Fmdice = int(rand($Fmdice));
$result = $udice <=> $pdice;
if ($result == 1) {
$dmg = (1,1,$udmg - $pdfd) [($udmg <=> $pdfd) + 1];
($php,$pav,$pdt,$prw,$hp,$av,$dt)
= &fight_sub($nm,$hp,$sp,$ab,$bp,$ak,$av,$dt,$bn,$pnm,$php,$psp,$pbp,$pav,$pdt,$prw,$pbn);
$mn += $Wm; $plz++; $wn++; $itemchance = 1; $hp = $xp if $hp > $xp;
if ($def_ar) { $rw += $def_ar };
}
if ($result == -1) {
$dmg = (1,1,$pdmg - $udfd) [($pdmg <=> $udfd) + 1];
($hp,$av,$dt,$rw,$php,$pav,$pdt)
= &fight_sub($pnm,$php,$psp,$pab,$pbp,$pak,$pav,$pdt,$pbn,$nm,$hp,$sp,$bp,$av,$dt,$rw,$bn);
$pmn += $Wm; $lz++; $pwn++; $php = $pxp if $php > $pxp;
if ($def_ar) { $prw += $def_ar };
}
if ($result == 0) { &fmsg('引'); $hp-- }
if (!$php) { $kl++ }; if (!$hp) { $pkl++ };
if ($wn) { $rt = &rate($wn,$lz,$kl,$dt) } else { $rt = 0 }
if ($pwn) { $prt = &rate($pwn,$plz,$pkl,$pdt) } else { $prt = 0 }
if ($def_wm && $result == 1) {
if ($rt < $prt) { $pay = int(($prt - $rt) * $def_wm) }
if ($def_lt) { $pay = $def_lt if $pay > $def_lt }
$mn += $pay;
push (@msg,"$pay\Gの勝利金を手に入れました") if $pay;
}
if ($def_lm && $result == -1) {
if ($prt < $rt) { $pay = int(($rt - $prt) * $def_lm) }
if ($def_lt) { $pay = $def_lt if $pay > $def_lt }
$pmn += $pay;
&fmsg('金') if $pay;
}
&splititem('i');
if (!$Bidice) {
foreach (0 .. $#items) {
($item,$sts,$price) = split(/△/,$items[$_]);
if ($sts =~ /Li/ && $Bldice) { next }
if ($result == 1 && $sts =~ /Qw/ && $sts !~ /Ie/) { $breakitem = 1 }
if ($result == -1 && $sts =~ /Qs/ && $sts !~ /Qw/ && $sts !~ /Ie/)
{ $breakitem = 1 }
elsif ($result == -1 && $sts =~ /Qa/ && $sts !~ /Ie/) { $breakitem = 1 }
if ($result == 0 && $sts =~ /Qt/ && $sts !~ /Ie/) { $breakitem = 1 }
if ($breakitem) {
$ab -= substr($sts,4,2); $db -= substr($sts,6,2);
splice(@items,$_,1); &joinitem('i');
$sp =~ s/Qb//g if $sts =~ /Bw/;
$sp =~ s/Qk//g if $sts =~ /Kt/;
$sp =~ s/Qx//g if $sts =~ /Ax/;
$sp =~ s/Qm//g if $sts =~ /Sw/;
push (@msg,"$itemが壊れました"); last;
}
}
}
$itemchance = 0 if $#items + 1 >= $xi;
&splititem('I');
if ($itemchance && $pitems[$Sidice]) {
&splititem('i');
($item,$sts,$price) = split(/△/,$pitems[$Sidice]);
if ($sts !~ /Ns/) {
if ($sts =~ s/Q[swat]//g) { $pab -= substr($sts,4,2); $pdb -= substr($sts,6,2) }
splice(@pitems,$Sidice,1); push(@items,"$item△$sts");
$psp =~ s/Qb//g if $sts =~ /Bw/;
$psp =~ s/Qk//g if $sts =~ /Kt/;
$psp =~ s/Qx//g if $sts =~ /Ax/;
$psp =~ s/Qm//g if $sts =~ /Sw/;
&joinitem('iI'); &fmsg('奪');
}
}
$bp = $bn = $pbp = $pbn = ''; $f_time = time;$plf = "$id△$f_time";
&userout; if($Fm{'mode'} eq 'fight'){&add_record($fwords)}
else{
if ($result == 1){
$pid=$id;$pnm=$nm;$pps=$ps;$pjb=$jb;$pig=$ig;$psp=$sp;$pbp=$bp;$pbn=$bn;$pak=$ak;$pdd=$dd;$php=$hp;$pxp=$xp;$pab=$ab;$pdb=$db;$pav='alive';$pwn=$wn;$plz=$lz;$pdt=$dt;$pmn=$mn;$pbg=$bg;$pxi=$xi;$ptm=$tm;$plf=$lf;$pfe=$fe;$pcm=$cm;$pis=$is;$pht=$ht;$pfg='NS';$prw=$rw;$pkl=$kl;
push (@msg,"$nmは覇王の称号を継ぎました。");
&add_champ($fwords)}
else{$pav='alive';&add_champ($fwords)}
}
&add_record($fwords);
&add3_record("$nmと$pnmが交戦した模様");# 追加
if ($av eq 'dead'){
&add3_record("<font color=red>DAED!$nmが自滅!</font>");
}
if ($pav eq 'dead'){
&add3_record("<font color=red>DAED!$pnmが戦死!</font>");
}
}
ちなみにSubFightはこんな感じです。
なんか、聞いてばっかでごめんなさい;−;
> &list_order;スレッド一覧
の下に、print "<hr>#### \$totalplayer = $totalplayer ####<hr>";
を記述してから実行して値がちゃんと代入されているかを確認してください。
sub fightのほうはローカルテストを行うとログファイルが作成されると思いますのでそれでどんなエラーが出ているかを確認してください。(requireのし忘れとかだとは思いますが。)
# ローカルテストの習慣がない場合は、行うように習慣付けたほうが良いですよ。
# また、ログファイルが作成されない場合はWEBサーバソフトの設定を見直してください。
プレイヤー総数がちゃんと表示されるようにスレッド一覧
なりました!ありがとうございました!
sub fight
のあれはよく分からなかったのですが(ぉぃ
どうも新聞システムの
$bp = $bn = $pbp = $pbn = ''; $plf = $id;
&userout;
&add_record($fwords);
&add3_record("$nmと$pnmが交戦した模様");# 以下すべて追加
if ($av eq 'dead'){
&add3_record("<font color=red>DAED!$nmが自滅!</font>");
}
if ($pav eq 'dead'){
&add3_record("<font color=red>DAED!$pnmが戦死!</font>");
}
}
の付け足しかたが悪かったようです。
結局正しい付け足し方とかもわからなかったので
消しました・・・。
> プレイヤー総数がちゃんと表示されるようにスレッド一覧
> なりました!ありがとうございました!
結局、原因はどこだったのでしょうか?
えっと、スレッド一覧
何も改造を加えていないダウンしたての
sos1.cgi
と見比べて
足りないところを足したら元通りになりましたw
どうも、改造時に一緒に消しちゃったみたいで(ぉぃ
失礼しました〜
> えっと、スレッド一覧
> 何も改造を加えていないダウンしたての
> sos1.cgi
> と見比べて
> 足りないところを足したら元通りになりましたw
> どうも、改造時に一緒に消しちゃったみたいで(ぉぃ
> 失礼しました〜
あ、確かによく見たら先のスクリプトでは$totalplayer = @odrlines;が無くなっていましたね。
あはwスレッド一覧
っっっほんんと、お騒がせしました〜^^