*一括内政 [#l43f6c99]
-ページ: [[罪罰改造板2]]
-投稿者: [[Redmen]]
-優先順位: 低
-状態: 完了
-カテゴリー: 設置できません
-投稿日: 2005-01-27 (木) 10:16:08
-バージョン:
**内容 [#g5e75fa4]
一括内政をすると何も出来なくなる
----
-自分でやってみたところ一括内政をおすと、何も出来なくなります。でも構文にはエラーは無いです -- [[Redmen]] &new{2005-01-27 (木) 10:18:47};
-下に貼り付けたのは、上のインデント(字下げ)を修正したものです。これをみると分かるとおり、$tm=50とメッセージが実行されるのは、$camp==5の時だけですね -- [[あくあ]] &new{2005-01-27 (木) 21:32:35};
-つまり全てに$tm=50を入れればいいのですか? -- [[Redmen]] &new{2005-01-28 (金) 21:54:55};
-$camp==5判定の外に出してすべての場合にセットされるようにすればいいのでは? -- [[あくあ]] &new{2005-01-28 (金) 22:28:02};
-判定外とは。少し教えてもらえますか? -- [[Redmen]] &new{2005-01-29 (土) 14:32:02};
-if文の意味ですが -- [[あくあ]] &new{2005-01-29 (土) 14:55:24};
if(条件1){
// 条件1を満たす時はここが実行される
}elsif(条件2){
// 条件2を満たす時はここが実行される
}else{
// 条件1も条件2にも当てはまらない時はここが実行される
}
つまり
}elsif($camp==5){ // *1
$cg5 += $v;
$cf5 += $v2;
$cs5 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
$mes = "$v G 国家予\算が増え、$v2の兵量を得、$S人の兵士が集まった";
$tm=50;
} // *2
の意味は、$campが「5」なら、{ *** }で囲まれた文*1〜*2(1段字下げされているところ)が実行されることになります~
また、$camp==5判定のブロックの中にある($S<$gold)部分も一緒です。~
$S<$gold($Sが所持金より少ない)ならば、$gold-=$S;(所持金から$Sが引かれる)~
$gold<$S(所持金より$Sが大きい)なら、$S=$gold;$gold=0;が実行されることになります
-Redmenさんのソースは、if文の字下げが部分的に一緒になっていますが、これではどこからどこが実行されるのか、わかりづらくなります -- [[あくあ]] &new{2005-01-29 (土) 15:09:56};
-ん… 直すのは下の部分だけでいいのですか?ごめんなさい未熟で。 -- [[Redmen]] &new{2005-01-29 (土) 21:49:44};
-とりあえず、$mesと$tm=50の部分を } // *2 の下に移動したらどうなるでしょうか? -- [[あくあ]] &new{2005-01-30 (日) 00:00:41};
-下の2つソースは、動作的には全く同じです。字下げはプログラム的には見た目が見やすくなるだけです -- [[あくあ]] &new{2005-01-30 (日) 00:01:48};
-下のように変更しましたがエラーが -- [[Redmen]] &new{2005-01-31 (月) 16:27:01};
-エラーと言うか前と変わらない状況です -- [[Redmen]] &new{2005-01-31 (月) 16:27:31};
-たぶん { } の位置が悪いんだと思いますが。}elsif($cmd==5){ ←の「}」は、ちゃんと前の}elsif($cmd==4){ の閉じカッコになってますか? -- [[あくあ]] &new{2005-01-31 (月) 23:14:20};
-自分は下のようになっています -- [[Redmen]] &new{2005-02-01 (火) 21:34:57};
-下のソースのままですと、結局 $camp==5 の場合にしか $tm=50; の処理を行わないですが… -- [[ZONE]] &new{2005-02-01 (火) 21:48:00};
-というわけで、2つのソースのうち下のほうを修正してみました。 -- [[ZONE]] &new{2005-02-01 (火) 21:50:29};
-またまたNEXTが消えた状態が出ました -- [[Redmen]] &new{2005-02-02 (水) 17:09:59};
-上のソースは、いつの間にか書き換わったのかな〜。「#一括内政」の上の}がひとつ多いんじゃないですか? -- [[あくあ]] &new{2005-02-02 (水) 18:39:56};
-それであっているかどうかはわからないのですが、 { } の高さの位置を合わせれば、すぐわかりそうです -- [[あくあ]] &new{2005-02-02 (水) 18:41:21};
-というか、消すだけだと括弧が少なくなるので、}を移動させる必要があると思います -- [[あくあ]] &new{2005-02-02 (水) 18:42:40};
-つまり兵を訓練するの一番下の}をどこかに動かせばよいのですね? -- [[Redmen]] &new{2005-02-02 (水) 21:26:53};
-試行錯誤してもよく分からないのですが助けてください -- [[Redmen]] &new{2005-02-14 (月) 17:03:29};
-どこが分からないのか不明ですが、順番に行くとするとまず、括弧部分の字下げはちゃんとできたのでしょうか? -- [[あくあ]] &new{2005-02-14 (月) 20:58:00};
-ン…その言葉が良くわからない自分にはこういう改造はまだ早いでしょうか? -- [[Redmen]] &new{2005-02-14 (月) 23:13:34};
-下に貼り付けられているように { の1行下で、スペースを入れて1段下げて、 } で1段上げるという風に書き換えるとどこが違っているか分かりやすいと思いますよ -- [[あくあ]] &new{2005-02-15 (火) 20:30:19};
-一番下ですか? -- [[Redmen]] &new{2005-02-15 (火) 21:48:07};
-今の自分の状態はこのすぐ下のソースです -- [[Redmen]] &new{2005-02-15 (火) 21:48:41};
-一番下と言うのは、何のことでしょうか?自分が言っているのは、politics.cgi全体のことですが -- [[あくあ]] &new{2005-02-15 (火) 22:02:42};
-下に貼り付けられているのが、合っているのか間違っているのかは分かりませんが・・・、分からなければファイルの最初から { } を合わせていくのが早いと思いますよ -- [[あくあ]] &new{2005-02-15 (火) 22:07:38};
-どーしても分からなければ、こんなのはどうでしょうか?[[Google:xyzzy]] -- [[あくあ]] &new{2005-02-15 (火) 22:08:54};
-xyzzyってエディタなら、読み込んで[TAB]ってすると自動でインデントされますよー -- [[あくあ]] &new{2005-02-15 (火) 22:13:15};
-なんとか設置まで行きました。ありがとう御座いました -- [[Redmen]] &new{2005-03-12 (土) 15:21:38};
#comment
# 兵を訓練する
}elsif($cmd==4){
if($my_cs<1){
$log .= "兵がいません<br>\n";
$tm = $cmd = 0;
&politics_menu;
}elsif($sol_lv>99){
$log .= "訓練度はこれ以上あがりません<br>\n";
$tm = $cmd = 0;
&politics_menu;
}else{
# 行動カウントのリセット(限界時のみ)
$act_cnt=0 if($act_cnt>$act_cnt_limit);
$log .= "兵の訓練を行ないます<br>\n";
$pr=int($GMT/2);
$x = int($lr/2);
if($x<1){
$x=1;
}
$v = int((rand(20))+$x);
$sol_lv += $v;
if($sol_lv>100){
$sol_lv=100;
}
$mes = "訓練度が $v 上昇した";
$tm=50;
}
}
#一括内政
}elsif($cmd==5){
# 行動カウントのリセット(無条件)
$act_cnt=0;
$log .= "一括内政を行います。結果は2時間後。<br>\n";
$v=int(((rand(10)+1)*15)*$lr);#最初は$v=int(((rand(10)+1)*10)*$lr);
$v=9999 if($v>9999);
$v2=int(((rand(10)+1)*100)*$lr);
$v2=99999 if($v>99999);
$S = int(((rand(50))+100)*$lr);
$S = 1000 if($S>1000);
$tm=25;
$rank_exe++;
$pr=$GMT*8;
if($camp==1){
$cg1 += $v;
$cf1 += $v2;
$cs1 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
}elsif($camp==2){
$cg2 += $v;
$cf2 += $v2;
$cs2 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
}elsif($camp==3){
$cg3 += $v;
$cf3 += $v2;
$cs3 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
}elsif($camp==4){
$cg4 += $v;
$cf4 += $v2;
$cs4 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
}elsif($camp==5){
$cg5 += $v;
$cf5 += $v2;
$cs5 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
$mes = "$v G 国家予\算が増え、$v2の兵量を得、$S人の兵士が集まった";
$tm=50;
}
----
}elsif($cmd==5){
# 行動カウントのリセット(無条件)
$act_cnt=0;
$log .= "一括内政を行います。結果は2時間後。<br>\n";
$v=int(((rand(10)+1)*15)*$lr);#最初は$v=int(((rand(10)+1)*10)*$lr);
$v=9999 if($v>9999);
$v2=int(((rand(10)+1)*100)*$lr);
$v2=99999 if($v>99999);
$S = int(((rand(50))+100)*$lr);
$S = 1000 if($S>1000);
$tm=25;
$rank_exe++;
$pr=$GMT*8;
if($camp==1){
$cg1 += $v;
$cf1 += $v2;
$cs1 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
}elsif($camp==2){
$cg2 += $v;
$cf2 += $v2;
$cs2 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
}elsif($camp==3){
$cg3 += $v;
$cf3 += $v2;
$cs3 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
}elsif($camp==4){
$cg4 += $v;
$cf4 += $v2;
$cs4 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
}elsif($camp==5){
$cg5 += $v;
$cf5 += $v2;
$cs5 += $S;
if($S<$gold){
$gold-=$S;
}elsif($gold<$S){
$S=$gold;
$gold=0;
}
}
$mes = "$v G 国家予\算が増え、$v2の兵量を得、$S人の兵士が集まった";
$tm=50;