* 消えないキャラ作り_2 [#e1150d13] - ページ: [[罪罰改造板2]] - 投稿者: [[封天雷冥]] - 優先順位: 重要 - 状態: 完了 - カテゴリー: 設置できません - 投稿日: 2007-06-23 (土) 06:51:41 - バージョン: ** 内容 [#m3b73505] 罪罰改造板2/229 にあるようにore_regを変えてみたところ、文法はOKで、動くのですが、結局、キャラは普通に消えてしまいます。 # 期限切れ及び レベル2以内で3日間無アクセス(見物人排除) のファイル削除 if(( ($id ne '0000') || ($id ne '0000') || ($id ne '0000') ) && (($del_limit*3600*24<$time-$DAT{'la'}) || (3*3600*24<$time-$DAT{'la'} && $DAT{'lv'}<=2))){ unlink("$usrdata$DAT{'id'}\.cgi"); } } どこかおかしいでしょうか? 返信よろしくお願いします。 -------- - unlinkの一文を削除してみては? -- [[Gun]] &new{2007-06-23 (土) 11:30:24}; - unlinkは、ファイル削除のコマンドなんで、削除したら、期限切れも消えなくなるのでは?? -- [[封天雷冥]] &new{2007-06-23 (土) 11:49:26}; - $DAT{'id'} じゃないですか? -- [[six]] &new{2007-06-23 (土) 14:45:04}; - $DAT{' '} 部分が、4つありますが、どれを修正すればいいのでしょうか? -- [[封天雷冥]] &new{2007-06-23 (土) 15:53:43}; - 無理に一つの式にしないで、入れ子にすれば?>ついでに、ここでの$DAT{'〜〜'}意味は、いじる前に押さえて置いた方が良いと思いますが。。。 -- [[三毛猫]] &new{2007-06-23 (土) 18:18:29}; - 入れ子と言うと・・・?どういう風にすればいいのですか? //$DAT{'〜〜'}は、「./inc/ore_sub-system.cgi のハッシュのことで、各ユーザーデータ 内にあるもの」であっているでしょうか? -- [[封天雷冥]] &new{2007-06-23 (土) 19:27:51}; - 入れ子というのは所謂。。。 if(条件1){ if(条件2){ 「条件1&2で動かす処理」 } } こぉゅぅ状態です-- [[三毛猫]] &new{2007-06-24 (日) 19:43:11}; - それと$DAT{''}ですが、 foreach (0 .. $#tdat){ %DAT = ''; my @pairs = split(/,/,$tdat[$_]); foreach (0 .. $#pairs){ my($key,$v) = split(/;/,$pairs[$_]); $DAT{$key} = $v; } (略) } が何をしているのかと、%DATの意味を考えると分かるかと思います。($in{''}もですが。。。)-- [[三毛猫]] &new{2007-06-24 (日) 19:51:23}; - リファレンスと、参考書とを見てもいまいちわかりません。。。初心者ですいません。。。出来ればお手数かけますがご教授お願いできますか? -- [[封天雷冥]] &new{2007-06-24 (日) 22:05:58}; - 何が分からないのかが分からないので、何とも言えないですが。。。>キャラファイル追加処理のsub内の構文を&〜の元まで辿ってみる等すると分かるかもしれません。>tdatがどこから来たのかとか、不明な配列があるのなら、怪しそうなファイル全部に検索かけてみるとか。。。 -- [[三毛猫]] &new{2007-06-25 (月) 09:49:26}; - わからないこと・・・『foreachの後に[ ]がないこと。』『my @pairs = split(/,/,$tdat[$_]);の効果』『キャラファイル追加処理のsub内の構文を&〜の元まで辿ってみる』 //検索しようにも、tdatの意味がいまいち把握できていないため、全くわからないというのが現状です。 わからないことばかりですが、よろしくお願いします。 -- [[封天雷冥]] &new{2007-06-25 (月) 10:44:50}; - "PREL foreach"でぐぐるとか。。。(とほほさんとこやミスティネットさんとこが、個人的には例文も応用例も多くて分かりやすく愛用していますが。。。)>my @pairs = split(/,/,$tdat[$_]);で表記されていますが、$tdatは@tdat(配列)です。foreachがforのように使われているとか、使いやすいようにsplitで一部変換して変換後のデータを別の変数に代入してるとかいろいろあるのですが、分からない関数やら構文、変数はネットや全ファイルで検索かけたりして把握しておいた方が、後々の応用も効きますし、何かあったときにも対処しやすくて良いかと思います。 -- [[三毛猫]] &new{2007-06-26 (火) 09:32:52}; - ミスティーネットsのところで、いろいろ調べたところ、my @pairs = split(/,/,$tdat[$_]);は、 $tdat[$_]内の文字列を、','で区切り、配列pairsに代入すると言う意味であっているでしょうか。$tdatは、ore_sub-system.cgi の、# 参加者データ一括読み込みにあるもので、 # 参加者データ一括読み込み sub usrdata_open{ foreach (0 .. $#usrfile) { open(IN,"$usrdata$usrfile[$_]") || &error("Can't open $usrfile[$_]",1); $line = <IN>; #<-$lineに usrdataを代入 close(IN); # ↓ push(@tdat,$line); #<-ここに、tdatがある。末尾に$line(usrdataのこと)をつける。 } } により、$tdat[$_]には、usrdataつまり、キャラデータが入っていると言うことで配列pairsには、同じくusrdataが入っている。で合ってますか? -- [[封天雷冥]] &new{2007-06-26 (火) 21:37:33}; - 入れ子にするというものについて、今日、学校帰りにひらめいたのですが、↓のようであってますか? if($del_limit*3600*24<$time-$DAT{'la'}) || (3*3600*24<$time-$DAT{'la'} && $DAT{'lv'}<=2))){ if($id ne ○○○○){ if($id ne ○○○○){ if($id ne ○○○○){ unlink("$usrdata$DAT{'id'}\.cgi"); } } } } -- [[封天雷冥]] &new{2007-06-27 (水) 18:21:16}; - 自己解決しました!スプリクトはっておきます。 -- [[封天雷冥]] &new{2007-07-20 (金) 13:18:55}; if($DAT{'id'} ne ○○○○){ if($DAT{'id'} ne ○○○○){ if($DAT{'id'} ne ○○○○){ if($DAT{'id'} ne ○○○○){ if($del_limit*3600*24<$time-$DAT{'la'}) || (3*3600*24<$time-$DAT{'la'} && $DAT{'lv'}<=2))){ unlink("$usrdata$DAT{'id'}\.cgi"); } } } } } これで動くと思います。{}の数とかに注意してください。 - 解決です。 -- [[封天雷冥]] &new{2007-07-20 (金) 13:24:26}; #comment