Fix layout errors in main templates and modernize login/registration screens

This commit is contained in:
sanjeok77
2026-06-23 09:22:40 +09:00
parent 8c87fba54c
commit b7ae8f291e
4 changed files with 216 additions and 243 deletions
+47
View File
@@ -20,6 +20,9 @@ body {
font-size: 14px; font-size: 14px;
margin: 0; margin: 0;
padding: 0; padding: 0;
}
body.modern-ui {
min-height: 100vh; min-height: 100vh;
display: flex; display: flex;
justify-content: center; justify-content: center;
@@ -73,6 +76,49 @@ body {
justify-content: space-between; justify-content: space-between;
} }
/* Format tables inside cards */
.card table {
width: 100%;
border-collapse: collapse;
margin: 15px 0;
color: var(--text-primary);
background-color: transparent !important;
}
.card tr {
background-color: transparent !important;
transition: background-color 0.2s ease;
}
.card tr:nth-child(even) {
background-color: rgba(255, 255, 255, 0.02) !important;
}
.card tr:hover {
background-color: rgba(255, 255, 255, 0.06) !important;
}
.card th, .card td {
padding: 12px 10px;
border-bottom: 1px solid var(--border-color);
text-align: center;
background-color: transparent !important;
}
.card th {
background-color: rgba(255, 255, 255, 0.05) !important;
font-weight: 600;
color: #ffffff;
}
/* Style legacy header row having bgcolor attribute or align center */
.card tr[bgcolor="#ccccee"] td, .card tr[align="center"] td {
background-color: rgba(255, 255, 255, 0.08) !important;
font-weight: 600;
color: #ffffff !important;
}
/* Legacy fonts overrides */ /* Legacy fonts overrides */
tt, pre { tt, pre {
font-family: 'Inter', system-ui, sans-serif; font-family: 'Inter', system-ui, sans-serif;
@@ -125,6 +171,7 @@ select {
height: auto; height: auto;
cursor: pointer; cursor: pointer;
box-sizing: border-box; box-sizing: border-box;
margin-bottom: 10px;
} }
input[type="text"], input[type="password"] { input[type="text"], input[type="password"] {
+13 -4
View File
@@ -17,6 +17,9 @@ sub html{
# 헤더 & 압축 전송 유무 # 헤더 & 압축 전송 유무
&content_type; &content_type;
# $log2 커맨드 폼의 legacy 테이블/셀 태그를 정규식으로 제거하여 레이아웃 유연화
$log2 =~ s/<\/?(td|tr|table)[^>]*>//gi if defined $log2;
# 마우스 자동 조작 치트 격퇴 전투 시에 4/400 확률로 발동 # 마우스 자동 조작 치트 격퇴 전투 시에 4/400 확률로 발동
my $no_mouse = ($no_mouse && $type eq '수행중') ? int(rand(400)) : 100 ; my $no_mouse = ($no_mouse && $type eq '수행중') ? int(rand(400)) : 100 ;
@@ -55,7 +58,7 @@ EOM
print <<EOM; print <<EOM;
</head> </head>
<body> <body class="modern-ui">
<div class="game-container"> <div class="game-container">
<div class="card"> <div class="card">
<div class="title-section"> <div class="title-section">
@@ -162,9 +165,14 @@ EOM
if($layout_flag==1){ if($layout_flag==1){
print <<EOM; print <<EOM;
</tr> <div class="game-layout">
</table> <div class="card" style="grid-column: span 2;">
<br><br> <div class="card-title">행동 / 결과</div>
<div class="moji1">
$log
</div>
</div>
</div>
EOM EOM
}elsif(!$layout_flag){ }elsif(!$layout_flag){
require './inc/ore_sub-base-p1_pc.cgi';&layout_flag_0; require './inc/ore_sub-base-p1_pc.cgi';&layout_flag_0;
@@ -174,6 +182,7 @@ EOM
$disp<br> $disp<br>
<br> <br>
$kakiko $kakiko
</div>
EOM EOM
} }
+69 -146
View File
@@ -22,170 +22,93 @@ $help_i = "./html/Help_i.html"; # 사용설명서[MV]
# 以下処理 基本的にこれ以下はいじらないように。 # 以下処理 基本的にこれ以下はいじらないように。
&get_time; # 日時取得 &get_time; # 日時取得
&axs_check; # アクセスチェック &axs_check; # アクセスチェック
&read_data_index; # ログデータ読み込み &read_data_index; # ログデータ読みsub html_top_pc{
print "Content-type: text/html; charset=UTF-8\n\n" ;
# メニュー表示
($mv_mode eq 'mv') ? &html_top_mv : &html_top_pc ;
# 削除・移動・変更不可
&copyright;
exit;
#-------------------------------------------------------------------------------
# html生成(PC)
sub html_top_pc{
print <<"EOM"; print <<"EOM";
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>$titleh</title> <title>$titleh</title>
<style type="text/css"> <link rel="stylesheet" type="text/css" href="$css">
<!--
.button1{
font-family: "MS Pゴシック", "Osaka"; font-size: 12px; font-weight: 400; color: #bbbbcc;
border: 2px #666699 ridge; cursor: hand; background-color: #222244;
width:100px;
}
body,td { font-size: 10px; color: #aaaab9; background-color: #000000; cursor: crosshair}
.bar {
scrollbar-face-color: #333333;
scrollbar-highlight-color: #333333;
scrollbar-shadow-color: #000000;
scrollbar-arrow-color: #ffffff;
scrollbar-base-color: #000000;
scrollbar-3d-light-color: #ffffff;
scrollbar-dark-shadow-color: #000000
}
-->
</style>
</head> </head>
<body bgcolor="#000000" text="#aaaaaa" link="#b5a7cF" vlink="#b5a7cF" alink="#b5a7cF" class="bar"> <body class="modern-ui">
<table width="100%" border="0" cellspacing="0" cellpadding="0" height="100%" align="center"> <div class="game-container">
<tr> <div class="card" style="display: flex; flex-direction: row; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 20px;">
<td align="center" valign="middle"> <div class="title-images" style="display: flex; flex-direction: column; align-items: center; gap: 10px;">
<img src="$imgs/title_text.png" style="max-height: 56px;">
<img src="$imgs/title_game.png" style="max-height: 52px;">
</div>
<img src="$imgs/fairy2_la.jpg" style="border-radius: 8px; max-height: 120px; border: 1px solid var(--border-color);">
</div>
<table border="0" cellspacing="0" cellpadding="0" width="200"> <div class="game-layout">
<tr> <!-- 로그인 폼 및 링크 -->
<td align="center" valign="top"><img src="$imgs/title_text.png" width="166" height="56"></td> <div style="display: flex; flex-direction: column; gap: 20px;">
<td rowspan="2"><img src="$imgs/fairy2_la.jpg" width="110" height="160"></td> <div class="card">
</tr> <div class="card-title">유구한 대지로 로그인</div>
<tr>
<td align="center" valign="top"><img src="$imgs/title_game.png" width="220" height="52"></td>
</tr>
</table>
<br><br><br><br><br><br><br><br><br><br>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<form method="$method" action="$script" name="ore_">
<td align="left" valign="top">
<tt>
<span style="font-size:12px">유구한 대지로</span><br>
EOM EOM
if($now_nm_cnt>=$play_limit){ if($now_nm_cnt>=$play_limit){
print qq|<br><span style="color:#dddd00;font-size:12px">현재 로그인 제한 중</span><br><br>|; print qq|<div style="color:#ffdd00; font-weight:bold; margin-bottom:15px;">현재 로그인 제한 중</div>|;
} } else {
else{
print <<"EOM"; print <<"EOM";
유저 ID:<input type="text" name="id" value="" class="button1" style="width:95px"> <form method="$method" action="$script" name="ore_" style="display: flex; flex-direction: column; gap: 15px;">
<br> <input type="hidden" name="mode" value="1">
비밀번호:<input type="password" name="pw" value="" class="button1" style="width:60px" maxlength="8"> <div>
<input type="submit" value="IN" class="button1" style="width:30px"> <label style="display:block; margin-bottom:5px; color:var(--text-secondary); font-size:12px;">유저 ID</label>
<input type="hidden" name="mode" value="1"> <input type="text" name="id" value="" class="button1" style="width:100%; text-align:left; padding-left:12px; margin-bottom:0;">
</div>
<div>
<label style="display:block; margin-bottom:5px; color:var(--text-secondary); font-size:12px;">비밀번호</label>
<input type="password" name="pw" value="" class="button1" style="width:100%; text-align:left; padding-left:12px; margin-bottom:0;" maxlength="8">
</div>
<input type="submit" value="시작하기 (IN)" class="button1" style="width:100%; margin-top:5px;">
</form>
EOM EOM
} }
print <<"EOM"; print <<"EOM";
</tt> </div>
</td>
</form> <!-- 네비게이션 및 메뉴 링크 -->
<td rowspan=4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td> <div class="card">
<td rowspan=2 align="left" valign="top" nowrap style="font-size:12px;"> <div class="card-title">메인 메뉴</div>
&gt;&gt; 플레이 중인 참가자 [ $now_nm_cnt 명] <div style="display: flex; flex-direction: column; gap: 12px;">
<hr size=1 style="color:bbbbcc"> <div>
<div style="height:140px; overflow-y:auto; padding:2; background-color:#292929" class="bar"> <a href="$ore_reg" class="button1" style="width:100%; text-decoration:none; display:block; box-sizing:border-box;">신규 등록</a>
$now_nm <div style="font-size:12px; color:var(--text-secondary); margin-top:4px; margin-left:5px;">등록하기 전에 반드시 설명서를 정독해주세요.</div>
</div>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px;">
<a href="$help" class="button1" style="text-decoration:none; padding:8px 5px; display:block; box-sizing:border-box;">사용 설명서</a>
<a href="$hist?mode=guest" class="button1" style="text-decoration:none; padding:8px 5px; display:block; box-sizing:border-box;">과거의 영광</a>
<a href="$home" class="button1" style="text-decoration:none; padding:8px 5px; display:block; box-sizing:border-box;">본관 이동</a>
<a href="$hist_hasya" class="button1" style="text-decoration:none; padding:8px 5px; display:block; box-sizing:border-box;">죄와 벌의 석비</a>
</div>
</div>
</div>
</div>
<!-- 플레이어 상태 및 정보 -->
<div style="display: flex; flex-direction: column; gap: 20px;">
<div class="card" style="height: 100%; display: flex; flex-direction: column; box-sizing: border-box;">
<div class="card-title">현재 접속자 [$now_nm_cnt명]</div>
<div style="flex:1; min-height:180px; max-height:220px; overflow-y:auto; padding:10px; background: rgba(0,0,0,0.25); border-radius: 8px; border: 1px solid var(--border-color); line-height: 1.6;" class="bar">
$now_nm
</div>
<div style="margin-top:15px; font-size:12px; color:var(--text-secondary); line-height: 1.7;">
• 현재 등록 인원: <b>$now_sanka명</b> / 최대 <b>$sanka명</b><br>
• 방치 삭제 기간: <b>$del_limit일</b><br>
• 플레이 제한 시간: <b>$safe_time</b>
</div>
</div>
</div>
</div>
</div> </div>
<td>
</tr>
<tr>
<td align="left" valign="top">
<tt>
<br>
<br>
<span style="font-size:12px"><a href="$ore_reg">신규 등록</a></span><br>
등록하기 전에 반드시 ↓ 내용을 읽어주세요.
</tt>
</td>
</tr>
<tr>
<td align="left" valign="top">
<tt>
<br>
<br>
<span style="font-size:12px"><a href="$help">사용 설명서</a></span><br>
안 읽으면 도통 이해하기 힘들걸요?
</tt>
</td>
<td align="left">
<tt>
<br>
<br>
<span style="font-size:12px"><a href="$hist?mode=guest">과거의 영광</a></span><br>
유구한 대지의 역사를 돌아보다
</tt>
</td>
</tr>
<tr>
<td align="left" valign="top">
<tt>
<br>
<br>
<span style="font-size:12px"><a href="$home">본관으로 돌아가기</a></span><br>
</tt>
</td>
<td align="left">
<tt>
<br>
<br>
<span style="font-size:12px"><a href="$hist_hasya">죄와 벌++의 석비</a></span><br>
유구한 대지에서 패권을 쥔 자의 이름
</tt>
</td>
</tr>
<tt>
<td align="left" valign="top" colspan="3">
<tt>
<br>
<br>
<span style="font-size:12px"><br>
  &gt;&gt; 현재 등록 인원 [ $now_sanka 명] 최대 등록 인원 [ $sanka 명]<br>
    삭제 방치 기간 [ $del_limit 일] 플레이 제한 시간대 [ $safe_time ]
</span>
<br><br>
<span style="font-size:12px"><br>
  모바일(i-mode, J-Sky) 완벽 대응, ezweb 대응. PC가 필요 없습니다.<br>
  모바일에서 PC와 동일한 URL로 접속하시면 됩니다.
</span>
</tt>
</td>
</tr>
</table>
</td>
</tr>
</table>
EOM EOM
}
#-------------------------------------------------------------------------------
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# html生成(モバイル) # html生成(モバイル)
sub html_top_mv{ sub html_top_mv{
+81 -87
View File
@@ -34,72 +34,64 @@ sub regist1{
print <<"EOM"; print <<"EOM";
<html> <html>
<head> <head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>죄와 벌++ 신규 등록</title> <title>죄와 벌++ 신규 등록</title>
<style type="text/css"> <link rel="stylesheet" type="text/css" href="$css">
<!--
.button1{
font-family: "MS Pゴシック", "Osaka"; font-size: 12px; font-weight: 400; color: #bbbbcc;
border: 2px #666699 ridge; cursor: hand; background-color: #222244;
width:100px;
}
body,td { font-size: 10px; color: #aaaab9; cursor: crosshair}
-->
</style>
</head> </head>
<body $body> <body class="modern-ui">
<center> <div class="game-container" style="max-width: 600px; margin-top: 50px;">
<div class="card">
<div class="card-title">신규 등록</div>
<table border="0" cellspacing="0" cellpadding="0" align="center" width="100%" height="100%"> <form action="$ore_reg" method="$method" name="ore_reg" style="display: flex; flex-direction: column; gap: 15px;">
<tr> <input type="hidden" name="mode" value="regist2">
<td align="center" valign="middle">
<table border="0" cellspacing="0" cellpadding="0" align="center" width="480" height="360"> <div>
<tr> <label style="display:block; margin-bottom:5px; color:var(--text-secondary); font-size:12px;">유저 ID (반각 영문/숫자 4~12자)</label>
<form action="$ore_reg" method="$method" name="ore_reg"> <input type="text" name="id" maxlength="12" class="button1" style="width:100%; text-align:left; padding-left:12px; margin-bottom:0;">
<input type="hidden" name="mode" value="regist2"> </div>
<td align="center" valign="middle">
<tt style="font-size:10pt;color:#aaaaaa">
<b style="color:#ffeeee;font-size:11pt">$title<br><br>신 규 등 록</b><br><br>
유저 ID : <input type="text" size="8" name="id" maxlength="12" style="width:100px" class="button1"><br>
플레이어명 : <input type="text" size="16" name="nm" style="width:100px" class="button1"><br>
비밀번호 : <input type="password" size="8" maxlength="8" name="pw" style="width:100px" class="button1"><br>
성별    :  남<input type="radio" name="sei" value="1">  여<input type="radio" name="sei" value="2"><br>
<br>
<input type="submit" value="등록" style="width:120px" class="button1">
<input type="reset" value="초기화" style="width:60px" class="button1">
<br><br>
</tt>
<table border="0" cellspacing="4" cellpadding="4" align="center" bgcolor="#222222"> <div>
<tr> <label style="display:block; margin-bottom:5px; color:var(--text-secondary); font-size:12px;">플레이어명 (한글 8자, 영문/숫자 16자 이내)</label>
<td align="left" valign="middle"> <input type="text" name="nm" class="button1" style="width:100%; text-align:left; padding-left:12px; margin-bottom:0;">
<tt style="font-size:10pt;color:#aaaabb"> </div>
<li>유저 ID는 <span style="color:#eebbdd">반각 영문/숫자 4~12글자</span>입니다.
<li>플레이어명은 <span style="color:#eebbdd">한글 8자(영문/숫자 16자) 이내</span>입니다.
<li>비밀번호는 <span style="color:#eebbdd">반각 영문/숫자 4~8글자</span>입니다.
<hr color=#444466 size=4 hoshade>
<li>중복 등록은 금지되어 있습니다. 발견 시 삭제됩니다.
<li><span style="color:#eebbdd">$del_limit</span>일 동안 방치하면 캐릭터가 삭제됩니다.
<li>최대 <span style="color:#eebbdd">$sanka</span>명까지 등록 가능합니다.
</tt>
</td>
</tr>
</table>
</td> <div>
</form> <label style="display:block; margin-bottom:5px; color:var(--text-secondary); font-size:12px;">비밀번호 (반각 영문/숫자 4~8자)</label>
</tr> <input type="password" name="pw" maxlength="8" class="button1" style="width:100%; text-align:left; padding-left:12px; margin-bottom:0;">
</table> </div>
<form> <div style="display: flex; gap: 20px; align-items: center; padding: 5px 0;">
<input type="button" value="타이틀로 돌아가기" style="width:120px" class="button1" onClick="top.location.href='$index'"> <span style="color:var(--text-secondary); font-size:12px;">성별:</span>
</form> <label style="cursor:pointer; display: flex; align-items: center; gap: 5px;">
<input type="radio" name="sei" value="1"> 남성
</label>
<label style="cursor:pointer; display: flex; align-items: center; gap: 5px;">
<input type="radio" name="sei" value="2"> 여성
</label>
</div>
</td> <div style="display: flex; gap: 10px; margin-top: 10px;">
</tr> <input type="submit" value="등록하기" style="flex: 2; margin-bottom:0; display:block; box-sizing:border-box;">
</table> <input type="reset" value="초기화" style="flex: 1; margin-bottom:0; background-color: rgba(255,255,255,0.05); color: #fff; display:block; box-sizing:border-box;">
</div>
</form>
</div>
<!-- 규정 설명 카드 -->
<div class="card">
<div class="card-title">이용 규정 및 안내</div>
<ul style="margin: 0; padding-left: 20px; color: var(--text-secondary); font-size: 13px; line-height: 1.8;">
<li>중복 등록은 금지되어 있습니다. 발견 시 즉시 계정이 삭제됩니다.</li>
<li>가입 후 <span style="color:#7b66ff; font-weight:bold;">$del_limit일</span> 동안 로그인이나 행동이 없을 시 캐릭터가 삭제됩니다.</li>
<li>본 게임의 최대 동시 등록 제한은 <span style="color:#7b66ff; font-weight:bold;">$sanka명</span>입니다.</li>
</ul>
</div>
<div style="text-align: center; margin-top: 20px; margin-bottom: 40px;">
<input type="button" value="타이틀로 돌아가기" class="button1" style="width: 200px; display:inline-block; box-sizing:border-box;" onClick="top.location.href='$index'">
</div>
</div>
EOM EOM
} }
else{ else{
@@ -184,37 +176,39 @@ sub regist2{
print <<"EOM"; print <<"EOM";
<html> <html>
<head> <head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>죄와 벌++ 신규 등록</title> <title>죄와 벌++ 신규 등록 완료</title>
<link rel="stylesheet" type="text/css" href="$css">
</head> </head>
<body $body> <body class="modern-ui">
<center> <div class="game-container" style="max-width: 500px; margin-top: 50px;">
<table border=0> <div class="card">
<tr> <div class="card-title">신규 등록 완료</div>
<td align=left> <div style="font-size:14px; line-height: 1.8; margin-bottom: 20px; color: var(--text-primary);">
<tt style="font-size:12pt">신규 등록 완료<br> <div style="font-size: 16px; font-weight: bold; color: #7b66ff; margin-bottom: 15px;">캐릭터 생성 성공!</div>
<br><br> • <b>이름:</b> $in{'nm'}<br>
NAME $in{'nm'}<br> • <b>아이디:</b> $id<br>
I D&nbsp;&nbsp;$id<br> • <b>비밀번호:</b> $pw<br>
PASS $pw<br> <hr style="margin: 15px 0;">
<br> <div style="font-weight: bold; margin-bottom: 5px; color: var(--text-secondary);">초기 스탯:</div>
HP  $hp<br> • <b>체력 [HP]:</b> $hp<br>
MP  $mp<br> • <b>마력 [MP]:</b> $mp<br>
UA  $ua<br> • <b>공격 [UA]:</b> $ua<br>
UD  $ud<br> • <b>방어 [UD]:</b> $ud<br>
LR  $lr<br> • <b>지휘 [LR]:</b> $lr
<br> </div>
<form action=$script method=$method>
<input type=hidden name=id value=$id> <form action="$script" method="$method" style="margin-top: 20px;">
<input type=hidden name=pw value=$pw> <input type="hidden" name="id" value="$id">
<input type=submit value="게임 시작"> <input type="hidden" name="pw" value="$pw">
</form> <input type="submit" value="게임 시작하기" class="button1" style="width: 100%;">
<br> </form>
<a href="$index">타이틀로 돌아가기</a>
</td> <div style="text-align: center; margin-top: 15px;">
</tr> <a href="$index" style="color: var(--text-secondary); text-decoration: none; font-size: 13px;">타이틀로 돌아가기</a>
</table> </div>
</center> </div>
</div>
EOM EOM
&copyright; &copyright;
exit; exit;