#-----------------------------------------------------------# # 죄와 벌++ 이율배반 # # Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD # # Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] # # BLANK BOARD [ http://pom.to/ ] # #-----------------------------------------------------------# # 수행 PC용 Version 1.1 # #--- [주의사항] --------------------------------------------# # 1.이 스크립트는 이하의 이용규정에 따라 배포되고 있습니다. # # http://www24.big.or.jp/~obo/game/ore_/gild/ # #-----------------------------------------------------------# #------------------------------------------------------------------------------- # 수행 메뉴 sub training{ if(!$type){ if($hp<4){ $log .= "체력이 너무 적습니다.
\n"; $tm= $cmd = 0; $type=''; &call_main_st; }else{ $log .= "수행을 시작합니다.
\n"; $tm= $cmd = 0; $type = '수행'; $log2 .=qq|
\n|; $log2 .=qq|\n| if($mv_mode eq 'pc'); $log2 .=qq|\n\n|; $log2 .=qq|
\n|; $log2 .=qq|$td_end
\n|; } } &dat_write; } #------------------------------------------------------------------------------- # 수행 처리1 sub training_exe{ if($cmd==0){ $log .= "수행을 중단합니다
\n"; $tm = $cmd = 0; $type=''; &call_main_st; }elsif($cmd==1 && !$com){ # GET에 의한 부정 처리 페널티 &penalty if($mv_mode eq 'pc' && $method eq 'POST' && !$post_flag); open(IN,"$usrdata$tid\.cgi") || &error("Open Error : $usrdata$tid\.cgi",1); $tdat = ; close(IN); %VS = ''; my @prats = split(/,/,$tdat); foreach $prats (@prats){ my ($u,$q) = split(/;/,$prats); $VS{$u} = $q; } $tid = $VS{'id'}; # ID $tnm = $VS{'nm'}; # 이름 $tlv = $VS{'lv'}; # 레벨 $thp = $VS{'max_hp'}; # HP $thp_max= $VS{'max_hp'}; # MAX_HP $tmp = $VS{'max_mp'}; # MP $tua = $VS{'ua'}; # UA $tud = $VS{'ud'}; # UD $tag = $VS{'ag'}; # AG $tcp = $VS{'camp'}; # 소속 $tsg = $VS{'sogo'}; # 칭호 $tdf_a = $VS{'df_a'}; # 방어구 $tdg_a = $VS{'dg_a'}; # 무구 $log .="이전 대전 상대와 수행을 시작합니다.
시합 개시!
\n"; $type = '수행중'; $tm = 0; $cmd =-1; # $log2 .=qq|
\n|; # $log2 .=qq|\n\n|; # $log2 .=qq|\n|; # $log2 .=qq|$td_end
\n|; # 행동 세션 가산 $act_cnt++; # &dat_write; require './inc/ore_sub-battle.cgi'; &bt_st; }else{&sele_list;} } #------------------------------------------------------------------------------- # 수행 리스트 표시 sub sele_list { # GET에 의한 부정 처리 페널티 &penalty if($mv_mode eq 'pc' && $method eq 'POST' && !$post_flag); local(@usrfile,@BT_LIST,@tdat); # 참가자 데이터 파일 목록 취득 &usrdata_read; # 표시 참가자 랜덤 선출 foreach(0 .. $bt_count){ $bt_list = int(rand($#usrfile)); $flag = 0; foreach(0 .. $#BT_LIST){ $flag = 1 if $bt_list eq $BT_LIST[$_]; } push(@BT_LIST,$bt_list) if !$flag; } @BT_LIST = sort(@BT_LIST); # 랜덤 선출 참가자 데이터 일괄 읽기 foreach (0 .. $#BT_LIST) { open(IN,"$usrdata$usrfile[$BT_LIST[$_]]") || &error("Can't open $usrfile[$BT_LIST[$_]].cgi",1); push(@tdat,); close(IN); } # 참가자 스탯 취득 foreach(0 ..$#tdat){ %R = ''; my @prats = split(/,/,$tdat[$_]); foreach $prats (@prats){ my($y,$x) = split(/;/,$prats); $R{$y} = $x; } if($nm ne $R{'nm'}){ $NM_V{$R{'nm'}} = $R{'nm'}; # 이름 $HP_MAX_V{$R{'nm'}} = $R{'max_hp'}; # HP $MP_MAX_V{$R{'nm'}} = $R{'max_mp'}; # MP $LV_V{$R{'nm'}} = $R{'lv'}; # 레벨 $TM_V{$R{'nm'}} = $R{'tm'}; # 행동 $UA_V{$R{'nm'}} = $R{'ua'}; # UA $UD_V{$R{'nm'}} = $R{'ud'}; # UD $LR_V{$R{'nm'}} = $R{'lr'}; # LR $AG_V{$R{'nm'}} = $R{'ag'}; # AG $CP_V{$R{'nm'}} = $R{'camp'}; # 소속 $SG_V{$R{'nm'}} = $R{'sogo'}; # 칭호 $N_M{$R{'nm'}} = $R{'id'}; # ID } } # 수행 리스트 표시 if(!$tm){ $log .=qq|
\n|; $log .=qq|\n\n|; $log .=qq|\n|; $log .=qq|\n\n|; $l = $rk = 1; foreach $nm (sort sclv keys(%LV_V)){ $lv_v = $LV_V{$nm}; next if($lv_v<=0); if($lv_v<$prv_lv){ $rk = $l; } $log .= ($agent !~ /Mac/) ? qq|\n|; $prv_lv = $lv_v; $l++; } $log .="
순위LV이름체력/정신공격/방어/지휘/민첩소속
\n|: qq|
\n|; $log .="$rk$lv_v"; # 칭호 $log .= ($SG_V{$nm} > 0) ? "$NM_V{$nm} [$sogo_p[$SG_V{$nm}]]" : "$NM_V{$nm}"; $log .=qq|$HP_MAX_V{$nm}/$MP_MAX_V{$nm}$UA_V{$nm}/$UD_V{$nm}/$LR_V{$nm}/$AG_V{$nm}$cmp[$CP_V{$nm}]
\n"; $log .="
\n"; $log .="\n"; $tm=1; # 행동 세션 가산 $act_cnt++; $layout_flag=1; &dat_write; } # 대전자 할당 elsif($tm){ if($com){ open(IN,"$usrdata$com\.cgi") || &error("Open Error : $usrdata$com\.cgi",1); $tdat = ; close(IN); %VS = ''; my @prats = split(/,/,$tdat); foreach $prats (@prats){ my ($u,$q) = split(/;/,$prats); $VS{$u} = $q; } $tid = $VS{'id'}; # ID $tnm = $VS{'nm'}; # 이름 $tlv = $VS{'lv'}; # 레벨 $thp = $VS{'max_hp'}; # HP $thp_max= $VS{'max_hp'}; # MAX_HP $tmp = $VS{'max_mp'}; # MP $tua = $VS{'ua'}; # UA $tud = $VS{'ud'}; # UD $tag = $VS{'ag'}; # AG $tcp = $VS{'camp'}; # 소속 $tsg = $VS{'sogo'}; # 칭호 $tdf_a = $VS{'df_a'}; # 방어구 $tdg_a = $VS{'dg_a'}; # 무구 $log .="시합 개시!
\n"; $type = '수행중'; $tm = 0; # $log2 .=qq|$td_end\n|; require './inc/ore_sub-battle.cgi'; &bt_st; } elsif(!$com){ $log .="중단했다…
\n"; $type = ''; $tm = 0; &call_main_st; } } # &dat_write; } # 부정 GET 처리의 페널티 sub penalty{ $pr=3600*24*3; $sogo=4; $camp=0; $tm = $cmd = 0; $type='복역중'; $max_hp =int($max_hp*0.8); $max_mp =int($max_mp*0.8); $ua =int($ua*0.8); $ud =int($ud*0.8); $lr =int($lr*0.8); $ag =int($ag*0.8); &dat_write; &error("올바르지 않은 처리입니다. 페널티가 발생합니다.",1); } 1;