forked from devsam/core
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f2a785f2fc | ||
|
|
6fafcfae4e | ||
|
|
33e075f669 | ||
|
|
e5fc467c4e | ||
|
|
b7a5de49c6 | ||
|
|
3f145abd6f | ||
|
|
4612834870 | ||
|
|
83c5609fad | ||
|
|
d142056098 | ||
|
|
4d8ecf4191 | ||
|
|
af6c3f466d | ||
|
|
033a2d8674 | ||
|
|
9079788b2b | ||
|
|
44ddb2e480 | ||
|
|
295ba84071 | ||
|
|
8773250aab | ||
|
|
c5a4602fe1 | ||
|
|
5f4c43baf6 | ||
|
|
0ef3921e17 | ||
|
|
efcf0f772e | ||
|
|
ccabe847bb | ||
|
|
45ed63ffe3 | ||
|
|
7bebbe3a16 | ||
|
|
53ba1db79f | ||
|
|
76c306a122 | ||
|
|
89c2c163cb | ||
|
|
8826061266 | ||
|
|
e684877c94 | ||
|
|
12c8152901 | ||
|
|
8ba20bf4d2 | ||
|
|
0bc1ad09d1 | ||
|
|
231c79132a | ||
|
|
089803c599 | ||
|
|
4ea373aff6 | ||
|
|
0d94b8c742 | ||
|
|
d444f19043 | ||
|
|
87a0e73c96 | ||
|
|
b5922095f0 | ||
|
|
3fee29e9e9 | ||
|
|
4e351b3be8 | ||
|
|
3432b900df | ||
|
|
fb7c67f317 | ||
|
|
28d5a5c39a | ||
|
|
e2754511d9 | ||
|
|
71d179de76 | ||
|
|
08523852da | ||
|
|
3dd52942d2 | ||
|
|
bb24e45028 | ||
|
|
f8c72a6a0a | ||
|
|
fa246ff810 | ||
|
|
1a1d384a3e | ||
|
|
6d85c609fd | ||
|
|
e1b8dde60a | ||
|
|
e8d32eef4e | ||
|
|
ec0fa686a9 | ||
|
|
7604273c1a | ||
|
|
00db927ce7 | ||
|
|
9fea24f0f6 | ||
|
|
c903ce929f | ||
|
|
d48d9f85b3 | ||
|
|
5bdf7ba316 | ||
|
|
518c74736f | ||
|
|
223d2cf786 | ||
|
|
cfa2cff34a | ||
|
|
26eacfe795 | ||
|
|
b1b937ee31 | ||
|
|
122479158c | ||
|
|
0af5e9ec84 | ||
|
|
cb5414f789 | ||
|
|
224cb1b913 | ||
|
|
8bd84cc701 | ||
|
|
a14dcf8b3e | ||
|
|
a1a26bf8fe | ||
|
|
fea229c4ad | ||
|
|
7040d940ac | ||
|
|
a576d72335 | ||
|
|
5aab373d20 | ||
|
|
32f8160eb2 | ||
|
|
701355beb3 | ||
|
|
28de7c517b | ||
|
|
7365ca7a64 | ||
|
|
2a61813b67 | ||
|
|
85e9223603 | ||
|
|
943e2be676 | ||
|
|
2f09df7521 | ||
|
|
445e445e49 | ||
|
|
f20e4bd572 | ||
|
|
e731371ab1 | ||
|
|
5559693cb3 | ||
|
|
ca33c3b259 | ||
|
|
a78fa98b3d | ||
|
|
956dc82555 | ||
|
|
d30a824481 | ||
|
|
a643182eee | ||
|
|
e1dbc46d8d | ||
|
|
e33d8776bc | ||
|
|
f6d16883de | ||
|
|
51bdd3bbfd | ||
|
|
8f9ae78b8c | ||
|
|
584b7b8e45 | ||
|
|
f74e903f1f | ||
|
|
4cedf112f5 | ||
|
|
d607a8da0f | ||
|
|
84a12e28df | ||
|
|
54aa47d1a8 | ||
|
|
faaee4b945 | ||
|
|
0b46303f9f | ||
|
|
b98668bc60 | ||
|
|
947e8e9512 | ||
|
|
681918cb63 | ||
|
|
d0fae44430 | ||
|
|
3e752461e8 | ||
|
|
1a9e6f3b1a | ||
|
|
580275a8cf | ||
|
|
ee74771f16 | ||
|
|
81fa97d3ee | ||
|
|
ae8b94b2d7 | ||
|
|
7670d55f3c | ||
|
|
528ab4e203 | ||
|
|
cf1dc90137 | ||
|
|
f78fcc2b71 | ||
|
|
fb2d30f2c9 | ||
|
|
8781e7c6ad | ||
|
|
c34317b1e5 | ||
|
|
b09730b422 | ||
|
|
0f1725a7ab | ||
|
|
b12e0358d6 | ||
|
|
7ef841746a | ||
|
|
2b52b2379e | ||
|
|
8dd5965c44 | ||
|
|
b273082492 | ||
|
|
da088d88ba | ||
|
|
fd13570074 | ||
|
|
b5630a9dae | ||
|
|
0e2cab6409 | ||
|
|
38dc587318 | ||
|
|
6fbddcb7c2 | ||
|
|
df1df2964d | ||
|
|
9b9c2546c8 | ||
|
|
6ce0e72b33 |
+1
-7
@@ -1,11 +1,4 @@
|
||||
.vscode/*
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
|
||||
|
||||
|
||||
|
||||
# 체섭 ignore
|
||||
*.log
|
||||
@@ -48,3 +41,4 @@ test.php
|
||||
phpinfo.php
|
||||
vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/*
|
||||
*.sqlite3
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2018 Hide_D, 62che
|
||||
Copyright (c) 2019 Hide_D, 62che
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -11,16 +11,21 @@
|
||||
* <code>php-fpm</code> 권장
|
||||
* php에서 curl, pdo-sqlite을 실행가능해야 합니다. (기본값: 지원)
|
||||
* mysqlnd가 지원되어야합니다. (기본값: 지원)
|
||||
* mysqli
|
||||
* gd
|
||||
* MariaDB 10.2.1 이상
|
||||
* MySQL 5.6 이상도 가능하도록 할 예정입니다.
|
||||
* 현재 MySQL은 지원하지 않습니다.
|
||||
* <code>git</code>
|
||||
* <code>curl</code>
|
||||
|
||||
Linux는 Ubuntu 16.04, Windows는 Windows 10에서 XAMPP를 사용한 환경에서 테스트되었습니다.
|
||||
Linux는 Ubuntu 16.04, 18.04, Windows는 Windows 10에서 XAMPP를 사용한 환경에서 테스트되었습니다.
|
||||
|
||||
Docker를 이용한 설치는 계획중입니다.
|
||||
|
||||
## 설치
|
||||
## Docker를 이용한 설치
|
||||
|
||||
https://storage.hided.net/gogs/devsam/docker 를 참고해 주세요.
|
||||
|
||||
## 수동 설치
|
||||
|
||||
본 게임은 <code>git</code>을 이용한 업그레이드 시스템을 구현하였으므로, <code>git</code>이 필요합니다.
|
||||
또한 웹 서비스 데몬을 운영중인 사용자(일반적으로 <code>www-data</code>, <code>apache</code>)에게 디렉토리 권한이 주어져야합니다.
|
||||
@@ -30,8 +35,8 @@ Docker를 이용한 설치는 계획중입니다.
|
||||
웹 데몬 user가 <code>www-data</code>인 경우 다음과 같이 입력하여 최신 배포버전과 이미지 파일을 얻을 수 있습니다.
|
||||
|
||||
```
|
||||
sudo -u www-data git clone ssh://git@storage.hided.net:2525/devsam/core.git
|
||||
git clone ssh://git@storage.hided.net:2525/devsam/image.git
|
||||
sudo -u www-data git clone https://storage.hided.net/gogs/devsam/core.git
|
||||
git clone https://storage.hided.net/gogs/devsam/image.git
|
||||
```
|
||||
|
||||
> 이미지는 git hook을 이용한 업데이트 기능을 제공하지만 아직 범용성 있는 설계가 되어있진 않습니다.
|
||||
|
||||
@@ -164,4 +164,8 @@ a.samButton.disabled {
|
||||
|
||||
.samCommandButton.disabled > .samButtonOuter > .samButtonInner::after{
|
||||
content:'】'
|
||||
}
|
||||
|
||||
.tooltiptext {
|
||||
display: none;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
+14
-3
@@ -3,7 +3,6 @@ namespace sammo;
|
||||
|
||||
define('ROOT', realpath(__dir__.'/..'));
|
||||
setlocale(LC_ALL, 'ko_KR.UTF-8');
|
||||
date_default_timezone_set('Asia/Seoul');
|
||||
mb_internal_encoding("UTF-8");
|
||||
mb_http_output('UTF-8');
|
||||
mb_regex_encoding('UTF-8');
|
||||
@@ -88,19 +87,28 @@ function getExceptionTraceAsString($exception) {
|
||||
return $rtn;
|
||||
}
|
||||
|
||||
function logError(string $err, string $errstr, array $trace){
|
||||
function logError(string $err, string $errstr, string $errpath, array $trace){
|
||||
$fdb = FileDB::db(ROOT.'/d_log/err_log.sqlite3', ROOT.'/f_install/sql/err_log.sql');
|
||||
$date = date("Ymd_His");
|
||||
|
||||
$errpath = str_replace(ROOT, '{ROOT}', $errpath);
|
||||
$trace = array_map(function(string $text){
|
||||
return str_replace(ROOT, '{ROOT}', $text);
|
||||
}, $trace);
|
||||
|
||||
$owner = Util::get_client_ip();
|
||||
$session = Session::getInstance();
|
||||
if($session->isLoggedIn(true)){
|
||||
$owner .= '('.$session->getUserID().','.$session->userName.')';
|
||||
}
|
||||
|
||||
$fdb->insert('err_log', [
|
||||
'date'=>$date,
|
||||
'err'=>$err,
|
||||
'errstr'=>$errstr,
|
||||
'trace'=>Json::encode($trace)
|
||||
'errpath'=>$errpath,
|
||||
'trace'=>Json::encode($trace),
|
||||
'webuser'=>$owner
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -116,6 +124,7 @@ function logErrorByCustomHandler(int $errno, string $errstr, string $errfile, in
|
||||
logError(
|
||||
getFriendlyErrorType($errno),
|
||||
$errstr,
|
||||
$errfile.':'.$errline,
|
||||
getExceptionTraceAsString($e)
|
||||
);
|
||||
}
|
||||
@@ -123,9 +132,11 @@ set_error_handler("\sammo\logErrorByCustomHandler");
|
||||
|
||||
|
||||
function logExceptionByCustomHandler(\Throwable $e){
|
||||
|
||||
logError(
|
||||
get_class($e),
|
||||
$e->getMessage(),
|
||||
$e->getFile().':'.$e->getLine(),
|
||||
getExceptionTraceAsString($e)
|
||||
);
|
||||
|
||||
|
||||
@@ -98,6 +98,38 @@ require(__dir__.'/../vendor/autoload.php');
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="image_request_key" class="col-sm-4 col-form-label">이미지 갱신 키</label>
|
||||
<div class="input-group col-sm-8">
|
||||
<input type="text" class="form-control" name="image_request_key" id="image_request_key"
|
||||
placeholder="이미지 서버의 hook/HashKey.php의 값과 동일하게"
|
||||
value="" />
|
||||
<div class="input-group-append">
|
||||
<button id="btn_random_generate_key" class="btn btn-secondary" type="button">랜덤 생성</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr style="width:100%; border-top: 1px solid lightgray;">
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="kakao_rest_key" class="col-sm-4 col-form-label">카카오 API Rest Key</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control" name="kakao_rest_key" id="kakao_rest_key"
|
||||
placeholder="카카오톡 API의 Rest Key"
|
||||
value="" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="kakao_admin_key" class="col-sm-4 col-form-label">카카오 API Admin Key</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control" name="kakao_admin_key" id="kakao_admin_key"
|
||||
placeholder="카카오톡 API의 Admin Key"
|
||||
value="" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-4"></div>
|
||||
<div class="col-sm-8">
|
||||
|
||||
@@ -11,6 +11,11 @@ $dbName = Util::getReq('db_name');
|
||||
$servHost = Util::getReq('serv_host');
|
||||
$sharedIconPath = Util::getReq('shared_icon_path');
|
||||
$gameImagePath = Util::getReq('game_image_path');
|
||||
$imageRequestKey = Util::getReq('image_request_key');
|
||||
|
||||
$kakaoRESTKey = Util::getReq('kakao_rest_key', 'string', '');
|
||||
$kakaoAdminKey = Util::getReq('kakao_admin_key', 'string', '');
|
||||
|
||||
|
||||
if (!$host || !$port || !$username || !$password || !$dbName || !$servHost || !$sharedIconPath || !$gameImagePath) {
|
||||
Json::die([
|
||||
@@ -186,6 +191,8 @@ $globalSalt = bin2hex(random_bytes(16));
|
||||
|
||||
$sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost);
|
||||
$gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost);
|
||||
$imageRequestPath = WebUtil::resolveRelativePath($gameImagePath.'/../hook/git_pull.php', $servHost);
|
||||
$imageKeyInstallPath = WebUtil::resolveRelativePath($gameImagePath.'/../hook/InstallKey.php', $servHost);
|
||||
|
||||
$result = Util::generateFileUsingSimpleTemplate(
|
||||
__dir__.'/templates/ServConfig.orig.php',
|
||||
@@ -193,11 +200,17 @@ $result = Util::generateFileUsingSimpleTemplate(
|
||||
[
|
||||
'serverBasePath'=>$servHost,
|
||||
'sharedIconPath'=>$sharedIconPath,
|
||||
'gameImagePath'=>$gameImagePath
|
||||
'gameImagePath'=>$gameImagePath,
|
||||
'imageRequestPath'=>$imageRequestPath,
|
||||
'imageRequestKey'=>$imageRequestKey
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
if($imageRequestKey){
|
||||
@file_get_contents($imageKeyInstallPath.'?key='.$imageRequestKey);
|
||||
}
|
||||
|
||||
if ($result !== true) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
@@ -263,10 +276,15 @@ $result = Util::generateFileUsingSimpleTemplate(
|
||||
]
|
||||
);
|
||||
|
||||
$kakaoRedirectURI = WebUtil::resolveRelativePath('oauth_kakao/oauth.php', $servHost.'/');
|
||||
|
||||
Util::generateFileUsingSimpleTemplate(
|
||||
__dir__.'/templates/KakaoKey.orig.php',
|
||||
ROOT.'/d_setting/KakaoKey.php',
|
||||
[
|
||||
'REST_API_KEY'=>$kakaoRESTKey,
|
||||
'ADMIN_KEY'=>$kakaoAdminKey,
|
||||
'REDIRECT_URI'=>$kakaoRedirectURI
|
||||
],
|
||||
true
|
||||
);
|
||||
@@ -280,5 +298,6 @@ if ($result !== true) {
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success'
|
||||
'reason'=>'success',
|
||||
'globalSalt'=>$globalSalt
|
||||
]);
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
require(__dir__.'/../vendor/autoload.php');
|
||||
|
||||
$session = Session::requireLogin([])->setReadOnly();
|
||||
if($session->userGrade < 6){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'관리자 아님'
|
||||
]);
|
||||
}
|
||||
|
||||
$servHost = Util::getReq('serv_host');
|
||||
$sharedIconPath = Util::getReq('shared_icon_path');
|
||||
$gameImagePath = Util::getReq('game_image_path');
|
||||
|
||||
if($servHost){
|
||||
if(!$sharedIconPath || $gameImagePath){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'serv_host가 지정된 경우, sharedIconPath와 gameImagePath가 모두 지정되어야합니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost);
|
||||
$gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost);
|
||||
|
||||
$result = Util::generateFileUsingSimpleTemplate(
|
||||
__dir__.'/templates/ServConfig.orig.php',
|
||||
ROOT.'/d_setting/ServConfig.php',
|
||||
[
|
||||
'serverBasePath'=>$servHost,
|
||||
'sharedIconPath'=>$sharedIconPath,
|
||||
'gameImagePath'=>$gameImagePath
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
if ($result !== true) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>$result
|
||||
]);
|
||||
}
|
||||
}
|
||||
else if($sharedIconPath || $gameImagePath){
|
||||
$servHost = ServConfig::$serverWebPath;
|
||||
if($sharedIconPath){
|
||||
$sharedIconPath = WebUtil::resolveRelativePath($sharedIconPath, $servHost);
|
||||
}
|
||||
else{
|
||||
$sharedIconPath = ServConfig::$sharedIconPath;
|
||||
}
|
||||
|
||||
if($gameImagePath){
|
||||
$gameImagePath = WebUtil::resolveRelativePath($gameImagePath, $servHost);
|
||||
}
|
||||
else{
|
||||
$gameImagePath = ServConfig::$gameImagePath;
|
||||
}
|
||||
|
||||
$result = Util::generateFileUsingSimpleTemplate(
|
||||
__dir__.'/templates/ServConfig.orig.php',
|
||||
ROOT.'/d_setting/ServConfig.php',
|
||||
[
|
||||
'serverBasePath'=>$servHost,
|
||||
'sharedIconPath'=>$sharedIconPath,
|
||||
'gameImagePath'=>$gameImagePath
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
if ($result !== true) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>$result
|
||||
]);
|
||||
}
|
||||
}
|
||||
else{
|
||||
$servHost = ServConfig::$serverWebPath;
|
||||
$sharedIconPath = ServConfig::$sharedIconPath;
|
||||
$gameImagePath = ServConfig::$gameImagePath;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$result = Util::generateFileUsingSimpleTemplate(
|
||||
__dir__.'/templates/common_path.orig.js',
|
||||
ROOT.'/d_shared/common_path.js',
|
||||
[
|
||||
'serverBasePath'=>$servHost,
|
||||
'sharedIconPath'=>$sharedIconPath,
|
||||
'gameImagePath'=>$gameImagePath
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
|
||||
$result = Util::generateFileUsingSimpleTemplate(
|
||||
__dir__.'/templates/common.orig.css',
|
||||
ROOT.'/d_shared/common.css',
|
||||
[
|
||||
'serverBasePath'=>$servHost,
|
||||
'sharedIconPath'=>$sharedIconPath,
|
||||
'gameImagePath'=>$gameImagePath
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
if ($result !== true) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>$result
|
||||
]);
|
||||
}
|
||||
@@ -3,7 +3,9 @@ CREATE TABLE IF NOT EXISTS `err_log` (
|
||||
`date` TEXT NOT NULL,
|
||||
`err` TEXT NOT NULL,
|
||||
`errstr` TEXT NOT NULL,
|
||||
`trace` TEXT NOT NULL
|
||||
`errpath` TEXT NOT NULL,
|
||||
`trace` TEXT NOT NULL,
|
||||
`webuser` TEXT NULL
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS `date` ON `err_log` (
|
||||
`date` DESC
|
||||
|
||||
@@ -10,6 +10,8 @@ class ServConfig
|
||||
public static $serverWebPath = '_tK_serverBasePath_';
|
||||
public static $sharedIconPath = '_tK_sharedIconPath_';
|
||||
public static $gameImagePath = "_tK_gameImagePath_";
|
||||
public static $imageRequestPath = "_tK_imageRequestPath_";
|
||||
public static $imageRequestKey = '_tK_imageRequestKey_';
|
||||
|
||||
public static function getSharedIconPath(string $filepath='') : string
|
||||
{
|
||||
@@ -32,6 +34,13 @@ class ServConfig
|
||||
return static::$gameImagePath;
|
||||
}
|
||||
|
||||
public static function getImagePullURI() : string
|
||||
{
|
||||
$now = time();
|
||||
$req_hash = Util::hashPassword(sprintf("%016x",$now), static::$imageRequestKey);
|
||||
return static::$imageRequestPath."?req={$req_hash}&time={$now}";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 서버 주소 반환. 서버의 경로가 하부 디렉토리인 경우에 하부 디렉토리까지 포함
|
||||
|
||||
@@ -99,28 +99,14 @@
|
||||
background-size: 700px 500px;
|
||||
}
|
||||
|
||||
.map_theme_ludo_rathowm.map_detail.map_spring .map_title_text{
|
||||
background:
|
||||
url('_tK_gameImagePath_/spring.gif') no-repeat right;
|
||||
}
|
||||
|
||||
.map_theme_ludo_rathowm.map_detail.map_summer .map_title_text{
|
||||
background:
|
||||
url('_tK_gameImagePath_/summer.gif') no-repeat right;
|
||||
}
|
||||
|
||||
.map_theme_ludo_rathowm.map_detail.map_fall .map_title_text{
|
||||
background:
|
||||
url('_tK_gameImagePath_/fall.gif') no-repeat right;
|
||||
}
|
||||
|
||||
.map_theme_ludo_rathowm.map_detail.map_winter .map_title_text{
|
||||
background:
|
||||
url('_tK_gameImagePath_/winter.gif') no-repeat right;
|
||||
}
|
||||
|
||||
.world_map.map_theme_ludo_rathowm .map_title .map_title_text::before {
|
||||
color:white;
|
||||
content:'LP';
|
||||
margin-right:1ch;
|
||||
}
|
||||
|
||||
/*체스판 지도*/
|
||||
.map_theme_chess .map_bglayer1{
|
||||
background: url('_tK_gameImagePath_/map/chess/chessboard.png') no-repeat;
|
||||
background-size: 700px 500px;
|
||||
}
|
||||
+1
-1
@@ -87,4 +87,4 @@ case "락풀기":
|
||||
break;
|
||||
}
|
||||
|
||||
header('Location:_119.php');
|
||||
header('Location:_119.php', true, 303);
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
|
||||
if($session->userGrade < 5) {
|
||||
die('권한 부족');
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
if(!$gameStor->isunited){
|
||||
die('아직 천통하지 않았습니다');
|
||||
}
|
||||
|
||||
foreach($db->queryFirstColumn(
|
||||
'SELECT no FROM general WHERE npc != 0 and age >= %i',
|
||||
GameConst::$retirementYear
|
||||
) as $generalNo){
|
||||
CheckHall($generalNo);
|
||||
}
|
||||
+11
-1
@@ -98,11 +98,21 @@ foreach($emperiors as $emperior){
|
||||
<td align=center><?=$emperior['l12name']?></td>
|
||||
<td id=bg1 align=center>승 상</td>
|
||||
<td align=center><?=$emperior['l11name']?></td>
|
||||
<td id=bg1 align=center>위 장 군</td>
|
||||
<td id=bg1 align=center>표 기 장 군</td>
|
||||
<td align=center><?=$emperior['l10name']?></td>
|
||||
<td id=bg1 align=center>사 공</td>
|
||||
<td align=center><?=$emperior['l9name']?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id=bg1 align=center>거 기 장 군</td>
|
||||
<td align=center><?=$emperior['l8name']?></td>
|
||||
<td id=bg1 align=center>태 위</td>
|
||||
<td align=center><?=$emperior['l7name']?></td>
|
||||
<td id=bg1 align=center>위 장 군</td>
|
||||
<td align=center><?=$emperior['l6name']?></td>
|
||||
<td id=bg1 align=center>사 도</td>
|
||||
<td align=center><?=$emperior['l5name']?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
+34
-22
@@ -30,6 +30,13 @@ if ($type <= 0 || $type > 15) {
|
||||
$type = 9;
|
||||
}
|
||||
|
||||
$ownerNameList = [];
|
||||
if($gameStor->isunited){
|
||||
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
|
||||
$ownerNameList[$ownerID] = $ownerName;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@@ -82,26 +89,26 @@ foreach (getAllNationStaticInfo() as $nation) {
|
||||
$nationlevel[$nation['nation']] = $nation['level'];
|
||||
}
|
||||
|
||||
switch ($type) { //FIXME: $query 처리 조심.
|
||||
case 1: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by nation"; break;
|
||||
case 2: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by leader desc"; break;
|
||||
case 3: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by power desc"; break;
|
||||
case 4: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by intel desc"; break;
|
||||
case 5: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by experience desc"; break;
|
||||
case 6: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by dedication desc"; break;
|
||||
case 7: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by level desc"; break;
|
||||
case 8: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by killturn"; break;
|
||||
default:
|
||||
case 9: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by connect desc"; break;
|
||||
case 10: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by experience desc"; break;
|
||||
case 11: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by personal"; break;
|
||||
case 12: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by special desc"; break;
|
||||
case 13: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by special2 desc"; break;
|
||||
case 14: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by age desc"; break;
|
||||
case 15: $query = "select no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by npc desc"; break;
|
||||
}
|
||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
||||
$gencount = MYDB_num_rows($genresult);
|
||||
|
||||
[$orderKey, $orderDesc] = [
|
||||
1=>['nation', false],
|
||||
2=>['leader', true],
|
||||
3=>['power', true],
|
||||
4=>['intel', true],
|
||||
5=>['experience', true],
|
||||
6=>['dedication', true],
|
||||
7=>['level', true],
|
||||
8=>['killturn', false],
|
||||
9=>['connect', true],
|
||||
10=>['experience', true],
|
||||
11=>['personal', true],
|
||||
12=>['special', true],
|
||||
13=>['special2', true],
|
||||
14=>['age', true],
|
||||
15=>['npc', true],
|
||||
][$type];
|
||||
|
||||
$generalList = $db->query('SELECT owner,no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect from general order by %b %l', $orderKey, $orderDesc?'desc':'');
|
||||
|
||||
echo"
|
||||
<table align=center width=1000 class='tb_layout bg0'>
|
||||
@@ -122,8 +129,7 @@ echo"
|
||||
<td width=45 align=center id=bg1>삭턴</td>
|
||||
<td width=70 align=center id=bg1>벌점</td>
|
||||
</tr>";
|
||||
for ($j=0; $j < $gencount; $j++) {
|
||||
$general = MYDB_fetch_array($genresult);
|
||||
foreach($generalList as $general){
|
||||
$nation = $nationname[$general['nation']];
|
||||
|
||||
if ($general['level'] == 12) {
|
||||
@@ -152,6 +158,8 @@ for ($j=0; $j < $gencount; $j++) {
|
||||
$intel = "{$general['intel']}";
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($general['npc'] >= 2) {
|
||||
$name = "<font color=cyan>{$general['name']}</font>";
|
||||
} elseif ($general['npc'] == 1) {
|
||||
@@ -160,6 +168,10 @@ for ($j=0; $j < $gencount; $j++) {
|
||||
$name = "{$general['name']}";
|
||||
}
|
||||
|
||||
if(key_exists($general['owner'], $ownerNameList)){
|
||||
$name = $name.'<br><small>('.$ownerNameList[$general['owner']].')</small>';
|
||||
}
|
||||
|
||||
$general['connect'] = Util::round($general['connect'] / 10) * 10;
|
||||
|
||||
$imageTemp = GetImageURL($general['imgsvr']);
|
||||
|
||||
+30
-16
@@ -5,26 +5,34 @@ include "lib.php";
|
||||
include "func.php";
|
||||
|
||||
$session = Session::getInstance()->setReadOnly();
|
||||
$seasonIdx = Util::getReq('seasonIdx', 'int', UniqueConst::$seasonIdx);
|
||||
$scenarioIdx = Util::getReq('scenarioIdx', 'int', null);
|
||||
|
||||
$db = DB::db();
|
||||
|
||||
increaseRefresh("명예의전당", 1);
|
||||
|
||||
$scenarioList= [];
|
||||
foreach($db->query('SELECT scenario_name as name, count(scenario) as cnt, scenario from ng_games group by scenario order by scenario asc') as $scenarioInfo){
|
||||
$scenarioList[$scenarioInfo['scenario']] = $scenarioInfo;
|
||||
}
|
||||
|
||||
|
||||
$scenarioList = (function(){
|
||||
$db = DB::db();
|
||||
$scenarioList= [];
|
||||
foreach($db->query('SELECT season, scenario_name as name, count(scenario) as cnt, scenario from ng_games group by season, scenario order by season desc, scenario asc') as $scenarioInfo){
|
||||
$seasonIdx = $scenarioInfo['season'];
|
||||
$scenarioIdx = $scenarioInfo['scenario'];
|
||||
if(!key_exists($seasonIdx, $scenarioList)){
|
||||
$scenarioList[$seasonIdx] = [];
|
||||
}
|
||||
$scenarioList[$seasonIdx][$scenarioIdx] = $scenarioInfo;
|
||||
}
|
||||
return $scenarioList;
|
||||
})();
|
||||
|
||||
if($scenarioIdx !== null || key_exists($scenarioIdx, $scenarioList)){
|
||||
$searchScenarioName = $scenarioList[$scenarioIdx]['name'];
|
||||
$searchFilter = $db->sqleval('scenario = %i', $scenarioIdx);
|
||||
$searchScenarioName = $scenarioList[$seasonIdx][$scenarioIdx]['name'];
|
||||
$searchFilter = $db->sqleval('season = %i AND scenario = %i', $seasonIdx, $scenarioIdx);
|
||||
}
|
||||
else{
|
||||
$searchScenarioName = '* 모두 *';
|
||||
$searchFilter = $db->sqleval(true);
|
||||
$searchFilter = $db->sqleval('season = %i', $seasonIdx);
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -53,14 +61,20 @@ else{
|
||||
<tr><td>명 예 의 전 당<br><?=closeButton()?></td></tr>
|
||||
<tr><td>
|
||||
시나리오 검색 : <select id="by_scenario" name="by_scenario">
|
||||
<option value="" <?=$scenarioIdx?"selected='selected'":''?>>* 종합 *</option>
|
||||
<?php foreach($scenarioList as $info): ?>
|
||||
<option
|
||||
value="<?=$info['scenario']?>"
|
||||
<?=($info['scenario']===$scenarioIdx)?"selected='selected'":''?>
|
||||
><?=$info['name']?>(<?=$info['cnt']?>회)</option>
|
||||
<?php foreach($scenarioList as $iterSeasonIdx=>$subScenarioList): ?>
|
||||
<option
|
||||
data-season="<?=$iterSeasonIdx?>"
|
||||
value=""
|
||||
<?=($iterSeasonIdx == $seasonIdx && $scenarioIdx === null)?"selected='selected'":''?>
|
||||
>* 시즌 : <?=$iterSeasonIdx?> 종합 *</option>
|
||||
<?php foreach($subScenarioList as $info): ?>
|
||||
<option
|
||||
data-season="<?=$iterSeasonIdx?>"
|
||||
value="<?=$info['scenario']?>"
|
||||
<?=($iterSeasonIdx == $seasonIdx && $info['scenario']===$scenarioIdx)?"selected='selected'":''?>
|
||||
><?=$info['name']?>(<?=$info['cnt']?>회)</option>
|
||||
<?php endforeach; ?>
|
||||
<?php endforeach; ?>
|
||||
?>
|
||||
</select>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
@@ -282,6 +282,7 @@ for($j=0; $j < $gencount; $j++) {
|
||||
|
||||
$generalsFormat[] = [
|
||||
'ourGeneral'=>$ourGeneral,
|
||||
'iconPath'=>GetImageURL($general['imgsvr']).'/'.$general['picture'],
|
||||
'isNPC'=>$isNPC,
|
||||
'wounded'=>$wounded,
|
||||
'name'=>$name,
|
||||
|
||||
+34
-44
@@ -14,6 +14,7 @@ $session = Session::requireGameLogin()->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$connect=$db->get();
|
||||
|
||||
increaseRefresh("세력장수", 1);
|
||||
@@ -29,6 +30,14 @@ if($me['level'] == 0) {
|
||||
|
||||
$sel = [$type => "selected"];
|
||||
|
||||
$ownerNameList = [];
|
||||
if($gameStor->isunited){
|
||||
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
|
||||
$ownerNameList[$ownerID] = $ownerName;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@@ -74,48 +83,26 @@ $sel = [$type => "selected"];
|
||||
<?php
|
||||
|
||||
$nationLevel = DB::db()->queryFirstField('select level from nation where nation = %i', $me['nation']);
|
||||
$orderByText = '';//FIXME: 쿼리 재작성
|
||||
switch($type) {
|
||||
case 1: $orderByText = " order by level desc"; break;
|
||||
case 2: $orderByText = " order by dedication desc"; break;
|
||||
case 3: $orderByText = " order by experience desc"; break;
|
||||
case 4: $orderByText = " order by leader desc"; break;
|
||||
case 5: $orderByText = " order by power desc"; break;
|
||||
case 6: $orderByText = " order by intel desc"; break;
|
||||
case 7: $orderByText = " order by gold desc"; break;
|
||||
case 8: $orderByText = " order by rice desc"; break;
|
||||
case 9: $orderByText = " order by crew desc"; break;
|
||||
case 10: $orderByText = " order by connect desc"; break;
|
||||
case 11: $orderByText = " order by personal"; break;
|
||||
case 12: $orderByText = " order by special desc"; break;
|
||||
case 13: $orderByText = " order by special2 desc"; break;
|
||||
case 14: $orderByText = " order by belong desc"; break;
|
||||
case 15: $orderByText = " order by npc desc"; break;
|
||||
}
|
||||
$query =
|
||||
"select
|
||||
npc,
|
||||
special,
|
||||
special2,
|
||||
personal,
|
||||
picture,
|
||||
imgsvr,
|
||||
name,
|
||||
level,
|
||||
dedication,
|
||||
experience,
|
||||
injury,
|
||||
leader,
|
||||
power,
|
||||
intel,
|
||||
gold,
|
||||
rice,
|
||||
belong,
|
||||
connect,
|
||||
killturn
|
||||
from general where nation='{$me['nation']}' ".$orderByText;
|
||||
$genresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($genresult);
|
||||
|
||||
[$orderKey, $orderDesc] = [
|
||||
1=>['level', true],
|
||||
2=>['dedication', true],
|
||||
3=>['experience', true],
|
||||
4=>['leader', true],
|
||||
5=>['power', true],
|
||||
6=>['intel', true],
|
||||
7=>['gold', true],
|
||||
8=>['rice', true],
|
||||
9=>['crew', true],
|
||||
10=>['connect', true],
|
||||
11=>['personal', true],
|
||||
12=>['special', true],
|
||||
13=>['special2', true],
|
||||
14=>['belong', true],
|
||||
15=>['npc', true],
|
||||
][$type];
|
||||
|
||||
$generalList = $db->query('SELECT owner,no,picture,imgsvr,npc,age,nation,special,special2,personal,name,injury,leader,power,intel,experience,dedication,level,killturn,connect,gold,rice,crew,belong from general where nation = %i order by %b %l', $me['nation'], $orderKey, $orderDesc?'desc':'');
|
||||
|
||||
echo"
|
||||
<table align=center class='tb_layout bg0'>
|
||||
@@ -136,8 +123,7 @@ echo"
|
||||
<td width=48 align=center id=bg1>사 관</td>
|
||||
<td width=70 align=center id=bg1>벌점</td>
|
||||
</tr>";
|
||||
for($j=0; $j < $gencount; $j++) {
|
||||
$general = MYDB_fetch_array($genresult);
|
||||
foreach($generalList as $general){
|
||||
|
||||
if($general['level'] == 12) {
|
||||
$lbonus = $nationLevel * 2;
|
||||
@@ -169,6 +155,10 @@ for($j=0; $j < $gencount; $j++) {
|
||||
elseif($general['npc'] == 1) { $name = "<font color=skyblue>{$general['name']}</font>"; }
|
||||
else { $name = "{$general['name']}"; }
|
||||
|
||||
if(key_exists($general['owner'], $ownerNameList)){
|
||||
$name = $name.'<br><small>('.$ownerNameList[$general['owner']].')</small>';
|
||||
}
|
||||
|
||||
$imageTemp = GetImageURL($general['imgsvr']);
|
||||
echo "
|
||||
<tr>
|
||||
|
||||
+37
-2
@@ -18,21 +18,24 @@ if($tnmt < 0 || $tnmt > 1){
|
||||
$tnmt = 1;
|
||||
}
|
||||
|
||||
$showDieImmediatelyBtn = false;
|
||||
$availableDieImmediately = false;
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$gameStor->cacheValues(['turnterm', 'opentime', 'turntime','autorun_user']);
|
||||
$connect=$db->get();
|
||||
|
||||
increaseRefresh("내정보", 1);
|
||||
|
||||
$query = "select no,npc,mode,tnmt,myset,train,atmos from general where owner='{$userID}'";
|
||||
$query = "select no,npc,mode,tnmt,myset,train,atmos,lastrefresh from general where owner='{$userID}'";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect), "");
|
||||
$me = MYDB_fetch_array($result);
|
||||
|
||||
|
||||
if ($me['myset'] > 0) {
|
||||
$submit = 'submit';
|
||||
} else {
|
||||
@@ -91,6 +94,16 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
|
||||
}
|
||||
}
|
||||
|
||||
if($gameStor->turntime <= $gameStor->opentime){
|
||||
//서버 가오픈시 할 수 있는 행동
|
||||
|
||||
if($me['npc'] == 0){
|
||||
$showDieImmediatelyBtn = true;
|
||||
if(addTurn($me['lastrefresh'], $gameStor->turnterm, 2) <= TimeUtil::DatetimeNow()){
|
||||
$availableDieImmediately = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@@ -106,7 +119,21 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<script>
|
||||
var availableDieImmediately = <?=$availableDieImmediately?'true':'false'?>;
|
||||
jQuery(function($){
|
||||
|
||||
$('#die_immediately').click(function(){
|
||||
if(!availableDieImmediately){
|
||||
alert('삭제를 위해서는 생성 후 2턴 가량의 시간이 필요합니다.');
|
||||
location.reload();
|
||||
return false;
|
||||
}
|
||||
return confirm('정말로 삭제하시겠습니까?');
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@@ -134,10 +161,18 @@ if (($btn == "설정저장" || $detachNPC) && $me['myset'] > 0) {
|
||||
<input type=<?=$submit?> name=btn style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px; value=설정저장><br>
|
||||
∞<font color=orange>설정저장은 이달중 <?=$me['myset']?>회 남았습니다.</font><br><br>
|
||||
</form>
|
||||
<?php if(!($gameStor->autorun_user['limit_minutes']??false)): ?>
|
||||
휴 가 신 청<br>
|
||||
<a href="c_vacation.php"><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>휴가 신청</button></a><br><br>
|
||||
<?php endif; ?>
|
||||
<!--빙의 해제용 삭턴 조절<br>
|
||||
<a href="b_myPage.php?detachNPC=1"><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>빙의 해체 요청</button></a>-->
|
||||
|
||||
<?php if($showDieImmediatelyBtn): ?>
|
||||
가오픈 기간 내 장수 삭제<br>
|
||||
<a href="c_die_immediately.php" id='die_immediately'><button type="button" style=background-color:<?=GameConst::$basecolor2?>;color:white;width:160px;height:30px;font-size:13px;>장수 삭제</button></a><br><br>
|
||||
<?php endif; ?>
|
||||
|
||||
개인용 CSS<br>
|
||||
<textarea id='custom_css' style='color:white;background-color:black;width:420px;height:150px;'></textarea>
|
||||
</td>
|
||||
|
||||
+52
-10
@@ -81,6 +81,48 @@ uasort($troops, function($lhs, $rhs){
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<?=WebUtil::printCSS('css/troops.css')?>
|
||||
<script>
|
||||
jQuery(function($){
|
||||
|
||||
$('#form1').submit(function(){
|
||||
return false;
|
||||
});
|
||||
$('#leaveTroop').click(function(e){
|
||||
return confirm("정말 부대를 탈퇴하시겠습니까?");
|
||||
})
|
||||
$('.submitBtn').click(function(event){
|
||||
if(event.isPropagationStopped()){
|
||||
return false;
|
||||
}
|
||||
console.log('b');
|
||||
var $this=$(this);
|
||||
|
||||
$.post({
|
||||
url:'j_troop.php',
|
||||
dataType:'json',
|
||||
data:{
|
||||
action:$this.val().replace(/\s/g, ''),
|
||||
troop:$('input.troopId:checked').val(),
|
||||
name:$('#troopName').val(),
|
||||
gen:$('#genNo').val()
|
||||
}
|
||||
}).then(function(data){
|
||||
console.log(data);
|
||||
if(!data.result){
|
||||
alert(data.reason);
|
||||
location.reload();
|
||||
}
|
||||
|
||||
location.reload();
|
||||
|
||||
}, function(){
|
||||
alert('알 수 없는 에러가 발생했습니다.');
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@@ -88,7 +130,7 @@ uasort($troops, function($lhs, $rhs){
|
||||
<table width=1000 class='tb_layout bg0'>
|
||||
<tr><td>부 대 편 성<br><?=backButton()?></td></tr>
|
||||
</table>
|
||||
<form name=form1 method=post action=c_troop.php>
|
||||
<form id=form1 name=form1 method=post>
|
||||
<table id="troop_list" class='tb_layout bg0'>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -102,9 +144,9 @@ uasort($troops, function($lhs, $rhs){
|
||||
<tfoot><tr><td colspan='5'>
|
||||
<?php if(!$troops): ?>
|
||||
<?php elseif($me['troop'] == 0): ?>
|
||||
<input type=submit name=btn value='부 대 가 입'>
|
||||
<input type=submit class='submitBtn' value='부 대 가 입'>
|
||||
<?php else: ?>
|
||||
<input type=submit name=btn value='부 대 탈 퇴' onclick='return confirm("정말 부대를 탈퇴하시겠습니까?")'>
|
||||
<input type=submit id="leaveTroop" class='submitBtn' value='부 대 탈 퇴'>
|
||||
<?php endif;?>
|
||||
</td></tr></tfoot>
|
||||
<tbody>
|
||||
@@ -133,7 +175,7 @@ foreach ($troops as $troopNo=>$troop) {
|
||||
|
||||
<?php if ($me['troop'] == 0): ?>
|
||||
<tr>
|
||||
<td align=center rowspan=2><input type='radio' name='troop' value='<?=$troop['troop']?>'></td>
|
||||
<td align=center rowspan=2><input type='radio' class='troopId' name='troop' value='<?=$troop['troop']?>'></td>
|
||||
<td align=center><?=$troop['name']?><br>【 <?=$cityText?> 】</td>
|
||||
<td height=64 class='generalIcon' style='background:no-repeat center url("<?=$troopLeader['pictureFullPath']?>");background-size:64px;'> </td>
|
||||
<td rowspan=2 width=62><?=$genlistText?></td>
|
||||
@@ -152,15 +194,15 @@ foreach ($troops as $troopNo=>$troop) {
|
||||
<td rowspan=2 width=62><?=$genlistText?></td>
|
||||
<td rowspan=2>
|
||||
<?php if ($me['no'] == $troopLeader['no']): ?>
|
||||
<select name=gen size=3 style=color:white;background-color:black;font-size:13px;width:128px;>";
|
||||
<select id='genNo' name=gen size=3 style=color:white;background-color:black;font-size:13px;width:128px;>";
|
||||
<?php foreach ($troop['users'] as $troopUser): ?>
|
||||
<?php if ($troopUser['no'] == $me['no']) {
|
||||
continue;
|
||||
} ?>
|
||||
<option value='<?=$troopUser['no']?>'><?=$troopUser['name']?></option>
|
||||
<option value='<?=$troopUser['no']?>'><?=$troopUser['name']?></option>
|
||||
<?php endforeach; ?>
|
||||
</select><br>
|
||||
<input type=submit name=btn value='부 대 추 방' style=width:130px;height:25px;>
|
||||
<input type=submit class='submitBtn' value='부 대 추 방' style=width:130px;height:25px;>
|
||||
<?php else: ?>
|
||||
<?=$troopLeader['turnText']?>
|
||||
<?php endif; ?>
|
||||
@@ -181,11 +223,11 @@ foreach ($troops as $troopNo=>$troop) {
|
||||
<table width=1000 class='tb_layout bg0'>
|
||||
<tr>
|
||||
<td width=80 id=bg1>부 대 명</td>
|
||||
<td width=130><input type=text style=color:white;background-color:black; size=18 maxlength=9 name=name></td>
|
||||
<td width=130><input id='troopName' type=text style=color:white;background-color:black; size=18 maxlength=9 name=name></td>
|
||||
<?php if($me['troop'] == 0): ?>
|
||||
<td><input type=submit name=btn value='부 대 창 설'></td>
|
||||
<td><input type=submit class='submitBtn' value='부 대 창 설'></td>
|
||||
<?php else: ?>
|
||||
<td><input type=submit name=btn value='부 대 변 경'></td>
|
||||
<td><input type=submit class='submitBtn' value='부 대 변 경'></td>
|
||||
<?php endif; ?>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
|
||||
$availableDieImmediately = false;
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
$general = $db->queryFirstRow('SELECT no,name,name2,npc,lastrefresh FROM general WHERE owner=%i AND npc = 0', $userID);
|
||||
|
||||
if(!$general){
|
||||
header('location:b_myPage.php');
|
||||
die();
|
||||
}
|
||||
|
||||
increaseRefresh("장수 삭제", 1);
|
||||
$gameStor->cacheValues(['turnterm', 'opentime', 'turntime', 'year', 'month']);
|
||||
|
||||
if($gameStor->turntime <= $gameStor->opentime){
|
||||
//서버 가오픈시 할 수 있는 행동
|
||||
if(addTurn($general['lastrefresh'], $gameStor->turnterm, 2) <= TimeUtil::DatetimeNow()){
|
||||
$availableDieImmediately = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$availableDieImmediately){
|
||||
header('location:b_myPage.php');
|
||||
die();
|
||||
}
|
||||
|
||||
|
||||
if(!$db->query('DELETE FROM general WHERE owner=%i AND npc=0', $userID)){
|
||||
trigger_error("올바르지 않은 삭제 프로세스 $userID", E_USER_WARNING);
|
||||
}
|
||||
$generalName = $general['name'];
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
pushGeneralPublicRecord(["<C>●</>{$gameStor->month}월:<Y>{$generalName}</>{$josaYi} 이 홀연히 모습을 <R>감추었습니다</>"], $gameStor->year, $gameStor->month);
|
||||
|
||||
|
||||
|
||||
$session->logoutGame();
|
||||
header('location:..');
|
||||
+2
-2
@@ -23,11 +23,11 @@ $me = $db->queryFirstRow('SELECT `no`,nation,`level`,permission,penalty FROM gen
|
||||
//내가 수뇌부이어야함
|
||||
$permission = checkSecretPermission($me);
|
||||
if($permission < 0){
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
else if ($me['level'] < 5 && $permission != 4) {
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -55,7 +55,7 @@ if($command == 46) {
|
||||
$query['turn'.$turnIdx] = $comStr;
|
||||
}
|
||||
$db->update('general', $query, 'owner=%i', $userID);
|
||||
header('Location:./');
|
||||
header('Location:./', true, 303);
|
||||
die();
|
||||
|
||||
}
|
||||
@@ -82,7 +82,7 @@ if($command == 53) {
|
||||
$query = "update nation set {$str} where nation='{$me['nation']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
}
|
||||
header('location:b_chiefcenter.php');
|
||||
header('location:b_chiefcenter.php', true, 303);
|
||||
die();
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ if($command == 61) {
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
}
|
||||
|
||||
header('location:b_chiefcenter.php');
|
||||
header('location:b_chiefcenter.php', true, 303);
|
||||
die();
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ if($command == 23 || $command == 24 || $command == 27 || $command == 51 || $comm
|
||||
$query = "update nation set {$str} where nation='{$me['nation']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
}
|
||||
header('location:b_chiefcenter.php');
|
||||
header('location:b_chiefcenter.php', true, 303);
|
||||
die();
|
||||
}
|
||||
|
||||
@@ -136,5 +136,5 @@ foreach($turn as $turnIdx){
|
||||
$query['turn'.$turnIdx] = $comStr;
|
||||
}
|
||||
$db->update('general', $query, 'owner=%i', $userID);
|
||||
header('Location:./');
|
||||
header('Location:./', true, 303);
|
||||
|
||||
|
||||
+14
-14
@@ -32,7 +32,7 @@ $ruler = MYDB_fetch_array($result);
|
||||
|
||||
//수뇌가 아니면 아무것도 할 수 없음
|
||||
if($meLevel < 5){
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
|
||||
@@ -45,18 +45,18 @@ if($btn == "임명") {
|
||||
}
|
||||
|
||||
if($genlist != 0 && !$general){
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
|
||||
//임명할사람이 군주이면 불가, 내가 수뇌부이어야함, 공석아닌때는 국가가 같아야함
|
||||
if($meLevel < 5 || ($genlist != 0 && $general['nation'] != $me['nation']) || ($genlist != 0 && $general['level'] == 12)) {
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
} elseif($btn == "추방") {
|
||||
if(!$outlist){
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
$query = "select no,name,gold,rice,nation,troop,level,npc,picture,imgsvr,permission,penalty,belong from general where no='$outlist'";
|
||||
@@ -64,33 +64,33 @@ if($btn == "임명") {
|
||||
$general = MYDB_fetch_array($result);
|
||||
|
||||
if(!$general){
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
|
||||
//추방할사람이 군주이면 불가, 내가 수뇌부이어야함, 공석아닌때는 국가가 같아야함
|
||||
if($general['level'] == 12 || $meLevel < 5 || ($general['nation'] != $me['nation'] && $outlist != 0)) {
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
|
||||
//추방할사람이 외교권자이면 불가
|
||||
$permission = checkSecretPermission($general);
|
||||
if($permission == 4){
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
|
||||
//NPC 부대장 추방 불가
|
||||
if($general['npc'] == 5){
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
//나와 대상 장수는 국가가 같아야 함
|
||||
if($genlist != 0 && $me['nation'] != $general['nation']){
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
exit();
|
||||
}
|
||||
|
||||
@@ -252,7 +252,7 @@ if($btn == "추방") {
|
||||
pushGenLog($general, $log);
|
||||
pushGeneralPublicRecord($alllog, $year, $month);
|
||||
}
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
die();
|
||||
}
|
||||
|
||||
@@ -303,7 +303,7 @@ if($btn == "임명" && $level >= 5 && $level <= 11) {
|
||||
}
|
||||
}
|
||||
}
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
die();
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ if($btn == "임명" && $level >= 2 && $level <= 4 && $citylist > 0) {
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$city = MYDB_fetch_array($result);
|
||||
if(!$city){
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
die();
|
||||
}
|
||||
$oldlist = $city[$genlv];
|
||||
@@ -366,11 +366,11 @@ if($btn == "임명" && $level >= 2 && $level <= 4 && $citylist > 0) {
|
||||
}
|
||||
}
|
||||
}
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
die();
|
||||
}
|
||||
|
||||
|
||||
header('location:b_myBossInfo.php');
|
||||
header('location:b_myBossInfo.php', true, 303);
|
||||
|
||||
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
// $btn, $name, $troop
|
||||
$btn = Util::getReq('btn');
|
||||
$name = Util::getReq('name');
|
||||
$gen = Util::getReq('gen', 'int');
|
||||
$troop = Util::getReq('troop', 'int');
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
$userID = $session::getUserID();
|
||||
|
||||
$db = DB::db();
|
||||
|
||||
$me = $db->queryFirstRow('SELECT `no`, nation, troop FROM general WHERE `owner`=%i', $userID);
|
||||
|
||||
$name = trim($name);
|
||||
if($btn == "부 대 창 설" && $name != "" && $me['troop'] == 0) {
|
||||
$db->insert('troop',[
|
||||
'name'=>$name,
|
||||
'nation'=>$me['nation'],
|
||||
'no'=>$me['no']
|
||||
]);
|
||||
$troopID = $db->insertId();
|
||||
|
||||
$db->update('general', [
|
||||
'troop'=>$troopID
|
||||
], 'no=%i',$me['no']);
|
||||
} elseif($btn == "부 대 변 경" && $name != "") {
|
||||
$db->update('troop', [
|
||||
'name'=>$name
|
||||
], 'no=%i',$me['no']);
|
||||
} elseif($btn == "부 대 추 방" && $gen != 0) {
|
||||
$db->update('general', [
|
||||
'troop'=>0
|
||||
], 'no=%i AND troop=(SELECT troop FROM troop WHERE no = %i)', $gen, $me['no']);
|
||||
} elseif($btn == "부 대 가 입" && $troop != 0) {
|
||||
$troopLeader = $db->queryFirstField('SELECT `no` FROM troop WHERE troop=%i', $troop);
|
||||
$troopLeaderNation = $db->queryFirstField('SELECT `nation` FROM `general` WHERE `no`=%i AND `nation`=%i', $troopLeader, $me['nation']);
|
||||
if($troopLeaderNation){
|
||||
$db->update('general', [
|
||||
'troop'=>$troop
|
||||
], 'no=%i', $me['no']);
|
||||
}
|
||||
} elseif($btn == "부 대 탈 퇴") {
|
||||
$troopLeader = $db->queryFirstField('SELECT `no` FROM troop WHERE troop=%i', $me['troop']);
|
||||
|
||||
//부대장일 경우
|
||||
if($troopLeader == $me['no']) {
|
||||
// 모두 탈퇴
|
||||
$db->update('general', [
|
||||
'troop'=>0
|
||||
], 'troop=%i',$me['troop']);
|
||||
// 부대 삭제
|
||||
$db->delete('troop', 'troop=%i', $me['troop']);
|
||||
} else {
|
||||
$db->update('general', [
|
||||
'troop'=>0
|
||||
], 'no=%i', $me['no']);
|
||||
}
|
||||
}
|
||||
|
||||
header('Location:b_troop.php');
|
||||
+7
-1
@@ -10,6 +10,12 @@ $userID = Session::getUserID();
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
$autorun_user = $gameStor->autorun_user;
|
||||
if($autorun_user['limit_minutes']??false){
|
||||
//자동 턴인 경우에는 휴가 불가
|
||||
header('location:b_myPage.php', true, 303);
|
||||
}
|
||||
|
||||
$killturn = $gameStor->killturn;
|
||||
|
||||
$db->update('general', [
|
||||
@@ -17,5 +23,5 @@ $db->update('general', [
|
||||
], 'owner=%i', $userID);
|
||||
|
||||
|
||||
header('location:b_myPage.php');
|
||||
header('location:b_myPage.php', true, 303);
|
||||
|
||||
|
||||
+2
-2
@@ -49,7 +49,7 @@ else if($btn == "댓글" && trim($comment) != "") {
|
||||
}
|
||||
|
||||
if(!$isVoteAdmin){
|
||||
header('location:a_vote.php');
|
||||
header('location:a_vote.php', true, 303);
|
||||
die();
|
||||
}
|
||||
|
||||
@@ -85,4 +85,4 @@ if($btn == "수정") {
|
||||
$gameStor->voteopen = 2;
|
||||
}
|
||||
|
||||
header('location:a_vote.php');
|
||||
header('location:a_vote.php', true, 303);
|
||||
+8
-69
@@ -8,66 +8,10 @@ $session = Session::getInstance()->setReadOnly();
|
||||
|
||||
$db = DB::db();
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>커맨드리스트</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('js/common.js')?>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('css/common.css')?>
|
||||
<script type="text/javascript">
|
||||
<?php
|
||||
if(!$session->isGameLoggedIn()){
|
||||
echo 'window.parent.location.href = "../";';
|
||||
if (!$session->isGameLoggedIn()) {
|
||||
die('<script>window.location.href = "../"</script>');
|
||||
}
|
||||
?>
|
||||
function myclock() {
|
||||
lastday = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
|
||||
|
||||
date = document.clock.clock.value;
|
||||
|
||||
year = parseInt(date.substr(0, 4), 10);
|
||||
month = parseInt(date.substr(5,2), 10);
|
||||
day = parseInt(date.substr(8, 2), 10);
|
||||
hour = parseInt(date.substr(11, 2), 10);
|
||||
min = parseInt(date.substr(14, 2), 10);
|
||||
sec = parseInt(date.substr(17, 2), 10);
|
||||
|
||||
//윤년계산
|
||||
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { lastday[1] = 29; }
|
||||
else { lastday[1] = 28; }
|
||||
|
||||
// if(term > 0) term--;
|
||||
|
||||
sec++;
|
||||
if(sec >= 60) { sec = 0; min++; }
|
||||
if(min >= 60) { min = 0; hour++; }
|
||||
if(hour >= 24) { hour = 0; day++; }
|
||||
if(day > lastday[month-1]) { month++; day = 1; }
|
||||
if(month >= 13) { year++; month = 1; }
|
||||
if(month < 10) { month = '0' + month; }
|
||||
if(day < 10) { day = '0' + day; }
|
||||
if(hour < 10) { hour = '0' + hour; }
|
||||
if(min < 10) { min = '0' + min; }
|
||||
if(sec < 10) { sec = '0' + sec; }
|
||||
date = '' + year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + sec;
|
||||
|
||||
document.clock.clock.value = date;
|
||||
|
||||
window.setTimeout("myclock();", 1000);
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body OnLoad='myclock()'>
|
||||
<?php
|
||||
myCommandList();
|
||||
|
||||
function myCommandList() {
|
||||
@@ -76,9 +20,10 @@ function myCommandList() {
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$date = date('Y-m-d H:i:s');
|
||||
$date_precise = (new \DateTime())->format("Y-m-d H:i:s.u");
|
||||
|
||||
// 명령 목록
|
||||
$admin = $gameStor->getValues(['year','month','turnterm']);
|
||||
$admin = $gameStor->getValues(['year','month','turnterm','turntime','opentime']);
|
||||
|
||||
$me = $db->queryFirstRow("SELECT `no`,turntime,term,turn0,turn1,turn2,turn3,turn4,turn5,turn6,turn7,turn8,turn9,turn10,turn11,turn12,turn13,turn14,turn15,turn16,turn17,turn18,turn19,turn20,turn21,turn22,turn23 FROM general WHERE `owner`=%s", $userID);
|
||||
if(!$me){
|
||||
@@ -88,16 +33,15 @@ function myCommandList() {
|
||||
$turn = getTurn($me, 2);
|
||||
|
||||
echo "<table width=300 height=700 class='tb_layout bg2'>
|
||||
<form name=clock>
|
||||
<tr>
|
||||
<td colspan=4 align=center id=bg0><b>- 명령 목록 - <input value='$date' type=text name=clock size=19 style=background-color:black;color:white;border-style:none;></b></td>
|
||||
<td colspan=4 align=center id=bg0><b>- 명령 목록 - <input value='$date' type=text id=clock size=19 style=background-color:black;color:white;border-style:none; data-server-time='{$date_precise}'></b></td>
|
||||
</tr>";
|
||||
|
||||
$year = $admin['year'];
|
||||
$month = $admin['month'];
|
||||
// 실행된 턴시간이면 +1
|
||||
$cutTurn = cutTurn($me['turntime'], $admin['turnterm']);
|
||||
if($date <= $cutTurn) { $month++; }
|
||||
if($date <= $cutTurn && $date >= $admin['opentime']) { $month++; }
|
||||
|
||||
$totaldate = $me['turntime'];
|
||||
|
||||
@@ -111,7 +55,7 @@ function myCommandList() {
|
||||
echo "
|
||||
<tr height=28>
|
||||
<td width=24 align=center height=24 id=bg0><b>$j</b></td>
|
||||
<td width=71 align=center height=24 id=bg1 style='overflow:hidden;'><b>{$year}年 {$month}月</b></td>
|
||||
<td width=71 align=center height=24 id=bg1 style='max-width:68px;white-space:nowrap;overflow:hidden;'><b>{$year}年 {$month}月</b></td>
|
||||
<td width=42 align=center bgcolor=black><b>$turndate</b></td>
|
||||
<td width=150 align=center height=24 style=table-layout:fixed;>$turn[$i]</td>
|
||||
</tr>";
|
||||
@@ -120,11 +64,6 @@ function myCommandList() {
|
||||
}
|
||||
|
||||
echo "
|
||||
</form>
|
||||
</table>
|
||||
";
|
||||
}
|
||||
?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
}
|
||||
@@ -68,14 +68,3 @@ color:white;
|
||||
.nation_info td{
|
||||
height:18px;
|
||||
}
|
||||
|
||||
#sidebar{
|
||||
position:fixed;
|
||||
right:0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
#sidebar button{
|
||||
/*width:100px;*/
|
||||
}
|
||||
@@ -4,6 +4,7 @@ namespace sammo;
|
||||
class UniqueConst{
|
||||
public static $serverID = '_tK_serverID_';
|
||||
public static $serverName = '_tK_serverName_';
|
||||
public static $seasonIdx = '_tK_seasonIdx_';
|
||||
|
||||
private function __construct(){}
|
||||
|
||||
|
||||
+257
-181
@@ -659,8 +659,10 @@ function commandTable() {
|
||||
commandGroup("======= 개 인 ========");
|
||||
if($me['level'] >= 1) {
|
||||
addCommand("단련(자금$develcost, 군량$develcost)", 41);
|
||||
addCommand("숙련전환(통솔경험, 자금$develcost, 군량$develcost)", 58);
|
||||
} else {
|
||||
addCommand("단련(자금$develcost, 군량$develcost)", 41, 0);
|
||||
addCommand("숙련전환(통솔경험, 자금$develcost, 군량$develcost)", 58, 0);
|
||||
}
|
||||
addCommand("견문(자금?, 군량?, 경험치?)", 42);
|
||||
if($city['trade'] > 0 || $me['special'] == 30) {
|
||||
@@ -865,8 +867,6 @@ function generalInfo($no) {
|
||||
$lbonus = "";
|
||||
}
|
||||
|
||||
$troop = getTroop($general['troop']);
|
||||
|
||||
$level = getLevel($general['level'], $nation['level']);
|
||||
if($general['level'] == 2) {
|
||||
$query = "select name from city where gen3='{$general['no']}'";
|
||||
@@ -934,7 +934,23 @@ function generalInfo($no) {
|
||||
default:
|
||||
$train = "{$general['train']}"; break;
|
||||
}
|
||||
if($general['troop'] == 0) { $troop['name'] = "-"; }
|
||||
if($general['troop'] == 0){
|
||||
$troopInfo = '-';
|
||||
}
|
||||
else{
|
||||
$troop = getTroop($general['troop']);
|
||||
$troopLeader = $db->queryFirstRow('SELECT city,turn0 FROM general WHERE no=%i', $troop['no']);
|
||||
$troopInfo = $troop['name'];
|
||||
|
||||
if(DecodeCommand($troopLeader['turn0'])[0] != 26){
|
||||
$troopInfo = "<strike style='color:gray;'>{$troopInfo}</strike>";
|
||||
}
|
||||
else if($troopLeader['city'] != $general['city']){
|
||||
$troopCityName = CityConst::byID($troopLeader['city'])->name;
|
||||
$troopInfo = "<span style='color:orange;'>{$troopInfo}({$troopCityName})</span>";
|
||||
}
|
||||
|
||||
}
|
||||
if($general['mode'] == 2) { $general['mode'] = "<font color=limegreen>수비 함(훈사80)</font>"; }
|
||||
elseif($general['mode'] == 1) { $general['mode'] = "<font color=limegreen>수비 함(훈사60)</font>"; }
|
||||
else { $general['mode'] = "<font color=red>수비 안함</font>"; }
|
||||
@@ -1008,7 +1024,7 @@ function generalInfo($no) {
|
||||
</tr>
|
||||
<tr height=20>
|
||||
<td style='text-align:center;' class='bg1'><b>부대</b></td>
|
||||
<td style='text-align:center;' colspan=3>{$troop['name']}</td>
|
||||
<td style='text-align:center;' colspan=3>{$troopInfo}</td>
|
||||
<td style='text-align:center;' class='bg1'><b>벌점</b></td>
|
||||
<td style='text-align:center;' colspan=5>".getConnect($general['connect'])." {$general['connect']}({$general['con']})</td>
|
||||
</tr>
|
||||
@@ -1267,8 +1283,9 @@ function increaseRefresh($type="", $cnt=1) {
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$gameStor->refresh = $gameStor->refresh+$cnt; //TODO: +로 증가하는 값은 별도로 분리
|
||||
$isunited = $gameStor->isunited;
|
||||
$opentime = $gameStor->opentime;
|
||||
|
||||
if($isunited != 2 && $generalID && $userGrade < 6) {
|
||||
if($isunited != 2 && $generalID && $userGrade < 6 && $opentime <= TimeUtil::DatetimeNow()) {
|
||||
$db->update('general', [
|
||||
'lastrefresh'=>$date,
|
||||
'con'=>$db->sqleval('con + %i', $cnt),
|
||||
@@ -1523,6 +1540,11 @@ function checkTurn() {
|
||||
|
||||
$alllog = [];
|
||||
|
||||
if(date('Y-m-d H:i:s') < $gameStor->turntime){
|
||||
//턴 시각 이전이면 아무것도 하지 않음
|
||||
return true;
|
||||
}
|
||||
|
||||
// 잦은 갱신 금지 현재 5초당 1회
|
||||
if(!timeover()) { return; }
|
||||
// 현재 처리중이면 접근 불가
|
||||
@@ -1557,7 +1579,12 @@ function checkTurn() {
|
||||
$db->update('plock', ['plock'=>1], true);
|
||||
return;
|
||||
}
|
||||
|
||||
$date = date('Y-m-d H:i:s');
|
||||
|
||||
$gameStor->cacheAll();
|
||||
|
||||
|
||||
// 1턴이상 갱신 없었으면 서버 지연
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', checkDelay');
|
||||
checkDelay();
|
||||
@@ -1569,10 +1596,12 @@ function checkTurn() {
|
||||
CheckOverhead();
|
||||
//서버정보
|
||||
|
||||
$date = date('Y-m-d H:i:s');
|
||||
$autorun_user = $gameStor->autorun_user;
|
||||
|
||||
// 최종 처리 월턴의 다음 월턴시간 구함
|
||||
$prevTurn = cutTurn($gameStor->turntime, $gameStor->turnterm);
|
||||
$nextTurn = addTurn($prevTurn, $gameStor->turnterm);
|
||||
$computedPrevTurn = false;
|
||||
// 현재 턴 이전 월턴까지 모두처리.
|
||||
//최종 처리 이후 다음 월턴이 현재 시간보다 전이라면
|
||||
while($nextTurn <= $date) {
|
||||
@@ -1586,12 +1615,15 @@ function checkTurn() {
|
||||
//if(PROCESS_LOG) $processlog[0] = "[{$date}] 월턴 이전 갱신: name({$general['name']}), no({$general['no']}), turntime({$general['turntime']}), turn0({$general['turn0']})";
|
||||
//if(PROCESS_LOG) pushProcessLog($processlog);
|
||||
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', processAI');
|
||||
if($general['npc'] >= 2) { processAI($general['no']); } // npc AI 처리
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', PreprocessCommand');
|
||||
PreprocessCommand($general['no']);
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', processAI');
|
||||
$reduce_turn = false;
|
||||
if($general['npc'] >= 2 || ($autorun_user['limit_minutes']??false)) {
|
||||
processAI($general['no'], $reduce_turn);
|
||||
} // npc AI 처리
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', processCommand');
|
||||
processCommand($general['no']);
|
||||
processCommand($general['no'], $reduce_turn);
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', updateCommand');
|
||||
updateCommand($general['no']);
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', updateTurntime');
|
||||
@@ -1678,12 +1710,16 @@ function checkTurn() {
|
||||
// 다음달로 넘김
|
||||
$prevTurn = $nextTurn;
|
||||
$nextTurn = addTurn($prevTurn, $gameStor->turnterm);
|
||||
$computedPrevTurn = true;
|
||||
}
|
||||
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', '.__LINE__);
|
||||
|
||||
// 이시각 정각 시까지 업데이트 완료했음
|
||||
$gameStor->turntime = $prevTurn;
|
||||
if($computedPrevTurn){
|
||||
$gameStor->turntime = $prevTurn;
|
||||
}
|
||||
|
||||
|
||||
// 그 시각 년도,월 저장
|
||||
list($gameStor->year, $gameStor->month) = turnDate($prevTurn);
|
||||
@@ -1699,12 +1735,14 @@ function checkTurn() {
|
||||
//if(PROCESS_LOG) $processlog[0] = "[{$date}] 월턴 이후 갱신: name({$general['name']}), no({$general['no']}), turntime({$general['turntime']}), turn0({$general['turn0']})";
|
||||
//if(PROCESS_LOG) pushProcessLog($processlog);
|
||||
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', processAI');
|
||||
if($general['npc'] >= 2) { processAI($general['no']); } // npc AI 처리
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', PreprocessCommand');
|
||||
PreprocessCommand($general['no']);
|
||||
$reduce_turn = false;
|
||||
if($general['npc'] >= 2 || ($autorun_user['limit_minutes']??false)) {
|
||||
processAI($general['no'], $reduce_turn);
|
||||
}
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', processCommand');
|
||||
processCommand($general['no']);
|
||||
processCommand($general['no'], $reduce_turn);
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', updateCommand');
|
||||
updateCommand($general['no']);
|
||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', updateTurntime');
|
||||
@@ -1937,7 +1975,7 @@ function updateTurntime($no) {
|
||||
|
||||
$admin = $gameStor->getValues(['year', 'month', 'isunited', 'turnterm']);
|
||||
|
||||
$query = "select no,name,name2,nation,troop,age,turntime,killturn,level,deadyear,npc,npc_org,affinity,npcid from general where no='$no'";
|
||||
$query = "select no,owner,name,name2,nation,troop,age,startage,turntime,killturn,level,deadyear,npc,npc_org,affinity,npcid from general where no='$no'";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$general = MYDB_fetch_array($result);
|
||||
|
||||
@@ -2007,68 +2045,77 @@ function updateTurntime($no) {
|
||||
$query = "update nation set totaltech=tech*'$gencount',gennum='$gennum' where nation='{$general['nation']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
$generalName = $general['name'];
|
||||
|
||||
// 병, 요절, 객사, 번개, 사채, 일확천금, 호랑이, 곰, 수영, 처형, 발견
|
||||
$josaYi = JosaUtil::pick($general['name'], '이');
|
||||
$josaYi = JosaUtil::pick($generalName, '이');
|
||||
|
||||
if($general['owner'] > 0 && $general['startage'] + 1 < $general['age']){
|
||||
|
||||
$realName = RootDB::db()->queryFirstField('SELECT name FROM member WHERE no = %i', $general['owner'])??'??';
|
||||
$generalName .= "({$realName})";
|
||||
}
|
||||
|
||||
switch(rand()%42) {
|
||||
case 0: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 역병에 걸려 <R>죽고</> 말았습니다."; break;
|
||||
case 1: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <R>요절</>하고 말았습니다."; break;
|
||||
case 2: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 거리에서 갑자기 <R>객사</>하고 말았습니다."; break;
|
||||
case 3: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 안타깝게도 번개에 맞아 <R>죽고</> 말았습니다."; break;
|
||||
case 4: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 고리대금에 시달리다가 <R>자살</>하고 말았습니다."; break;
|
||||
case 5: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 일확천금에 놀라 심장마비로 <R>죽고</> 말았습니다."; break;
|
||||
case 6: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 산속에서 호랑이에게 물려 <R>죽고</> 말았습니다."; break;
|
||||
case 7: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 산책중 곰에게 할퀴어 <R>죽고</> 말았습니다."; break;
|
||||
case 8: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 수영을 하다 <R>익사</>하고 말았습니다."; break;
|
||||
case 9: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 황제를 모독하다가 <R>처형</>당하고 말았습니다."; break;
|
||||
case 10: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 이튿날 침실에서 <R>죽은채로</>발견되었습니다."; break;
|
||||
case 11: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 색에 빠져 기력이 쇠진해 <R>죽고</>말았습니다."; break;
|
||||
case 12: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 미녀를 보고 심장마비로 <R>죽고</>말았습니다."; break;
|
||||
case 13: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 우울증에 걸려 <R>자살</>하고 말았습니다."; break;
|
||||
case 14: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 천하 정세를 비관하며 <R>분신</>하고 말았습니다."; break;
|
||||
case 15: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 어떤 관심도 못받고 쓸쓸히 <R>죽고</>말았습니다."; break;
|
||||
case 16: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 유산 상속 문제로 다투다가 <R>살해</>당했습니다."; break;
|
||||
case 17: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 누군가의 사주로 자객에게 <R>암살</>당했습니다."; break;
|
||||
case 18: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 바람난 배우자에게 <R>독살</>당하고 말았습니다."; break;
|
||||
case 19: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 농약을 술인줄 알고 마셔 <R>죽고</>말았습니다."; break;
|
||||
case 20: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 아무 이유 없이 <R>죽고</>말았습니다."; break;
|
||||
case 21: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 전재산을 잃고 화병으로 <R>죽고</>말았습니다."; break;
|
||||
case 22: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 단식운동을 하다가 굶어 <R>죽고</>말았습니다."; break;
|
||||
case 23: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 귀신에게 홀려 시름 앓다가 <R>죽고</>말았습니다."; break;
|
||||
case 24: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 사람들에게 집단으로 맞아서 <R>죽고</>말았습니다."; break;
|
||||
case 25: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 갑자기 성벽에서 뛰어내려 <R>죽고</>말았습니다."; break;
|
||||
case 26: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 농사중 호미에 머리를 맞아 <R>죽고</>말았습니다."; break;
|
||||
case 27: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 저세상이 궁금하다며 <R>자살</>하고 말았습니다."; break;
|
||||
case 28: $alllog[0] = "<C>●</>{$admin['month']}월:운좋기로 소문난 <Y>{$general['name']}</>{$josaYi} 불운하게도 <R>죽고</>말았습니다."; break;
|
||||
case 29: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 무리하게 단련을 하다가 <R>죽고</>말았습니다."; break;
|
||||
case 30: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 생활고를 비관하며 <R>자살</>하고 말았습니다."; break;
|
||||
case 31: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 평생 결혼도 못해보고 <R>죽고</> 말았습니다."; break;
|
||||
case 32: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 과식하다 배가 터져 <R>죽고</> 말았습니다."; break;
|
||||
case 33: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 웃다가 숨이 넘어가 <R>죽고</> 말았습니다."; break;
|
||||
case 34: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 추녀를 보고 놀라서 <R>죽고</> 말았습니다."; break;
|
||||
case 35: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 물에 빠진 사람을 구하려다 같이 <R>죽고</> 말았습니다."; break;
|
||||
case 36: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 독살을 준비하다 독에 걸려 <R>죽고</> 말았습니다."; break;
|
||||
case 37: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 뒷간에서 너무 힘을 주다가 <R>죽고</> 말았습니다."; break;
|
||||
case 38: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 돌팔이 의사에게 치료받다가 <R>죽고</> 말았습니다."; break;
|
||||
case 39: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 남의 보약을 훔쳐먹다 부작용으로 <R>죽고</> 말았습니다."; break;
|
||||
case 40: $alllog[0] = "<C>●</>{$admin['month']}월:희대의 사기꾼 <Y>{$general['name']}</>{$josaYi} <R>사망</>했습니다."; break;
|
||||
case 41: $alllog[0] = "<C>●</>{$admin['month']}월:희대의 호색한 <Y>{$general['name']}</>{$josaYi} <R>사망</>했습니다."; break;
|
||||
default: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <R>사망</>했습니다."; break;
|
||||
case 0: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 역병에 걸려 <R>죽고</> 말았습니다."; break;
|
||||
case 1: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} <R>요절</>하고 말았습니다."; break;
|
||||
case 2: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 거리에서 갑자기 <R>객사</>하고 말았습니다."; break;
|
||||
case 3: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 안타깝게도 번개에 맞아 <R>죽고</> 말았습니다."; break;
|
||||
case 4: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 고리대금에 시달리다가 <R>자살</>하고 말았습니다."; break;
|
||||
case 5: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 일확천금에 놀라 심장마비로 <R>죽고</> 말았습니다."; break;
|
||||
case 6: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 산속에서 호랑이에게 물려 <R>죽고</> 말았습니다."; break;
|
||||
case 7: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 산책중 곰에게 할퀴어 <R>죽고</> 말았습니다."; break;
|
||||
case 8: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 수영을 하다 <R>익사</>하고 말았습니다."; break;
|
||||
case 9: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 황제를 모독하다가 <R>처형</>당하고 말았습니다."; break;
|
||||
case 10: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 이튿날 침실에서 <R>죽은채로</>발견되었습니다."; break;
|
||||
case 11: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 색에 빠져 기력이 쇠진해 <R>죽고</>말았습니다."; break;
|
||||
case 12: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 미녀를 보고 심장마비로 <R>죽고</>말았습니다."; break;
|
||||
case 13: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 우울증에 걸려 <R>자살</>하고 말았습니다."; break;
|
||||
case 14: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 천하 정세를 비관하며 <R>분신</>하고 말았습니다."; break;
|
||||
case 15: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 어떤 관심도 못받고 쓸쓸히 <R>죽고</>말았습니다."; break;
|
||||
case 16: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 유산 상속 문제로 다투다가 <R>살해</>당했습니다."; break;
|
||||
case 17: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 누군가의 사주로 자객에게 <R>암살</>당했습니다."; break;
|
||||
case 18: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 바람난 배우자에게 <R>독살</>당하고 말았습니다."; break;
|
||||
case 19: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 농약을 술인줄 알고 마셔 <R>죽고</>말았습니다."; break;
|
||||
case 20: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 아무 이유 없이 <R>죽고</>말았습니다."; break;
|
||||
case 21: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 전재산을 잃고 화병으로 <R>죽고</>말았습니다."; break;
|
||||
case 22: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 단식운동을 하다가 굶어 <R>죽고</>말았습니다."; break;
|
||||
case 23: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 귀신에게 홀려 시름 앓다가 <R>죽고</>말았습니다."; break;
|
||||
case 24: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 사람들에게 집단으로 맞아서 <R>죽고</>말았습니다."; break;
|
||||
case 25: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 갑자기 성벽에서 뛰어내려 <R>죽고</>말았습니다."; break;
|
||||
case 26: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 농사중 호미에 머리를 맞아 <R>죽고</>말았습니다."; break;
|
||||
case 27: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 저세상이 궁금하다며 <R>자살</>하고 말았습니다."; break;
|
||||
case 28: $alllog[0] = "<C>●</>{$admin['month']}월:운좋기로 소문난 <Y>{$generalName}</>{$josaYi} 불운하게도 <R>죽고</>말았습니다."; break;
|
||||
case 29: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 무리하게 단련을 하다가 <R>죽고</>말았습니다."; break;
|
||||
case 30: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 생활고를 비관하며 <R>자살</>하고 말았습니다."; break;
|
||||
case 31: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 평생 결혼도 못해보고 <R>죽고</> 말았습니다."; break;
|
||||
case 32: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 과식하다 배가 터져 <R>죽고</> 말았습니다."; break;
|
||||
case 33: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 웃다가 숨이 넘어가 <R>죽고</> 말았습니다."; break;
|
||||
case 34: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 추녀를 보고 놀라서 <R>죽고</> 말았습니다."; break;
|
||||
case 35: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 물에 빠진 사람을 구하려다 같이 <R>죽고</> 말았습니다."; break;
|
||||
case 36: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 독살을 준비하다 독에 걸려 <R>죽고</> 말았습니다."; break;
|
||||
case 37: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 뒷간에서 너무 힘을 주다가 <R>죽고</> 말았습니다."; break;
|
||||
case 38: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 돌팔이 의사에게 치료받다가 <R>죽고</> 말았습니다."; break;
|
||||
case 39: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 남의 보약을 훔쳐먹다 부작용으로 <R>죽고</> 말았습니다."; break;
|
||||
case 40: $alllog[0] = "<C>●</>{$admin['month']}월:희대의 사기꾼 <Y>{$generalName}</>{$josaYi} <R>사망</>했습니다."; break;
|
||||
case 41: $alllog[0] = "<C>●</>{$admin['month']}월:희대의 호색한 <Y>{$generalName}</>{$josaYi} <R>사망</>했습니다."; break;
|
||||
default: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} <R>사망</>했습니다."; break;
|
||||
}
|
||||
// 엔피씨,엠피씨,의병 사망로그
|
||||
if($general['npc'] == 2 || $general['npc'] == 6) {
|
||||
$alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <R>사망</>했습니다.";
|
||||
$alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} <R>사망</>했습니다.";
|
||||
} elseif($general['npc'] >= 3) {
|
||||
switch(rand()%10) {
|
||||
case 0: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 푸대접에 실망하여 떠났습니다."; break;
|
||||
case 1: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 갑자기 화를 내며 떠났습니다."; break;
|
||||
case 2: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 의견차이를 좁히지 못하고 떠났습니다."; break;
|
||||
case 3: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 판단 착오였다며 떠났습니다."; break;
|
||||
case 4: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 생활고가 나아지지 않는다며 떠났습니다."; break;
|
||||
case 5: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 기대가 너무 컸다며 떠났습니다."; break;
|
||||
case 6: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 아무 이유 없이 떠났습니다."; break;
|
||||
case 7: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 자기 목적은 달성했다며 떠났습니다."; break;
|
||||
case 8: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 자기가 없어도 될것 같다며 떠났습니다."; break;
|
||||
case 9: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 처자식이 그립다며 떠났습니다."; break;
|
||||
case 0: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 푸대접에 실망하여 떠났습니다."; break;
|
||||
case 1: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 갑자기 화를 내며 떠났습니다."; break;
|
||||
case 2: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 의견차이를 좁히지 못하고 떠났습니다."; break;
|
||||
case 3: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 판단 착오였다며 떠났습니다."; break;
|
||||
case 4: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 생활고가 나아지지 않는다며 떠났습니다."; break;
|
||||
case 5: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 기대가 너무 컸다며 떠났습니다."; break;
|
||||
case 6: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 아무 이유 없이 떠났습니다."; break;
|
||||
case 7: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 자기 목적은 달성했다며 떠났습니다."; break;
|
||||
case 8: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 자기가 없어도 될것 같다며 떠났습니다."; break;
|
||||
case 9: $alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$generalName}</>{$josaYi} 처자식이 그립다며 떠났습니다."; break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2195,6 +2242,7 @@ function CheckHall($no) {
|
||||
|
||||
$db->insertIgnore('ng_hall', [
|
||||
'server_id'=>UniqueConst::$serverID,
|
||||
'season'=>UniqueConst::$seasonIdx,
|
||||
'scenario'=>$scenarioIdx,
|
||||
'general_no'=>$no,
|
||||
'type'=>$idx,
|
||||
@@ -2208,7 +2256,7 @@ function CheckHall($no) {
|
||||
'value'=>$general[$typeName]??0,
|
||||
'aux'=>$jsonAux
|
||||
],
|
||||
'server_id = %s AND scenario = %i AND general_no = %i AND type = %i AND value < %?',
|
||||
'server_id = %s AND scenario = %i AND general_no = %i AND type = %i AND value < %d',
|
||||
UniqueConst::$serverID,
|
||||
$scenarioIdx,
|
||||
$no,
|
||||
@@ -2220,11 +2268,78 @@ function CheckHall($no) {
|
||||
}
|
||||
|
||||
|
||||
function guaranteedUniqueItemLottery(array $weightedArray, string $headerText='아이템'):?int{
|
||||
//NOTE: Util::choiceRandomUsingWeight 사용
|
||||
//TODO: 또 재 구현해야함.... ㅜㅜ
|
||||
|
||||
if(!$weightedArray){
|
||||
return null;
|
||||
}
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
$targetGeneralID = Util::choiceRandomUsingWeight($weightedArray);
|
||||
|
||||
$alllog = [];
|
||||
$history = [];
|
||||
$occupied = [];
|
||||
$item = [];
|
||||
|
||||
$admin = $gameStor->getValues(['year', 'month', 'scenario']);
|
||||
|
||||
$selGroup = [
|
||||
20 - $db->queryFirstField('SELECT count(*) from general where weap > 6'),
|
||||
20 - $db->queryFirstField('SELECT count(*) from general where book > 6'),
|
||||
20 - $db->queryFirstField('SELECT count(*) from general where horse > 6'),
|
||||
20 - $db->queryFirstField('SELECT count(*) from general where item > 6')
|
||||
];
|
||||
|
||||
if(array_sum($selGroup) == 0){
|
||||
return null;
|
||||
}
|
||||
|
||||
$sel = Util::choiceRandomUsingWeight($selGroup);
|
||||
switch($sel) {
|
||||
case 0: [$type, $nameFunc] = ["weap", 'sammo\getWeapName']; break;
|
||||
case 1: [$type, $nameFunc] = ["book", 'sammo\getBookName']; break;
|
||||
case 2: [$type, $nameFunc] = ["horse", 'sammo\getHorseName']; break;
|
||||
case 3: [$type, $nameFunc] = ["item", 'sammo\getItemName']; break;
|
||||
}
|
||||
|
||||
foreach($db->queryFirstColumn('SELECT %b FROM general WHERE %b > 6', $type, $type) as $itemIdx){
|
||||
$occupied[$itemIdx] = 1;
|
||||
}
|
||||
for($i=7; $i <= 26; $i++) {
|
||||
if(!Util::array_get($occupied[$i])) {
|
||||
$item[] = $i;
|
||||
}
|
||||
}
|
||||
$it = Util::choiceRandom($item);
|
||||
|
||||
$general = $db->queryFirstRow('SELECT no, name, nation FROM general WHERE no = %i', $targetGeneralID);
|
||||
|
||||
$db->update('general', [$type=>$it], 'no=%i', $general['no']);
|
||||
|
||||
$nation = getNationStaticInfo($general['nation']);
|
||||
|
||||
|
||||
$josaUl = JosaUtil::pick(($nameFunc)($it), '을');
|
||||
$josaYi = JosaUtil::pick($general['name'], '이');
|
||||
$log[] = "<C>●</><C>".($nameFunc)($it)."</>{$josaUl} 습득했습니다!";
|
||||
$alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <C>".($nameFunc)($it)."</>{$josaUl} 습득했습니다!";
|
||||
pushGeneralHistory($general, "<C>●</>{$admin['year']}년 {$admin['month']}월:<C>".($nameFunc)($it)."</>{$josaUl} 습득");
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【{$headerText}】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".($nameFunc)($it)."</>{$josaUl} 습득했습니다!";
|
||||
|
||||
pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']);
|
||||
pushWorldHistory($history, $admin['year'], $admin['month']);
|
||||
pushGenLog($general, $log);
|
||||
return $targetGeneralID;
|
||||
}
|
||||
|
||||
function uniqueItem($general, $log, $vote=0) {
|
||||
//TODO: uniqueItem 재 구현
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$connect=$db->get();
|
||||
$alllog = [];
|
||||
$history = [];
|
||||
$occupied = [];
|
||||
@@ -2235,118 +2350,71 @@ function uniqueItem($general, $log, $vote=0) {
|
||||
|
||||
$admin = $gameStor->getValues(['year', 'month', 'scenario']);
|
||||
|
||||
$query = "select count(*) as cnt from general where npc<2";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$gen = MYDB_fetch_array($result);
|
||||
$genCnt = $db->queryFirstField('SELECT count(*) FROM general WHERE npc < 2');
|
||||
|
||||
if($admin['scenario'] < 100) { $prob = $gen['cnt'] * 5; } // 5~6개월에 하나씩 등장
|
||||
else { $prob = $gen['cnt']; } // 1~2개월에 하나씩 등장
|
||||
if($admin['scenario'] < 100) { $prob = $genCnt * 5; } // 5~6개월에 하나씩 등장
|
||||
else { $prob = $genCnt; } // 1~2개월에 하나씩 등장
|
||||
|
||||
if($vote == 1) { $prob = Util::round($gen['cnt'] * 0.7 / 3); } // 투표율 70%, 투표 한번에 2~3개 등장
|
||||
elseif($vote == 2) { $prob = Util::round($gen['cnt'] / 10 / 2); } // 랜임시 2개(10%) 등장(200명중 20명 랜임시도?)
|
||||
elseif($vote == 3) { $prob = Util::round($gen['cnt'] / 10 / 4); } // 건국시 4개(20%) 등장(200명시 20국 정도 됨)
|
||||
if($vote == 1) { $prob = Util::round($genCnt * 0.7 / 3); } // 투표율 70%, 투표 한번에 2~3개 등장
|
||||
elseif($vote == 2) { $prob = Util::round($genCnt / 10 / 2); } // 랜임시 2개(10%) 등장(200명중 20명 랜임시도?)
|
||||
elseif($vote == 3) { $prob = Util::round($genCnt / 10 / 4); } // 건국시 4개(20%) 등장(200명시 20국 정도 됨)
|
||||
|
||||
if($prob < 3) { $prob = 3; }
|
||||
//아이템 습득 상황
|
||||
if(rand() % $prob == 0) {
|
||||
//셋중 선택
|
||||
$sel = rand() % 4;
|
||||
switch($sel) {
|
||||
case 0: $type = "weap"; break;
|
||||
case 1: $type = "book"; break;
|
||||
case 2: $type = "horse"; break;
|
||||
case 3: $type = "item"; break;
|
||||
}
|
||||
$query = "select no,{$type} from general where {$type}>6";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$count = MYDB_num_rows($result);
|
||||
if($count < 20) {
|
||||
for($i=0; $i < $count; $i++) {
|
||||
$gen = MYDB_fetch_array($result);
|
||||
$occupied[$gen[$type]] = 1;
|
||||
}
|
||||
for($i=7; $i <= 26; $i++) {
|
||||
if(!Util::array_get($occupied[$i])) {
|
||||
$item[] = $i;
|
||||
}
|
||||
}
|
||||
$it = $item[rand() % count($item)]??0;
|
||||
if (rand() % $prob != 0) {
|
||||
return $log;
|
||||
|
||||
$query = "update general set {$type}='$it' where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
}
|
||||
//셋중 선택
|
||||
$selGroup = [
|
||||
20 - $db->queryFirstField('SELECT count(*) from general where weap > 6'),
|
||||
20 - $db->queryFirstField('SELECT count(*) from general where book > 6'),
|
||||
20 - $db->queryFirstField('SELECT count(*) from general where horse > 6'),
|
||||
20 - $db->queryFirstField('SELECT count(*) from general where item > 6')
|
||||
];
|
||||
|
||||
$nation = getNationStaticInfo($general['nation']);
|
||||
if(array_sum($selGroup) == 0){
|
||||
return $log;
|
||||
}
|
||||
|
||||
switch($sel) {
|
||||
case 0:
|
||||
$josaUl = JosaUtil::pick(getWeapName($it), '을');
|
||||
$josaYi = JosaUtil::pick($general['name'], '이');
|
||||
$log[] = "<C>●</><C>".getWeapName($it)."</>{$josaUl} 습득했습니다!";
|
||||
$alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <C>".getWeapName($it)."</>{$josaUl} 습득했습니다!";
|
||||
pushGeneralHistory($general, "<C>●</>{$admin['year']}년 {$admin['month']}월:<C>".getWeapName($it)."</>{$josaUl} 습득");
|
||||
if($vote == 0) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【아이템】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getWeapName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 1) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【설문상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getWeapName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 2) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【랜덤임관상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getWeapName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 3) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【건국상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getWeapName($it)."</>{$josaUl} 습득했습니다!";
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
$josaUl = JosaUtil::pick(getBookName($it), '을');
|
||||
$josaYi = JosaUtil::pick($general['name'], '이');
|
||||
$log[] = "<C>●</><C>".getBookName($it)."</>{$josaUl} 습득했습니다!";
|
||||
$alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <C>".getBookName($it)."</>{$josaUl} 습득했습니다!";
|
||||
pushGeneralHistory($general, "<C>●</>{$admin['year']}년 {$admin['month']}월:<C>".getBookName($it)."</>{$josaUl} 습득");
|
||||
if($vote == 0) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【아이템】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getBookName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 1) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【설문상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getBookName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 2) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【랜덤임관상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getBookName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 3) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【건국상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getBookName($it)."</>{$josaUl} 습득했습니다!";
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
$josaUl = JosaUtil::pick(getHorseName($it), '을');
|
||||
$josaYi = JosaUtil::pick($general['name'], '이');
|
||||
$log[] = "<C>●</><C>".getHorseName($it)."</>{$josaUl} 습득했습니다!";
|
||||
$alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <C>".getHorseName($it)."</>{$josaUl} 습득했습니다!";
|
||||
pushGeneralHistory($general, "<C>●</>{$admin['year']}년 {$admin['month']}월:<C>".getHorseName($it)."</>{$josaUl} 습득");
|
||||
if($vote == 0) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【아이템】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getHorseName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 1) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【설문상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getHorseName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 2) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【랜덤임관상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getHorseName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 3) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【건국상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getHorseName($it)."</>{$josaUl} 습득했습니다!";
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
$josaUl = JosaUtil::pick(getItemName($it), '을');
|
||||
$josaYi = JosaUtil::pick($general['name'], '이');
|
||||
$log[] = "<C>●</><C>".getItemName($it)."</>{$josaUl} 습득했습니다!";
|
||||
$alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <C>".getItemName($it)."</>{$josaUl} 습득했습니다!";
|
||||
pushGeneralHistory($general, "<C>●</>{$admin['year']}년 {$admin['month']}월:<C>".getItemName($it)."</>{$josaUl} 습득");
|
||||
if($vote == 0) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【아이템】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getItemName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 1) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【설문상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getItemName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 2) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【랜덤임관상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getItemName($it)."</>{$josaUl} 습득했습니다!";
|
||||
} elseif($vote == 3) {
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【건국상품】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".getItemName($it)."</>{$josaUl} 습득했습니다!";
|
||||
}
|
||||
break;
|
||||
}
|
||||
pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']);
|
||||
pushWorldHistory($history, $admin['year'], $admin['month']);
|
||||
$sel = Util::choiceRandomUsingWeight($selGroup);
|
||||
switch($sel) {
|
||||
case 0: [$type, $nameFunc] = ["weap", 'sammo\getWeapName']; break;
|
||||
case 1: [$type, $nameFunc] = ["book", 'sammo\getBookName']; break;
|
||||
case 2: [$type, $nameFunc] = ["horse", 'sammo\getHorseName']; break;
|
||||
case 3: [$type, $nameFunc] = ["item", 'sammo\getItemName']; break;
|
||||
}
|
||||
|
||||
switch($vote){
|
||||
case 1: $voteTypeText = '설문상품'; break;
|
||||
case 2: $voteTypeText = '랜덤임관상품'; break;
|
||||
case 3: $voteTypeText = '건국상품'; break;
|
||||
default: $voteTypeText = '아이템'; break;
|
||||
}
|
||||
|
||||
foreach($db->queryFirstColumn('SELECT %b FROM general WHERE %b > 6', $type, $type) as $itemIdx){
|
||||
$occupied[$itemIdx] = 1;
|
||||
}
|
||||
for($i=7; $i <= 26; $i++) {
|
||||
if(!Util::array_get($occupied[$i])) {
|
||||
$item[] = $i;
|
||||
}
|
||||
}
|
||||
$it = Util::choiceRandom($item);
|
||||
|
||||
$db->update('general', [$type=>$it], 'no=%i', $general['no']);
|
||||
|
||||
$nation = getNationStaticInfo($general['nation']);
|
||||
|
||||
$josaUl = JosaUtil::pick(($nameFunc)($it), '을');
|
||||
$josaYi = JosaUtil::pick($general['name'], '이');
|
||||
$log[] = "<C>●</><C>".($nameFunc)($it)."</>{$josaUl} 습득했습니다!";
|
||||
$alllog[0] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <C>".($nameFunc)($it)."</>{$josaUl} 습득했습니다!";
|
||||
pushGeneralHistory($general, "<C>●</>{$admin['year']}년 {$admin['month']}월:<C>".($nameFunc)($it)."</>{$josaUl} 습득");
|
||||
$history[] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<C><b>【{$voteTypeText}】</b></><D><b>{$nation['name']}</b></>의 <Y>{$general['name']}</>{$josaYi} <C>".($nameFunc)($it)."</>{$josaUl} 습득했습니다!";
|
||||
|
||||
pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']);
|
||||
pushWorldHistory($history, $admin['year'], $admin['month']);
|
||||
return $log;
|
||||
}
|
||||
|
||||
@@ -2909,16 +2977,24 @@ function SabotageInjury($city, $type=0) {
|
||||
return $injuryCount;
|
||||
}
|
||||
|
||||
function getRandTurn($term) {
|
||||
function getRandTurn($term, ?\DateTimeInterface $baseDateTime = null) {
|
||||
if($baseDateTime === null){
|
||||
$baseDateTime = new \DateTimeImmutable();
|
||||
}
|
||||
else if($baseDateTime instanceof \DateTime){
|
||||
$baseDateTime = DateTimeImmutable::createFromMutable($baseDateTime);
|
||||
}
|
||||
$randtime = rand(0, 60 * $term - 1);
|
||||
$turntime = date('Y-m-d H:i:s', strtotime('now') + $randtime);
|
||||
|
||||
return $turntime;
|
||||
return $baseDateTime->add(new \DateInterval('PT'.$randtime.'S'))->format('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
function getRandTurn2($term) {
|
||||
function getRandTurn2($term, ?\DateTimeInterface $baseDateTime = null) {
|
||||
if($baseDateTime === null){
|
||||
$baseDateTime = new \DateTimeImmutable();
|
||||
}
|
||||
else if($baseDateTime instanceof \DateTime){
|
||||
$baseDateTime = DateTimeImmutable::createFromMutable($baseDateTime);
|
||||
}
|
||||
$randtime = rand(0, 60 * $term - 1);
|
||||
$turntime = date('Y-m-d H:i:s', strtotime('now') - $randtime);
|
||||
|
||||
return $turntime;
|
||||
return $baseDateTime->sub(new \DateInterval('PT'.$randtime.'S'))->format('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
+49
-42
@@ -103,21 +103,30 @@ function getTurn(array $general, $type, $font=1) {
|
||||
$str[$i] = "【{$general['name']}】{$josaUl} 등용";
|
||||
break;
|
||||
case 25: //임관
|
||||
$third = $command[2];
|
||||
$double = $command[1];
|
||||
|
||||
if($double == 98){
|
||||
$nationName = '건국된 임의 국가';
|
||||
if($third == 98){
|
||||
$str[$i] = "【건국된 임의 국가】로 임관";
|
||||
}
|
||||
else if($double == 99){
|
||||
$nationName = '임의의 국가';
|
||||
else if($third == 99){
|
||||
$str[$i] = "【임의의 국가】로 임관";
|
||||
}
|
||||
else if($third == 1){
|
||||
$generalName = $db->queryFirstField('SELECT name FROM general WHERE no=%i', $double)??'?!?!';
|
||||
$josaUl = JosaUtil::pick($generalName, '을');
|
||||
$str[$i] = "【{$generalName}】{$josaUl} 따라 임관";
|
||||
}
|
||||
else if($third == 0){
|
||||
$nationName = getNationStaticInfo($double)['name']??'?!?!';
|
||||
|
||||
$josaRo = JosaUtil::pick($nationName, '로');
|
||||
$str[$i] = "【{$nationName}】{$josaRo} 임관";
|
||||
}
|
||||
else{
|
||||
$nationName = getNationStaticInfo($double)['name']??'?!?!';
|
||||
$str[$i] = "????";
|
||||
}
|
||||
|
||||
|
||||
$josaRo = JosaUtil::pick($nationName, '로');
|
||||
$str[$i] = "【{$nationName}】{$josaRo} 임관";
|
||||
break;
|
||||
case 26: //집합
|
||||
$str[$i] = "집합";
|
||||
@@ -251,7 +260,9 @@ function getTurn(array $general, $type, $font=1) {
|
||||
case 57: //모반 시도
|
||||
$str[$i] = "모반 시도";
|
||||
break;
|
||||
|
||||
case 58: //숙련 전환
|
||||
$str[$i] = "숙련 전환";
|
||||
break;
|
||||
default:
|
||||
$str[$i] = "????";
|
||||
break;
|
||||
@@ -472,7 +483,7 @@ function getCoreTurn($nation, $level) {
|
||||
}
|
||||
|
||||
|
||||
function processCommand($no) {
|
||||
function processCommand($no, $reduceTurn) {
|
||||
$session = Session::getInstance();
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
@@ -550,6 +561,8 @@ function processCommand($no) {
|
||||
$newKillturn = $general['killturn'] - 1;
|
||||
} elseif($command[0] == 0) {
|
||||
$newKillturn = $general['killturn'] - 1;
|
||||
} elseif($reduceTurn == true){
|
||||
$newKillturn = $general['killturn'] - 1;
|
||||
} else {
|
||||
$newKillturn = $killturn;
|
||||
}
|
||||
@@ -623,6 +636,8 @@ function processCommand($no) {
|
||||
case 55: process_55($general); break; //거병
|
||||
case 56: process_56($general); break; //해산
|
||||
case 57: process_57($general); break; //모반 시도
|
||||
|
||||
case 58: process_58($general); break; //숙련 전환
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -707,8 +722,11 @@ where nation='{$general['nation']}'
|
||||
|
||||
function command_Single($turn, $command) {
|
||||
if(!$turn){
|
||||
header('location:commandlist.php');
|
||||
return;
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'nextPage'=>null,
|
||||
'reason'=>'invalid turn'
|
||||
]);
|
||||
}
|
||||
|
||||
$db = DB::db();
|
||||
@@ -722,7 +740,11 @@ function command_Single($turn, $command) {
|
||||
}
|
||||
$db->update('general', $setValues, 'owner=%i',$userID);
|
||||
|
||||
header('location:commandlist.php');
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'nextPage'=>null,
|
||||
'reason'=>'success'
|
||||
]);
|
||||
}
|
||||
|
||||
function command_Chief($turn, $command) {
|
||||
@@ -745,41 +767,26 @@ function command_Chief($turn, $command) {
|
||||
$query = "update nation set {$str} where nation='{$me['nation']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
}
|
||||
header('location:b_chiefcenter.php');
|
||||
header('location:b_chiefcenter.php', true, 303);
|
||||
}
|
||||
|
||||
function command_Other($turn, $commandtype) {
|
||||
|
||||
$target = "processing.php?commandtype={$commandtype}";
|
||||
foreach($turn as $turnItem){
|
||||
$target.="&turn[]={$turnItem}";
|
||||
if(!$turn){
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'nextPage'=>null,
|
||||
'reason'=>'invalid turn'
|
||||
]);
|
||||
}
|
||||
$target.="&".mt_rand();
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<script>
|
||||
parent.moveProcessing(<?=$commandtype?>, <?=Json::encode($turn)?>);
|
||||
</script>
|
||||
</head>
|
||||
<body style="background-color:black;">
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
$unixNow = time();
|
||||
$turnArg = join('&turn[]=', $turn);
|
||||
|
||||
/*
|
||||
<form name='form1' action='processing.php' method='post' target=_parent>
|
||||
<?php foreach($turn as $turnItem): ?>
|
||||
<input type='hidden' name='turn[]' value='<?=$turnItem?>'>
|
||||
<?php endforeach; ?>
|
||||
<input type=hidden name=commandtype value=<?=$commandtype?>>
|
||||
</form>
|
||||
<script>*/
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'nextPage'=>"processing.php?commandtype={$commandtype}&turn[]={$turnArg}&t={$unixNow}",
|
||||
'reason'=>'success'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+47
-46
@@ -174,13 +174,10 @@ function getGenSpecial($type) {
|
||||
return $call;
|
||||
}
|
||||
|
||||
function getSpecialInfo(?int $type):?string{
|
||||
if($type === null){
|
||||
return null;
|
||||
}
|
||||
|
||||
function getSpecialTextList():array{
|
||||
|
||||
//앞칸은 '설명을 위해' '그냥' 적어둠
|
||||
$infoText = [
|
||||
return [
|
||||
0 => ['-', null],
|
||||
1 => ['경작', '[내정] 농지 개간 : 기본 보정 +10%, 성공률 +10%p, 비용 -20%'],
|
||||
2 => ['상재', '[내정] 상업 투자 : 기본 보정 +10%, 성공률 +10%p, 비용 -20%'],
|
||||
@@ -219,6 +216,14 @@ function getSpecialInfo(?int $type):?string{
|
||||
74 => ['격노', '[전투] 상대방 필살 및 회피 시도시 일정 확률로 격노(필살) 발동, 공격 시 일정 확률로 진노(1페이즈 추가)'],
|
||||
75 => ['척사', '[전투] 지역·도시 병종 상대로 대미지 +10%, 아군 피해 -10%']
|
||||
];
|
||||
}
|
||||
|
||||
function getSpecialInfo(?int $type):?string{
|
||||
if($type === null){
|
||||
return null;
|
||||
}
|
||||
|
||||
$infoText = getSpecialTextList();
|
||||
|
||||
return $infoText[$type][1]??null;
|
||||
}
|
||||
@@ -453,36 +458,32 @@ function getTechCall($tech) : string {
|
||||
function getDexLevelList(): array{
|
||||
return [
|
||||
[0, 'navy', 'F-'],
|
||||
[2500, 'navy', 'F'],
|
||||
[7500, 'navy', 'F+'],
|
||||
[15000, 'skyblue', 'E-'],
|
||||
[25000, 'skyblue', 'E'],
|
||||
[37500, 'skyblue', 'E+'],
|
||||
[52500, 'seagreen', 'D-'],
|
||||
[70000, 'seagreen', 'D'],
|
||||
[90000, 'seagreen', 'D+'],
|
||||
[112500, 'teal', 'C-'],
|
||||
[137500, 'teal', 'C'],
|
||||
[165000, 'teal', 'C+'],
|
||||
[195000, 'limegreen', 'B-'],
|
||||
[227500, 'limegreen', 'B'],
|
||||
[262500, 'limegreen', 'B+'],
|
||||
[300000, 'gold', 'A-'],
|
||||
[340000, 'gold', 'A'],
|
||||
[382500, 'gold', 'A+'],
|
||||
[427500, 'darkorange', 'S-'],
|
||||
[475000, 'darkorange', 'S'],
|
||||
[525000, 'darkorange', 'S+'],
|
||||
[577500, 'tomato', 'SS-'],
|
||||
[632500, 'tomato', 'SS'],
|
||||
[690000, 'tomato', 'SS+'],
|
||||
[750000, 'red', 'SSS-'],
|
||||
[812500, 'red', 'SSS'],
|
||||
[877500, 'red', 'SSS+'],
|
||||
[945000, 'darkviolet', 'Z-'],
|
||||
[1015000, 'darkviolet', 'Z'],
|
||||
[1087500, 'darkviolet', 'Z+'],
|
||||
[1162500, 'white', '?']
|
||||
[350, 'navy', 'F'],
|
||||
[1375, 'navy', 'F+'],
|
||||
[3500, 'skyblue', 'E-'],
|
||||
[7125, 'skyblue', 'E'],
|
||||
[12650, 'skyblue', 'E+'],
|
||||
[20475, 'seagreen', 'D-'],
|
||||
[31000, 'seagreen', 'D'],
|
||||
[44625, 'seagreen', 'D+'],
|
||||
[61750, 'teal', 'C-'],
|
||||
[82775, 'teal', 'C'],
|
||||
[108100, 'teal', 'C+'],
|
||||
[138125, 'limegreen', 'B-'],
|
||||
[173250, 'limegreen', 'B'],
|
||||
[213875, 'limegreen', 'B+'],
|
||||
[260400, 'darkorange', 'A-'],
|
||||
[313225, 'darkorange', 'A'],
|
||||
[372750, 'darkorange', 'A+'],
|
||||
[439375, 'tomato', 'S-'],
|
||||
[513500, 'tomato', 'S'],
|
||||
[595525, 'tomato', 'S+'],
|
||||
[685850, 'darkviolet', 'Z-'],
|
||||
[784875, 'darkviolet', 'Z'],
|
||||
[893000, 'darkviolet', 'Z+'],
|
||||
[1010625, 'gold', 'EX-'],
|
||||
[1138150, 'gold', 'EX'],
|
||||
[1275975, 'white', 'EX+'],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -520,7 +521,7 @@ function getDexLevel(int $dex) : int {
|
||||
}
|
||||
|
||||
function getDexLog($dex1, $dex2) {
|
||||
$ratio = (getDexLevel($dex1) - getDexLevel($dex2)) / 50 + 1;
|
||||
$ratio = (getDexLevel($dex1) - getDexLevel($dex2)) / 55 + 1;
|
||||
return $ratio;
|
||||
}
|
||||
|
||||
@@ -757,15 +758,15 @@ function getItemInfo(?int $item):?string{
|
||||
9=>['도소연명(치료)', '[군사] 턴 실행 전 부상 회복.'],
|
||||
10=>['칠엽청점(치료)', '[군사] 턴 실행 전 부상 회복.'],
|
||||
11=>['정력견혈(치료)', '[군사] 턴 실행 전 부상 회복.'],
|
||||
12=>['과실주(훈련)', '[전투] 훈련 보정 +5'],
|
||||
13=>['이강주(훈련)', '[전투] 훈련 보정 +5'],
|
||||
14=>['의적주(사기)', '[전투] 사기 보정 +5'],
|
||||
15=>['두강주(사기)', '[전투] 사기 보정 +5'],
|
||||
16=>['보령압주(사기)', '[전투] 사기 보정 +5'],
|
||||
17=>['철벽서(훈련)', '[전투] 훈련 보정 +7'],
|
||||
18=>['단결도(훈련)', '[전투] 훈련 보정 +7'],
|
||||
19=>['춘화첩(사기)', '[전투] 사기 보정 +7'],
|
||||
20=>['초선화(사기)', '[전투] 사기 보정 +7'],
|
||||
12=>['과실주(훈련)', '[전투] 훈련 보정 +10'],
|
||||
13=>['이강주(훈련)', '[전투] 훈련 보정 +10'],
|
||||
14=>['의적주(사기)', '[전투] 사기 보정 +10'],
|
||||
15=>['두강주(사기)', '[전투] 사기 보정 +10'],
|
||||
16=>['보령압주(사기)', '[전투] 사기 보정 +10'],
|
||||
17=>['철벽서(훈련)', '[전투] 훈련 보정 +14'],
|
||||
18=>['단결도(훈련)', '[전투] 훈련 보정 +14'],
|
||||
19=>['춘화첩(사기)', '[전투] 사기 보정 +14'],
|
||||
20=>['초선화(사기)', '[전투] 사기 보정 +14'],
|
||||
21=>['육도(계략)', '[계략] 화계·탈취·파괴·선동 : 성공률 +20%p'],
|
||||
22=>['삼략(계략)', '[계략] 화계·탈취·파괴·선동 : 성공률 +20%p'],
|
||||
23=>['청낭서(의술)', '[군사] 매 턴마다 자신(100%)과 소속 도시 장수(적 포함 50%) 부상 회복<br>[전투] 페이즈마다 20% 확률로 치료 발동(아군 피해 1/3 감소)'],
|
||||
|
||||
+32
-2
@@ -973,7 +973,7 @@ function updateNationState() {
|
||||
$connect=$db->get();
|
||||
|
||||
$history = array();
|
||||
$admin = $gameStor->getValues(['year', 'month', 'fiction', 'startyear', 'show_img_level', 'turnterm']);
|
||||
$admin = $gameStor->getValues(['year', 'month', 'fiction', 'startyear', 'show_img_level', 'turnterm', 'turntime', 'killturn']);
|
||||
|
||||
$query = "select nation,name,level,gennum,tech from nation";
|
||||
$nationresult = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
@@ -1005,8 +1005,10 @@ function updateNationState() {
|
||||
}
|
||||
|
||||
if($nationlevel > $nation['level']) {
|
||||
$levelDiff = $nationlevel - $nation['level'];
|
||||
$oldLevel = $nation['level'];
|
||||
$nation['level'] = $nationlevel;
|
||||
|
||||
|
||||
switch($nationlevel) {
|
||||
case 7:
|
||||
@@ -1031,6 +1033,34 @@ function updateNationState() {
|
||||
}
|
||||
|
||||
|
||||
foreach(range(1, $levelDiff) as $idx){
|
||||
//유니크 아이템 하나 돌리자
|
||||
$targetKillTurn = $admin['killturn'];
|
||||
$targetKillTurn -= 24 * 60 / $admin['turnterm'];
|
||||
$nationGenList = $db->query('SELECT no, level, belong, horse, weap, book, item FROM general WHERE nation = %i AND killturn >= %i AND npc < 2', $nation['nation'], $targetKillTurn);
|
||||
$uniqueLotteryWeightList = [];
|
||||
|
||||
foreach($nationGenList as $nationGen){
|
||||
if($nationGen['horse'] > 6 || $nationGen['weap'] > 6 || $nationGen['book'] > 6 || $nationGen['item'] > 6){
|
||||
continue;
|
||||
}
|
||||
$score = $nationGen['belong'] + 5; //임관 년도 + 5
|
||||
if($nationGen['level'] == 12){
|
||||
$score += 200; //NOTE: 꼬우면 군주하세요.
|
||||
}
|
||||
else if($nationGen['level'] == 11){
|
||||
$score += 70;
|
||||
}
|
||||
else if($nationGen['level'] > 4){
|
||||
$score += 35;
|
||||
}
|
||||
$uniqueLotteryWeightList[$nationGen['no']] = $score;
|
||||
}
|
||||
guaranteedUniqueItemLottery($uniqueLotteryWeightList, '작위보상');
|
||||
}
|
||||
|
||||
|
||||
|
||||
$lastAssemblerID = $gameStor->assembler_id??0;
|
||||
for($levelGen = max(1, $oldLevel) + 1; $levelGen <= $nationlevel; $levelGen+=1){
|
||||
if(in_array($levelGen, [3, 5, 7])){
|
||||
@@ -1043,7 +1073,7 @@ function updateNationState() {
|
||||
while($genStep > 0){
|
||||
$lastAssemblerID += 1;
|
||||
$npcObj = new Scenario\NPC(
|
||||
999, '부대장'.$lastAssemblerID, null, $nation['nation'], null,
|
||||
999, sprintf('부대장%3d',$lastAssemblerID), null, $nation['nation'], null,
|
||||
10, 10, 10, 1, $admin['year'] - 15, $admin['year'] + 15, '은둔', '척사'
|
||||
);
|
||||
$npcObj->npc = 5;
|
||||
|
||||
+207
-56
@@ -1,10 +1,82 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
class AIAllowedAction{
|
||||
|
||||
public $develop = true;
|
||||
public $warp = true;
|
||||
|
||||
public $randomRecruit = true;
|
||||
public $recruit = true;
|
||||
public $recruit_high = false;
|
||||
public $train = true;
|
||||
public $atmos = true;
|
||||
public $battle = true;
|
||||
|
||||
public $appointment = true;
|
||||
public $changeWarCondition = true;
|
||||
public $donation = true;
|
||||
public $buySellRice = true;
|
||||
|
||||
public $staffAction = true;
|
||||
|
||||
function __construct($npc, $aiOptions){
|
||||
if($npc >= 2){
|
||||
return;
|
||||
}
|
||||
|
||||
$this->develop = false;
|
||||
$this->warp = false;
|
||||
|
||||
$this->randomRecruit = false;
|
||||
$this->recruit = false;
|
||||
$this->recruit_high = false;
|
||||
$this->train = false;
|
||||
$this->atmos = false;
|
||||
$this->battle = false;
|
||||
|
||||
$this->appointment = false;
|
||||
$this->changeWarCondition = false;
|
||||
$this->donation = false;
|
||||
$this->buySellRice = true;
|
||||
|
||||
$this->staffAction = false;
|
||||
|
||||
foreach($aiOptions as $key=>$value){
|
||||
assert($value);
|
||||
switch($key){
|
||||
case 'develop':
|
||||
$this->develop = true;
|
||||
break;
|
||||
case 'warp':
|
||||
$this->warp = true;
|
||||
break;
|
||||
case 'recruit_high':
|
||||
$this->recruit_high = true;
|
||||
case 'recruit':
|
||||
$this->recruit = true;
|
||||
$this->changeWarCondition = true;
|
||||
break;
|
||||
case 'train':
|
||||
$this->train = true;
|
||||
$this->atmos = true;
|
||||
$this->changeWarCondition = true;
|
||||
break;
|
||||
case 'battle':
|
||||
$this->battle = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function SetDevelop($genType, $no, $city, $tech) {
|
||||
$db = DB::db();
|
||||
$connect=$db->get();
|
||||
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
[$startyear, $year] = $gameStor->getValuesAsArray(['startyear', 'year']);
|
||||
|
||||
$query = "select rate,pop/pop2*100 as po,comm/comm2*100 as co,def/def2*100 as de,wall/wall2*100 as wa,secu/secu2*100 as se,agri/agri2*100 as ag from city where city='$city'";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
$city = MYDB_fetch_array($result);
|
||||
@@ -43,20 +115,20 @@ function SetDevelop($genType, $no, $city, $tech) {
|
||||
case 3: //지내정장
|
||||
if($prob < 40) {
|
||||
if($city['ag'] < 99) { $command = EncodeCommand(0, 0, 0, 1); } //농업
|
||||
elseif($tech < 10000) { $command = EncodeCommand(0, 0, 0, 3); } //기술
|
||||
elseif(!TechLimit($startyear, $year, $tech)) { $command = EncodeCommand(0, 0, 0, 3); } //기술
|
||||
elseif($city['po'] < 99) { $command = EncodeCommand(0, 0, 0, 7); } //정장
|
||||
else { $command = EncodeCommand(0, 0, 0, 9); } //조달
|
||||
} elseif($prob < 80) {
|
||||
if($city['co'] < 99) { $command = EncodeCommand(0, 0, 0, 2); } //상업
|
||||
elseif($tech < 10000) { $command = EncodeCommand(0, 0, 0, 3); } //기술
|
||||
elseif(!TechLimit($startyear, $year, $tech)) { $command = EncodeCommand(0, 0, 0, 3); } //기술
|
||||
elseif($city['po'] < 99) { $command = EncodeCommand(0, 0, 0, 7); } //정장
|
||||
else { $command = EncodeCommand(0, 0, 0, 9); } //조달
|
||||
} elseif($prob < 90) {
|
||||
if($tech < 10000) { $command = EncodeCommand(0, 0, 0, 3); } //기술
|
||||
if(!TechLimit($startyear, $year, $tech)) { $command = EncodeCommand(0, 0, 0, 3); } //기술
|
||||
elseif($city['po'] < 99) { $command = EncodeCommand(0, 0, 0, 7); } //정장
|
||||
else { $command = EncodeCommand(0, 0, 0, 9); } //조달
|
||||
} else {
|
||||
if($tech < 10000) { $command = EncodeCommand(0, 0, 0, 3 + (rand() % 2) * 6); } //기술, 조달
|
||||
if(!TechLimit($startyear, $year, $tech)) { $command = EncodeCommand(0, 0, 0, 3 + (rand() % 2) * 6); } //기술, 조달
|
||||
else { $command = EncodeCommand(0, 0, 0, 29); }
|
||||
}
|
||||
break;
|
||||
@@ -80,7 +152,7 @@ function SetDevelop($genType, $no, $city, $tech) {
|
||||
return;
|
||||
}
|
||||
|
||||
function SetCrew($no, $nationID, $personal, $gold, $leader, $genType, $tech, $dex0, $dex10, $dex20, $dex30, $dex40) {
|
||||
function SetCrew($no, $nationID, $personal, $gold, $leader, $genType, $tech, $dex0, $dex10, $dex20, $dex30, $dex40, $currentCrewType, AIAllowedAction $allowedAction) {
|
||||
$db = DB::db();
|
||||
$connect=$db->get();
|
||||
|
||||
@@ -157,7 +229,13 @@ function SetCrew($no, $nationID, $personal, $gold, $leader, $genType, $tech, $de
|
||||
}
|
||||
|
||||
if($types){
|
||||
$type = Util::choiceRandom($types);
|
||||
if(!$allowedAction->randomRecruit && in_array($currentCrewType, $types) && $type != GameUnitConst::DEFAULT_CREWTYPE){
|
||||
$type = $currentCrewType;
|
||||
}
|
||||
else{
|
||||
$type = Util::choiceRandom($types);
|
||||
}
|
||||
|
||||
}
|
||||
else{
|
||||
$type = GameUnitConst::DEFAULT_CREWTYPE;
|
||||
@@ -172,19 +250,25 @@ function SetCrew($no, $nationID, $personal, $gold, $leader, $genType, $tech, $de
|
||||
|
||||
$crew = intdiv($gold, $cost);
|
||||
if($leader < $crew) { $crew = $leader; }
|
||||
$command = EncodeCommand(0, $type, $crew, 11);
|
||||
|
||||
if($allowedAction->recruit_high && $crew * $cost * 6 < $gold){
|
||||
$command = EncodeCommand(0, $type, $crew, 12);
|
||||
}
|
||||
else{
|
||||
$command = EncodeCommand(0, $type, $crew, 11);
|
||||
}
|
||||
|
||||
$query = "update general set turn0='$command' where no='$no'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
return;
|
||||
}
|
||||
|
||||
function processAI($no) {
|
||||
function processAI($no, &$reduce_turn) {
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$connect=$db->get();
|
||||
|
||||
$admin = $gameStor->getValues(['startyear','year','month','turnterm','scenario','gold_rate','rice_rate']);
|
||||
$admin = $gameStor->getValues(['startyear','year','month','turnterm','scenario','gold_rate','rice_rate','killturn','autorun_user']);
|
||||
// 초반 여부
|
||||
if($admin['startyear']+2 > $admin['year'] || ($admin['startyear']+2 == $admin['year'] && $admin['month'] < 5)) {
|
||||
$isStart = 1;
|
||||
@@ -192,7 +276,8 @@ function processAI($no) {
|
||||
$isStart = 0;
|
||||
}
|
||||
|
||||
$query = "select no,turn0,npcid,name,nation,nations,city,level,npcmsg,personal,leader,intel,power,gold,rice,crew,train,atmos,troop,npc,affinity,mode,injury,picture,imgsvr,killturn,makelimit,dex0,dex10,dex20,dex30,dex40 from general where no='$no'";
|
||||
|
||||
$query = "select no,turn0,npcid,name,nation,nations,city,level,npcmsg,personal,leader,intel,power,gold,rice,crew,crewtype,train,atmos,troop,npc,affinity,mode,injury,picture,imgsvr,killturn,makelimit,dex0,dex10,dex20,dex30,dex40 from general where no='$no'";
|
||||
$result = MYDB_query($query, $connect) or Error("processAI01 ".MYDB_error($connect),"");
|
||||
$general = MYDB_fetch_array($result);
|
||||
|
||||
@@ -220,6 +305,8 @@ function processAI($no) {
|
||||
|
||||
}
|
||||
else{
|
||||
$newKillTurn = ($general['killturn'] + Util::randRangeInt(1, 4)) % 5;
|
||||
$newKillTurn += 70;
|
||||
$command = EncodeCommand(0, 0, 0, 26); //집합
|
||||
$db->update('general', [
|
||||
'turn0'=>$command,
|
||||
@@ -228,22 +315,62 @@ function processAI($no) {
|
||||
'turn3'=>$command,
|
||||
'turn4'=>$command,
|
||||
'turn5'=>$command,
|
||||
'killturn'=>rand(70,75),
|
||||
'killturn'=>$newKillTurn,
|
||||
], 'no=%i', $general['no']);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$autorun_user = $admin['autorun_user'];
|
||||
if($general['npc'] < 2){
|
||||
$autorun_limit_minutes = $autorun_user['limit_minutes']??0;
|
||||
if(!$autorun_limit_minutes){
|
||||
return;
|
||||
}
|
||||
if($general['nation'] == 0){
|
||||
return;
|
||||
}
|
||||
$blankTurnCnt = $admin['killturn']-$general['killturn'];
|
||||
if($blankTurnCnt * $admin['turnterm'] > $autorun_limit_minutes){
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 입력된 턴이 있으면 그것 실행
|
||||
if(DecodeCommand($general['turn0'])[0] != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$query = "select city,region,nation,level,path,rate,gen1,gen2,gen3,pop,supply,front from city where city='{$general['city']}'";
|
||||
$reduce_turn = true;
|
||||
|
||||
$allowedAction = new AIAllowedAction($general['npc'], $autorun_user['options']??[]);
|
||||
if($general['troop'] && $allowedAction->warp){
|
||||
$troopLeader = $db->query(
|
||||
'SELECT general.no,general.name,general.city,turn0,troop,general.nation, city.nation AS city_nation FROM general JOIN city ON city.city = general.city WHERE troop = %i', $general['troop']
|
||||
);
|
||||
|
||||
if(DecodeCommand($troopLeader['turn0'])[0] != 26){
|
||||
//valid
|
||||
}
|
||||
else if($troopLeader['nation'] == $troopLeader['city_nation']){
|
||||
//valid
|
||||
}
|
||||
else{
|
||||
$allowedAction->warp = false;
|
||||
}
|
||||
}
|
||||
|
||||
$query = "select city,region,nation,level,path,rate,gen1,gen2,gen3,pop,supply,front,trade from city where city='{$general['city']}'";
|
||||
$result = MYDB_query($query, $connect) or Error("processAI02 ".MYDB_error($connect),"");
|
||||
$city = MYDB_fetch_array($result);
|
||||
|
||||
if ($general['npc'] < 2 && $allowedAction->buySellRice) {
|
||||
if($city['trade'] == 0){
|
||||
$allowedAction->buySellRice = false;
|
||||
}
|
||||
}
|
||||
|
||||
$query = "select nation,level,tech,gold,rice,rate,type,color,name,war from nation where nation='{$general['nation']}'";
|
||||
$result = MYDB_query($query, $connect) or Error("processAI03 ".MYDB_error($connect),"");
|
||||
$nation = MYDB_fetch_array($result)??[
|
||||
@@ -322,17 +449,20 @@ function processAI($no) {
|
||||
$tech = getTechCost($nation['tech']);
|
||||
$resrc = $tech * 700;//XXX: 왜 700이지?
|
||||
|
||||
if($general['atmos'] >= 90 && $general['train'] >= 90) {
|
||||
if($general['mode'] == 0) {
|
||||
$query = "update general set mode=1 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error("processAI05 ".MYDB_error($connect),"");
|
||||
}
|
||||
} else {
|
||||
if($general['mode'] == 1) {
|
||||
$query = "update general set mode=0 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error("processAI05 ".MYDB_error($connect),"");
|
||||
if($allowedAction->changeWarCondition){
|
||||
if($general['atmos'] >= 90 && $general['train'] >= 90) {
|
||||
if($general['mode'] == 0) {
|
||||
$query = "update general set mode=1 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error("processAI05 ".MYDB_error($connect),"");
|
||||
}
|
||||
} else {
|
||||
if($general['mode'] == 1) {
|
||||
$query = "update general set mode=0 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error("processAI05 ".MYDB_error($connect),"");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//운영자메시지 출력 하루 6번..?
|
||||
//특별 메세지 있는 경우 출력 하루 4번
|
||||
@@ -364,7 +494,7 @@ function processAI($no) {
|
||||
|
||||
$rulerNation = $db->queryFirstField('SELECT nation FROM general WHERE `level`=12 AND npc=9 and nation not in %li ORDER BY RAND() limit 1', Json::decode($general['nations']));
|
||||
|
||||
if($ruler) {
|
||||
if($rulerNation) {
|
||||
$command = EncodeCommand(0, 0, $rulerNation, 25); //임관
|
||||
} else {
|
||||
$command = EncodeCommand(0, 0, 0, 42); //견문
|
||||
@@ -372,7 +502,7 @@ function processAI($no) {
|
||||
$query = "update general set turn0='$command' where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error("processAI07 ".MYDB_error($connect),"");
|
||||
return;
|
||||
} elseif($general['npc'] != 9 && $general['level'] == 0) {
|
||||
} elseif($general['npc'] != 9 && $general['level'] == 0 && $allowedAction->appointment) {
|
||||
switch(Util::choiceRandomUsingWeight([11.4, 40, 20, 28.6])) {
|
||||
//임관 10%
|
||||
case 0:
|
||||
@@ -397,7 +527,7 @@ function processAI($no) {
|
||||
}
|
||||
else{
|
||||
//랜임 커맨드 입력.
|
||||
$command = EncodeCommand(0, 0, 99, 25); //임관
|
||||
$command = EncodeCommand(0, 99, 0, 25); //임관
|
||||
}
|
||||
break;
|
||||
case 1: //거병이나 견문 40%
|
||||
@@ -427,7 +557,7 @@ function processAI($no) {
|
||||
|
||||
$rulerCommand = 0;
|
||||
//군주가 할일
|
||||
if($general['level'] == 12) {
|
||||
if($general['level'] == 12 && $allowedAction->staffAction) {
|
||||
//오랑캐인데 공격 못하면 바로 방랑/해산
|
||||
if($general['npc'] == 9 && $dipState == 0 && !$attackable) {
|
||||
//방랑군이냐 아니냐
|
||||
@@ -542,7 +672,7 @@ function processAI($no) {
|
||||
}
|
||||
|
||||
//방랑군 아니고, 입력된 턴이 없을때 수뇌부가 할일
|
||||
if($nation['level'] != 0 && $general['level'] >= 5 && $rulerCommand == 0) {
|
||||
if($nation['level'] != 0 && $general['level'] >= 5 && $rulerCommand == 0 && $allowedAction->staffAction) {
|
||||
$command = NPCStaffWork($general, $nation, $dipState);
|
||||
if($command){
|
||||
$db->update('nation', [
|
||||
@@ -564,7 +694,7 @@ function processAI($no) {
|
||||
} elseif($general['injury'] > 10) {
|
||||
// 부상 2달 이상이면 요양
|
||||
$command = EncodeCommand(0, 0, 0, 50); //요양
|
||||
} elseif($nation['level'] == 0) {
|
||||
} elseif($nation['level'] == 0 && $allowedAction->appointment) {
|
||||
//방랑군일때
|
||||
if($admin['startyear']+3 <= $admin['year']) {
|
||||
$command = EncodeCommand(0, 0, 0, 45); //하야
|
||||
@@ -586,7 +716,7 @@ function processAI($no) {
|
||||
return;
|
||||
}
|
||||
|
||||
if($general['leader'] < 40){
|
||||
if($general['leader'] < 40 && $allowedAction->donation){
|
||||
//무지장인데
|
||||
|
||||
if(
|
||||
@@ -621,7 +751,7 @@ function processAI($no) {
|
||||
}
|
||||
|
||||
//국가 병량이 없을때 바로 헌납
|
||||
if($nation['rice'] < 2000 && $general['rice'] > 200) {
|
||||
if($nation['rice'] < 2000 && $general['rice'] > 200 && $allowedAction->donation) {
|
||||
$amount = intdiv($general['rice'] - 200, 100) + 1;
|
||||
if($amount > 20) { $amount = 20; }
|
||||
$command = EncodeCommand(0, 2, $amount, 44); //헌납
|
||||
@@ -641,23 +771,23 @@ function processAI($no) {
|
||||
|
||||
$target = array();
|
||||
// 평시거나 초반아니면서 공격가능 없으면서 병사 있으면 해제(25%)
|
||||
if($dipState == 0 && $isStart == 0 && !$attackable && $general['crew'] > 0 && rand()% 100 < 25) {
|
||||
if($allowedAction->recruit && $dipState == 0 && $isStart == 0 && !$attackable && $general['crew'] > 0 && rand()% 100 < 25) {
|
||||
$command = EncodeCommand(0, 0, 0, 17); //소집해제
|
||||
} elseif($dipState <= 1 || $isStart == 1) {
|
||||
//평시이거나 선포있어도 초반이면
|
||||
if($general['gold'] + $general['rice'] < 200) { $command = EncodeCommand(0, 0, 0, 9); } //금쌀없으면 조달9
|
||||
elseif($general['rice'] > 100 && $city['rate'] < 95) { $command = EncodeCommand(0, 0, 0, 4); } //우선 선정
|
||||
elseif($general['gold'] < 100) { //금없으면 쌀팜
|
||||
elseif($general['rice'] > 100 && $city['rate'] < 95 && $allowedAction->develop) { $command = EncodeCommand(0, 0, 0, 4); } //우선 선정
|
||||
elseif($general['gold'] < 100 && $allowedAction->buySellRice) { //금없으면 쌀팜
|
||||
$amount = intdiv(($general['rice'] - $general['gold'])/2, 100); // 100단위
|
||||
$command = EncodeCommand(0, 1, $amount, 49); //팜
|
||||
} elseif($general['gold'] < 500 && $general['rice'] < 500) { $command = EncodeCommand(0, 0, 0, 1); } //금쌀되면 내정
|
||||
elseif($general['rice'] < 100) { //쌀없으면 쌀삼
|
||||
} elseif($general['gold'] < 500 && $general['rice'] < 500 && $allowedAction->develop) { $command = EncodeCommand(0, 0, 0, 1); } //금쌀되면 내정
|
||||
elseif($general['rice'] < 100 && $allowedAction->buySellRice) { //쌀없으면 쌀삼
|
||||
$amount = intdiv(($general['gold'] - $general['rice'])/2, 100); // 100단위
|
||||
$command = EncodeCommand(0, 2, $amount, 49); //삼
|
||||
} elseif($genType >= 2) { $command = EncodeCommand(0, 0, 0, 1); } //내정장일때 내정
|
||||
} elseif($genType >= 2 && $allowedAction->develop) { $command = EncodeCommand(0, 0, 0, 1); } //내정장일때 내정
|
||||
else {
|
||||
//현도시가 전방이면 공격 가능성 체크
|
||||
if($city['front'] > 0) {
|
||||
if($city['front'] > 0 && $allowedAction->battle) {
|
||||
//주변도시 체크
|
||||
$paths = explode('|', $city['path']);
|
||||
for($i=0; $i < count($paths); $i++) {
|
||||
@@ -682,6 +812,11 @@ function processAI($no) {
|
||||
$sel = rand() % 10;
|
||||
if($selCity['dev'] > 95) { $sel = 9; }
|
||||
elseif($selCity['dev'] < 70) { $sel = 0; }
|
||||
|
||||
if(!$allowedAction->warp){
|
||||
$sel = 0;
|
||||
}
|
||||
|
||||
switch($sel) {
|
||||
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: // 그대로 내정 80 %
|
||||
$command = EncodeCommand(0, 0, 0, 1);
|
||||
@@ -724,22 +859,22 @@ function processAI($no) {
|
||||
|
||||
} else { // 공격인 경우
|
||||
if($general['crew'] < 1000 && $general['gold'] >= $resrc && $general['rice'] >= $resrc) { //자원되고, 병사없을때
|
||||
if($city['pop'] > 40000) { $command = EncodeCommand(0, 0, 0, 11); }
|
||||
if($city['pop'] > 40000 && $allowedAction->recruit) { $command = EncodeCommand(0, 0, 0, 11); }
|
||||
else { $command = EncodeCommand(0, 0, 0, 1); }
|
||||
} elseif($general['rice'] < $resrc && $general['rice'] <= $general['gold']) {
|
||||
} elseif($general['rice'] < $resrc && $general['rice'] <= $general['gold'] && $allowedAction->buySellRice) {
|
||||
//금이 더 많으면 매매
|
||||
$amount = intdiv(($general['gold'] - $general['rice']) / 2, 100); // 100단위
|
||||
if($amount > 0) { $command = EncodeCommand(0, 2, $amount, 49); }//삼
|
||||
else { $command = EncodeCommand(0, 0, 0, (rand()%2)*8 + 1); } // 내정, 조달
|
||||
} elseif($general['gold'] < $resrc && $general['rice'] > $general['gold']) {
|
||||
} elseif($general['gold'] < $resrc && $general['rice'] > $general['gold'] && $allowedAction->buySellRice) {
|
||||
//쌀이 더 많으면 매매
|
||||
$amount = intdiv(($general['rice'] - $general['gold']) / 2, 100); // 100단위
|
||||
if($amount > 0) { $command = EncodeCommand(0, 1, $amount, 49); }//팜
|
||||
else { $command = EncodeCommand(0, 0, 0, (rand()%2)*8 + 1); } // 내정, 조달
|
||||
//자원, 병사 모두 충족
|
||||
} elseif($general['crew'] >= 1000 && $general['train'] < 90) {
|
||||
} elseif($general['crew'] >= 1000 && $general['train'] < 90 && $allowedAction->train) {
|
||||
$command = EncodeCommand(0, 0, 0, 13); //훈련
|
||||
} elseif($general['crew'] >= 1000 && $general['atmos'] < 90) {
|
||||
} elseif($general['crew'] >= 1000 && $general['atmos'] < 90 && $allowedAction->atmos) {
|
||||
$command = EncodeCommand(0, 0, 0, 14); //사기진작
|
||||
} else {
|
||||
//공격
|
||||
@@ -759,18 +894,18 @@ function processAI($no) {
|
||||
|
||||
//전시일때
|
||||
if($general['gold'] + $general['rice'] < $resrc*2) { $command = EncodeCommand(0, 0, 0, 9); } //금쌀없으면 조달
|
||||
elseif($general['rice'] > $resrc && $city['rate'] < 95 && $city['front'] == 0) { $command = EncodeCommand(0, 0, 0, 4); } // 우선 선정
|
||||
elseif($general['rice'] > $resrc && $city['rate'] < 50 && $city['front'] > 0) { $command = EncodeCommand(0, 0, 0, 4); } // 우선 선정
|
||||
elseif($general['gold'] < $resrc || ($general['gold'] < $resrc *2 && $general['rice'] > $resrc * 6)) { // 금없으면 쌀팜
|
||||
elseif($general['rice'] > $resrc && $city['rate'] < 95 && $city['front'] == 0 && $allowedAction->develop) { $command = EncodeCommand(0, 0, 0, 4); } // 우선 선정
|
||||
elseif($general['rice'] > $resrc && $city['rate'] < 50 && $city['front'] > 0 && $allowedAction->develop) { $command = EncodeCommand(0, 0, 0, 4); } // 우선 선정
|
||||
elseif(($general['gold'] < $resrc || ($general['gold'] < $resrc *2 && $general['rice'] > $resrc * 6)) && $allowedAction->buySellRice) { // 금없으면 쌀팜
|
||||
$amount = intdiv(($general['rice'] - $general['gold'])/2, 100); // 100단위
|
||||
if($amount > 0) { $command = EncodeCommand(0, 1, $amount, 49); }// 팜
|
||||
else { $command = EncodeCommand(0, 0, 0, 9); } // 조달
|
||||
} elseif($general['rice'] < $resrc || ($general['rice'] < $resrc *2 && $general['gold'] > $resrc * 6)) { // 쌀없으면 쌀삼
|
||||
} elseif(($general['rice'] < $resrc || ($general['rice'] < $resrc *2 && $general['gold'] > $resrc * 6)) && $allowedAction->buySellRice) { // 쌀없으면 쌀삼
|
||||
$amount = intdiv(($general['gold'] - $general['rice'])/2, 100); // 100단위
|
||||
if($amount > 0) { $command = EncodeCommand(0, 2, $amount, 49); }// 팜
|
||||
else { $command = EncodeCommand(0, 0, 0, 9); } // 조달
|
||||
} elseif($genType >= 2) { $command = EncodeCommand(0, 0, 0, 1); } //내정장일때 내정
|
||||
elseif($general['crew'] < 1000 && $general['gold'] >= $resrc && $general['rice'] >= $resrc) {
|
||||
elseif($general['crew'] < 1000 && $general['gold'] >= $resrc && $general['rice'] >= $resrc && $allowedAction->recruit) {
|
||||
$query = "select no from general where nation='{$general['nation']}'";
|
||||
$result = MYDB_query($query, $connect) or Error("processAI16 ".MYDB_error($connect),"");
|
||||
$genCount = MYDB_num_rows($result);
|
||||
@@ -790,12 +925,12 @@ function processAI($no) {
|
||||
// 전체 인구 대비 확률로 현지에서 징병
|
||||
if($city['pop'] > 40000 && 100 + $ratio - $ratio2 > $ratio3) {
|
||||
$command = EncodeCommand(0, 0, 0, 11); //인구 되면 징병
|
||||
} else {
|
||||
} else{
|
||||
// 인구 안되면 4만 이상인 도시로 워프
|
||||
$query = "select city from city where nation='{$general['nation']}' and pop>40000 and supply='1' order by rand() limit 0,1";
|
||||
$result = MYDB_query($query, $connect) or Error("processAI16 ".MYDB_error($connect),"");
|
||||
$cityCount = MYDB_num_rows($result);
|
||||
if($cityCount > 0) {
|
||||
if($cityCount > 0 && $allowedAction->warp) {
|
||||
$selCity = MYDB_fetch_array($result);
|
||||
//워프
|
||||
$query = "update general set city='{$selCity['city']}' where no='{$general['no']}'";
|
||||
@@ -805,17 +940,17 @@ function processAI($no) {
|
||||
$query = "update general set turn0='$command' where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error("processAI23 ".MYDB_error($connect),"");
|
||||
return;
|
||||
} else {
|
||||
} else if($allowedAction->develop){
|
||||
$command = EncodeCommand(0, 0, 0, 7); //인구 안되면 정장
|
||||
}
|
||||
}
|
||||
} elseif($general['crew'] >= 1000 && $general['train'] < 90) {
|
||||
} elseif($general['crew'] >= 1000 && $general['train'] < 90 && $allowedAction->train) {
|
||||
if($general['atmos'] >= 90 && $general['train'] >= 60 && $general['mode'] == 0) {
|
||||
$query = "update general set mode=1 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error("processAI05 ".MYDB_error($connect),"");
|
||||
}
|
||||
$command = EncodeCommand(0, 0, 0, 13); //훈련
|
||||
} elseif($general['crew'] >= 1000 && $general['atmos'] < 90) {
|
||||
} elseif($general['crew'] >= 1000 && $general['atmos'] < 90 && $allowedAction->atmos) {
|
||||
if($general['atmos'] >= 60 && $general['train'] >= 90 && $general['mode'] == 0) {
|
||||
$query = "update general set mode=1 where no='{$general['no']}'";
|
||||
MYDB_query($query, $connect) or Error("processAI05 ".MYDB_error($connect),"");
|
||||
@@ -839,7 +974,7 @@ function processAI($no) {
|
||||
if($dip['state'] == 0) $target[] = $targetCity['city'];
|
||||
}
|
||||
}
|
||||
if(count($target) == 0) {
|
||||
if(count($target) == 0 && $allowedAction->warp) {
|
||||
//전방 도시 선택, 30% 확률로 태수 있는 전방으로 워프
|
||||
if(rand()%100 < 30) {
|
||||
$query = "select city from city where nation='{$general['nation']}' and supply='1' and front>0 order by gen1 desc,rand() limit 0,1";
|
||||
@@ -874,20 +1009,36 @@ function processAI($no) {
|
||||
} else {
|
||||
$command = EncodeCommand(0, 0, 0, (rand()%2)*8 + 1); //공격 가능도시가 없고 워프도 안되면 내정, 조달
|
||||
}
|
||||
} elseif($nation['war'] == 1) {
|
||||
} elseif($nation['war'] == 1 || !$allowedAction->battle) {
|
||||
//전금이면 내정, 조달
|
||||
$command = EncodeCommand(0, 0, 0, (rand()%2)*8 + 1); //내정, 조달
|
||||
} else { $command = EncodeCommand(0, 0, $target[rand()%count($target)], 16); } //있으면 공격
|
||||
} else if($target){ $command = EncodeCommand(0, 0, $target[rand()%count($target)], 16); } //있으면 공격
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch($command) {
|
||||
case EncodeCommand(0, 0, 0, 1): //내정
|
||||
SetDevelop($genType, $general['no'], $general['city'], $nation['tech']);
|
||||
if($allowedAction->develop){
|
||||
SetDevelop($genType, $general['no'], $general['city'], $nation['tech']);
|
||||
}
|
||||
else{
|
||||
$db->update('general', [
|
||||
'turn0'=>EncodeCommand(0, 0, 0, 29)
|
||||
], 'no=%i', $general['no']);
|
||||
}
|
||||
|
||||
return;
|
||||
case EncodeCommand(0, 0, 0, 11): //징병
|
||||
SetCrew($general['no'], $general['nation'], $general['personal'], $general['gold'], $general['leader'], $genType, $nation['tech'], $general['dex0'], $general['dex10'], $general['dex20'], $general['dex30'], $general['dex40']);
|
||||
if ($allowedAction->recruit) {
|
||||
SetCrew($general['no'], $general['nation'], $general['personal'], $general['gold'], $general['leader'], $genType, $nation['tech'], $general['dex0'], $general['dex10'], $general['dex20'], $general['dex30'], $general['dex40'], $general['crewtype'], $allowedAction);
|
||||
}
|
||||
else{
|
||||
$db->update('general', [
|
||||
'turn0'=>EncodeCommand(0, 0, 0, 29)
|
||||
], 'no=%i', $general['no']);
|
||||
}
|
||||
|
||||
return;
|
||||
default:
|
||||
$query = "update general set turn0='$command' where no='{$general['no']}'";
|
||||
|
||||
+106
-14
@@ -159,6 +159,17 @@ function CriticalRatioDomestic(&$general, $type) {
|
||||
);
|
||||
}
|
||||
|
||||
function calcLeadershipBonus($generalLevel, $nationLevel):int{
|
||||
if($generalLevel == 12) {
|
||||
$lbonus = $nationLevel * 2;
|
||||
} elseif($generalLevel >= 5) {
|
||||
$lbonus = $nationLevel;
|
||||
} else {
|
||||
$lbonus = 0;
|
||||
}
|
||||
return $lbonus;
|
||||
}
|
||||
|
||||
/**
|
||||
* 수뇌직 통솔 보너스 계산
|
||||
*
|
||||
@@ -168,13 +179,7 @@ function CriticalRatioDomestic(&$general, $type) {
|
||||
* @return int 계산된 $general['lbonus'] 값
|
||||
*/
|
||||
function setLeadershipBonus(&$general, $nationLevel){
|
||||
if($general['level'] == 12) {
|
||||
$lbonus = $nationLevel * 2;
|
||||
} elseif($general['level'] >= 5) {
|
||||
$lbonus = $nationLevel;
|
||||
} else {
|
||||
$lbonus = 0;
|
||||
}
|
||||
$lbonus = calcLeadershipBonus($general['level'], $nationLevel);
|
||||
$general['lbonus'] = $lbonus;
|
||||
return $lbonus;
|
||||
}
|
||||
@@ -273,8 +278,15 @@ function process_1(&$general, $type) {
|
||||
$exp = CharExperience($exp, $general['personal']);
|
||||
$ded = CharDedication($ded, $general['personal']);
|
||||
|
||||
if($city['front'] == 1 && $city['city'] != $nation['capital']){
|
||||
$score *= 0.5;
|
||||
if($city['front'] == 1){
|
||||
if($city['city'] == $nation['capital']){
|
||||
$degrade = 1 - ($admin['year'] - $admin['startyear'] - 5) * 0.025;
|
||||
$score *= Util::valueFit($degrade, 0.5, 1);
|
||||
}
|
||||
else{
|
||||
$score *= 0.5;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$score += $city["$stype"];
|
||||
@@ -373,7 +385,7 @@ function process_3(&$general) {
|
||||
$gencount = $db->queryFirstField('SELECT count(no) FROM general WHERE nation=%i', $general['nation']);
|
||||
$gencnt_eff = $db->queryFirstField('SELECT count(no) FROM general WHERE nation=%i AND npc != 5', $general['nation']);
|
||||
if ($gencnt_eff < GameConst::$initialNationGenLimit) {
|
||||
$gencount = GameConst::$initialNationGenLimit;
|
||||
$gencount = max(GameConst::$initialNationGenLimit, $gencount);
|
||||
$gencnt_eff = GameConst::$initialNationGenLimit;
|
||||
}
|
||||
|
||||
@@ -571,14 +583,27 @@ function process_5(&$general, $type) {
|
||||
$exp = $score * 0.7;
|
||||
$ded = $score * 1.0;
|
||||
|
||||
if($city['front'] == 1 && $city['city'] != $nation['capital']){
|
||||
if($stype == 'def'){
|
||||
$score *= 0.5;
|
||||
if($city['front'] == 1){
|
||||
if($city['city'] == $nation['capital']){
|
||||
if($stype == 'def'){
|
||||
$degrade = 1 - ($admin['year'] - $admin['startyear'] - 5) * 0.025;
|
||||
$score *= Util::valueFit($degrade, 0.5, 1);
|
||||
}
|
||||
else{
|
||||
$degrade = 1 - ($admin['year'] - $admin['startyear'] - 5) * 0.0375;
|
||||
$score *= Util::valueFit($degrade, 0.25, 1);
|
||||
}
|
||||
}
|
||||
else{
|
||||
$score *= 0.25;
|
||||
if($stype == 'def'){
|
||||
$score *= 0.5;
|
||||
}
|
||||
else{
|
||||
$score *= 0.25;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 성격 보정
|
||||
@@ -2503,6 +2528,73 @@ function process_50(&$general) {
|
||||
pushGenLog($general, $log);
|
||||
}
|
||||
|
||||
|
||||
function process_58(&$general) {
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
$log = [];
|
||||
$alllog = [];
|
||||
$history = [];
|
||||
$date = substr($general['turntime'],11,5);
|
||||
|
||||
$admin = $gameStor->getValues(['year', 'month', 'develcost']);
|
||||
|
||||
$command = DecodeCommand($general['turn0']);
|
||||
|
||||
$fromDexIdx = $command[1];
|
||||
$toDexIdx = $command[2];
|
||||
|
||||
|
||||
|
||||
|
||||
if($general['nation'] == 0) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:재야입니다. 숙련 전환 실패. <1>$date</>";
|
||||
} elseif($general['gold'] < $admin['develcost']) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:자금이 모자랍니다. 숙련 전환 실패. <1>$date</>";
|
||||
} elseif($general['rice'] < $admin['develcost']) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:군량이 모자랍니다. 숙련 전환 실패. <1>$date</>";
|
||||
} elseif($fromDexIdx < 0 || $fromDexIdx > 4 || $toDexIdx < 0 || $toDexIdx > 4){
|
||||
$log[] = "<C>●</>{$admin['month']}월:올바르지 않은 병종 코드입니다. 숙련 전환 실패. <1>$date</>";
|
||||
} elseif($general['dex'.($fromDexIdx*10)] == 0) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:전환할 병종 숙련이 없습니다. 숙련 전환 실패. <1>$date</>";
|
||||
} else {
|
||||
|
||||
$fromOrigDex = $general['dex'.($fromDexIdx*10)];
|
||||
$toOrigDex = $general['dex'.($toDexIdx*10)];
|
||||
|
||||
$cutDex = Util::toInt($fromOrigDex * 0.3);
|
||||
$fromNewDex = $fromOrigDex - $cutDex;
|
||||
$addDex = Util::toInt($cutDex * 2 / 3);
|
||||
$toNewDex = $toOrigDex + $addDex;
|
||||
|
||||
$exp = 10;
|
||||
$exp = CharExperience($exp, $general['personal']);
|
||||
|
||||
$fromCrewStr = GameUnitConst::allType()[$fromDexIdx];
|
||||
$toCrewStr = GameUnitConst::allType()[$toDexIdx];
|
||||
|
||||
|
||||
$josaUl = JosaUtil::pick($cutDex, '을');
|
||||
$josaRo = JosaUtil::pick($addDex, '로');
|
||||
$log[] = "<C>●</>{$admin['month']}월:$fromCrewStr 숙련 {$cutDex}{$josaUl} $toCrewStr 숙련 {$addDex}{$josaRo} 전환했습니다. <1>$date</>";
|
||||
|
||||
$general['leader2'] += 2;
|
||||
|
||||
$db->update('general', [
|
||||
'resturn'=>'SUCCESS',
|
||||
'gold'=>$db->sqleval('gold-%i', $admin['develcost']),
|
||||
'rice'=>$db->sqleval('rice-%i', $admin['develcost']),
|
||||
'experience'=>$db->sqleval('experience+%i',$exp),
|
||||
'leader2'=>$general['leader2'],
|
||||
'dex'.($fromDexIdx*10)=>$fromNewDex,
|
||||
'dex'.($toDexIdx*10)=>$toNewDex,
|
||||
], 'no=%i', $general['no']);
|
||||
}
|
||||
pushGenLog($general, $log);
|
||||
}
|
||||
|
||||
|
||||
function process_99(&$general) {
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
@@ -1894,7 +1894,7 @@ function process_76(&$general) {
|
||||
|
||||
$date = substr($general['turntime'],11,5);
|
||||
|
||||
$admin = $gameStor->getValues(['startyear','year','month','develcost','npccount','turnterm']);
|
||||
$admin = $gameStor->getValues(['startyear','year','month','develcost','npccount','turnterm','turntime']);
|
||||
|
||||
$query = "select nation,supply from city where city='{$general['city']}'";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
@@ -1968,7 +1968,9 @@ function process_76(&$general) {
|
||||
$avgNation = MYDB_fetch_array($result);
|
||||
$gencount = 5 + Util::round($avgNation['gennum'] / 10);
|
||||
|
||||
$avgGen = $db->queryFirstRow('SELECT max(leader+power+intel) as lpi, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) / 4 as dex_t, avg(age) as age, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']);
|
||||
$avgGen = $db->queryFirstRow('SELECT max(leader+power+intel) as lpi, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) as dex_t, avg(age) as age, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']);
|
||||
|
||||
$dexTotal = $avgGen['dex_t'];
|
||||
|
||||
//의병추가
|
||||
$npc = 4;
|
||||
@@ -1979,25 +1981,42 @@ function process_76(&$general) {
|
||||
$stat_tier3 = GameConst::$defaultStatMin + rand()%6;
|
||||
$stat_tier2 = GameConst::$defaultStatTotal - $stat_tier1 - $stat_tier3;
|
||||
$type = Util::choiceRandomUsingWeight([
|
||||
'power'=>5,
|
||||
'intel'=>5,
|
||||
'power0'=>1,
|
||||
'power1'=>1,
|
||||
'power2'=>1,
|
||||
'intel'=>3,
|
||||
'neutral'=>0
|
||||
]);
|
||||
switch($type){
|
||||
case 'power':
|
||||
case 'power0':
|
||||
$leader = $stat_tier1;
|
||||
$power = $stat_tier2;
|
||||
$intel = $stat_tier3;
|
||||
$dexVal = [$dexTotal*5/8, $dexTotal/8, $dexTotal/8, $dexTotal/8];
|
||||
break;
|
||||
case 'power1':
|
||||
$leader = $stat_tier1;
|
||||
$power = $stat_tier2;
|
||||
$intel = $stat_tier3;
|
||||
$dexVal = [$dexTotal/8, $dexTotal*5/8, $dexTotal/8, $dexTotal/8];
|
||||
break;
|
||||
case 'power2':
|
||||
$leader = $stat_tier1;
|
||||
$power = $stat_tier2;
|
||||
$intel = $stat_tier3;
|
||||
$dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal*5/8, $dexTotal/8];
|
||||
break;
|
||||
case 'intel':
|
||||
$leader = $stat_tier1;
|
||||
$power = $stat_tier3;
|
||||
$intel = $stat_tier2;
|
||||
$dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal/8, $dexTotal*5/8];
|
||||
break;
|
||||
case 'neutral':
|
||||
default:
|
||||
$leader = $stat_tier3;
|
||||
$power = $stat_tier1;
|
||||
$intel = $stat_tier2;
|
||||
$dexVal = [$dexTotal/4, $dexTotal/4, $dexTotal/4, $dexTotal/4];
|
||||
break;
|
||||
}
|
||||
// 국내 최고능치 기준으로 랜덤성 스케일링
|
||||
@@ -2051,7 +2070,7 @@ function process_76(&$general) {
|
||||
$affinity = rand() % 150 + 1;
|
||||
$name = "ⓖ의병장{$npcid}";
|
||||
$picture = 'default.jpg';
|
||||
$turntime = getRandTurn($admin['turnterm']);
|
||||
$turntime = getRandTurn($admin['turnterm'], new \DateTimeImmutable($admin['turntime']));
|
||||
$personal = rand() % 10;
|
||||
$bornyear = $admin['year'];
|
||||
$deadyear = $admin['year'] + 3;
|
||||
@@ -2071,7 +2090,7 @@ function process_76(&$general) {
|
||||
'1','100','100','0','".GameUnitConst::DEFAULT_CREWTYPE."','0','0','0',
|
||||
'0','0','0','$turntime','$killturn','{$avgGen['age']}','1','$personal','0','0','0','0','',
|
||||
'0','$bornyear','$deadyear',
|
||||
'{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex40']}'
|
||||
'{$dexVal[0]}','{$dexVal[1]}','{$dexVal[2]}','{$dexVal[3]}','{$avgGen['dex40']}'
|
||||
)",
|
||||
$connect
|
||||
) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
@@ -80,10 +80,11 @@ function process_25(&$general) {
|
||||
$city = MYDB_fetch_array($result);
|
||||
|
||||
$command = DecodeCommand($general['turn0']);
|
||||
$type = $command[2];
|
||||
$where = $command[1];
|
||||
|
||||
if($admin['join_mode'] == 'onlyRandom' && $where < 98){
|
||||
$where = 99;
|
||||
if($admin['join_mode'] == 'onlyRandom' && $type < 98){
|
||||
$type = 99;
|
||||
}
|
||||
|
||||
$nation = null;
|
||||
@@ -91,7 +92,7 @@ function process_25(&$general) {
|
||||
$joinedNations = Json::decode($general['nations']);
|
||||
|
||||
// 랜덤임관인 경우
|
||||
if($general['npc'] >= 2 && $where >= 98 && !$admin['fiction'] && 1000 <= $admin['scenario'] && $admin['scenario'] < 2000){
|
||||
if($general['npc'] >= 2 && $type >= 98 && !$admin['fiction'] && 1000 <= $admin['scenario'] && $admin['scenario'] < 2000){
|
||||
//'사실' 모드에서는 '성향'에 우선을 두되, 장수수, 랜덤에 비중을 둠
|
||||
$nations = $db->query(
|
||||
'SELECT nation.`name` as `name`,nation.nation as nation,scout,nation.`level` as `level`,gennum,`affinity` FROM nation join general on general.nation = nation.nation and general.level = 12 WHERE nation.nation not in %li and gennum < %i and scout = 0',
|
||||
@@ -124,7 +125,7 @@ function process_25(&$general) {
|
||||
}
|
||||
|
||||
}
|
||||
else if($where >= 98) {
|
||||
else if($type >= 98) {
|
||||
//랜임
|
||||
$generals = [];
|
||||
foreach($db->queryAllLists('SELECT count(no), nation FROM general WHERE npc <= 2 AND nation > 0 GROUP BY nation') as list($cnt, $nation)){
|
||||
@@ -161,7 +162,7 @@ function process_25(&$general) {
|
||||
$randVals = [];
|
||||
foreach($nations as $idx=>$testNation){
|
||||
// 임관금지없음 국가, 방랑군 제외
|
||||
if($where == 98 && $testNation['level'] == 0){
|
||||
if($type == 98 && $testNation['level'] == 0){
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -181,7 +182,10 @@ function process_25(&$general) {
|
||||
$nation = null;
|
||||
}
|
||||
|
||||
} else {
|
||||
} else if($type == 0) {
|
||||
$nation = $db->queryFirstRow('SELECT `name`,nation,scout,`level` FROM nation WHERE nation=%i', $where);
|
||||
} else if($type == 1){
|
||||
$where = $db->queryFirstField('SELECT nation FROM general WHERE no=%i', $where)??0;
|
||||
$nation = $db->queryFirstRow('SELECT `name`,nation,scout,`level` FROM nation WHERE nation=%i', $where);
|
||||
}
|
||||
|
||||
@@ -192,10 +196,10 @@ function process_25(&$general) {
|
||||
|
||||
if(!$nation) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:임관할 국가가 없습니다. 임관 실패. <1>$date</>";
|
||||
if($where >= 98 && $genLimit == GameConst::$initialNationGenLimitForRandInit){
|
||||
if($type >= 98 && $genLimit == GameConst::$initialNationGenLimitForRandInit){
|
||||
//랜덤 모드, 초기화시에는 랜덤 임관을 대신 한턴 더 넣어준다.
|
||||
$db->update('general', [
|
||||
'turn1'=>EncodeCommand(0, 0, $where, 25),
|
||||
'turn1'=>EncodeCommand(0, 0, $type, 25),
|
||||
], '`no` = %i', $general['no']);
|
||||
pushGenLog($general, $log);
|
||||
process_42($general);
|
||||
@@ -217,7 +221,7 @@ function process_25(&$general) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:이미 임관했었던 국가입니다. 임관 실패. <1>$date</>";
|
||||
} else {
|
||||
$josaYi = JosaUtil::pick($general['name'], '이');
|
||||
if($where == 99 || $where == 98) {
|
||||
if($type == 99 || $type == 98) {
|
||||
$alllog[] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} 어쩌다보니 <D><b>{$nation['name']}</b></>에 <S>임관</>했습니다.";
|
||||
$log[] = "<C>●</>{$admin['month']}월:<D>{$nation['name']}</>에 랜덤으로 임관했습니다. <1>$date</>";
|
||||
pushGeneralHistory($general, "<C>●</>{$admin['year']}년 {$admin['month']}월:<D><b>{$nation['name']}</b></>에 임관");
|
||||
@@ -269,7 +273,7 @@ function process_25(&$general) {
|
||||
$query = "update nation set totaltech=tech*'$gencount',gennum='$gennum' where nation='{$nation['nation']}'";
|
||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
if($where < 99) {
|
||||
if($type < 99) {
|
||||
$log = uniqueItem($general, $log);
|
||||
} else {
|
||||
$log = uniqueItem($general, $log, 2);
|
||||
@@ -290,7 +294,7 @@ function process_29(&$general) {
|
||||
$history = [];
|
||||
$date = substr($general['turntime'],11,5);
|
||||
|
||||
$admin = $gameStor->getValues(['startyear','year','month','develcost','npccount','turnterm','scenario','maxgeneral']);
|
||||
$admin = $gameStor->getValues(['startyear','year','month','develcost','npccount','turnterm','scenario','maxgeneral', 'turntime']);
|
||||
|
||||
$query = "select nation,name,level,gennum,scout from nation where nation='{$general['nation']}'";
|
||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||
@@ -301,8 +305,6 @@ function process_29(&$general) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:재야입니다. 인재탐색 실패. <1>$date</>";
|
||||
} elseif($nation['level'] <= 0) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:방랑군입니다. 인재탐색 실패. <1>$date</>";
|
||||
} elseif($admin['year'] < $admin['startyear']+3 && $nation['gennum'] >= GameConst::$initialNationGenLimit) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:현재 <D>{$nation['name']}</>{$josaUn} 탐색이 제한되고 있습니다. 인재탐색 실패.";
|
||||
} elseif($general['gold'] < $admin['develcost']) {
|
||||
$log[] = "<C>●</>{$admin['month']}월:자금이 모자랍니다. 인재탐색 실패. <1>$date</>";
|
||||
} else {
|
||||
@@ -315,9 +317,13 @@ function process_29(&$general) {
|
||||
$gen_cnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc <= 2 AND nation = %i', $general['nation']);
|
||||
$npc_cnt = $db->queryFirstField('SELECT count(`no`) FROM general WHERE 3 <= npc AND npc <= 4 AND nation = %i', $general['nation']);
|
||||
|
||||
$nation_cnt = $db->queryFirstField('SELECT count(`nation`) FROM nation WHERE `level` > 0');
|
||||
|
||||
$curr_cnt = Util::toInt($total_gen_cnt + $total_npc_cnt / 2);
|
||||
$remain_slot = $max_gen_cnt - $curr_cnt;
|
||||
|
||||
$avg_cnt = $curr_cnt / $nation_cnt;
|
||||
|
||||
$found_prop_main = pow($remain_slot / $max_gen_cnt, 6);
|
||||
$found_prop_small = 1 / ($total_npc_cnt / 3 + 1);
|
||||
$found_prop_big = 1 / $max_gen_cnt;
|
||||
@@ -361,9 +367,17 @@ function process_29(&$general) {
|
||||
$name = "{$name}{$count}";
|
||||
}
|
||||
|
||||
$join_prop = 0.3 + 0.7 * (($gen_cnt + $npc_cnt / 2) / $curr_cnt);
|
||||
$join_prop = 0.55 * $avg_cnt / ($gen_cnt + $npc_cnt / 2);
|
||||
|
||||
if($nation['scout'] != 0 || !Util::randBool($join_prop)) {
|
||||
$no_scout = false;
|
||||
if($nation['scout'] != 0){
|
||||
$no_scout = true;
|
||||
}
|
||||
else if($admin['year'] < $admin['startyear']+3 && $nation['gennum'] >= GameConst::$initialNationGenLimit){
|
||||
$no_scout = true;
|
||||
}
|
||||
|
||||
if($no_scout || !Util::randBool($join_prop)) {
|
||||
$scoutType = "발견";
|
||||
$scoutLevel = 0;
|
||||
$scoutNation = 0;
|
||||
@@ -379,32 +393,51 @@ function process_29(&$general) {
|
||||
$alllog[] = "<C>●</>{$admin['month']}월:<Y>{$general['name']}</>{$josaYi} <Y>$name</>{$josaRa}는 <C>인재</>를 {$scoutType}하였습니다!";
|
||||
pushGeneralHistory($general, "<C>●</>{$admin['year']}년 {$admin['month']}월:<Y>$name</>{$josaRa}는 <C>인재</>를 {$scoutType}");
|
||||
|
||||
$avgGen = $db->queryFirstRow('SELECT max(leader+power+intel) as lpi, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) / 4 as dex_t, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']);
|
||||
$avgGen = $db->queryFirstRow('SELECT max(leader+power+intel) as lpi, avg(dedication) as ded,avg(experience) as exp, avg(dex0+dex10+dex20+dex30) as dex_t, avg(dex40) as dex40 from general where npc < 5 and nation = %i', $general['nation']);
|
||||
|
||||
$dexTotal = $avgGen['dex_t'];
|
||||
|
||||
//무장 40%, 지장 40%, 무지장 20%
|
||||
$stat_tier1 = GameConst::$defaultStatMax - 10 + rand()%11;
|
||||
$stat_tier3 = GameConst::$defaultStatMin + rand()%6;
|
||||
$stat_tier2 = GameConst::$defaultStatTotal - $stat_tier1 - $stat_tier3;
|
||||
$type = Util::choiceRandomUsingWeight([
|
||||
'power'=>4,
|
||||
'intel'=>4,
|
||||
'neutral'=>2
|
||||
'power0'=>2,
|
||||
'power1'=>2,
|
||||
'power2'=>2,
|
||||
'intel'=>6,
|
||||
'neutral'=>3
|
||||
]);
|
||||
switch($type){
|
||||
case 'power':
|
||||
case 'power0':
|
||||
$leader = $stat_tier1;
|
||||
$power = $stat_tier2;
|
||||
$intel = $stat_tier3;
|
||||
$dexVal = [$dexTotal*5/8, $dexTotal/8, $dexTotal/8, $dexTotal/8];
|
||||
break;
|
||||
case 'power1':
|
||||
$leader = $stat_tier1;
|
||||
$power = $stat_tier2;
|
||||
$intel = $stat_tier3;
|
||||
$dexVal = [$dexTotal/8, $dexTotal*5/8, $dexTotal/8, $dexTotal/8];
|
||||
break;
|
||||
case 'power2':
|
||||
$leader = $stat_tier1;
|
||||
$power = $stat_tier2;
|
||||
$intel = $stat_tier3;
|
||||
$dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal*5/8, $dexTotal/8];
|
||||
break;
|
||||
case 'intel':
|
||||
$leader = $stat_tier1;
|
||||
$power = $stat_tier3;
|
||||
$intel = $stat_tier2;
|
||||
$dexVal = [$dexTotal/8, $dexTotal/8, $dexTotal/8, $dexTotal*5/8];
|
||||
break;
|
||||
case 'neutral':
|
||||
default:
|
||||
$leader = $stat_tier3;
|
||||
$power = $stat_tier1;
|
||||
$intel = $stat_tier2;
|
||||
$dexVal = [$dexTotal/4, $dexTotal/4, $dexTotal/4, $dexTotal/4];
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -461,7 +494,7 @@ function process_29(&$general) {
|
||||
$npccount = 10000 + $npcid;
|
||||
$affinity = rand() % 150 + 1;
|
||||
$picture = 'default.jpg';
|
||||
$turntime = getRandTurn($admin['turnterm']);
|
||||
$turntime = getRandTurn($admin['turnterm'], new \DateTimeImmutable($admin['turntime']));
|
||||
$personal = rand() % 10;
|
||||
$bornyear = $admin['year'];
|
||||
$deadyear = $admin['year'] + 3;
|
||||
@@ -487,7 +520,7 @@ function process_29(&$general) {
|
||||
'$scoutLevel','100','100','0','".GameUnitConst::DEFAULT_CREWTYPE."','0','0','0',
|
||||
'0','0','0','$turntime','$killturn','$age','1','$personal','0','$specage','0','$specage2','',
|
||||
'0','$bornyear','$deadyear',
|
||||
'{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex_t']}','{$avgGen['dex40']}'
|
||||
'{$dexVal[0]}','{$dexVal[1]}','{$dexVal[2]}','{$dexVal[3]}','{$avgGen['dex40']}'
|
||||
)",
|
||||
$connect
|
||||
) or Error(__LINE__.MYDB_error($connect),"");
|
||||
|
||||
@@ -47,7 +47,7 @@ function turnTable() {
|
||||
|
||||
function CoreTurnTable() {
|
||||
return "
|
||||
<select name=turn[] size=3 multiple style=color:white;background-color:black;font-size:13px;>
|
||||
<select name=turn[] size=6 multiple style=color:white;background-color:black;font-size:13px;>
|
||||
<option selected value=0> 1턴</option>
|
||||
<option value=1> 2턴</option>
|
||||
<option value=2> 3턴</option>
|
||||
|
||||
+12
-15
@@ -44,7 +44,7 @@ if ($me['newmsg'] == 1 || $me['newvote'] == 1) {
|
||||
], 'owner=%i', $userID);
|
||||
}
|
||||
|
||||
$admin = $gameStor->getValues(['develcost','online','conlimit','tournament','tnmt_type','turnterm','scenario','scenario_text','extended_general','fiction','npcmode','vote','vote_title','map_theme']);
|
||||
$admin = $gameStor->getValues(['develcost','online','conlimit','tournament','tnmt_type','turnterm','turntime','scenario','scenario_text','extended_general','fiction','npcmode','vote','vote_title','map_theme']);
|
||||
|
||||
$plock = $db->queryFirstField('SELECT plock FROM plock LIMIT 1');
|
||||
|
||||
@@ -77,11 +77,13 @@ if ($admin['npcmode'] == 0) {
|
||||
}
|
||||
$color = "cyan";
|
||||
$mapTheme = $admin['map_theme'];
|
||||
$serverName = UniqueConst::$serverName;
|
||||
$serverCnt = $db->queryFirstField('SELECT count(*) FROM ng_games');
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title><?=UniqueConst::$serverName?>: 메인</title>
|
||||
<title><?=$serverName?>: 메인</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
@@ -109,6 +111,8 @@ $(function(){
|
||||
setInterval(function(){
|
||||
refreshMsg();
|
||||
}, 5000);
|
||||
|
||||
reloadCommandList();
|
||||
});
|
||||
</script>
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
@@ -127,7 +131,7 @@ $(function(){
|
||||
<div><?=allButton()?></div>
|
||||
<table class="tb_layout bg0" style="width:1000px;">
|
||||
<tr height=50>
|
||||
<td colspan=5 align=center><font size=4>삼국지 모의전투 HiDCHe (<font color=cyan><?=$scenario?></font>)</font></td>
|
||||
<td colspan=5 id="server_title" align=center><font size=4>삼국지 모의전투 HiDCHe <?=$serverName.$serverCnt?>기 (<font color=cyan><?=$scenario?></font>)</font></td>
|
||||
</tr>
|
||||
<?php if ($valid == 1): ?>
|
||||
<tr height=30>
|
||||
@@ -145,12 +149,12 @@ $(function(){
|
||||
<td width=398 colspan=2><?=info(3)?></td>
|
||||
</tr>
|
||||
<tr height=30>
|
||||
<td>
|
||||
<td style='text-align:center;'>
|
||||
<?php
|
||||
if (!$plock) {
|
||||
echo "<marquee scrollamount=2><font color=cyan>서버 가동중</font></marquee>";
|
||||
echo "<span style='color:cyan;'>동작 시각: ".substr($admin['turntime'], 5)."</span>";
|
||||
} else {
|
||||
echo "<font color=magenta>서버 동결중</font>";
|
||||
echo "<span style='color:magenta;'>동작 시각: ".substr($admin['turntime'], 5)."</span>";
|
||||
}
|
||||
|
||||
echo "
|
||||
@@ -239,9 +243,9 @@ else if($session->userGrade == 4){
|
||||
<td style='width:700px;height:520px;' colspan=2>
|
||||
<?=getMapHtml($mapTheme)?>
|
||||
</td>
|
||||
<td style='width:300px;' rowspan=4><iframe seamless="seamless" name=commandlist src='commandlist.php' style='width:300px;height:700px;' frameborder=0 marginwidth=0 marginheight=0 topmargin=0 scrolling=no></iframe></td>
|
||||
<td style='width:300px;' rowspan=4 id='commandlist'></td>
|
||||
</tr>
|
||||
<form name=form2 action=preprocessing.php method=post target=commandlist>
|
||||
<form id='form2' name=form2>
|
||||
<tr>
|
||||
<td rowspan=3 width=50 valign=top><?=turnTable()?></td>
|
||||
<td style="width:650px;border:none;text-align:center;"><?php cityInfo(); ?></td>
|
||||
@@ -326,13 +330,6 @@ else if($session->userGrade == 4){
|
||||
</div></div>
|
||||
<div style="clear:left;"><?=allButton()?><?=banner()?></div>
|
||||
</div>
|
||||
<div id='sidebar' class='btn-group-vertical'>
|
||||
<button type="button" class="btn btn-primary" onclick='refreshing(this, 0,0)'><i class="fas fa-sync-alt"></i> 갱신</button>
|
||||
<a class="btn btn-secondary" href="#map_position" role="button">지도 & 턴입력</a>
|
||||
<a class="btn btn-secondary" href="#history_position" role="button">장수 동향</a>
|
||||
<a class="btn btn-secondary" href="#public_talk_position" role="button">국가 메시지</a>
|
||||
<a class="btn btn-secondary" href="#secret_talk_position" role="button">개인 메시지</a>
|
||||
</div>
|
||||
<?php
|
||||
if ($con == 1) {
|
||||
MessageBox("접속제한이 얼마 남지 않았습니다!");
|
||||
|
||||
+102
@@ -152,6 +152,101 @@ if($session->userGrade < 5 && !$allowReset){
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label">휴식 턴 시 장수 턴</label>
|
||||
<div class="col-sm-9">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend btn-group btn-group-toggle" data-toggle="buttons">
|
||||
<label class="btn btn-secondary">
|
||||
<input type="checkbox" class="autorun_user_chk" data-key="develop" name="autorun_develop" id="autorun_develop">내정
|
||||
</label>
|
||||
<label class="btn btn-secondary">
|
||||
<input type="checkbox" class="autorun_user_chk" data-key="warp" name="autorun_warp" id="autorun_warp">순간이동
|
||||
</label>
|
||||
<label class="btn btn-secondary">
|
||||
<input type="checkbox" class="autorun_user_chk" data-key="recruit" name="autorun_recruit" id="autorun_recruit">징병
|
||||
</label>
|
||||
<label class="btn btn-secondary">
|
||||
<input type="checkbox" class="autorun_user_chk" data-key="recruit_high" name="autorun_recruit_high" id="autorun_recruit_high">모병
|
||||
</label>
|
||||
<label class="btn btn-secondary">
|
||||
<input type="checkbox" class="autorun_user_chk" data-key="train" name="autorun_train" id="autorun_train">훈사
|
||||
</label>
|
||||
<label class="btn btn-secondary">
|
||||
<input type="checkbox" class="autorun_user_chk" data-key="battle" name="autorun_battle" id="autorun_battle">출병
|
||||
</label>
|
||||
</div>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">유효 시간</span>
|
||||
</div>
|
||||
<select class="custom-select" name="autorun_user_minutes" id="autorun_user_minutes">
|
||||
<option value="0" selected>꺼짐</option>
|
||||
<option value="43200">항상</option>
|
||||
<option value="10">10분</option>
|
||||
<option value="20">20분</option>
|
||||
<option value="30">30분</option>
|
||||
<option value="60">1시간</option>
|
||||
<option value="120">2시간</option>
|
||||
<option value="180">3시간</option>
|
||||
<option value="240">4시간</option>
|
||||
<option value="360">6시간</option>
|
||||
<option value="480">8시간</option>
|
||||
<option value="600">10시간</option>
|
||||
<option value="720">12시간</option>
|
||||
<option value="1440">24시간</option>
|
||||
<option value="2160">36시간</option>
|
||||
<option value="2880">48시간</option>
|
||||
<option value="3600">60시간</option>
|
||||
<option value="4320">72시간</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label">휴식 턴 시 사령 턴</label>
|
||||
<div class="col-sm-9">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend btn-group btn-group-toggle" data-toggle="buttons">
|
||||
<label class="btn btn-secondary">
|
||||
<input type="radio" name="autorun_chief_reward" id="autorun_chief_reward">포상/몰수
|
||||
</label>
|
||||
<label class="btn btn-secondary">
|
||||
<input type="radio" name="autorun_chief_warp" id="autorun_chief_warp">발령
|
||||
</label>
|
||||
<label class="btn btn-secondary">
|
||||
<input type="radio" name="autorun_chief_declaration" id="autorun_chief_declaration">선포
|
||||
</label>
|
||||
</div>
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text">유효 시간</span>
|
||||
</div>
|
||||
<select class="custom-select" name="autorun_chief_minutes" id="autorun_chief_minutes">
|
||||
<option value="0" selected>꺼짐</option>
|
||||
<option value="43200">항상</option>
|
||||
<option value="10">10분</option>
|
||||
<option value="20">20분</option>
|
||||
<option value="30">30분</option>
|
||||
<option value="60">1시간</option>
|
||||
<option value="120">2시간</option>
|
||||
<option value="180">3시간</option>
|
||||
<option value="240">4시간</option>
|
||||
<option value="360">6시간</option>
|
||||
<option value="480">8시간</option>
|
||||
<option value="600">10시간</option>
|
||||
<option value="720">12시간</option>
|
||||
<option value="1440">24시간</option>
|
||||
<option value="2160">36시간</option>
|
||||
<option value="2880">48시간</option>
|
||||
<option value="3600">60시간</option>
|
||||
<option value="4320">72시간</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="join_mode" class="col-sm-3 col-form-label">임관 모드</label>
|
||||
<div class="col-sm-9">
|
||||
@@ -225,6 +320,13 @@ if($session->userGrade < 5 && !$allowReset){
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="pre_reserve_open" class="col-sm-3 col-form-label">가오픈 예약</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" name="pre_reserve_open" id="pre_reserve_open" placeholder="YYYY-MM-DD hh:mm" value="" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-3"></div>
|
||||
<div class="col-sm-9">
|
||||
|
||||
+3
-1
@@ -88,7 +88,9 @@ $result = ResetHelper::buildScenario(
|
||||
$options['npcmode'],
|
||||
$options['show_img_level'],
|
||||
$options['tournament_trig'],
|
||||
$options['join_mode']
|
||||
$options['join_mode'],
|
||||
$options['starttime'],
|
||||
$options['autorun_user']?:null
|
||||
);
|
||||
|
||||
$result['affected']=1;
|
||||
|
||||
@@ -32,7 +32,7 @@ $nationID = $me['nation'];
|
||||
if($isAmbassador){
|
||||
$targetType = 'ambassador';
|
||||
$targetLevel = 4;
|
||||
if(count($genlist) > 2){
|
||||
if($genlist && count($genlist) > 2){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'외교권자는 최대 둘까지만 설정 가능합니다.'
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireLogin();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$db = DB::db();
|
||||
$withToken = Util::getReq('with_token', 'bool', false);
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
if($session->isGameLoggedIn()){
|
||||
increaseRefresh("장수일람", 2);
|
||||
|
||||
$me = $db->queryFirstRow('SELECT con, turntime FROM general WHERE owner=%i', $userID);
|
||||
$con = checkLimit($me['con']);
|
||||
if ($con >= 2) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'접속 제한중입니다. 1턴 이내에 너무 많은 갱신을 하셨습니다.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
else{
|
||||
$availableNextCall = $session->availableNextCallGetGeneralList??'2000-01-01 00:00:00';
|
||||
$now = new \DateTimeImmutable();
|
||||
|
||||
if($now <= new \DateTimeImmutable($availableNextCall) && $session->userGrade < 5){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>"장수 리스트는 10초에 한번 갱신 가능합니다.\n다음 시간 : ".$availableNextCall
|
||||
]);
|
||||
}
|
||||
|
||||
$availableNextCall = $now->add(new \DateInterval('PT10S'))->format('Y-m-d H:i:s');
|
||||
$session->availableNextCallGetGeneralList = $availableNextCall;
|
||||
}
|
||||
|
||||
$session->setReadOnly();
|
||||
|
||||
$rawGeneralList = $db->queryAllLists('SELECT owner,no,picture,imgsvr,npc,age,nation,special,special2,personal,name,name2,injury,leader,power,intel,experience,dedication,level,killturn,connect from general');
|
||||
|
||||
$ownerNameList = [];
|
||||
if($gameStor->isunited){
|
||||
foreach(RootDB::db()->queryAllLists('SELECT no, name FROM member') as [$ownerID, $ownerName]){
|
||||
$ownerNameList[$ownerID] = $ownerName;
|
||||
}
|
||||
}
|
||||
|
||||
$generalList = [];
|
||||
foreach($rawGeneralList as $rawGeneral){
|
||||
[$owner,$no,$picture,$imgsvr,$npc,$age,$nation,$special,$special2,$personal,$name,$name2,$injury,$leader,$power,$intel,$experience,$dedication,$level,$killturn,$connect] = $rawGeneral;
|
||||
|
||||
if(key_exists($owner, $ownerNameList)){
|
||||
$name2 = $ownerNameList[$owner];
|
||||
}
|
||||
|
||||
$nationArr = getNationStaticInfo($nation);
|
||||
$lbonus = calcLeadershipBonus($level, $nationArr['level']);
|
||||
|
||||
$generalList[] = [
|
||||
$no,
|
||||
$picture,
|
||||
$imgsvr,
|
||||
$npc,
|
||||
$age,
|
||||
$nationArr['name'],
|
||||
getGenSpecial($special),
|
||||
getGenSpecial($special2),
|
||||
getGenChar($personal),
|
||||
$name,
|
||||
$name2,
|
||||
$injury,
|
||||
$leader,
|
||||
$lbonus,
|
||||
$power,
|
||||
$intel,
|
||||
getExpLevel($experience),
|
||||
getHonor($experience),
|
||||
getDed($dedication),
|
||||
getLevel($level, $nationArr['level']),
|
||||
$killturn,
|
||||
$connect
|
||||
];
|
||||
}
|
||||
|
||||
$result = [
|
||||
'result'=>'true',
|
||||
'list'=>$generalList,
|
||||
];
|
||||
|
||||
if($withToken){
|
||||
$now = (new \DateTimeImmutable())->format('Y-m-d H:i:s');
|
||||
$tokens = [];
|
||||
foreach($db->query('SELECT * FROM select_npc_token WHERE `valid_until`>=%s', $now) as $token){
|
||||
$validUntil = $token['valid_until'];
|
||||
|
||||
foreach(Json::decode($token['pick_result']) as $pickResult){
|
||||
$tokens[$pickResult['no']]=$pickResult['keepCnt'];
|
||||
}
|
||||
}
|
||||
$result['token'] = $tokens;
|
||||
}
|
||||
|
||||
Json::die($result);
|
||||
@@ -90,9 +90,11 @@ if($token && !$refresh){
|
||||
$candidates = [];
|
||||
|
||||
$weight = [];
|
||||
foreach($db->query('SELECT `no`, `name`, leader, power, intel, imgsvr, picture, special, special2 FROM general WHERE npc=2') as $general){
|
||||
foreach($db->query('SELECT `no`, `name`, leader, power, nation, personal, intel, imgsvr, picture, special, special2 FROM general WHERE npc=2') as $general){
|
||||
$general['special'] = \sammo\SpecialityConst::DOMESTIC[$general['special']][0]??'-';
|
||||
$general['special2'] = \sammo\SpecialityConst::WAR[$general['special2']][0]??'-';
|
||||
$general['personal'] = getGenChar($general['personal']);
|
||||
$general['nation'] = getNationStaticInfo($general['nation'])['name'];
|
||||
$candidates[$general['no']] = $general + ['keepCnt'=>KEEP_CNT];
|
||||
$allStat = $general['leader'] + $general['power'] + $general['intel'];
|
||||
$weight[$general['no']] = pow($allStat, 1.5);
|
||||
|
||||
+72
-16
@@ -27,6 +27,20 @@ if($reserve_open && $reserve_open < date('Y-m-d H:i')){
|
||||
]);
|
||||
}
|
||||
|
||||
$pre_reserve_open = Util::getReq('pre_reserve_open');
|
||||
if($pre_reserve_open && !$reserve_open){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'가오픈 예약을 위해선 오픈 예약을 지정해야합니다.'
|
||||
]);
|
||||
}
|
||||
if($pre_reserve_open && $pre_reserve_open >= $reserve_open){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'가오픈 시간이 오픈 예약 시점보다 이전이어야 합니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
if($session->userGrade < 5 && !$allowReset){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
@@ -43,7 +57,8 @@ $v->rule('required', [
|
||||
'extend',
|
||||
'join_mode',
|
||||
'npcmode',
|
||||
'show_img_level'
|
||||
'show_img_level',
|
||||
'autorun_user_minutes'
|
||||
])->rule('integer', [
|
||||
'turnterm',
|
||||
'sync',
|
||||
@@ -53,6 +68,7 @@ $v->rule('required', [
|
||||
'npcmode',
|
||||
'show_img_level',
|
||||
'tournament_trig',
|
||||
'autorun_user_minutes'
|
||||
])->rule('in', 'join_mode', ['onlyRandom', 'full']);
|
||||
if(!$v->validate()){
|
||||
Json::die([
|
||||
@@ -94,6 +110,30 @@ $npcmode = (int)$_POST['npcmode'];
|
||||
$show_img_level = (int)$_POST['show_img_level'];
|
||||
$tournament_trig = (int)$_POST['tournament_trig'];
|
||||
$join_mode = $_POST['join_mode'];
|
||||
$autorun_user_minutes = (int)$_POST['autorun_user_minutes'];
|
||||
$autorun_user_options = [];
|
||||
foreach(Util::getReq('autorun_user', 'array_string', []) as $autorun_option){
|
||||
$autorun_user_options[$autorun_option] = 1;
|
||||
}
|
||||
|
||||
if($autorun_user_minutes > 0 && !$autorun_user_options){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'적어도 자동 행동 중 하나는 선택을 해야합니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
if($autorun_user_minutes < 0){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'자동 행동 기한이 0보다 작을 수 없습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$autorun_user = $autorun_user_minutes?[
|
||||
'limit_minutes'=>$autorun_user_minutes,
|
||||
'options'=>$autorun_user_options
|
||||
]:null;
|
||||
|
||||
if($reserve_open){
|
||||
$reserve_open = new \DateTime($reserve_open);
|
||||
@@ -114,22 +154,36 @@ if($reserve_open){
|
||||
}
|
||||
|
||||
$scenarioObj = new Scenario($scenario, true);
|
||||
$open_date = $reserve_open->format('Y-m-d H:i:s');
|
||||
|
||||
$reserveInfo = [
|
||||
'turnterm'=>$turnterm,
|
||||
'sync'=>$sync,
|
||||
'scenario'=>$scenario,
|
||||
'scenarioName'=>$scenarioObj->getTitle(),
|
||||
'fiction'=>$fiction,
|
||||
'extend'=>$extend,
|
||||
'npcmode'=>$npcmode,
|
||||
'show_img_level'=>$show_img_level,
|
||||
'tournament_trig'=>$tournament_trig,
|
||||
'gameConf'=>$scenarioObj->getGameConf(),
|
||||
'join_mode'=>$join_mode,
|
||||
'starttime'=>$open_date,
|
||||
'autorun_user'=>$autorun_user
|
||||
];
|
||||
|
||||
|
||||
if($pre_reserve_open){
|
||||
$pre_reserve_open = new \DateTime($pre_reserve_open);
|
||||
$open_date = $pre_reserve_open->format('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
|
||||
|
||||
$db->delete('reserved_open', true);
|
||||
$db->insert('reserved_open', [
|
||||
'options'=>Json::encode([
|
||||
'turnterm'=>$turnterm,
|
||||
'sync'=>$sync,
|
||||
'scenario'=>$scenario,
|
||||
'scenarioName'=>$scenarioObj->getTitle(),
|
||||
'fiction'=>$fiction,
|
||||
'extend'=>$extend,
|
||||
'npcmode'=>$npcmode,
|
||||
'show_img_level'=>$show_img_level,
|
||||
'tournament_trig'=>$tournament_trig,
|
||||
'gameConf'=>$scenarioObj->getGameConf(),
|
||||
'join_mode'=>$join_mode,
|
||||
]),
|
||||
'date'=>$reserve_open->format('Y-m-d H:i:s')
|
||||
'options'=>Json::encode($reserveInfo),
|
||||
'date'=>$open_date
|
||||
]);
|
||||
AppConf::getList()[DB::prefix()]->closeServer();
|
||||
Json::die([
|
||||
@@ -147,5 +201,7 @@ Json::die(ResetHelper::buildScenario(
|
||||
$npcmode,
|
||||
$show_img_level,
|
||||
$tournament_trig,
|
||||
$join_mode
|
||||
$join_mode,
|
||||
TimeUtil::DatetimeNow(),
|
||||
$autorun_user
|
||||
));
|
||||
@@ -4,7 +4,7 @@ namespace sammo;
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
$session = Session::requireGameLogin([])->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$db = DB::db();
|
||||
@@ -17,8 +17,10 @@ $commandtype = Util::getReq('commandtype', 'int');
|
||||
increaseRefresh("턴입력", 1);
|
||||
|
||||
if(!$turn || $commandtype === null || $sel === null){
|
||||
header('location:commandlist.php');
|
||||
die();
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'empty command'
|
||||
]);
|
||||
}
|
||||
|
||||
$count = count($turn);
|
||||
@@ -98,6 +100,7 @@ switch($commandtype) {
|
||||
case 55: command_Single($turn, 55); break; //거병
|
||||
case 56: command_Single($turn, 56); break; //해산
|
||||
case 57: command_Single($turn, 57); break; //모반 시도
|
||||
// case 58: command_Single($turn, 58); break; //숙련 전환
|
||||
|
||||
// case 61: command_61($turn, 61); break; //불가침
|
||||
// case 62: command_62($turn, 62); break; //선포
|
||||
+18
-7
@@ -22,6 +22,13 @@ $rootDB = RootDB::db();
|
||||
$oNow = new \DateTimeImmutable();
|
||||
$now = $oNow->format('Y-m-d H:i:s');
|
||||
|
||||
list(
|
||||
$year,
|
||||
$month,
|
||||
$maxgeneral,
|
||||
$npcmode
|
||||
) = $gameStor->getValuesAsArray(['year', 'month', 'maxgeneral', 'npcmode']);
|
||||
|
||||
$userNick = RootDB::db()->queryFirstField('SELECT `NAME` FROM member WHERE `NO`=%i',$userID);
|
||||
if(!$userNick){
|
||||
Json::die([
|
||||
@@ -30,6 +37,8 @@ if(!$userNick){
|
||||
]);
|
||||
}
|
||||
|
||||
$db->query("lock tables general write, select_npc_token write");
|
||||
|
||||
$pickResult = $db->queryFirstField('SELECT pick_result FROM select_npc_token WHERE `owner`=%i AND `valid_until`>=%s', $userID, $now);
|
||||
if(!$pickResult){
|
||||
Json::die([
|
||||
@@ -38,7 +47,6 @@ if(!$pickResult){
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
$pickResult = Json::decode($pickResult);
|
||||
if(!key_exists($pick, $pickResult)){
|
||||
Json::die([
|
||||
@@ -50,14 +58,9 @@ $pickedNPC = $pickResult[$pick];
|
||||
|
||||
|
||||
$gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc<2');
|
||||
list(
|
||||
$year,
|
||||
$month,
|
||||
$maxgeneral,
|
||||
$npcmode
|
||||
) = $gameStor->getValuesAsArray(['year', 'month', 'maxgeneral', 'npcmode']);
|
||||
|
||||
if(!$npcmode){
|
||||
$db->query("unlock tables");
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'빙의 가능한 서버가 아닙니다'
|
||||
@@ -65,12 +68,15 @@ if(!$npcmode){
|
||||
}
|
||||
|
||||
if ($gencount >= $maxgeneral) {
|
||||
$db->query("unlock tables");
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'더 이상 등록 할 수 없습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//등록 시작
|
||||
$db->update('general', [
|
||||
'name2'=>$userNick,
|
||||
@@ -81,7 +87,10 @@ $db->update('general', [
|
||||
'owner'=>$userID,
|
||||
], 'owner <= 0 AND npc = 2 AND no = %i', $pick);
|
||||
|
||||
|
||||
|
||||
if(!$db->affectedRows()){
|
||||
$db->query("unlock tables");
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'장수 등록에 실패했습니다.'
|
||||
@@ -90,6 +99,8 @@ if(!$db->affectedRows()){
|
||||
|
||||
$db->delete('select_npc_token', 'owner=%i or valid_until < %s', $userID, $now);
|
||||
|
||||
$db->query("unlock tables");
|
||||
|
||||
$josaYi = JosaUtil::pick($userNick, '이');
|
||||
pushGeneralHistory($pickedNPC, "<C>●</>{$year}년 {$month}월:<Y>{$pickedNPC['name']}</>의 육체에 <Y>{$userNick}</>{$josaYi} 빙의되다.");
|
||||
//pushGenLog($me, $mylog);
|
||||
|
||||
@@ -16,6 +16,8 @@ if(!class_exists('\\sammo\\DB')){
|
||||
]);
|
||||
}
|
||||
|
||||
$templates = new \League\Plates\Engine(__dir__.'/templates');
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
@@ -38,6 +40,27 @@ if(file_exists(__dir__.'/.htaccess')){
|
||||
$otherTextInfo[] = '랜덤 임관 전용';
|
||||
}
|
||||
|
||||
if($options['autorun_user']['limit_minutes']??false){
|
||||
$auto_info = [];
|
||||
foreach($options['autorun_user']['options'] as $auto_option => $value){
|
||||
assert($value);
|
||||
switch($auto_option){
|
||||
case 'develop': $auto_info['내정'] = '내정'; break;
|
||||
case 'warp': $auto_info['순간이동'] = '순간이동'; break;
|
||||
case 'recruit': $auto_info['징병'] = $auto_info['징병']??'징병'; break;
|
||||
case 'recruit_high': $auto_info['징병'] = '모병'; break;
|
||||
case 'train': $auto_info['훈사'] = '훈련/사기진작'; break;
|
||||
case 'battle': $auto_info['출병'] = '출병'; break;
|
||||
}
|
||||
}
|
||||
$auto_info = join(', ', array_values($auto_info));
|
||||
$otherTextInfo[] = $templates->render('tooltip', [
|
||||
'text'=>'자율행동',
|
||||
'info'=>$auto_info,
|
||||
'style'=>'text-decoration:underline'
|
||||
]);
|
||||
}
|
||||
|
||||
if(!$otherTextInfo){
|
||||
$otherTextInfo = '표준';
|
||||
}
|
||||
@@ -53,6 +76,7 @@ if(file_exists(__dir__.'/.htaccess')){
|
||||
'fictionMode'=>($options['fiction']?'가상':'사실'),
|
||||
'npcMode'=>($options['npcmode']?'가능':'불가'),
|
||||
'openDatetime'=>$reserved['date'],
|
||||
'starttime'=>$options['starttime'],
|
||||
'gameConf'=>$options['gameConf'],
|
||||
'otherTextInfo'=>$otherTextInfo
|
||||
],
|
||||
@@ -63,11 +87,13 @@ if(file_exists(__dir__.'/.htaccess')){
|
||||
|
||||
//TODO: 천통시에도 예약 오픈 알림이 필요..?
|
||||
|
||||
$admin = $gameStor->getValues(['isunited', 'npcmode', 'year', 'month', 'scenario', 'scenario_text', 'maxgeneral', 'turnterm']);
|
||||
$admin = $gameStor->getValues(['isunited', 'npcmode', 'year', 'month', 'scenario', 'scenario_text', 'maxgeneral', 'turnterm', 'opentime', 'turntime', 'join_mode', 'fiction', 'autorun_user']);
|
||||
$admin['maxUserCnt'] = $admin['maxgeneral'];
|
||||
$admin['npcMode'] = $admin['npcmode'];
|
||||
$admin['turnTerm'] = $admin['turnterm'];
|
||||
$admin['isUnited'] = $admin['isunited'];
|
||||
$admin['starttime'] = substr($admin['opentime'], 5, 11);
|
||||
$admin['turntime'] = substr($admin['turntime'], 5, 11);
|
||||
unset($admin['npcmode']);
|
||||
unset($admin['maxgeneral']);
|
||||
unset($admin['turnterm']);
|
||||
@@ -82,6 +108,48 @@ $admin['userCnt'] = $genCnt;
|
||||
$admin['npcCnt'] = $npcCnt;
|
||||
$admin['nationCnt'] = $nationCnt;
|
||||
|
||||
$admin['npcMode'] = $admin['npcMode']?'가능':'불가';
|
||||
$admin['fictionMode'] = $admin['fiction']?'가상':'사실';
|
||||
|
||||
$otherTextInfo = [];
|
||||
|
||||
if($admin['join_mode'] == 'onlyRandom'){
|
||||
$otherTextInfo[] = '랜덤 임관 전용';
|
||||
}
|
||||
|
||||
|
||||
if($admin['autorun_user']['limit_minutes']??false){
|
||||
|
||||
$auto_info = [];
|
||||
foreach($admin['autorun_user']['options'] as $auto_option => $value){
|
||||
assert($value);
|
||||
switch($auto_option){
|
||||
case 'develop': $auto_info['내정'] = '내정'; break;
|
||||
case 'warp': $auto_info['순간이동'] = '순간이동'; break;
|
||||
case 'recruit': $auto_info['징병'] = $auto_info['징병']??'징병'; break;
|
||||
case 'recruit_high': $auto_info['징병'] = '모병'; break;
|
||||
case 'train': $auto_info['훈사'] = '훈련/사기진작'; break;
|
||||
case 'battle': $auto_info['출병'] = '출병'; break;
|
||||
}
|
||||
}
|
||||
$auto_info = join(', ', array_values($auto_info));
|
||||
$otherTextInfo[] = $templates->render('tooltip', [
|
||||
'text'=>'자율행동',
|
||||
'info'=>$auto_info,
|
||||
'style'=>'text-decoration:underline'
|
||||
]);
|
||||
}
|
||||
|
||||
if(!$otherTextInfo){
|
||||
$otherTextInfo = '표준';
|
||||
}
|
||||
else{
|
||||
$otherTextInfo = join(', ', $otherTextInfo);
|
||||
}
|
||||
|
||||
|
||||
$admin['otherTextInfo'] = $otherTextInfo;
|
||||
$admin['defaultStatTotal'] = GameConst::$defaultStatTotal;
|
||||
$me = [];
|
||||
|
||||
$general = $db->queryFirstRow('SELECT name, picture, imgsvr from general where owner=%i', $userID);
|
||||
|
||||
+165
@@ -0,0 +1,165 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
// $btn, $name, $troop
|
||||
$action = Util::getReq('action');
|
||||
$name = Util::getReq('name');
|
||||
$gen = Util::getReq('gen', 'int');
|
||||
$troop = Util::getReq('troop', 'int');
|
||||
|
||||
//로그인 검사
|
||||
$session = Session::requireGameLogin([])->setReadOnly();
|
||||
$userID = $session::getUserID();
|
||||
|
||||
$db = DB::db();
|
||||
|
||||
$me = $db->queryFirstRow('SELECT `no`, name, nation, troop FROM general WHERE `owner`=%i', $userID);
|
||||
|
||||
|
||||
|
||||
if($action == '부대창설'){
|
||||
$name = trim($name);
|
||||
if(!$name){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'부대 이름이 없습니다.'
|
||||
]);
|
||||
}
|
||||
if($me['troop'] != 0){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'이미 부대에 가입해있습니다.'
|
||||
]);
|
||||
}
|
||||
$db->insert('troop',[
|
||||
'name'=>$name,
|
||||
'nation'=>$me['nation'],
|
||||
'no'=>$me['no']
|
||||
]);
|
||||
$troopID = $db->insertId();
|
||||
|
||||
$db->update('general', [
|
||||
'troop'=>$troopID
|
||||
], 'no=%i',$me['no']);
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success'
|
||||
]);
|
||||
}
|
||||
|
||||
if($action == '부대변경'){
|
||||
$name = trim($name);
|
||||
if(!$name){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'부대 이름이 없습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$db->update('troop', [
|
||||
'name'=>$name
|
||||
], 'no=%i',$me['no']);
|
||||
|
||||
if($db->affectedRows() == 0){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'부대장이 아닙니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success'
|
||||
]);
|
||||
}
|
||||
|
||||
if($action == '부대추방'){
|
||||
if (!$gen){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'장수를 지정해야 합니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$db->update('general', [
|
||||
'troop'=>0
|
||||
], 'no=%i AND troop=(SELECT troop FROM troop WHERE no = %i)', $gen, $me['no']);
|
||||
|
||||
if($db->affectedRows() == 0){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'부대장이 아니거나, 장수를 잘못 지정했습니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success'
|
||||
]);
|
||||
}
|
||||
|
||||
if ($action == '부대가입') {
|
||||
if(!$troop){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'부대를 지정해야 합니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$troopLeader = $db->queryFirstField('SELECT `no` FROM troop WHERE troop=%i', $troop)?:0;
|
||||
$troopLeaderNation = $db->queryFirstField('SELECT `nation` FROM `general` WHERE `no`=%i AND `nation`=%i', $troopLeader, $me['nation']);
|
||||
|
||||
if (!$troopLeaderNation) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'올바른 부대장이 아닙니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
$db->update('general', [
|
||||
'troop'=>$troop
|
||||
], 'no=%i', $me['no']);
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success'
|
||||
]);
|
||||
}
|
||||
|
||||
if($action == "부대탈퇴") {
|
||||
|
||||
if($me['troop'] == 0){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'부대에 속해있지 않습니다.'
|
||||
]);
|
||||
}
|
||||
$troopLeader = $db->queryFirstField('SELECT `no` FROM troop WHERE troop=%i', $me['troop']);
|
||||
|
||||
//부대장일 경우
|
||||
if($troopLeader == $me['no']) {
|
||||
// 모두 탈퇴
|
||||
$db->update('general', [
|
||||
'troop'=>0
|
||||
], 'troop=%i',$me['troop']);
|
||||
// 부대 삭제
|
||||
$db->delete('troop', 'troop=%i', $me['troop']);
|
||||
} else {
|
||||
$db->update('general', [
|
||||
'troop'=>0
|
||||
], 'no=%i', $me['no']);
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'reason'=>'success'
|
||||
]);
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'올바르지 않은 명령입니다.'
|
||||
]);
|
||||
+63
-1
@@ -6,4 +6,66 @@ include "func.php";
|
||||
|
||||
|
||||
|
||||
$session = Session::requireGameLogin([])->setReadOnly();
|
||||
$session = Session::requireGameLogin([])->setReadOnly();
|
||||
|
||||
$type = Util::getReq('type', 'int', 0);
|
||||
$sel = Util::getReq('sel', 'int', 1);
|
||||
|
||||
if($sel <= 0 || $sel > 12){
|
||||
$sel = 1;
|
||||
}
|
||||
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
|
||||
increaseRefresh("턴반복", 1);
|
||||
|
||||
$myActionCnt = $db->queryFirstField('SELECT con FROM general WHERE `owner`=%i', $userID);
|
||||
|
||||
$con = checkLimit($myActionCnt);
|
||||
if($con >= 2) {
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'result'=>'접속 제한입니다.'
|
||||
]);
|
||||
}
|
||||
|
||||
switch($type) {
|
||||
case 0://반복
|
||||
$valueMap = [];
|
||||
foreach(range($sel, GameConst::$maxTurn - 1) as $idx){
|
||||
$src = $idx % $sel;
|
||||
$valueMap['turn'.$idx] = $db->sqleval('%b', 'turn'.$src);
|
||||
}
|
||||
$db->update('general', $valueMap, 'owner=%i', $userID);
|
||||
break;
|
||||
case 1:
|
||||
$valueMap = [];
|
||||
foreach(range(GameConst::$maxTurn -1, $sel, -1) as $idx){
|
||||
$src = $idx - $sel;
|
||||
$valueMap['turn'.$idx] = $db->sqleval('%b', 'turn'.$src);
|
||||
}
|
||||
foreach(range($sel -1, 0, -1) as $idx){
|
||||
$valueMap['turn'.$idx] = EncodeCommand(0, 0, 0, 0);
|
||||
}
|
||||
$db->update('general', $valueMap, 'owner=%i', $userID);
|
||||
break;
|
||||
case 2:
|
||||
$valueMap = [];
|
||||
foreach(range(0, GameConst::$maxTurn - $sel - 1) as $idx){
|
||||
$src = $idx + $sel;
|
||||
$valueMap['turn'.$idx] = $db->sqleval('%b', 'turn'.$src);
|
||||
}
|
||||
foreach(range(GameConst::$maxTurn - $sel, GameConst::$maxTurn - 1) as $idx){
|
||||
$valueMap['turn'.$idx] = EncodeCommand(0, 0, 0, 0);
|
||||
}
|
||||
$db->update('general', $valueMap, 'owner=%i', $userID);
|
||||
break;
|
||||
}
|
||||
|
||||
Json::die([
|
||||
'result'=>true,
|
||||
'result'=>'success'
|
||||
]);
|
||||
+17
-6
@@ -68,9 +68,11 @@ if (!$member) {
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$gameStor->cacheValues(['year','month','maxgeneral','scenario','show_img_level','turnterm','genius','npcmode']);
|
||||
$gameStor->cacheValues(['year','month','maxgeneral','scenario','show_img_level','turnterm','turntime','genius','npcmode']);
|
||||
########## 동일 정보 존재여부 확인. ##########
|
||||
|
||||
$db->query("lock tables general write, city read, storage read");
|
||||
|
||||
$gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE npc<2');
|
||||
$oldGeneral = $db->queryFirstField('SELECT `no` FROM general WHERE `owner`=%i', $userID);
|
||||
$oldName = $db->queryFirstField('SELECT `no` FROM general WHERE `name`=%s', $name);
|
||||
@@ -80,6 +82,7 @@ if ($oldGeneral) {
|
||||
window.alert('이미 등록하셨습니다!')
|
||||
history.go(-1)
|
||||
</script>");
|
||||
$db->query("unlock tables");
|
||||
exit;
|
||||
}
|
||||
if ($oldName) {
|
||||
@@ -87,6 +90,7 @@ if ($oldName) {
|
||||
window.alert('이미 있는 장수입니다. 다른 이름으로 등록해 주세요!')
|
||||
history.go(-1)
|
||||
</script>");
|
||||
$db->query("unlock tables");
|
||||
exit;
|
||||
}
|
||||
if ($gameStor->maxgeneral <= $gencount) {
|
||||
@@ -94,6 +98,7 @@ if ($gameStor->maxgeneral <= $gencount) {
|
||||
window.alert('더이상 등록할 수 없습니다!')
|
||||
history.go(-1)
|
||||
</script>");
|
||||
$db->query("unlock tables");
|
||||
exit;
|
||||
}
|
||||
if (mb_strlen($name) < 1) {
|
||||
@@ -101,6 +106,7 @@ if (mb_strlen($name) < 1) {
|
||||
window.alert('이름이 짧습니다. 다시 가입해주세요!')
|
||||
history.go(-1)
|
||||
</script>");
|
||||
$db->query("unlock tables");
|
||||
exit;
|
||||
}
|
||||
if (mb_strlen($name) > 9) {
|
||||
@@ -108,6 +114,7 @@ if (mb_strlen($name) > 9) {
|
||||
window.alert('이름이 유효하지 않습니다. 다시 가입해주세요!')
|
||||
history.go(-1)
|
||||
</script>");
|
||||
$db->query("unlock tables");
|
||||
exit;
|
||||
}
|
||||
if ($leader + $power + $intel > GameConst::$defaultStatTotal) {
|
||||
@@ -115,6 +122,7 @@ if ($leader + $power + $intel > GameConst::$defaultStatTotal) {
|
||||
window.alert('능력치가 ".GameConst::$defaultStatTotal."을 넘어섰습니다. 다시 가입해주세요!')
|
||||
history.go(-1)
|
||||
</script>");
|
||||
$db->query("unlock tables");
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -153,7 +161,7 @@ $leader = $leader + $pleader;
|
||||
$power = $power + $ppower;
|
||||
$intel = $intel + $pintel;
|
||||
|
||||
$admin = $gameStor->getValues(['scenario', 'turnterm', 'show_img_level', 'startyear', 'year']);
|
||||
$admin = $gameStor->getValues(['scenario', 'turnterm', 'turntime', 'show_img_level', 'startyear', 'year']);
|
||||
$relYear = Util::valueFit($admin['year'] - $admin['startyear'], 0);
|
||||
|
||||
$age = 20 + ($pleader + $ppower + $pintel) * 2 - (mt_rand(0, 1));
|
||||
@@ -187,10 +195,10 @@ else{
|
||||
$experience *= 0.8;
|
||||
}
|
||||
|
||||
$turntime = getRandTurn($admin['turnterm']);
|
||||
$turntime = getRandTurn($admin['turnterm'], new \DateTimeImmutable($admin['turntime']));
|
||||
|
||||
$lastconnect = date('Y-m-d H:i:s');
|
||||
if ($lastconnect >= $turntime) {
|
||||
$now = date('Y-m-d H:i:s');
|
||||
if ($now >= $turntime) {
|
||||
$turntime = addTurn($turntime, $admin['turnterm']);
|
||||
}
|
||||
|
||||
@@ -233,7 +241,8 @@ $db->insert('general', [
|
||||
'level' => 0,
|
||||
'turntime' => $turntime,
|
||||
'killturn' => 6,
|
||||
'lastconnect' => $lastconnect,
|
||||
'lastconnect' => $now,
|
||||
'lastrefresh' => $now,
|
||||
'crewtype'=>GameUnitConst::DEFAULT_CREWTYPE,
|
||||
'makelimit' => 0,
|
||||
'age' => $age,
|
||||
@@ -246,6 +255,8 @@ $db->insert('general', [
|
||||
]);
|
||||
$generalID = $db->insertId();
|
||||
|
||||
$db->query("unlock tables");
|
||||
|
||||
$cityname = CityConst::byID($city)->name;
|
||||
|
||||
$me = [
|
||||
|
||||
+13
-4
@@ -211,13 +211,16 @@ function activeFlipItem($img){
|
||||
}
|
||||
|
||||
jQuery(function($){
|
||||
$('.obj_tooltip').each(function(){
|
||||
$('.obj_tooltip').mouseover(function(){
|
||||
var $objTooltip = $(this);
|
||||
if($objTooltip.data('setObjTooltip')){
|
||||
return true;
|
||||
}
|
||||
|
||||
var tooltipClassText = $objTooltip.data('tooltip-class');
|
||||
if(!tooltipClassText){
|
||||
tooltipClassText = '';
|
||||
}
|
||||
console.log($objTooltip.data('tooltip-class'));
|
||||
var template = '<div class="tooltip {0}" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>'
|
||||
.format(tooltipClassText);
|
||||
|
||||
@@ -227,9 +230,15 @@ jQuery(function($){
|
||||
},
|
||||
template:template,
|
||||
html:true
|
||||
});
|
||||
|
||||
}).tooltip('show');
|
||||
|
||||
$objTooltip.data('setObjTooltip', true);
|
||||
});
|
||||
/*each(function(){
|
||||
var $objTooltip = $(this);
|
||||
|
||||
|
||||
});*/
|
||||
|
||||
activeFlip();
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
jQuery(function($){
|
||||
$('#by_scenario').change(function(){
|
||||
var scenarioIdx = $(this).val();
|
||||
$.redirect('a_hallOfFame.php', {scenarioIdx:scenarioIdx}, 'get');
|
||||
var $this = $(this);
|
||||
var scenarioIdx = $this.val();
|
||||
var seasonIdx = $(this).find('option:selected').data('season');
|
||||
|
||||
|
||||
$.redirect('a_hallOfFame.php', {scenarioIdx:scenarioIdx, seasonIdx:seasonIdx}, 'get');
|
||||
})
|
||||
//$.redirect("processing.php",{ commandtype: commandtype, turn: turn}, 'post');
|
||||
});
|
||||
@@ -105,6 +105,22 @@ function scenarioPreview(){
|
||||
}
|
||||
|
||||
function formSetup(){
|
||||
$.validator.addMethod("autorun_user", function(value,element){
|
||||
var parent = $(element).parent('.input-group');
|
||||
var checkCnt = parent.find('input:checked').length;
|
||||
if(value <= 0){
|
||||
if(checkCnt > 0){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
if(checkCnt == 0){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}, "유효 시간과 옵션은 동시에 설정해야합니다.");
|
||||
$('#game_form').validate({
|
||||
rules:{
|
||||
turnterm:"required",
|
||||
@@ -116,6 +132,7 @@ function formSetup(){
|
||||
show_img_level:"required",
|
||||
tournament_trig:"required",
|
||||
join_mode:'required',
|
||||
autorun_user_minutes:{required: true, autorun_user: true, min:0}
|
||||
},
|
||||
errorElement: "div",
|
||||
errorPlacement: function ( error, element ) {
|
||||
@@ -140,6 +157,15 @@ function formSetup(){
|
||||
if(!$("#game_form").valid()){
|
||||
return;
|
||||
}
|
||||
|
||||
var autorun_user_minutes = parseInt($('#autorun_user_minutes').val());
|
||||
var autorun_user = [];
|
||||
if(autorun_user_minutes > 0){
|
||||
$('.autorun_user_chk:checked').each(function(){
|
||||
autorun_user.push($(this).data('key'));
|
||||
});
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
cache:false,
|
||||
type:'post',
|
||||
@@ -155,7 +181,10 @@ function formSetup(){
|
||||
show_img_level:$('#show_img_level input:radio:checked').val(),
|
||||
tournament_trig:$('#tournament_trig input:radio:checked').val(),
|
||||
reserve_open:$('#reserve_open').val(),
|
||||
pre_reserve_open:$('#pre_reserve_open').val(),
|
||||
join_mode:$('#join_mode input:radio:checked').val(),
|
||||
autorun_user_minutes:autorun_user_minutes,
|
||||
autorun_user:autorun_user
|
||||
}
|
||||
}).then(function(result){
|
||||
var deferred = $.Deferred();
|
||||
|
||||
+72
-9
@@ -26,9 +26,9 @@ function refreshing(obj, arg1, arg2) {
|
||||
}
|
||||
// if(term <= 0) {
|
||||
switch(arg1) {
|
||||
case 0: location.reload(); break;
|
||||
case 0: document.location.reload(); break;
|
||||
case 2: turn(arg2); break;
|
||||
case 3: arg2.submit(); break;
|
||||
case 3: $(arg2).submit(); break;
|
||||
case 4:
|
||||
arg2.submit();
|
||||
message.msg.value = "";
|
||||
@@ -39,14 +39,48 @@ function refreshing(obj, arg1, arg2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function moveProcessing(commandtype, turn){
|
||||
console.log(commandtype, turn);
|
||||
$.redirect("processing.php",{ commandtype: commandtype, turn: turn}, 'post');
|
||||
function turn(type) {
|
||||
$.post({
|
||||
url:'j_turn.php',
|
||||
dataType:'json',
|
||||
data:{
|
||||
type:type,
|
||||
sel:form2.sel.value
|
||||
}
|
||||
}).then(function(data){
|
||||
if(!data.result){
|
||||
alert(data.reason);
|
||||
}
|
||||
reloadCommandList();
|
||||
});
|
||||
}
|
||||
|
||||
function turn(type) {
|
||||
num = form2.sel.value;
|
||||
commandlist.location.replace('turn.php?type=' + type + '&sel=' + num);
|
||||
function reloadCommandList(){
|
||||
$.get({
|
||||
url:'commandlist.php',
|
||||
cache: false,
|
||||
}).then(function(rdata){
|
||||
$('#commandlist').html(rdata);
|
||||
});
|
||||
}
|
||||
|
||||
function myclock() {
|
||||
|
||||
var $clock = $('#clock');
|
||||
var now_clock = moment();
|
||||
|
||||
if(!$clock.attr('data-time-diff')){
|
||||
var base_clock = moment($clock.attr('data-server-time'));
|
||||
$clock.attr('data-time-diff', base_clock.diff(now_clock));
|
||||
}
|
||||
|
||||
var game_clock = now_clock.add(parseInt($clock.attr('data-time-diff')), 'milliseconds');
|
||||
|
||||
$('#clock').val(game_clock.format('YYYY-MM-DD HH:mm:ss'));
|
||||
|
||||
window.setTimeout(function(){
|
||||
myclock();
|
||||
}, 500);
|
||||
}
|
||||
|
||||
jQuery(function($){
|
||||
@@ -54,11 +88,40 @@ jQuery(function($){
|
||||
var $this = $(this);
|
||||
var target = $('[name="genlist"]').val();
|
||||
var msg = $('#msg').val();
|
||||
console.log(target, msg);
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#mainBtnSubmit').click(function(){
|
||||
|
||||
});
|
||||
|
||||
$('#form2').submit(function(){
|
||||
var values = $(this).serializeArray();
|
||||
console.log(values);
|
||||
$.post({
|
||||
url:'j_preprocessing.php',
|
||||
dataType:'json',
|
||||
data:values
|
||||
}).then(function(data){
|
||||
if(!data.result){
|
||||
alert(data.reason);
|
||||
reloadCommandList();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!data.nextPage){
|
||||
reloadCommandList();
|
||||
return;
|
||||
}
|
||||
|
||||
document.location = data.nextPage;
|
||||
return;
|
||||
}, function(){
|
||||
alert('알 수 없는 에러');
|
||||
location.reload();
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
myclock();
|
||||
});
|
||||
+1
-1
@@ -385,7 +385,7 @@ function reloadWorldMap(option){
|
||||
|
||||
//터치스크린 탭
|
||||
|
||||
if(is_touch_device()){
|
||||
if(!option.neutralView && is_touch_device()){
|
||||
$objs.on('touchstart', function(e){
|
||||
if(window.sam_toggleSingleTap){
|
||||
return true;
|
||||
|
||||
+194
-2
@@ -3,8 +3,10 @@ var templateGeneralCard =
|
||||
<h4 class="bg1 with_border"><%name%></h4>\
|
||||
<h4><img src="<%iconPath%>" height=64 width=64></h4>\
|
||||
<p><%leader%> / <%power%> / <%intel%><br>\
|
||||
<%nation%><br>\
|
||||
<%personalText%><br>\
|
||||
<%specialText%> / <%special2Text%></p>\
|
||||
<button type="subject" class="with_skin with_border select_btn" value="<%no%>" name="pick">빙의하기</button>\
|
||||
<button type="subject" class="with_skin with_border select_btn" data-name="<%name%>" value="<%no%>" name="pick">빙의하기</button>\
|
||||
<label><input <%keepCnt?"":disabled="disabled"%> type="checkbox" value="<%no%>" name="keep[]" class="keep_select">보관(<%keepCnt%>회)</label>\
|
||||
</div>';
|
||||
|
||||
@@ -16,9 +18,32 @@ var templateSpecial =
|
||||
</span>\
|
||||
';
|
||||
|
||||
var templateGeneralRow =
|
||||
'<tr>\
|
||||
<td><img class="generalIcon" width="64" height="64" src="<%iconPath%>"></td>\
|
||||
<td style="<%userCSS%>"><%name%><%nameAux%></td>\
|
||||
<td><%age%>세</td>\
|
||||
<td><%personalWithTooltip%></td>\
|
||||
<td><%specialDomesticWithTooltip%> / <%speicalWarWithTooltip%></td>\
|
||||
<td>Lv <%explevel%></td>\
|
||||
<td><%nation%></td>\
|
||||
<td><%experience%></td>\
|
||||
<td><%dedication%></td>\
|
||||
<td><%level%></td>\
|
||||
<td><%total%></td>\
|
||||
<td><%leader%></td>\
|
||||
<td><%power%></td>\
|
||||
<td><%intel%></td>\
|
||||
<td><%killturn%></td>\
|
||||
</tr>';
|
||||
|
||||
function pickGeneral(){
|
||||
$btn = $(this);
|
||||
|
||||
if (!confirm('빙의할까요? : {0}'.format($btn.data('name')))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$.post({
|
||||
url:'j_select_npc.php',
|
||||
dataType:'json',
|
||||
@@ -112,10 +137,19 @@ function printGenerals(value){
|
||||
else{
|
||||
cardData.special2Text = cardData.special2;
|
||||
}
|
||||
|
||||
if(cardData.personal in characterInfo){
|
||||
cardData.personalText = TemplateEngine(templateSpecial, {
|
||||
text:cardData.personal,
|
||||
info:characterInfo[cardData.personal]
|
||||
});
|
||||
}
|
||||
else{
|
||||
cardData.personalText = cardData.personal;
|
||||
}
|
||||
|
||||
|
||||
var $card = $(TemplateEngine(templateGeneralCard, cardData));
|
||||
console.log($card);
|
||||
|
||||
$('.card_holder').append($card);
|
||||
$card.find('.select_btn').click(pickGeneral);
|
||||
@@ -131,7 +165,145 @@ function printGenerals(value){
|
||||
updateOutdateTimer();
|
||||
}
|
||||
|
||||
function printGeneralList(value){
|
||||
var tokenList = value.token;
|
||||
var generalList = $.map(value.list, function(general){
|
||||
general = {
|
||||
no:general[0],
|
||||
picture:general[1],
|
||||
imgsvr:general[2],
|
||||
npc:general[3],
|
||||
age:general[4],
|
||||
nation:general[5],
|
||||
special:general[6],
|
||||
special2:general[7],
|
||||
personal:general[8],
|
||||
name:general[9],
|
||||
name2:general[10],
|
||||
injury:general[11],
|
||||
leader:general[12],
|
||||
lbonus:general[13],
|
||||
power:general[14],
|
||||
intel:general[15],
|
||||
explevel:general[16],
|
||||
experience:general[17],
|
||||
dedication:general[18],
|
||||
level:general[19],
|
||||
killturn:general[20],
|
||||
connect:general[21],
|
||||
reserved:0
|
||||
};
|
||||
if(general.npc < 2){
|
||||
general.reserved = 2;
|
||||
}
|
||||
if(general.no in tokenList){
|
||||
general.reserved = 1;
|
||||
}
|
||||
|
||||
general.userCSS = "";
|
||||
general.nameAux = "";
|
||||
|
||||
if(general.reserved == 1){
|
||||
general.userCSS = 'color:violet';
|
||||
}
|
||||
else if(general.npc >= 2){
|
||||
general.userCSS = 'color:cyan';
|
||||
}
|
||||
else if(general.npc == 1){
|
||||
general.userCSS = 'color:skyblue';
|
||||
}
|
||||
|
||||
if(general.name2){
|
||||
general.nameAux += '<br><small>({0})</small>'.format(general.name2);
|
||||
}
|
||||
|
||||
if(general.reserved == 1){
|
||||
general.nameAux += '<br><small>({0}회)</small>'.format(tokenList[general.no]);
|
||||
}
|
||||
|
||||
|
||||
general.total = general.leader + general.power + general.intel;
|
||||
general.iconPath = getIconPath(general.imgsvr, general.picture);
|
||||
|
||||
general.specialDomesticWithTooltip = TemplateEngine(templateSpecial, {
|
||||
text:general.special,
|
||||
info:specialInfo[general.special]
|
||||
});
|
||||
|
||||
general.speicalWarWithTooltip = TemplateEngine(templateSpecial, {
|
||||
text:general.special2,
|
||||
info:specialInfo[general.special2]
|
||||
});
|
||||
|
||||
general.personalWithTooltip = TemplateEngine(templateSpecial, {
|
||||
text:general.personal,
|
||||
info:characterInfo[general.personal]
|
||||
});
|
||||
|
||||
return general;
|
||||
});
|
||||
|
||||
generalList.sort(function(lhs, rhs){
|
||||
if(lhs.reserved > rhs.reserved){
|
||||
return -1;
|
||||
}
|
||||
if(lhs.reserved < rhs.reserved){
|
||||
return 1;
|
||||
}
|
||||
if(lhs.total != rhs.total){
|
||||
return rhs.total - lhs.total;
|
||||
}
|
||||
if(lhs.leader != rhs.leader){
|
||||
return rhs.leader - lhs.total;
|
||||
}
|
||||
|
||||
if(lhs.name < rhs.name){
|
||||
return -1;
|
||||
}
|
||||
if(lhs.name > rhs.name){
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
window.generalList = generalList;
|
||||
_printGeneralList(true);
|
||||
}
|
||||
|
||||
function _printGeneralList(clear){
|
||||
var $generalTable = $('#general_list');
|
||||
if(clear){
|
||||
$generalTable.empty();
|
||||
$generalTable.data('lastIdx', 0);
|
||||
$('#row_print_more').show();
|
||||
}
|
||||
|
||||
generalList = window.generalList;
|
||||
|
||||
var idxFrom = $generalTable.data('lastIdx');
|
||||
var idxTo = Math.min(idxFrom + 50, generalList.length);
|
||||
$generalTable.data('lastIdx', idxTo);
|
||||
|
||||
for(var idx = idxFrom; idx < idxFrom + 50; idx++){
|
||||
var general = generalList[idx];
|
||||
$generalTable.append(TemplateEngine(templateGeneralRow, general));
|
||||
}
|
||||
|
||||
if(idxTo == generalList.length){
|
||||
$('#row_print_more').hide();
|
||||
}
|
||||
|
||||
$generalTable.find('.obj_tooltip').tooltip({
|
||||
title:function(){
|
||||
return $.trim($(this).find('.tooltiptext').html());
|
||||
},
|
||||
html:true
|
||||
});
|
||||
$('#tb_general_list').show();
|
||||
}
|
||||
|
||||
$(function($){
|
||||
window.generalList = [];
|
||||
|
||||
$.post('j_get_select_npc_token.php').then(function(value){
|
||||
if(!value.result){
|
||||
@@ -165,4 +337,24 @@ $('#btn_pick_more').click(function(){
|
||||
});
|
||||
});
|
||||
|
||||
$('#btn_load_general_list').click(function(){
|
||||
$.post({
|
||||
url:'j_get_general_list.php',
|
||||
dataType:'json',
|
||||
data:{
|
||||
with_token:true
|
||||
}
|
||||
}).then(function(result){
|
||||
if(!result.result){
|
||||
alert(result.reason);
|
||||
return false;
|
||||
}
|
||||
printGeneralList(result);
|
||||
});
|
||||
});
|
||||
|
||||
$('#btn_print_more').click(function(){
|
||||
_printGeneralList();
|
||||
})
|
||||
|
||||
});
|
||||
+2
-3
@@ -26,8 +26,6 @@ define('STEP_LOG', true);
|
||||
define('PROCESS_LOG', true);
|
||||
|
||||
ob_start();
|
||||
session_cache_limiter('nocache');//NOTE: 캐시가 가능하도록 설정해야 할 수도 있음. 주의!
|
||||
//FIXME: 이곳에서 설정하면 안될 듯 하다. 옮기자.
|
||||
|
||||
// 에러 메세지 출력
|
||||
function Error($message='', $url="")
|
||||
@@ -35,7 +33,8 @@ function Error($message='', $url="")
|
||||
if (!$url) {
|
||||
$url = $_SERVER['REQUEST_URI'];
|
||||
}
|
||||
file_put_contents(__dir__."/logs/".UniqueConst::$serverID."/_db_bug.txt", "{\"url\":\"$url\",\"msg\":\"$message\"}\n", FILE_APPEND);
|
||||
$e = new \Exception();
|
||||
logError("aux_err", $message, '', getExceptionTraceAsString($e));
|
||||
|
||||
$templates = new \League\Plates\Engine(__dir__.'/templates');
|
||||
|
||||
|
||||
+110
-26
@@ -9,7 +9,7 @@ $commandtype = Util::getReq('commandtype', 'int');
|
||||
$turn = Util::getReq('turn', 'array_int');
|
||||
|
||||
if(!$turn || $commandtype === null){
|
||||
header('location:commandlist.php');
|
||||
header('location:commandlist.php', true, 303);
|
||||
die();
|
||||
}
|
||||
|
||||
@@ -95,6 +95,7 @@ switch($commandtype) {
|
||||
case 55: command_Single($turn, 55); break; //거병
|
||||
case 56: command_Single($turn, 56); break; //해산
|
||||
case 57: command_Single($turn, 57); break; //모반 시도
|
||||
case 58: command_58( $turn, 58); break; //숙련 전환
|
||||
|
||||
case 61: command_61($turn, 61); break; //불가침
|
||||
case 62: command_62($turn, 62); break; //선포
|
||||
@@ -196,7 +197,7 @@ function command_99($turn) {
|
||||
}
|
||||
}
|
||||
|
||||
header('location:b_chiefcenter.php');
|
||||
header('location:b_chiefcenter.php', true, 303);
|
||||
}
|
||||
|
||||
function command_11($turn, $command, bool $is모병 = false) {
|
||||
@@ -535,7 +536,7 @@ function command_23($turn, $command) {
|
||||
$result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),"");
|
||||
$general = MYDB_fetch_array($result);
|
||||
|
||||
$query = "select no,name,level,npc from general where nation='{$general['nation']}' and no!='{$general['no']}' order by npc,binary(name)";
|
||||
$query = "select no,name,level,gold,rice,npc from general where nation='{$general['nation']}' and no!='{$general['no']}' order by npc,binary(name)";
|
||||
$result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($result);
|
||||
|
||||
@@ -551,10 +552,10 @@ function command_23($turn, $command) {
|
||||
else { $style = ""; }
|
||||
if($general['level'] >= 5) {
|
||||
echo "
|
||||
<option value={$general['no']} {$style}>*{$general['name']}*</option>";
|
||||
<option value={$general['no']} {$style}>*{$general['name']}*(금:{$general['gold']}, 쌀:{$general['rice']})</option>";
|
||||
} else {
|
||||
echo "
|
||||
<option value={$general['no']} {$style}>{$general['name']}</option>";
|
||||
<option value={$general['no']} {$style}>{$general['name']}(금:{$general['gold']}, 쌀:{$general['rice']})</option>";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -612,7 +613,7 @@ function command_24($turn, $command) {
|
||||
$result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),"");
|
||||
$general = MYDB_fetch_array($result);
|
||||
|
||||
$query = "select no,name,level,npc from general where nation='{$general['nation']}' and no!='{$general['no']}' order by npc,binary(name)";
|
||||
$query = "select no,name,level,gold,rice,npc from general where nation='{$general['nation']}' and no!='{$general['no']}' order by npc,binary(name)";
|
||||
$result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($result);
|
||||
|
||||
@@ -628,11 +629,9 @@ function command_24($turn, $command) {
|
||||
elseif($general['npc'] == 1) { $style = "style=color:skyblue;"; }
|
||||
else { $style = ""; }
|
||||
if($general['level'] >= 5) {
|
||||
echo "
|
||||
<option value={$general['no']} {$style}>*{$general['name']}*</option>";
|
||||
echo "<option value={$general['no']} {$style}>*{$general['name']}*(금:{$general['gold']}, 쌀:{$general['rice']})</option>";
|
||||
} else {
|
||||
echo "
|
||||
<option value={$general['no']} {$style}>{$general['name']}</option>";
|
||||
echo "<option value={$general['no']} {$style}>{$general['name']}(금:{$general['gold']}, 쌀:{$general['rice']})</option>";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -718,6 +717,8 @@ function command_25($turn, $command) {
|
||||
}
|
||||
}
|
||||
unset($nation);
|
||||
|
||||
$generalList = $db->query('SELECT no,name,nation,npc FROM general WHERE owner!=%i ORDER BY name ASC', $userID);
|
||||
?>
|
||||
|
||||
국가에 임관합니다.<br>
|
||||
@@ -728,22 +729,31 @@ function command_25($turn, $command) {
|
||||
<?php else: ?>
|
||||
임관할 국가를 목록에서 선택하세요.<br>
|
||||
<?php endif; ?>
|
||||
!!!는 방랑군을 포함한 랜덤임관입니다. 유니크를 기대하신다면!<br>
|
||||
???는 방랑군을 제외한 랜덤임관입니다. 유니크 혜택은 없습니다.<br>
|
||||
임의의 국가로 임관할 경우 유니크 아이템을 얻을 기회가 높습니다.
|
||||
임관 금지이거나 초기 제한중인 국가는 붉은색 배경으로 표시됩니다.<br>
|
||||
870px x 200px를 넘어서는 내용은 표시되지 않습니다.<br>
|
||||
<form name=form1 action=c_double.php method=post>
|
||||
<select name=double size=1 style=color:white;background-color:black>
|
||||
<option value=99 style=color:white;background-color:black;>!!!</option>
|
||||
<option value=98 style=color:white;background-color:black;>???</option>
|
||||
|
||||
<?php foreach($nationList as $nation): ?>
|
||||
<?php if(!$nation['availableJoin']): ?>
|
||||
<option value='<?=$nation['nation']?>' style='color:<?=$nation['color']?>;background-color:red;' <?=$onlyRandom?'disabled':''?>>【 <?=$nation['name']?> 】</option>
|
||||
<?php else: ?>
|
||||
<option value='<?=$nation['nation']?>' style='color:<?=$nation['color']?>;' <?=$onlyRandom?'disabled':''?>>【 <?=$nation['name']?> 】</option>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
<input id='double' name='double' type='hidden'>
|
||||
<input id='third' name='third' type='hidden'>
|
||||
<select id='selectorV' name=value size=1 style=color:white;background-color:black>
|
||||
<optgroup label='랜덤 임관'>
|
||||
<option value=99 style=color:white;background-color:black;>임의의 국가</option>
|
||||
<option value=98 style=color:white;background-color:black;>건국된 임의 국가</option>
|
||||
</optgroup>
|
||||
<optgroup label='국가로 임관'>
|
||||
<?php foreach($nationList as $nation): ?>
|
||||
<?php if(!$nation['availableJoin']): ?>
|
||||
<option value='<?=$nation['nation']?>' style='color:<?=$nation['color']?>;background-color:red;' <?=$onlyRandom?'disabled':''?>>【 <?=$nation['name']?> 】</option>
|
||||
<?php else: ?>
|
||||
<option value='<?=$nation['nation']?>' style='color:<?=$nation['color']?>;' <?=$onlyRandom?'disabled':''?>>【 <?=$nation['name']?> 】</option>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
</optgroup>
|
||||
<optgroup label='장수를 따라 임관'>
|
||||
<?php foreach($generalList as $targetGeneral): ?>
|
||||
<option value='-<?=$targetGeneral['no']?>' <?=$onlyRandom?'disabled':''?>><?=formatName($targetGeneral['name'],$targetGeneral['npc'])?>【<?=getNationStaticInfo($targetGeneral['nation'])['name']??'재야'?>】</option>
|
||||
<?php endforeach; ?>
|
||||
</optgroup>
|
||||
|
||||
</select>
|
||||
<input type=submit value=임관>
|
||||
@@ -752,6 +762,29 @@ function command_25($turn, $command) {
|
||||
<input type=hidden name=turn[] value=<?=$turn[$i]?>>
|
||||
<?php endforeach; ?>
|
||||
</form>
|
||||
<script>
|
||||
$(function(){
|
||||
var $third = $('#third');
|
||||
var $double = $('#double');
|
||||
var $selector = $('#selectorV');
|
||||
$selector.on('change', function(){
|
||||
var value=$selector.val();
|
||||
if(value >= 98){
|
||||
$third.val(value);
|
||||
$double.val(0);
|
||||
}
|
||||
else if(value>0){
|
||||
$third.val(0);
|
||||
$double.val(value);
|
||||
}
|
||||
else{
|
||||
$third.val(1);
|
||||
$double.val(-value);
|
||||
}
|
||||
});
|
||||
$selector.val(99).trigger('change');
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
echo getInvitationList($nationList);
|
||||
|
||||
@@ -769,7 +802,7 @@ function command_27($turn, $command) {
|
||||
$result = MYDB_query($query, $connect) or Error("command_27 ".MYDB_error($connect),"");
|
||||
$me = MYDB_fetch_array($result);
|
||||
|
||||
$query = "select no,name,level,npc from general where nation='{$me['nation']}' and no!='{$me['no']}' order by npc,binary(name)";
|
||||
$query = "select no,name,city,level,npc from general where nation='{$me['nation']}' and no!='{$me['no']}' order by npc,binary(name)";
|
||||
$result = MYDB_query($query, $connect) or Error("aaa_processing.php ".MYDB_error($connect),"");
|
||||
$gencount = MYDB_num_rows($result);
|
||||
|
||||
@@ -783,15 +816,16 @@ function command_27($turn, $command) {
|
||||
|
||||
for($i=0; $i < $gencount; $i++) {
|
||||
$general = MYDB_fetch_array($result);
|
||||
$cityName = CityConst::byID($general['city'])->name;
|
||||
if ($general['npc'] >= 2) { $style = "style=color:cyan;"; }
|
||||
elseif($general['npc'] == 1) { $style = "style=color:skyblue;"; }
|
||||
else { $style = ""; }
|
||||
if($general['level'] >= 5) {
|
||||
echo "
|
||||
<option value={$general['no']} {$style}>*{$general['name']}*</option>";
|
||||
<option value={$general['no']} {$style}>*{$general['name']}*({$cityName})</option>";
|
||||
} else {
|
||||
echo "
|
||||
<option value={$general['no']} {$style}>{$general['name']}</option>";
|
||||
<option value={$general['no']} {$style}>{$general['name']}({$cityName})</option>";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1724,6 +1758,56 @@ function command_54($turn, $command) {
|
||||
ender();
|
||||
}
|
||||
|
||||
function command_58($turn, $command) {
|
||||
$db = DB::db();
|
||||
$connect=$db->get();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
starter("숙련 전환");
|
||||
|
||||
$dexVals = $db->queryFirstList('SELECT dex0, dex10, dex20, dex30, dex40 FROM general WHERE owner = %i', $userID);
|
||||
|
||||
$dexTexts = [];
|
||||
foreach($dexVals as $idx => $val){
|
||||
$prevDexLevel = getDexCall($val);
|
||||
$newDexLevel = getDexCall(Util::toInt($val * 0.7));
|
||||
$addDex = Util::toInt(($val - $val * 0.7) * 0.5);
|
||||
$dexTexts[$idx] = "$prevDexLevel ⇒ $newDexLevel, {$addDex} 전환";
|
||||
}
|
||||
|
||||
echo "
|
||||
본인의 특정 병종 숙련을 30% 줄이고, 줄어든 숙련 중 2/3(20%p)를 다른 병종 숙련으로 전환합니다.<br>
|
||||
<form name=form1 action=c_double.php method=post>
|
||||
<select name=double size=1 style=color:white;background-color:black>
|
||||
<option value=0>보병 ({$dexTexts[0]})</option>
|
||||
<option value=1>궁병 ({$dexTexts[1]})</option>
|
||||
<option value=2>기병 ({$dexTexts[2]})</option>
|
||||
<option value=3>귀병 ({$dexTexts[3]})</option>
|
||||
<option value=4>차병 ({$dexTexts[4]})</option>
|
||||
</select>
|
||||
숙련을
|
||||
<select name=third size=1 style=color:white;background-color:black>
|
||||
<option value=0>보병 ({$dexVals[0]})</option>
|
||||
<option value=1>궁병 ({$dexVals[1]})</option>
|
||||
<option value=2>기병 ({$dexVals[2]})</option>
|
||||
<option value=3>귀병 ({$dexVals[3]})</option>
|
||||
<option value=4>차병 ({$dexVals[4]})</option>
|
||||
</select>
|
||||
으로
|
||||
<input type=submit value=전환>
|
||||
<input type=hidden name=command value=$command>";
|
||||
for($i=0; $i < count($turn); $i++) {
|
||||
echo "
|
||||
<input type=hidden name=turn[] value=$turn[$i]>";
|
||||
}
|
||||
|
||||
echo "
|
||||
</form>
|
||||
";
|
||||
|
||||
ender();
|
||||
}
|
||||
|
||||
function command_61($turn, $command) {
|
||||
$db = DB::db();
|
||||
$connect=$db->get();
|
||||
|
||||
@@ -70,7 +70,7 @@ class CityConstBase{
|
||||
[11, '수춘', '대', 5143, 99, 96, 80, 99, 95, '중원', 395, 270, ['서주', '여남', '초', '합비']],
|
||||
[12, '서주', '대', 4853,101, 98, 80,102, 97, '중원', 440, 250, ['수춘', '하비', '초', '패']],
|
||||
[13, '강릉', '대', 4850,105, 96, 80, 95, 96, '초', 245, 335, ['장사', '무릉', '이릉', '장판']],
|
||||
[14, '장사', '대', 4710, 97, 99, 80,100,105, '초', 255, 375, ['강릉', '시상', '계양', '무릉']],
|
||||
[14, '장사', '대', 4710, 97, 99, 80,100,105, '초', 255, 375, ['강릉', '시상', '계양', '무릉', '영릉']],
|
||||
[15, '시상', '대', 5252, 98,100,100, 99, 96, '오월', 360, 360, ['장사', '여강', '고창', '적벽', '파양']],
|
||||
[16, '위례', '대', 4926,100, 93, 80, 98,103, '동이', 620, 145, ['평양', '사비', '계림', '안평', '동황']],
|
||||
[17, '계', '중', 3885, 75, 80, 60, 78, 81, '하북', 365, 35, ['진양', '역경']],
|
||||
@@ -110,7 +110,7 @@ class CityConstBase{
|
||||
[51, '신야', '소', 2786, 60, 62, 40, 58, 55, '초', 250, 260, ['양양', '완', '상용']],
|
||||
[52, '강하', '소', 3074, 55, 56, 40, 57, 60, '초', 315, 295, ['장판', '적벽']],
|
||||
[53, '무릉', '소', 3196, 58, 63, 40, 63, 58, '초', 195, 355, ['강릉', '장사', '영릉']],
|
||||
[54, '영릉', '소', 2849, 62, 58, 40, 62, 62, '초', 190, 395, ['계양', '남영', '무릉']],
|
||||
[54, '영릉', '소', 2849, 62, 58, 40, 62, 62, '초', 190, 395, ['계양', '남영', '무릉', '장사']],
|
||||
[55, '상동', '소', 2767, 58, 59, 40, 62, 58, '초', 210, 435, ['남해', '계양', '고창']],
|
||||
[56, '여강', '소', 2905, 56, 58, 40, 60, 55, '오월', 380, 315, ['시상', '합비', '적벽', '파양']],
|
||||
[57, '회계', '소', 3005, 64, 59, 40, 62, 64, '오월', 480, 395, ['오', '산월']],
|
||||
|
||||
@@ -81,11 +81,22 @@ class ResetHelper{
|
||||
mkdir($servRoot.'/logs/'.$serverID, 0755);
|
||||
mkdir($servRoot.'/data/'.$serverID, 0755);
|
||||
|
||||
$seasonIdx = 1;
|
||||
if($db->queryFirstField('SHOW TABLES LIKE %s', 'storage') !== null){
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$nextSeasonIdx = $gameStor->next_season_idx;
|
||||
if($nextSeasonIdx !== null){
|
||||
$seasonIdx = $nextSeasonIdx;
|
||||
}
|
||||
$gameStor->resetCache();
|
||||
}
|
||||
|
||||
$result = Util::generateFileUsingSimpleTemplate(
|
||||
$servRoot.'/d_setting/UniqueConst.orig.php',
|
||||
$servRoot.'/d_setting/UniqueConst.php',[
|
||||
'serverID'=>$serverID,
|
||||
'serverName'=>AppConf::getList()[$prefix]->getKorName(),
|
||||
'seasonIdx'=>$seasonIdx
|
||||
], true
|
||||
);
|
||||
|
||||
@@ -112,11 +123,14 @@ class ResetHelper{
|
||||
}
|
||||
}
|
||||
|
||||
(KVStorage::getStorage($db, 'game_env'))->resetValues();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$gameStor->resetValues();
|
||||
$gameStor->next_season_idx = $seasonIdx;
|
||||
|
||||
return [
|
||||
'result'=>true,
|
||||
'serverID'=>$serverID
|
||||
'serverID'=>$serverID,
|
||||
'seasonIdx'=>$seasonIdx
|
||||
];
|
||||
}
|
||||
|
||||
@@ -129,7 +143,9 @@ class ResetHelper{
|
||||
int $npcmode,
|
||||
int $show_img_level,
|
||||
int $tournament_trig,
|
||||
string $join_mode
|
||||
string $join_mode,
|
||||
string $turntime,
|
||||
?array $autorun_user
|
||||
):array{
|
||||
//FIXME: 분리할 것
|
||||
if(120 % $turnterm != 0){
|
||||
@@ -152,6 +168,7 @@ class ResetHelper{
|
||||
}
|
||||
|
||||
$serverID = $clearResult['serverID'];
|
||||
$seasonIdx = $clearResult['seasonIdx'];
|
||||
|
||||
$scenarioObj = new Scenario($scenario, false);
|
||||
$scenarioObj->buildConf();
|
||||
@@ -186,8 +203,6 @@ class ResetHelper{
|
||||
true
|
||||
);
|
||||
|
||||
|
||||
$turntime = date('Y-m-d H:i:s');
|
||||
$time = substr($turntime, 11, 2);
|
||||
if($sync == 0) {
|
||||
// 현재 시간을 1월로 맞춤
|
||||
@@ -223,12 +238,13 @@ class ResetHelper{
|
||||
'msg'=>'공지사항',//TODO:공지사항
|
||||
'maxgeneral'=>GameConst::$defaultMaxGeneral,
|
||||
'maxnation'=>GameConst::$defaultMaxNation,
|
||||
'conlimit'=>300,
|
||||
'conlimit'=>30000,
|
||||
'gold_rate'=>100,
|
||||
'rice_rate'=>100,
|
||||
'develcost'=>$develcost,
|
||||
'turntime'=>$turntime,
|
||||
'starttime'=>$starttime,
|
||||
'opentime'=>$turntime,
|
||||
'turnterm'=>$turnterm,
|
||||
'killturn'=>$killturn,
|
||||
'genius'=>GameConst::$defaultMaxGenius,
|
||||
@@ -238,7 +254,8 @@ class ResetHelper{
|
||||
'extended_general'=>$extend,
|
||||
'fiction'=>$fiction,
|
||||
'tnmt_trig'=>$tournament_trig,
|
||||
'prev_winner'=>$prevWinner
|
||||
'prev_winner'=>$prevWinner,
|
||||
'autorun_user'=>$autorun_user
|
||||
];
|
||||
|
||||
foreach(RootDB::db()->query('SELECT `no`, `name`, `picture`, `imgsvr` FROM member WHERE grade >= 5') as $admin){
|
||||
@@ -262,6 +279,7 @@ class ResetHelper{
|
||||
'date'=>$turntime,
|
||||
'winner_nation'=>null,
|
||||
'map'=>$scenarioObj->getMapTheme(),
|
||||
'season'=>$seasonIdx,
|
||||
'scenario'=>$scenario,
|
||||
'scenario_name'=>$scenarioObj->getTitle(),
|
||||
'env'=>Json::encode($env)
|
||||
|
||||
@@ -227,7 +227,7 @@ class NPC{
|
||||
$level = $nationID?1:0;
|
||||
}
|
||||
|
||||
$turntime = \sammo\getRandTurn($env['turnterm']);
|
||||
$turntime = \sammo\getRandTurn($env['turnterm'], new \DateTimeImmutable($env['turntime']));
|
||||
|
||||
$killturn = ($this->death - $year) * 12 + mt_rand(0, 11);
|
||||
|
||||
|
||||
@@ -314,12 +314,12 @@ class WarUnitGeneral extends WarUnit{
|
||||
}
|
||||
else if($item >= 14 && $item <= 16){
|
||||
//의적주, 두강주, 보령압주 사용
|
||||
$this->addAtmosBonus(5);
|
||||
$this->addAtmosBonus(10);
|
||||
$itemActivated = true;
|
||||
}
|
||||
else if($item >= 19 && $item <= 20){
|
||||
//춘화첩, 초선화 사용
|
||||
$this->addAtmosBonus(7);
|
||||
$this->addAtmosBonus(14);
|
||||
$itemActivated = true;
|
||||
}
|
||||
else if($item == 4){
|
||||
@@ -330,12 +330,12 @@ class WarUnitGeneral extends WarUnit{
|
||||
}
|
||||
else if($item >= 12 && $item <= 13){
|
||||
//과실주, 이강주 사용
|
||||
$this->addTrainBonus(5);
|
||||
$this->addTrainBonus(10);
|
||||
$itemActivated = true;
|
||||
}
|
||||
else if($item >= 18 && $item <= 18){
|
||||
else if($item >= 17 && $item <= 18){
|
||||
//철벽서, 단결도 사용
|
||||
$this->addTrainBonus(7);
|
||||
$this->addTrainBonus(14);
|
||||
$itemActivated = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace sammo;
|
||||
|
||||
class CityConst extends CityConstBase{
|
||||
public static $regionMap = [
|
||||
'킹'=>1,1=>'킹',
|
||||
'퀸'=>2,2=>'퀸',
|
||||
'룩'=>3,3=>'룩',
|
||||
'나이트'=>4,4=>'나이트',
|
||||
'비숍'=>5,5=>'비숍',
|
||||
'폰'=>6,6=>'폰',
|
||||
'빈칸'=>7,7=>'빈칸',
|
||||
];
|
||||
|
||||
protected static $initCity = [
|
||||
//id, 도시, 규모, 인구, 농, 상, 치, 성, 수,(x100)지역, x, y, 연결도시
|
||||
[ 1, "A1", "중", 8000, 80, 80, 80, 80, 80, "룩", 350.2, 420.2, ["A2", "B1", "B2"]],
|
||||
[ 2, "B1", "중", 8000, 80, 80, 80, 80, 80, "나이트", 392.7, 395.6, ["A1", "A2", "B2", "C1", "C2"]],
|
||||
[ 3, "C1", "중", 8000, 80, 80, 80, 80, 80, "비숍", 435.2, 371.1, ["B1", "B2", "C2", "D1", "D2"]],
|
||||
[ 4, "D1", "특", 12000, 120, 120, 120, 120, 120, "킹", 477.7, 346.5, ["C1", "C2", "D2", "E1", "E2"]],
|
||||
[ 5, "E1", "대", 10000, 100, 100, 100, 100, 100, "퀸", 520.2, 322.0, ["D1", "D2", "E2", "F1", "F2"]],
|
||||
[ 6, "F1", "중", 8000, 80, 80, 80, 80, 80, "비숍", 562.7, 297.5, ["E1", "E2", "F2", "G1", "G2"]],
|
||||
[ 7, "G1", "중", 8000, 80, 80, 80, 80, 80, "나이트", 605.2, 272.9, ["F1", "F2", "G2", "H1", "H2"]],
|
||||
[ 8, "H1", "중", 8000, 80, 80, 80, 80, 80, "룩", 647.7, 248.4, ["G1", "G2", "H2"]],
|
||||
[ 9, "A2", "소", 6000, 60, 60, 60, 60, 60, "폰", 307.7, 395.6, ["A1", "A3", "B1", "B2", "B3"]],
|
||||
[10, "B2", "소", 6000, 60, 60, 60, 60, 60, "폰", 350.2, 371.1, ["A1", "A2", "A3", "B1", "B3", "C1", "C2", "C3"]],
|
||||
[11, "C2", "소", 6000, 60, 60, 60, 60, 60, "폰", 392.7, 346.5, ["B1", "B2", "B3", "C1", "C3", "D1", "D2", "D3"]],
|
||||
[12, "D2", "소", 6000, 60, 60, 60, 60, 60, "폰", 435.2, 322.0, ["C1", "C2", "C3", "D1", "D3", "E1", "E2", "E3"]],
|
||||
[13, "E2", "소", 6000, 60, 60, 60, 60, 60, "폰", 477.7, 297.5, ["D1", "D2", "D3", "E1", "E3", "F1", "F2", "F3"]],
|
||||
[14, "F2", "소", 6000, 60, 60, 60, 60, 60, "폰", 520.2, 272.9, ["E1", "E2", "E3", "F1", "F3", "G1", "G2", "G3"]],
|
||||
[15, "G2", "소", 6000, 60, 60, 60, 60, 60, "폰", 562.7, 248.4, ["F1", "F2", "F3", "G1", "G3", "H1", "H2", "H3"]],
|
||||
[16, "H2", "소", 6000, 60, 60, 60, 60, 60, "폰", 605.2, 223.8, ["G1", "G2", "G3", "H1", "H3"]],
|
||||
[17, "A3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 371.1, ["A2", "A4", "B2", "B3", "B4"]],
|
||||
[18, "B3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 346.5, ["A2", "A3", "A4", "B2", "B4", "C2", "C3", "C4"]],
|
||||
[19, "C3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 322.0, ["B2", "B3", "B4", "C2", "C4", "D2", "D3", "D4"]],
|
||||
[20, "D3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 297.5, ["C2", "C3", "C4", "D2", "D4", "E2", "E3", "E4"]],
|
||||
[21, "E3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 272.9, ["D2", "D3", "D4", "E2", "E4", "F2", "F3", "F4"]],
|
||||
[22, "F3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 477.7, 248.4, ["E2", "E3", "E4", "F2", "F4", "G2", "G3", "G4"]],
|
||||
[23, "G3", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 520.2, 223.8, ["F2", "F3", "F4", "G2", "G4", "H2", "H3", "H4"]],
|
||||
[24, "H3", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 562.7, 199.3, ["G2", "G3", "G4", "H2", "H4"]],
|
||||
[25, "A4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 222.7, 346.5, ["A3", "A5", "B3", "B4", "B5"]],
|
||||
[26, "B4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 322.0, ["A3", "A4", "A5", "B3", "B5", "C3", "C4", "C5"]],
|
||||
[27, "C4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 297.5, ["B3", "B4", "B5", "C3", "C5", "D3", "D4", "D5"]],
|
||||
[28, "D4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 272.9, ["C3", "C4", "C5", "D3", "D5", "E3", "E4", "E5"]],
|
||||
[29, "E4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 248.4, ["D3", "D4", "D5", "E3", "E5", "F3", "F4", "F5"]],
|
||||
[30, "F4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 223.8, ["E3", "E4", "E5", "F3", "F5", "G3", "G4", "G5"]],
|
||||
[31, "G4", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 477.7, 199.3, ["F3", "F4", "F5", "G3", "G5", "H3", "H4", "H5"]],
|
||||
[32, "H4", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 520.2, 174.8, ["G3", "G4", "G5", "H3", "H5"]],
|
||||
[33, "A5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 180.2, 322.0, ["A4", "A6", "B4", "B5", "B6"]],
|
||||
[34, "B5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 222.7, 297.5, ["A4", "A5", "A6", "B4", "B6", "C4", "C5", "C6"]],
|
||||
[35, "C5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 272.9, ["B4", "B5", "B6", "C4", "C6", "D4", "D5", "D6"]],
|
||||
[36, "D5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 248.4, ["C4", "C5", "C6", "D4", "D6", "E4", "E5", "E6"]],
|
||||
[37, "E5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 223.8, ["D4", "D5", "D6", "E4", "E6", "F4", "F5", "F6"]],
|
||||
[38, "F5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 199.3, ["E4", "E5", "E6", "F4", "F6", "G4", "G5", "G6"]],
|
||||
[39, "G5", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 174.8, ["F4", "F5", "F6", "G4", "G6", "H4", "H5", "H6"]],
|
||||
[40, "H5", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 477.7, 150.2, ["G4", "G5", "G6", "H4", "H6"]],
|
||||
[41, "A6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 137.7, 297.5, ["A5", "A7", "B5", "B6", "B7"]],
|
||||
[42, "B6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 180.2, 272.9, ["A5", "A6", "A7", "B5", "B7", "C5", "C6", "C7"]],
|
||||
[43, "C6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 222.7, 248.4, ["B5", "B6", "B7", "C5", "C7", "D5", "D6", "D7"]],
|
||||
[44, "D6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 265.2, 223.8, ["C5", "C6", "C7", "D5", "D7", "E5", "E6", "E7"]],
|
||||
[45, "E6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 307.7, 199.3, ["D5", "D6", "D7", "E5", "E7", "F5", "F6", "F7"]],
|
||||
[46, "F6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 350.2, 174.8, ["E5", "E6", "E7", "F5", "F7", "G5", "G6", "G7"]],
|
||||
[47, "G6", "수", 4000, 40, 40, 40, 40, 40, "빈칸", 392.7, 150.2, ["F5", "F6", "F7", "G5", "G7", "H5", "H6", "H7"]],
|
||||
[48, "H6", "진", 4000, 40, 40, 40, 40, 40, "빈칸", 435.2, 125.7, ["G5", "G6", "G7", "H5", "H7"]],
|
||||
[49, "A7", "소", 6000, 60, 60, 60, 60, 60, "폰", 95.2, 272.9, ["A6", "A8", "B6", "B7", "B8"]],
|
||||
[50, "B7", "소", 6000, 60, 60, 60, 60, 60, "폰", 137.7, 248.4, ["A6", "A7", "A8", "B6", "B8", "C6", "C7", "C8"]],
|
||||
[51, "C7", "소", 6000, 60, 60, 60, 60, 60, "폰", 180.2, 223.8, ["B6", "B7", "B8", "C6", "C8", "D6", "D7", "D8"]],
|
||||
[52, "D7", "소", 6000, 60, 60, 60, 60, 60, "폰", 222.7, 199.3, ["C6", "C7", "C8", "D6", "D8", "E6", "E7", "E8"]],
|
||||
[53, "E7", "소", 6000, 60, 60, 60, 60, 60, "폰", 265.2, 174.8, ["D6", "D7", "D8", "E6", "E8", "F6", "F7", "F8"]],
|
||||
[54, "F7", "소", 6000, 60, 60, 60, 60, 60, "폰", 307.7, 150.2, ["E6", "E7", "E8", "F6", "F8", "G6", "G7", "G8"]],
|
||||
[55, "G7", "소", 6000, 60, 60, 60, 60, 60, "폰", 350.2, 125.7, ["F6", "F7", "F8", "G6", "G8", "H6", "H7", "H8"]],
|
||||
[56, "H7", "소", 6000, 60, 60, 60, 60, 60, "폰", 392.7, 101.1, ["G6", "G7", "G8", "H6", "H8"]],
|
||||
[57, "A8", "중", 6000, 60, 60, 60, 60, 60, "룩", 52.7, 248.4, ["A7", "B7", "B8"]],
|
||||
[58, "B8", "중", 8000, 80, 80, 80, 80, 80, "나이트", 95.2, 223.8, ["A7", "A8", "B7", "C7", "C8"]],
|
||||
[59, "C8", "중", 8000, 80, 80, 80, 80, 80, "비숍", 137.7, 199.3, ["B7", "B8", "C7", "D7", "D8"]],
|
||||
[60, "D8", "특", 8000, 80, 80, 80, 80, 80, "킹", 180.2, 174.8, ["C7", "C8", "D7", "E7", "E8"]],
|
||||
[61, "E8", "대", 12000, 120, 120, 120, 120, 120, "퀸", 222.7, 150.2, ["D7", "D8", "E7", "F7", "F8"]],
|
||||
[62, "F8", "중", 10000, 100, 100, 100, 100, 100, "비숍", 265.2, 125.7, ["E7", "E8", "F7", "G7", "G8"]],
|
||||
[63, "G8", "중", 8000, 80, 80, 80, 80, 80, "나이트", 307.7, 101.1, ["F7", "F8", "G7", "H7", "H8"]],
|
||||
[64, "H8", "중", 8000, 80, 80, 80, 80, 80, "룩", 350.2, 76.6, ["G7", "G8", "H7"]]
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,718 @@
|
||||
{
|
||||
"title":"【가상모드12-x】 삼국지11 영웅 난무(체스 지도)",
|
||||
"life":1,
|
||||
"fiction":1,
|
||||
"nation":[
|
||||
],
|
||||
"diplomacy":[
|
||||
],
|
||||
"stat":{
|
||||
"total":220,
|
||||
"min":40,
|
||||
"max":95,
|
||||
"npcMax":95
|
||||
},
|
||||
"const":{
|
||||
"defaultMaxGeneral":800
|
||||
},
|
||||
"map":{
|
||||
"mapName":"chess",
|
||||
"unitSet":"basic"
|
||||
},
|
||||
"general":[
|
||||
[0, "가규", -1, 0, null, 78, 61, 84, 0, 160, 250, null, null],
|
||||
[0, "가범", -1, 0, null, 60, 62, 73, 0, 160, 250, null, null],
|
||||
[0, "가충", -1, 0, null, 54, 31, 89, 0, 160, 250, null, null],
|
||||
[0, "가화", -1, 0, null, 49, 65, 41, 0, 160, 250, null, null],
|
||||
[0, "가후", -1, 0, null, 86, 48, 97, 0, 160, 250, null, null],
|
||||
[0, "간옹", -1, 0, null, 20, 32, 74, 0, 160, 250, null, null],
|
||||
[0, "감녕", -1, 0, null, 86, 94, 76, 0, 160, 250, null, null],
|
||||
[0, "감택", -1, 0, null, 43, 49, 83, 0, 160, 250, null, null],
|
||||
[0, "강유", -1, 0, null, 90, 86, 90, 0, 160, 250, null, null],
|
||||
[0, "건석", -1, 0, null, 16, 7, 78, 0, 160, 250, null, null],
|
||||
[0, "견희", -1, 0, null, 94, 76, 93, 0, 160, 250, null, null],
|
||||
[0, "견초", -1, 0, null, 72, 69, 73, 0, 160, 250, null, null],
|
||||
[0, "견홍", -1, 0, null, 70, 74, 66, 0, 160, 250, null, null],
|
||||
[0, "계옹", -1, 0, null, 63, 52, 41, 0, 160, 250, null, null],
|
||||
[0, "고간", -1, 0, null, 74, 56, 48, 0, 160, 250, null, null],
|
||||
[0, "고담", -1, 0, null, 33, 23, 70, 0, 160, 250, null, null],
|
||||
[0, "고당융", -1, 0, null, 35, 24, 76, 0, 160, 250, null, null],
|
||||
[0, "고람", -1, 0, null, 76, 82, 66, 0, 160, 250, null, null],
|
||||
[0, "고상", -1, 0, null, 68, 68, 52, 0, 160, 250, null, null],
|
||||
[0, "고순", -1, 0, null, 85, 86, 55, 0, 160, 250, null, null],
|
||||
[0, "고승", -1, 0, null, 67, 73, 41, 0, 160, 250, null, null],
|
||||
[0, "고옹", -1, 0, null, 43, 18, 80, 0, 160, 250, null, null],
|
||||
[0, "고유", -1, 0, null, 57, 43, 71, 0, 160, 250, null, null],
|
||||
[0, "고정", -1, 0, null, 55, 63, 43, 0, 160, 250, null, null],
|
||||
[0, "고패", -1, 0, null, 66, 61, 69, 0, 160, 250, null, null],
|
||||
[0, "공도", -1, 0, null, 59, 70, 23, 0, 160, 250, null, null],
|
||||
[0, "공손강", -1, 0, null, 72, 66, 61, 0, 160, 250, null, null],
|
||||
[0, "공손공", -1, 0, null, 39, 17, 68, 0, 160, 250, null, null],
|
||||
[0, "공손도", -1, 0, null, 67, 71, 63, 0, 160, 250, null, null],
|
||||
[0, "공손범", -1, 0, null, 73, 69, 64, 0, 160, 250, null, null],
|
||||
[0, "공손속", -1, 0, null, 63, 68, 54, 0, 160, 250, null, null],
|
||||
[0, "공손연", -1, 0, null, 65, 70, 56, 0, 160, 250, null, null],
|
||||
[0, "공손월", -1, 0, null, 74, 72, 47, 0, 160, 250, null, null],
|
||||
[0, "공손찬", -1, 0, null, 84, 83, 70, 0, 160, 250, null, null],
|
||||
[0, "공융", -1, 0, null, 30, 5, 72, 0, 160, 250, null, null],
|
||||
[0, "공주", -1, 0, null, 26, 16, 68, 0, 160, 250, null, null],
|
||||
[0, "공지", -1, 0, null, 43, 53, 61, 0, 160, 250, null, null],
|
||||
[0, "곽가", -1, 0, null, 60, 15, 98, 0, 160, 250, null, null],
|
||||
[0, "곽도", -1, 0, null, 52, 50, 82, 0, 160, 250, null, null],
|
||||
[0, "곽마", -1, 0, null, 68, 71, 47, 0, 160, 250, null, null],
|
||||
[0, "곽사", -1, 0, null, 64, 76, 13, 0, 160, 250, null, null],
|
||||
[0, "곽원", -1, 0, null, 66, 73, 36, 0, 160, 250, null, null],
|
||||
[0, "곽유지", -1, 0, null, 13, 9, 68, 0, 160, 250, null, null],
|
||||
[0, "곽익", -1, 0, null, 73, 69, 69, 0, 160, 250, null, null],
|
||||
[0, "곽준", -1, 0, null, 80, 66, 73, 0, 160, 250, null, null],
|
||||
[0, "곽혁", -1, 0, null, 21, 29, 70, 0, 160, 250, null, null],
|
||||
[0, "곽회", -1, 0, null, 87, 78, 81, 0, 160, 250, null, null],
|
||||
[0, "관구검", -1, 0, null, 78, 74, 52, 0, 160, 250, null, null],
|
||||
[0, "관구수", -1, 0, null, 58, 62, 33, 0, 160, 250, null, null],
|
||||
[0, "관구전", -1, 0, null, 63, 60, 69, 0, 160, 250, null, null],
|
||||
[0, "관색", -1, 0, null, 74, 88, 52, 0, 160, 250, null, null],
|
||||
[0, "관우", -1, 0, null, 95, 97, 75, 0, 160, 250, null, null],
|
||||
[0, "관이", -1, 0, null, 50, 62, 44, 0, 160, 250, null, null],
|
||||
[0, "관정", -1, 0, null, 36, 52, 72, 0, 160, 250, null, null],
|
||||
[0, "관통", -1, 0, null, 63, 60, 61, 0, 160, 250, null, null],
|
||||
[0, "관평", -1, 0, null, 77, 82, 68, 0, 160, 250, null, null],
|
||||
[0, "관해", -1, 0, null, 70, 82, 10, 0, 160, 250, null, null],
|
||||
[0, "관흥", -1, 0, null, 76, 86, 62, 0, 160, 250, null, null],
|
||||
[0, "괴량", -1, 0, null, 68, 33, 88, 0, 160, 250, null, null],
|
||||
[0, "괴월", -1, 0, null, 47, 27, 82, 0, 160, 250, null, null],
|
||||
[0, "교모", -1, 0, null, 54, 45, 69, 0, 160, 250, null, null],
|
||||
[0, "교수", -1, 0, null, 64, 69, 38, 0, 160, 250, null, null],
|
||||
[0, "교현", -1, 0, null, 12, 6, 66, 0, 160, 250, null, null],
|
||||
[0, "구건", -1, 0, null, 39, 52, 65, 0, 160, 250, null, null],
|
||||
[0, "구본", -1, 0, null, 50, 41, 67, 0, 160, 250, null, null],
|
||||
[0, "구성", -1, 0, null, 55, 70, 38, 0, 160, 250, null, null],
|
||||
[0, "국연", -1, 0, null, 50, 19, 71, 0, 160, 250, null, null],
|
||||
[0, "국의", -1, 0, null, 82, 78, 51, 0, 160, 250, null, null],
|
||||
[0, "극정", -1, 0, null, 10, 4, 63, 0, 160, 250, null, null],
|
||||
[0, "금선", -1, 0, null, 52, 68, 13, 0, 160, 250, null, null],
|
||||
[0, "금의", -1, 0, null, 17, 38, 64, 0, 160, 250, null, null],
|
||||
[0, "금환삼결", -1, 0, null, 64, 76, 19, 0, 160, 250, null, null],
|
||||
[0, "기령", -1, 0, null, 78, 83, 51, 0, 160, 250, null, null],
|
||||
[0, "나헌", -1, 0, null, 85, 71, 75, 0, 160, 250, null, null],
|
||||
[0, "낙통", -1, 0, null, 76, 58, 75, 0, 160, 250, null, null],
|
||||
[0, "냉포", -1, 0, null, 71, 82, 68, 0, 160, 250, null, null],
|
||||
[0, "영수", -1, 0, null, 67, 69, 72, 0, 160, 250, null, null],
|
||||
[0, "아빠노숙", -1, 0, null, 80, 56, 92, 0, 160, 250, null, null],
|
||||
[0, "아들노숙", -1, 0, null, 71, 53, 74, 0, 160, 250, null, null],
|
||||
[0, "노식", -1, 0, null, 86, 63, 82, 0, 160, 250, null, null],
|
||||
[0, "뇌동", -1, 0, null, 69, 78, 51, 0, 160, 250, null, null],
|
||||
[0, "뇌박", -1, 0, null, 62, 70, 36, 0, 160, 250, null, null],
|
||||
[0, "누규", -1, 0, null, 52, 13, 87, 0, 160, 250, null, null],
|
||||
[0, "누현", -1, 0, null, 23, 22, 67, 0, 160, 250, null, null],
|
||||
[0, "능조", -1, 0, null, 75, 81, 42, 0, 160, 250, null, null],
|
||||
[0, "능통", -1, 0, null, 77, 89, 55, 0, 160, 250, null, null],
|
||||
[0, "단경", -1, 0, null, 71, 68, 43, 0, 160, 250, null, null],
|
||||
[0, "담웅", -1, 0, null, 58, 73, 14, 0, 160, 250, null, null],
|
||||
[0, "당균", -1, 0, null, 33, 24, 77, 0, 160, 250, null, null],
|
||||
[0, "당빈", -1, 0, null, 67, 74, 59, 0, 160, 250, null, null],
|
||||
[0, "당자", -1, 0, null, 61, 71, 50, 0, 160, 250, null, null],
|
||||
[0, "대교", -1, 0, null, 90, 53, 90, 0, 160, 250, null, null],
|
||||
[0, "대래동주", -1, 0, null, 51, 53, 53, 0, 160, 250, null, null],
|
||||
[0, "대릉", -1, 0, null, 70, 75, 39, 0, 160, 250, null, null],
|
||||
[0, "도겸", -1, 0, null, 51, 27, 63, 0, 160, 250, null, null],
|
||||
[0, "도준", -1, 0, null, 65, 66, 46, 0, 160, 250, null, null],
|
||||
[0, "동궐", -1, 0, null, 65, 59, 76, 0, 160, 250, null, null],
|
||||
[0, "동도나", -1, 0, null, 68, 73, 31, 0, 160, 250, null, null],
|
||||
[0, "동민", -1, 0, null, 49, 60, 25, 0, 160, 250, null, null],
|
||||
[0, "동소", -1, 0, null, 19, 25, 80, 0, 160, 250, null, null],
|
||||
[0, "동습", -1, 0, null, 72, 85, 50, 0, 160, 250, null, null],
|
||||
[0, "동승", -1, 0, null, 56, 53, 65, 0, 160, 250, null, null],
|
||||
[0, "동윤", -1, 0, null, 47, 28, 78, 0, 160, 250, null, null],
|
||||
[0, "동조", -1, 0, null, 17, 13, 56, 0, 160, 250, null, null],
|
||||
[0, "동탁", -1, 0, null, 74, 87, 69, 0, 160, 250, null, null],
|
||||
[0, "동화", -1, 0, null, 57, 34, 74, 0, 160, 250, null, null],
|
||||
[0, "두기", -1, 0, null, 66, 32, 74, 0, 160, 250, null, null],
|
||||
[0, "두예", -1, 0, null, 85, 30, 85, 0, 160, 250, null, null],
|
||||
[0, "등무", -1, 0, null, 61, 75, 29, 0, 160, 250, null, null],
|
||||
[0, "등수", -1, 0, null, 44, 32, 31, 0, 160, 250, null, null],
|
||||
[0, "등애", -1, 0, null, 94, 87, 89, 0, 160, 250, null, null],
|
||||
[0, "등윤", -1, 0, null, 29, 41, 71, 0, 160, 250, null, null],
|
||||
[0, "등지", -1, 0, null, 73, 52, 81, 0, 160, 250, null, null],
|
||||
[0, "등충", -1, 0, null, 72, 85, 69, 0, 160, 250, null, null],
|
||||
[0, "등현", -1, 0, null, 61, 73, 45, 0, 160, 250, null, null],
|
||||
[0, "마균", -1, 0, null, 2, 7, 60, 0, 160, 250, null, null],
|
||||
[0, "마대", -1, 0, null, 81, 85, 56, 0, 160, 250, null, null],
|
||||
[0, "마등", -1, 0, null, 82, 80, 51, 0, 160, 250, null, null],
|
||||
[0, "마량", -1, 0, null, 46, 23, 85, 0, 160, 250, null, null],
|
||||
[0, "마막", -1, 0, null, 19, 12, 7, 0, 160, 250, null, null],
|
||||
[0, "마속", -1, 0, null, 61, 67, 87, 0, 160, 250, null, null],
|
||||
[0, "마완", -1, 0, null, 71, 74, 16, 0, 160, 250, null, null],
|
||||
[0, "마운록", -1, 0, null, 88, 91, 63, 0, 160, 250, null, null],
|
||||
[0, "마준", -1, 0, null, 38, 52, 31, 0, 160, 250, null, null],
|
||||
[0, "마철", -1, 0, null, 70, 62, 56, 0, 160, 250, null, null],
|
||||
[0, "마초", -1, 0, null, 88, 97, 44, 0, 160, 250, null, null],
|
||||
[0, "촉나라마충", -1, 0, null, 78, 72, 68, 0, 160, 250, null, null],
|
||||
[0, "오나라마충", -1, 0, null, 67, 77, 64, 0, 160, 250, null, null],
|
||||
[0, "마휴", -1, 0, null, 68, 73, 48, 0, 160, 250, null, null],
|
||||
[0, "만욱", -1, 0, null, 21, 25, 71, 0, 160, 250, null, null],
|
||||
[0, "만총", -1, 0, null, 84, 64, 82, 0, 160, 250, null, null],
|
||||
[0, "망아장", -1, 0, null, 45, 79, 3, 0, 160, 250, null, null],
|
||||
[0, "맹달", -1, 0, null, 75, 73, 74, 0, 160, 250, null, null],
|
||||
[0, "맹우", -1, 0, null, 50, 68, 22, 0, 160, 250, null, null],
|
||||
[0, "맹종", -1, 0, null, 47, 28, 72, 0, 160, 250, null, null],
|
||||
[0, "맹획", -1, 0, null, 76, 87, 42, 0, 160, 250, null, null],
|
||||
[0, "모개", -1, 0, null, 63, 39, 59, 0, 160, 250, null, null],
|
||||
[0, "목록대왕", -1, 0, null, 65, 71, 39, 0, 160, 250, null, null],
|
||||
[0, "목순", -1, 0, null, 52, 77, 11, 0, 160, 250, null, null],
|
||||
[0, "무안국", -1, 0, null, 67, 83, 34, 0, 160, 250, null, null],
|
||||
[0, "문빙", -1, 0, null, 86, 82, 66, 0, 160, 250, null, null],
|
||||
[0, "문앙", -1, 0, null, 78, 91, 60, 0, 160, 250, null, null],
|
||||
[0, "문추", -1, 0, null, 78, 94, 25, 0, 160, 250, null, null],
|
||||
[0, "문호", -1, 0, null, 66, 72, 45, 0, 160, 250, null, null],
|
||||
[0, "문흠", -1, 0, null, 74, 83, 43, 0, 160, 250, null, null],
|
||||
[0, "미방", -1, 0, null, 54, 61, 32, 0, 160, 250, null, null],
|
||||
[0, "미씨", -1, 0, null, 90, 46, 86, 0, 160, 250, null, null],
|
||||
[0, "미축", -1, 0, null, 33, 29, 77, 0, 160, 250, null, null],
|
||||
[0, "반봉", -1, 0, null, 56, 77, 4, 0, 160, 250, null, null],
|
||||
[0, "반장", -1, 0, null, 76, 80, 70, 0, 160, 250, null, null],
|
||||
[0, "반준", -1, 0, null, 61, 18, 67, 0, 160, 250, null, null],
|
||||
[0, "방덕", -1, 0, null, 83, 94, 70, 0, 160, 250, null, null],
|
||||
[0, "방열", -1, 0, null, 68, 80, 44, 0, 160, 250, null, null],
|
||||
[0, "방통", -1, 0, null, 80, 34, 97, 0, 160, 250, null, null],
|
||||
[0, "방회", -1, 0, null, 69, 75, 49, 0, 160, 250, null, null],
|
||||
[0, "방희", -1, 0, null, 60, 38, 68, 0, 160, 250, null, null],
|
||||
[0, "배수", -1, 0, null, 8, 9, 70, 0, 160, 250, null, null],
|
||||
[0, "배원소", -1, 0, null, 49, 65, 25, 0, 160, 250, null, null],
|
||||
[0, "번건", -1, 0, null, 41, 24, 71, 0, 160, 250, null, null],
|
||||
[0, "번능", -1, 0, null, 69, 61, 36, 0, 160, 250, null, null],
|
||||
[0, "번씨", -1, 0, null, 88, 32, 86, 0, 160, 250, null, null],
|
||||
[0, "번주", -1, 0, null, 66, 73, 31, 0, 160, 250, null, null],
|
||||
[0, "법정", -1, 0, null, 82, 47, 97, 0, 160, 250, null, null],
|
||||
[0, "변씨", -1, 0, null, 86, 44, 84, 0, 160, 250, null, null],
|
||||
[0, "변희", -1, 0, null, 56, 70, 59, 0, 160, 250, null, null],
|
||||
[0, "보즐", -1, 0, null, 72, 51, 84, 0, 160, 250, null, null],
|
||||
[0, "보천", -1, 0, null, 71, 60, 71, 0, 160, 250, null, null],
|
||||
[0, "보협", -1, 0, null, 71, 49, 69, 0, 160, 250, null, null],
|
||||
[0, "복양흥", -1, 0, null, 37, 32, 70, 0, 160, 250, null, null],
|
||||
[0, "봉기", -1, 0, null, 27, 21, 84, 0, 160, 250, null, null],
|
||||
[0, "부동", -1, 0, null, 66, 72, 46, 0, 160, 250, null, null],
|
||||
[0, "부사인", -1, 0, null, 46, 63, 37, 0, 160, 250, null, null],
|
||||
[0, "부손", -1, 0, null, 14, 13, 69, 0, 160, 250, null, null],
|
||||
[0, "부첨", -1, 0, null, 73, 85, 72, 0, 160, 250, null, null],
|
||||
[0, "부하", -1, 0, null, 44, 35, 81, 0, 160, 250, null, null],
|
||||
[0, "비시", -1, 0, null, 15, 28, 64, 0, 160, 250, null, null],
|
||||
[0, "비연", -1, 0, null, 60, 66, 21, 0, 160, 250, null, null],
|
||||
[0, "비요", -1, 0, null, 70, 66, 73, 0, 160, 250, null, null],
|
||||
[0, "비의", -1, 0, null, 77, 30, 83, 0, 160, 250, null, null],
|
||||
[0, "사마가", -1, 0, null, 60, 84, 25, 0, 160, 250, null, null],
|
||||
[0, "사마랑", -1, 0, null, 20, 21, 71, 0, 160, 250, null, null],
|
||||
[0, "사마망", -1, 0, null, 73, 58, 78, 0, 160, 250, null, null],
|
||||
[0, "사마부", -1, 0, null, 70, 37, 76, 0, 160, 250, null, null],
|
||||
[0, "사마사", -1, 0, null, 80, 64, 88, 0, 160, 250, null, null],
|
||||
[0, "사마소", -1, 0, null, 76, 57, 87, 0, 160, 250, null, null],
|
||||
[0, "사마염", -1, 0, null, 69, 59, 76, 0, 160, 250, null, null],
|
||||
[0, "사마유", -1, 0, null, 71, 68, 75, 0, 160, 250, null, null],
|
||||
[0, "사마의", -1, 0, null, 98, 58, 96, 0, 160, 250, null, null],
|
||||
[0, "사마주", -1, 0, null, 61, 52, 61, 0, 160, 250, null, null],
|
||||
[0, "사정", -1, 0, null, 64, 76, 34, 0, 160, 250, null, null],
|
||||
[0, "사찬", -1, 0, null, 60, 72, 54, 0, 160, 250, null, null],
|
||||
[0, "서막", -1, 0, null, 55, 32, 67, 0, 160, 250, null, null],
|
||||
[0, "서서", -1, 0, null, 87, 65, 93, 0, 160, 250, null, null],
|
||||
[0, "서성", -1, 0, null, 87, 81, 78, 0, 160, 250, null, null],
|
||||
[0, "서씨", -1, 0, null, 87, 46, 80, 0, 160, 250, null, null],
|
||||
[0, "서영", -1, 0, null, 80, 76, 57, 0, 160, 250, null, null],
|
||||
[0, "서질", -1, 0, null, 68, 83, 24, 0, 160, 250, null, null],
|
||||
[0, "서황", -1, 0, null, 88, 90, 74, 0, 160, 250, null, null],
|
||||
[0, "석포", -1, 0, null, 69, 71, 56, 0, 160, 250, null, null],
|
||||
[0, "설영", -1, 0, null, 49, 18, 64, 0, 160, 250, null, null],
|
||||
[0, "설종", -1, 0, null, 34, 16, 72, 0, 160, 250, null, null],
|
||||
[0, "설후", -1, 0, null, 17, 15, 68, 0, 160, 250, null, null],
|
||||
[0, "성공영", -1, 0, null, 73, 71, 80, 0, 160, 250, null, null],
|
||||
[0, "성만", -1, 0, null, 61, 68, 66, 0, 160, 250, null, null],
|
||||
[0, "성의", -1, 0, null, 74, 72, 41, 0, 160, 250, null, null],
|
||||
[0, "소교", -1, 0, null, 90, 48, 87, 0, 160, 250, null, null],
|
||||
[0, "소비", -1, 0, null, 69, 63, 66, 0, 160, 250, null, null],
|
||||
[0, "소유", -1, 0, null, 50, 59, 49, 0, 160, 250, null, null],
|
||||
[0, "소제", -1, 0, null, 21, 15, 72, 0, 160, 250, null, null],
|
||||
[0, "손건", -1, 0, null, 34, 33, 78, 0, 160, 250, null, null],
|
||||
[0, "손견", -1, 0, null, 93, 93, 69, 0, 160, 250, null, null],
|
||||
[0, "손관", -1, 0, null, 72, 78, 51, 0, 160, 250, null, null],
|
||||
[0, "손광", -1, 0, null, 52, 46, 44, 0, 160, 250, null, null],
|
||||
[0, "손교", -1, 0, null, 77, 72, 66, 0, 160, 250, null, null],
|
||||
[0, "손권", -1, 0, null, 78, 67, 83, 0, 160, 250, null, null],
|
||||
[0, "손기", -1, 0, null, 60, 67, 51, 0, 160, 250, null, null],
|
||||
[0, "손노반", -1, 0, null, 86, 38, 87, 0, 160, 250, null, null],
|
||||
[0, "손등", -1, 0, null, 62, 37, 79, 0, 160, 250, null, null],
|
||||
[0, "손랑", -1, 0, null, 34, 43, 30, 0, 160, 250, null, null],
|
||||
[0, "손량", -1, 0, null, 21, 7, 70, 0, 160, 250, null, null],
|
||||
[0, "손례", -1, 0, null, 78, 81, 62, 0, 160, 250, null, null],
|
||||
[0, "손상향", -1, 0, null, 92, 90, 57, 0, 160, 250, null, null],
|
||||
[0, "손소", -1, 0, null, 80, 79, 75, 0, 160, 250, null, null],
|
||||
[0, "손수", -1, 0, null, 55, 51, 53, 0, 160, 250, null, null],
|
||||
[0, "손씨", -1, 0, null, 93, 22, 82, 0, 160, 250, null, null],
|
||||
[0, "손유", -1, 0, null, 77, 70, 68, 0, 160, 250, null, null],
|
||||
[0, "손이", -1, 0, null, 69, 71, 55, 0, 160, 250, null, null],
|
||||
[0, "손익", -1, 0, null, 67, 78, 27, 0, 160, 250, null, null],
|
||||
[0, "손정", -1, 0, null, 66, 53, 72, 0, 160, 250, null, null],
|
||||
[0, "손준", -1, 0, null, 64, 70, 65, 0, 160, 250, null, null],
|
||||
[0, "손중", -1, 0, null, 62, 71, 36, 0, 160, 250, null, null],
|
||||
[0, "손진", -1, 0, null, 67, 70, 48, 0, 160, 250, null, null],
|
||||
[0, "손책", -1, 0, null, 92, 96, 69, 0, 160, 250, null, null],
|
||||
[0, "손침", -1, 0, null, 25, 39, 65, 0, 160, 250, null, null],
|
||||
[0, "손호", -1, 0, null, 13, 28, 31, 0, 160, 250, null, null],
|
||||
[0, "손화", -1, 0, null, 31, 39, 68, 0, 160, 250, null, null],
|
||||
[0, "손환", -1, 0, null, 82, 73, 72, 0, 160, 250, null, null],
|
||||
[0, "손휴", -1, 0, null, 57, 39, 78, 0, 160, 250, null, null],
|
||||
[0, "손흠", -1, 0, null, 66, 69, 35, 0, 160, 250, null, null],
|
||||
[0, "송겸", -1, 0, null, 66, 78, 42, 0, 160, 250, null, null],
|
||||
[0, "송헌", -1, 0, null, 68, 77, 38, 0, 160, 250, null, null],
|
||||
[0, "순심", -1, 0, null, 19, 25, 77, 0, 160, 250, null, null],
|
||||
[0, "순우경", -1, 0, null, 72, 66, 29, 0, 160, 250, null, null],
|
||||
[0, "할배순욱", -1, 0, null, 63, 14, 95, 0, 160, 250, null, null],
|
||||
[0, "손자순욱", -1, 0, null, 8, 19, 77, 0, 160, 250, null, null],
|
||||
[0, "순유", -1, 0, null, 73, 26, 94, 0, 160, 250, null, null],
|
||||
[0, "순의", -1, 0, null, 16, 13, 70, 0, 160, 250, null, null],
|
||||
[0, "시삭", -1, 0, null, 38, 65, 47, 0, 160, 250, null, null],
|
||||
[0, "신비", -1, 0, null, 39, 24, 78, 0, 160, 250, null, null],
|
||||
[0, "신의", -1, 0, null, 55, 59, 59, 0, 160, 250, null, null],
|
||||
[0, "신창", -1, 0, null, 50, 26, 42, 0, 160, 250, null, null],
|
||||
[0, "신탐", -1, 0, null, 56, 62, 52, 0, 160, 250, null, null],
|
||||
[0, "신평", -1, 0, null, 69, 43, 76, 0, 160, 250, null, null],
|
||||
[0, "신헌영", -1, 0, null, 87, 48, 88, 0, 160, 250, null, null],
|
||||
[0, "심배", -1, 0, null, 84, 60, 87, 0, 160, 250, null, null],
|
||||
[0, "심영", -1, 0, null, 70, 77, 61, 0, 160, 250, null, null],
|
||||
[0, "아회남", -1, 0, null, 65, 74, 26, 0, 160, 250, null, null],
|
||||
[0, "악진", -1, 0, null, 80, 84, 52, 0, 160, 250, null, null],
|
||||
[0, "악취", -1, 0, null, 53, 66, 58, 0, 160, 250, null, null],
|
||||
[0, "악침", -1, 0, null, 73, 75, 43, 0, 160, 250, null, null],
|
||||
[0, "악환", -1, 0, null, 60, 82, 42, 0, 160, 250, null, null],
|
||||
[0, "안량", -1, 0, null, 79, 93, 42, 0, 160, 250, null, null],
|
||||
[0, "양강", -1, 0, null, 60, 69, 41, 0, 160, 250, null, null],
|
||||
[0, "양백", -1, 0, null, 44, 45, 19, 0, 160, 250, null, null],
|
||||
[0, "양봉", -1, 0, null, 54, 62, 52, 0, 160, 250, null, null],
|
||||
[0, "이각네양봉", -1, 0, null, 66, 65, 31, 0, 160, 250, null, null],
|
||||
[0, "양부", -1, 0, null, 67, 50, 83, 0, 160, 250, null, null],
|
||||
[0, "양서", -1, 0, null, 56, 62, 66, 0, 160, 250, null, null],
|
||||
[0, "양송", -1, 0, null, 2, 5, 28, 0, 160, 250, null, null],
|
||||
[0, "양수", -1, 0, null, 10, 4, 83, 0, 160, 250, null, null],
|
||||
[0, "양습", -1, 0, null, 73, 40, 73, 0, 160, 250, null, null],
|
||||
[0, "양앙", -1, 0, null, 68, 72, 38, 0, 160, 250, null, null],
|
||||
[0, "양의", -1, 0, null, 68, 40, 82, 0, 160, 250, null, null],
|
||||
[0, "양임", -1, 0, null, 70, 78, 53, 0, 160, 250, null, null],
|
||||
[0, "양제", -1, 0, null, 67, 68, 71, 0, 160, 250, null, null],
|
||||
[0, "진나라양조", -1, 0, null, 70, 65, 68, 0, 160, 250, null, null],
|
||||
[0, "양조", -1, 0, null, 53, 61, 36, 0, 160, 250, null, null],
|
||||
[0, "장양네양추", -1, 0, null, 67, 64, 58, 0, 160, 250, null, null],
|
||||
[0, "양추", -1, 0, null, 52, 65, 40, 0, 160, 250, null, null],
|
||||
[0, "양호", -1, 0, null, 90, 64, 84, 0, 160, 250, null, null],
|
||||
[0, "양홍", -1, 0, null, 18, 15, 76, 0, 160, 250, null, null],
|
||||
[0, "양회", -1, 0, null, 62, 68, 68, 0, 160, 250, null, null],
|
||||
[0, "양흔", -1, 0, null, 61, 68, 61, 0, 160, 250, null, null],
|
||||
[0, "양흥", -1, 0, null, 61, 65, 19, 0, 160, 250, null, null],
|
||||
[0, "엄강", -1, 0, null, 68, 71, 40, 0, 160, 250, null, null],
|
||||
[0, "엄백호", -1, 0, null, 67, 70, 23, 0, 160, 250, null, null],
|
||||
[0, "엄안", -1, 0, null, 79, 83, 69, 0, 160, 250, null, null],
|
||||
[0, "엄여", -1, 0, null, 61, 78, 44, 0, 160, 250, null, null],
|
||||
[0, "엄정", -1, 0, null, 50, 55, 39, 0, 160, 250, null, null],
|
||||
[0, "엄준", -1, 0, null, 13, 2, 70, 0, 160, 250, null, null],
|
||||
[0, "여개", -1, 0, null, 53, 30, 66, 0, 160, 250, null, null],
|
||||
[0, "여거", -1, 0, null, 70, 59, 71, 0, 160, 250, null, null],
|
||||
[0, "여건", -1, 0, null, 57, 70, 58, 0, 160, 250, null, null],
|
||||
[0, "여광", -1, 0, null, 56, 70, 13, 0, 160, 250, null, null],
|
||||
[0, "여대", -1, 0, null, 82, 71, 69, 0, 160, 250, null, null],
|
||||
[0, "여몽", -1, 0, null, 91, 81, 89, 0, 160, 250, null, null],
|
||||
[0, "여범", -1, 0, null, 73, 63, 74, 0, 160, 250, null, null],
|
||||
[0, "여상", -1, 0, null, 54, 71, 12, 0, 160, 250, null, null],
|
||||
[0, "여령기", -1, 0, null, 87, 90, 47, 0, 160, 250, null, null],
|
||||
[0, "여위황", -1, 0, null, 58, 63, 29, 0, 160, 250, null, null],
|
||||
[0, "여포", -1, 0, null, 87, 108, 26, 0, 160, 250, null, null],
|
||||
[0, "염상", -1, 0, null, 30, 27, 70, 0, 160, 250, null, null],
|
||||
[0, "염우", -1, 0, null, 52, 61, 58, 0, 160, 250, null, null],
|
||||
[0, "염유", -1, 0, null, 71, 57, 70, 0, 160, 250, null, null],
|
||||
[0, "염포", -1, 0, null, 29, 25, 82, 0, 160, 250, null, null],
|
||||
[0, "염행", -1, 0, null, 72, 84, 61, 0, 160, 250, null, null],
|
||||
[0, "예형", -1, 0, null, 3, 6, 83, 0, 160, 250, null, null],
|
||||
[0, "오강", -1, 0, null, 48, 38, 65, 0, 160, 250, null, null],
|
||||
[0, "오거", -1, 0, null, 49, 61, 23, 0, 160, 250, null, null],
|
||||
[0, "오경", -1, 0, null, 69, 66, 51, 0, 160, 250, null, null],
|
||||
[0, "오국태", -1, 0, null, 83, 31, 81, 0, 160, 250, null, null],
|
||||
[0, "오란", -1, 0, null, 62, 80, 35, 0, 160, 250, null, null],
|
||||
[0, "오반", -1, 0, null, 74, 71, 56, 0, 160, 250, null, null],
|
||||
[0, "오언", -1, 0, null, 74, 72, 77, 0, 160, 250, null, null],
|
||||
[0, "오연", -1, 0, null, 66, 73, 42, 0, 160, 250, null, null],
|
||||
[0, "오의", -1, 0, null, 83, 73, 68, 0, 160, 250, null, null],
|
||||
[0, "오질", -1, 0, null, 16, 29, 68, 0, 160, 250, null, null],
|
||||
[0, "오찬", -1, 0, null, 68, 41, 78, 0, 160, 250, null, null],
|
||||
[0, "온회", -1, 0, null, 62, 36, 73, 0, 160, 250, null, null],
|
||||
[0, "올돌골", -1, 0, null, 72, 86, 1, 0, 160, 250, null, null],
|
||||
[0, "옹개", -1, 0, null, 81, 75, 54, 0, 160, 250, null, null],
|
||||
[0, "왕경", -1, 0, null, 67, 63, 66, 0, 160, 250, null, null],
|
||||
[0, "왕광", -1, 0, null, 65, 55, 61, 0, 160, 250, null, null],
|
||||
[0, "큰왕기", -1, 0, null, 77, 78, 76, 0, 160, 250, null, null],
|
||||
[0, "작은왕기", -1, 0, null, 69, 67, 61, 0, 160, 250, null, null],
|
||||
[0, "왕누", -1, 0, null, 28, 30, 78, 0, 160, 250, null, null],
|
||||
[0, "왕도", -1, 0, null, 46, 59, 72, 0, 160, 250, null, null],
|
||||
[0, "왕돈", -1, 0, null, 60, 66, 46, 0, 160, 250, null, null],
|
||||
[0, "왕랑", -1, 0, null, 47, 35, 79, 0, 160, 250, null, null],
|
||||
[0, "왕릉", -1, 0, null, 74, 64, 70, 0, 160, 250, null, null],
|
||||
[0, "왕문", -1, 0, null, 65, 64, 31, 0, 160, 250, null, null],
|
||||
[0, "왕보", -1, 0, null, 62, 41, 79, 0, 160, 250, null, null],
|
||||
[0, "왕상", -1, 0, null, 23, 19, 68, 0, 160, 250, null, null],
|
||||
[0, "왕수", -1, 0, null, 54, 27, 76, 0, 160, 250, null, null],
|
||||
[0, "왕숙", -1, 0, null, 36, 22, 75, 0, 160, 250, null, null],
|
||||
[0, "왕쌍", -1, 0, null, 64, 88, 19, 0, 160, 250, null, null],
|
||||
[0, "왕업", -1, 0, null, 33, 6, 35, 0, 160, 250, null, null],
|
||||
[0, "왕위", -1, 0, null, 60, 70, 59, 0, 160, 250, null, null],
|
||||
[0, "왕윤", -1, 0, null, 26, 6, 67, 0, 160, 250, null, null],
|
||||
[0, "왕융", -1, 0, null, 57, 36, 72, 0, 160, 250, null, null],
|
||||
[0, "왕이", -1, 0, null, 88, 86, 36, 0, 160, 250, null, null],
|
||||
[0, "왕준", -1, 0, null, 81, 73, 77, 0, 160, 250, null, null],
|
||||
[0, "왕찬", -1, 0, null, 6, 3, 79, 0, 160, 250, null, null],
|
||||
[0, "왕창", -1, 0, null, 74, 64, 79, 0, 160, 250, null, null],
|
||||
[0, "왕충", -1, 0, null, 39, 57, 21, 0, 160, 250, null, null],
|
||||
[0, "왕평", -1, 0, null, 83, 79, 80, 0, 160, 250, null, null],
|
||||
[0, "왕항", -1, 0, null, 76, 60, 61, 0, 160, 250, null, null],
|
||||
[0, "왕혼", -1, 0, null, 76, 76, 72, 0, 160, 250, null, null],
|
||||
[0, "요립", -1, 0, null, 22, 15, 69, 0, 160, 250, null, null],
|
||||
[0, "요화", -1, 0, null, 73, 76, 64, 0, 160, 250, null, null],
|
||||
[0, "큰우금", -1, 0, null, 84, 78, 70, 0, 160, 250, null, null],
|
||||
[0, "작은우금", -1, 0, null, 72, 79, 38, 0, 160, 250, null, null],
|
||||
[0, "우번", -1, 0, null, 43, 46, 86, 0, 160, 250, null, null],
|
||||
[0, "우보", -1, 0, null, 38, 60, 21, 0, 160, 250, null, null],
|
||||
[0, "우사", -1, 0, null, 61, 34, 74, 0, 160, 250, null, null],
|
||||
[0, "우전", -1, 0, null, 64, 76, 40, 0, 160, 250, null, null],
|
||||
[0, "원담", -1, 0, null, 60, 69, 30, 0, 160, 250, null, null],
|
||||
[0, "원상", -1, 0, null, 63, 71, 42, 0, 160, 250, null, null],
|
||||
[0, "원소", -1, 0, null, 81, 69, 70, 0, 160, 250, null, null],
|
||||
[0, "원술", -1, 0, null, 44, 65, 61, 0, 160, 250, null, null],
|
||||
[0, "원요", -1, 0, null, 41, 50, 41, 0, 160, 250, null, null],
|
||||
[0, "원유", -1, 0, null, 56, 40, 73, 0, 160, 250, null, null],
|
||||
[0, "원윤", -1, 0, null, 17, 14, 39, 0, 160, 250, null, null],
|
||||
[0, "원환", -1, 0, null, 30, 17, 72, 0, 160, 250, null, null],
|
||||
[0, "원희", -1, 0, null, 66, 51, 63, 0, 160, 250, null, null],
|
||||
[0, "위관", -1, 0, null, 69, 46, 79, 0, 160, 250, null, null],
|
||||
[0, "위막", -1, 0, null, 57, 62, 59, 0, 160, 250, null, null],
|
||||
[0, "위소", -1, 0, null, 16, 19, 65, 0, 160, 250, null, null],
|
||||
[0, "위속", -1, 0, null, 67, 78, 31, 0, 160, 250, null, null],
|
||||
[0, "위연", -1, 0, null, 81, 92, 69, 0, 160, 250, null, null],
|
||||
[0, "위유", -1, 0, null, 46, 29, 73, 0, 160, 250, null, null],
|
||||
[0, "위풍", -1, 0, null, 52, 23, 72, 0, 160, 250, null, null],
|
||||
[0, "유괴", -1, 0, null, 71, 73, 66, 0, 160, 250, null, null],
|
||||
[0, "유기", -1, 0, null, 52, 12, 62, 0, 160, 250, null, null],
|
||||
[0, "유대", -1, 0, null, 53, 65, 32, 0, 160, 250, null, null],
|
||||
[0, "유도", -1, 0, null, 25, 23, 26, 0, 160, 250, null, null],
|
||||
[0, "유략", -1, 0, null, 71, 66, 59, 0, 160, 250, null, null],
|
||||
[0, "유반", -1, 0, null, 69, 76, 47, 0, 160, 250, null, null],
|
||||
[0, "유벽", -1, 0, null, 70, 72, 47, 0, 160, 250, null, null],
|
||||
[0, "유복", -1, 0, null, 64, 49, 73, 0, 160, 250, null, null],
|
||||
[0, "유봉", -1, 0, null, 75, 79, 44, 0, 160, 250, null, null],
|
||||
[0, "유비", -1, 0, null, 75, 73, 74, 0, 160, 250, null, null],
|
||||
[0, "아빠유선", -1, 0, null, 8, 21, 36, 0, 160, 250, null, null],
|
||||
[0, "아들유선", -1, 0, null, 3, 5, 9, 0, 160, 250, null, null],
|
||||
[0, "유섭", -1, 0, null, 62, 79, 24, 0, 160, 250, null, null],
|
||||
[0, "유소", -1, 0, null, 71, 53, 74, 0, 160, 250, null, null],
|
||||
[0, "유순", -1, 0, null, 63, 46, 41, 0, 160, 250, null, null],
|
||||
[0, "유승", -1, 0, null, 45, 65, 33, 0, 160, 250, null, null],
|
||||
[0, "유심", -1, 0, null, 60, 62, 69, 0, 160, 250, null, null],
|
||||
[0, "유씨", -1, 0, null, 83, 41, 86, 0, 160, 250, null, null],
|
||||
[0, "유언", -1, 0, null, 53, 38, 80, 0, 160, 250, null, null],
|
||||
[0, "유엽", -1, 0, null, 36, 32, 92, 0, 160, 250, null, null],
|
||||
[0, "유요", -1, 0, null, 62, 67, 46, 0, 160, 250, null, null],
|
||||
[0, "유우", -1, 0, null, 55, 33, 69, 0, 160, 250, null, null],
|
||||
[0, "유장", -1, 0, null, 16, 5, 9, 0, 160, 250, null, null],
|
||||
[0, "유종", -1, 0, null, 24, 22, 64, 0, 160, 250, null, null],
|
||||
[0, "유찬", -1, 0, null, 78, 75, 64, 0, 160, 250, null, null],
|
||||
[0, "유파", -1, 0, null, 14, 22, 74, 0, 160, 250, null, null],
|
||||
[0, "유평", -1, 0, null, 70, 71, 68, 0, 160, 250, null, null],
|
||||
[0, "유표", -1, 0, null, 48, 31, 71, 0, 160, 250, null, null],
|
||||
[0, "유현", -1, 0, null, 54, 66, 51, 0, 160, 250, null, null],
|
||||
[0, "유화", -1, 0, null, 21, 16, 59, 0, 160, 250, null, null],
|
||||
[0, "유훈", -1, 0, null, 47, 63, 35, 0, 160, 250, null, null],
|
||||
[0, "육개", -1, 0, null, 65, 61, 78, 0, 160, 250, null, null],
|
||||
[0, "육손", -1, 0, null, 96, 65, 95, 0, 160, 250, null, null],
|
||||
[0, "육적", -1, 0, null, 20, 7, 71, 0, 160, 250, null, null],
|
||||
[0, "육항", -1, 0, null, 91, 63, 87, 0, 160, 250, null, null],
|
||||
[0, "윤대목", -1, 0, null, 4, 9, 33, 0, 160, 250, null, null],
|
||||
[0, "윤묵", -1, 0, null, 11, 15, 65, 0, 160, 250, null, null],
|
||||
[0, "윤상", -1, 0, null, 51, 44, 61, 0, 160, 250, null, null],
|
||||
[0, "윤직", -1, 0, null, 46, 42, 72, 0, 160, 250, null, null],
|
||||
[0, "이각", -1, 0, null, 69, 72, 24, 0, 160, 250, null, null],
|
||||
[0, "이감", -1, 0, null, 58, 69, 33, 0, 160, 250, null, null],
|
||||
[0, "이부", -1, 0, null, 31, 36, 74, 0, 160, 250, null, null],
|
||||
[0, "이숙", -1, 0, null, 46, 69, 59, 0, 160, 250, null, null],
|
||||
[0, "이승", -1, 0, null, 12, 22, 29, 0, 160, 250, null, null],
|
||||
[0, "이엄", -1, 0, null, 83, 84, 75, 0, 160, 250, null, null],
|
||||
[0, "이유", -1, 0, null, 61, 26, 93, 0, 160, 250, null, null],
|
||||
[0, "이이", -1, 0, null, 59, 77, 19, 0, 160, 250, null, null],
|
||||
[0, "이적", -1, 0, null, 29, 24, 80, 0, 160, 250, null, null],
|
||||
[0, "이전", -1, 0, null, 80, 77, 79, 0, 160, 250, null, null],
|
||||
[0, "이통", -1, 0, null, 73, 81, 57, 0, 160, 250, null, null],
|
||||
[0, "촉나라이풍", -1, 0, null, 55, 48, 67, 0, 160, 250, null, null],
|
||||
[0, "원술네이풍", -1, 0, null, 69, 74, 50, 0, 160, 250, null, null],
|
||||
[0, "위나라이풍", -1, 0, null, 25, 35, 67, 0, 160, 250, null, null],
|
||||
[0, "이회", -1, 0, null, 79, 65, 78, 0, 160, 250, null, null],
|
||||
[0, "잠혼", -1, 0, null, 1, 1, 33, 0, 160, 250, null, null],
|
||||
[0, "장각", -1, 0, null, 86, 25, 86, 0, 160, 250, null, null],
|
||||
[0, "장간", -1, 0, null, 9, 6, 65, 0, 160, 250, null, null],
|
||||
[0, "장개", -1, 0, null, 34, 66, 8, 0, 160, 250, null, null],
|
||||
[0, "장굉", -1, 0, null, 24, 22, 86, 0, 160, 250, null, null],
|
||||
[0, "장구", -1, 0, null, 69, 72, 44, 0, 160, 250, null, null],
|
||||
[0, "장기", -1, 0, null, 74, 35, 75, 0, 160, 250, null, null],
|
||||
[0, "촉나라장남", -1, 0, null, 70, 69, 37, 0, 160, 250, null, null],
|
||||
[0, "장남", -1, 0, null, 57, 71, 46, 0, 160, 250, null, null],
|
||||
[0, "장노", -1, 0, null, 51, 26, 73, 0, 160, 250, null, null],
|
||||
[0, "장료", -1, 0, null, 90, 91, 78, 0, 160, 250, null, null],
|
||||
[0, "장막", -1, 0, null, 52, 53, 70, 0, 160, 250, null, null],
|
||||
[0, "장만성", -1, 0, null, 73, 81, 45, 0, 160, 250, null, null],
|
||||
[0, "장반", -1, 0, null, 63, 73, 62, 0, 160, 250, null, null],
|
||||
[0, "장보", -1, 0, null, 83, 71, 81, 0, 160, 250, null, null],
|
||||
[0, "장비", -1, 0, null, 85, 98, 45, 0, 160, 250, null, null],
|
||||
[0, "장빈", -1, 0, null, 27, 23, 64, 0, 160, 250, null, null],
|
||||
[0, "장서", -1, 0, null, 55, 76, 35, 0, 160, 250, null, null],
|
||||
[0, "오나라장소", -1, 0, null, 33, 3, 84, 0, 160, 250, null, null],
|
||||
[0, "촉나라장소", -1, 0, null, 8, 12, 31, 0, 160, 250, null, null],
|
||||
[0, "장송", -1, 0, null, 15, 6, 88, 0, 160, 250, null, null],
|
||||
[0, "장수", -1, 0, null, 80, 73, 60, 0, 160, 250, null, null],
|
||||
[0, "장승", -1, 0, null, 77, 70, 75, 0, 160, 250, null, null],
|
||||
[0, "장량", -1, 0, null, 78, 80, 68, 0, 160, 250, null, null],
|
||||
[0, "장양", -1, 0, null, 72, 70, 62, 0, 160, 250, null, null],
|
||||
[0, "장억", -1, 0, null, 79, 72, 74, 0, 160, 250, null, null],
|
||||
[0, "장연", -1, 0, null, 82, 81, 53, 0, 160, 250, null, null],
|
||||
[0, "장영", -1, 0, null, 75, 74, 41, 0, 160, 250, null, null],
|
||||
[0, "장온", -1, 0, null, 17, 10, 71, 0, 160, 250, null, null],
|
||||
[0, "장완", -1, 0, null, 78, 34, 84, 0, 160, 250, null, null],
|
||||
[0, "장위", -1, 0, null, 74, 66, 45, 0, 160, 250, null, null],
|
||||
[0, "장윤", -1, 0, null, 72, 67, 42, 0, 160, 250, null, null],
|
||||
[0, "장의거", -1, 0, null, 71, 58, 57, 0, 160, 250, null, null],
|
||||
[0, "장익", -1, 0, null, 75, 74, 71, 0, 160, 250, null, null],
|
||||
[0, "장임", -1, 0, null, 88, 84, 78, 0, 160, 250, null, null],
|
||||
[0, "오나라장제", -1, 0, null, 67, 43, 80, 0, 160, 250, null, null],
|
||||
[0, "위나라장제", -1, 0, null, 48, 43, 85, 0, 160, 250, null, null],
|
||||
[0, "동탁네장제", -1, 0, null, 70, 66, 52, 0, 160, 250, null, null],
|
||||
[0, "장준", -1, 0, null, 63, 68, 66, 0, 160, 250, null, null],
|
||||
[0, "장집", -1, 0, null, 31, 29, 70, 0, 160, 250, null, null],
|
||||
[0, "장춘화", -1, 0, null, 80, 40, 86, 0, 160, 250, null, null],
|
||||
[0, "장특", -1, 0, null, 73, 54, 75, 0, 160, 250, null, null],
|
||||
[0, "장패", -1, 0, null, 74, 75, 52, 0, 160, 250, null, null],
|
||||
[0, "촉나라장포", -1, 0, null, 75, 87, 48, 0, 160, 250, null, null],
|
||||
[0, "오나라장포", -1, 0, null, 31, 24, 71, 0, 160, 250, null, null],
|
||||
[0, "장합", -1, 0, null, 90, 89, 69, 0, 160, 250, null, null],
|
||||
[0, "장호", -1, 0, null, 75, 74, 41, 0, 160, 250, null, null],
|
||||
[0, "장화", -1, 0, null, 36, 27, 78, 0, 160, 250, null, null],
|
||||
[0, "장횡", -1, 0, null, 59, 70, 23, 0, 160, 250, null, null],
|
||||
[0, "장훈", -1, 0, null, 72, 68, 41, 0, 160, 250, null, null],
|
||||
[0, "장휴", -1, 0, null, 53, 27, 74, 0, 160, 250, null, null],
|
||||
[0, "장흠", -1, 0, null, 78, 84, 51, 0, 160, 250, null, null],
|
||||
[0, "저곡", -1, 0, null, 55, 51, 66, 0, 160, 250, null, null],
|
||||
[0, "저수", -1, 0, null, 78, 35, 90, 0, 160, 250, null, null],
|
||||
[0, "전기", -1, 0, null, 49, 69, 61, 0, 160, 250, null, null],
|
||||
[0, "전단", -1, 0, null, 67, 64, 39, 0, 160, 250, null, null],
|
||||
[0, "전만", -1, 0, null, 51, 73, 39, 0, 160, 250, null, null],
|
||||
[0, "전상", -1, 0, null, 2, 4, 12, 0, 160, 250, null, null],
|
||||
[0, "전속", -1, 0, null, 47, 60, 55, 0, 160, 250, null, null],
|
||||
[0, "전역", -1, 0, null, 60, 63, 38, 0, 160, 250, null, null],
|
||||
[0, "전예", -1, 0, null, 80, 72, 80, 0, 160, 250, null, null],
|
||||
[0, "전위", -1, 0, null, 56, 98, 35, 0, 160, 250, null, null],
|
||||
[0, "전의", -1, 0, null, 61, 68, 44, 0, 160, 250, null, null],
|
||||
[0, "전종", -1, 0, null, 78, 72, 71, 0, 160, 250, null, null],
|
||||
[0, "전주", -1, 0, null, 66, 66, 72, 0, 160, 250, null, null],
|
||||
[0, "전풍", -1, 0, null, 76, 29, 93, 0, 160, 250, null, null],
|
||||
[0, "전해", -1, 0, null, 68, 65, 56, 0, 160, 250, null, null],
|
||||
[0, "정무", -1, 0, null, 56, 35, 75, 0, 160, 250, null, null],
|
||||
[0, "정병", -1, 0, null, 16, 15, 71, 0, 160, 250, null, null],
|
||||
[0, "정보", -1, 0, null, 84, 79, 79, 0, 160, 250, null, null],
|
||||
[0, "형정봉", -1, 0, null, 81, 80, 71, 0, 160, 250, null, null],
|
||||
[0, "동생정봉", -1, 0, null, 66, 66, 53, 0, 160, 250, null, null],
|
||||
[0, "정욱", -1, 0, null, 73, 49, 90, 0, 160, 250, null, null],
|
||||
[0, "정원", -1, 0, null, 70, 76, 35, 0, 160, 250, null, null],
|
||||
[0, "정원지", -1, 0, null, 69, 74, 17, 0, 160, 250, null, null],
|
||||
[0, "정은", -1, 0, null, 69, 73, 40, 0, 160, 250, null, null],
|
||||
[0, "정의", -1, 0, null, 15, 5, 64, 0, 160, 250, null, null],
|
||||
[0, "제갈각", -1, 0, null, 72, 47, 90, 0, 160, 250, null, null],
|
||||
[0, "제갈교", -1, 0, null, 62, 27, 75, 0, 160, 250, null, null],
|
||||
[0, "제갈균", -1, 0, null, 29, 25, 51, 0, 160, 250, null, null],
|
||||
[0, "제갈근", -1, 0, null, 75, 34, 81, 0, 160, 250, null, null],
|
||||
[0, "제갈량", -1, 0, null, 92, 38, 100, 0, 160, 250, null, null],
|
||||
[0, "제갈상", -1, 0, null, 64, 77, 62, 0, 160, 250, null, null],
|
||||
[0, "제갈서", -1, 0, null, 41, 40, 29, 0, 160, 250, null, null],
|
||||
[0, "제갈정", -1, 0, null, 58, 63, 66, 0, 160, 250, null, null],
|
||||
[0, "제갈첨", -1, 0, null, 71, 60, 70, 0, 160, 250, null, null],
|
||||
[0, "제갈탄", -1, 0, null, 81, 72, 71, 0, 160, 250, null, null],
|
||||
[0, "조광", -1, 0, null, 67, 71, 53, 0, 160, 250, null, null],
|
||||
[0, "조누", -1, 0, null, 70, 43, 67, 0, 160, 250, null, null],
|
||||
[0, "조모", -1, 0, null, 54, 61, 59, 0, 160, 250, null, null],
|
||||
[0, "조무", -1, 0, null, 70, 71, 62, 0, 160, 250, null, null],
|
||||
[0, "조방", -1, 0, null, 5, 3, 27, 0, 160, 250, null, null],
|
||||
[0, "조범", -1, 0, null, 28, 21, 32, 0, 160, 250, null, null],
|
||||
[0, "조비", -1, 0, null, 70, 71, 83, 0, 160, 250, null, null],
|
||||
[0, "조상", -1, 0, null, 39, 33, 30, 0, 160, 250, null, null],
|
||||
[0, "조성", -1, 0, null, 54, 74, 38, 0, 160, 250, null, null],
|
||||
[0, "조순", -1, 0, null, 75, 71, 60, 0, 160, 250, null, null],
|
||||
[0, "조식", -1, 0, null, 18, 22, 81, 0, 160, 250, null, null],
|
||||
[0, "조앙", -1, 0, null, 74, 67, 66, 0, 160, 250, null, null],
|
||||
[0, "조예", -1, 0, null, 72, 52, 82, 0, 160, 250, null, null],
|
||||
[0, "조우", -1, 0, null, 50, 43, 37, 0, 160, 250, null, null],
|
||||
[0, "조운", -1, 0, null, 94, 93, 78, 0, 160, 250, null, null],
|
||||
[0, "조웅", -1, 0, null, 9, 5, 52, 0, 160, 250, null, null],
|
||||
[0, "조인", -1, 0, null, 89, 86, 56, 0, 160, 250, null, null],
|
||||
[0, "조조", -1, 0, null, 96, 72, 91, 0, 160, 250, null, null],
|
||||
[0, "조진", -1, 0, null, 87, 74, 68, 0, 160, 250, null, null],
|
||||
[0, "조창", -1, 0, null, 82, 90, 40, 0, 160, 250, null, null],
|
||||
[0, "조충", -1, 0, null, 31, 21, 85, 0, 160, 250, null, null],
|
||||
[0, "조통", -1, 0, null, 68, 67, 61, 0, 160, 250, null, null],
|
||||
[0, "조표", -1, 0, null, 54, 69, 32, 0, 160, 250, null, null],
|
||||
[0, "위나라조홍", -1, 0, null, 79, 81, 44, 0, 160, 250, null, null],
|
||||
[0, "황건적조홍", -1, 0, null, 66, 72, 28, 0, 160, 250, null, null],
|
||||
[0, "조환", -1, 0, null, 13, 15, 30, 0, 160, 250, null, null],
|
||||
[0, "조훈", -1, 0, null, 18, 34, 11, 0, 160, 250, null, null],
|
||||
[0, "조휴", -1, 0, null, 74, 75, 58, 0, 160, 250, null, null],
|
||||
[0, "조희", -1, 0, null, 30, 26, 50, 0, 160, 250, null, null],
|
||||
[0, "종리목", -1, 0, null, 77, 72, 73, 0, 160, 250, null, null],
|
||||
[0, "종요", -1, 0, null, 70, 24, 76, 0, 160, 250, null, null],
|
||||
[0, "종육", -1, 0, null, 32, 12, 71, 0, 160, 250, null, null],
|
||||
[0, "종회", -1, 0, null, 82, 51, 91, 0, 160, 250, null, null],
|
||||
[0, "좌자", -1, 0, null, 10, 10, 94, 0, 160, 250, null, null],
|
||||
[0, "좌혁", -1, 0, null, 62, 66, 51, 0, 160, 250, null, null],
|
||||
[0, "주거", -1, 0, null, 77, 57, 72, 0, 160, 250, null, null],
|
||||
[0, "주령", -1, 0, null, 71, 73, 67, 0, 160, 250, null, null],
|
||||
[0, "주방", -1, 0, null, 52, 41, 80, 0, 160, 250, null, null],
|
||||
[0, "주앙", -1, 0, null, 74, 65, 62, 0, 160, 250, null, null],
|
||||
[0, "주연", -1, 0, null, 79, 69, 71, 0, 160, 250, null, null],
|
||||
[0, "주유", -1, 0, null, 97, 71, 96, 0, 160, 250, null, null],
|
||||
[0, "주이", -1, 0, null, 70, 68, 60, 0, 160, 250, null, null],
|
||||
[0, "주준", -1, 0, null, 78, 65, 70, 0, 160, 250, null, null],
|
||||
[0, "주지", -1, 0, null, 65, 85, 41, 0, 160, 250, null, null],
|
||||
[0, "주창", -1, 0, null, 62, 84, 42, 0, 160, 250, null, null],
|
||||
[0, "주치", -1, 0, null, 71, 56, 72, 0, 160, 250, null, null],
|
||||
[0, "진나라주태", -1, 0, null, 71, 64, 71, 0, 160, 250, null, null],
|
||||
[0, "오나라주태", -1, 0, null, 76, 91, 48, 0, 160, 250, null, null],
|
||||
[0, "주포", -1, 0, null, 68, 73, 34, 0, 160, 250, null, null],
|
||||
[0, "주환", -1, 0, null, 84, 82, 73, 0, 160, 250, null, null],
|
||||
[0, "주흔", -1, 0, null, 65, 62, 72, 0, 160, 250, null, null],
|
||||
[0, "진건", -1, 0, null, 72, 71, 65, 0, 160, 250, null, null],
|
||||
[0, "진교", -1, 0, null, 61, 27, 76, 0, 160, 250, null, null],
|
||||
[0, "진군", -1, 0, null, 32, 14, 74, 0, 160, 250, null, null],
|
||||
[0, "진궁", -1, 0, null, 78, 55, 89, 0, 160, 250, null, null],
|
||||
[0, "진규", -1, 0, null, 15, 4, 82, 0, 160, 250, null, null],
|
||||
[0, "진기", -1, 0, null, 58, 65, 43, 0, 160, 250, null, null],
|
||||
[0, "진도", -1, 0, null, 76, 71, 63, 0, 160, 250, null, null],
|
||||
[0, "진등", -1, 0, null, 79, 64, 81, 0, 160, 250, null, null],
|
||||
[0, "진란", -1, 0, null, 66, 69, 40, 0, 160, 250, null, null],
|
||||
[0, "진랑", -1, 0, null, 58, 70, 35, 0, 160, 250, null, null],
|
||||
[0, "진림", -1, 0, null, 10, 9, 74, 0, 160, 250, null, null],
|
||||
[0, "진무", -1, 0, null, 74, 87, 43, 0, 160, 250, null, null],
|
||||
[0, "진복", -1, 0, null, 16, 7, 72, 0, 160, 250, null, null],
|
||||
[0, "진수", -1, 0, null, 12, 22, 60, 0, 160, 250, null, null],
|
||||
[0, "진식", -1, 0, null, 70, 71, 25, 0, 160, 250, null, null],
|
||||
[0, "진응", -1, 0, null, 62, 72, 45, 0, 160, 250, null, null],
|
||||
[0, "진진", -1, 0, null, 46, 46, 68, 0, 160, 250, null, null],
|
||||
[0, "진태", -1, 0, null, 84, 73, 86, 0, 160, 250, null, null],
|
||||
[0, "진표", -1, 0, null, 66, 42, 74, 0, 160, 250, null, null],
|
||||
[0, "진횡", -1, 0, null, 64, 63, 26, 0, 160, 250, null, null],
|
||||
[0, "차주", -1, 0, null, 49, 49, 40, 0, 160, 250, null, null],
|
||||
[0, "착융", -1, 0, null, 60, 69, 38, 0, 160, 250, null, null],
|
||||
[0, "채모", -1, 0, null, 77, 70, 77, 0, 160, 250, null, null],
|
||||
[0, "채씨", -1, 0, null, 88, 66, 69, 0, 160, 250, null, null],
|
||||
[0, "채염", -1, 0, null, 92, 41, 90, 0, 160, 250, null, null],
|
||||
[0, "채중", -1, 0, null, 40, 54, 2, 0, 160, 250, null, null],
|
||||
[0, "채화", -1, 0, null, 39, 50, 1, 0, 160, 250, null, null],
|
||||
[0, "초선", -1, 0, null, 90, 56, 94, 0, 160, 250, null, null],
|
||||
[0, "초이", -1, 0, null, 62, 69, 63, 0, 160, 250, null, null],
|
||||
[0, "초주", -1, 0, null, 3, 3, 66, 0, 160, 250, null, null],
|
||||
[0, "초촉", -1, 0, null, 65, 72, 33, 0, 160, 250, null, null],
|
||||
[0, "최림", -1, 0, null, 32, 22, 66, 0, 160, 250, null, null],
|
||||
[0, "최염", -1, 0, null, 18, 55, 70, 0, 160, 250, null, null],
|
||||
[0, "추단", -1, 0, null, 61, 64, 34, 0, 160, 250, null, null],
|
||||
[0, "추씨", -1, 0, null, 90, 36, 86, 0, 160, 250, null, null],
|
||||
[0, "추정", -1, 0, null, 70, 64, 66, 0, 160, 250, null, null],
|
||||
[0, "축융", -1, 0, null, 90, 91, 49, 0, 160, 250, null, null],
|
||||
[0, "타사대왕", -1, 0, null, 62, 59, 70, 0, 160, 250, null, null],
|
||||
[0, "태사자", -1, 0, null, 84, 94, 66, 0, 160, 250, null, null],
|
||||
[0, "태사향", -1, 0, null, 57, 66, 48, 0, 160, 250, null, null],
|
||||
[0, "파재", -1, 0, null, 71, 74, 52, 0, 160, 250, null, null],
|
||||
[0, "포삼랑", -1, 0, null, 92, 83, 56, 0, 160, 250, null, null],
|
||||
[0, "포신", -1, 0, null, 77, 67, 81, 0, 160, 250, null, null],
|
||||
[0, "포융", -1, 0, null, 58, 76, 49, 0, 160, 250, null, null],
|
||||
[0, "풍습", -1, 0, null, 72, 71, 39, 0, 160, 250, null, null],
|
||||
[0, "하식", -1, 0, null, 15, 24, 26, 0, 160, 250, null, null],
|
||||
[0, "하안", -1, 0, null, 6, 30, 71, 0, 160, 250, null, null],
|
||||
[0, "하의", -1, 0, null, 56, 69, 36, 0, 160, 250, null, null],
|
||||
[0, "하제", -1, 0, null, 83, 78, 72, 0, 160, 250, null, null],
|
||||
[0, "하진", -1, 0, null, 39, 40, 6, 0, 160, 250, null, null],
|
||||
[0, "하후덕", -1, 0, null, 69, 73, 32, 0, 160, 250, null, null],
|
||||
[0, "하후돈", -1, 0, null, 89, 90, 58, 0, 160, 250, null, null],
|
||||
[0, "하후무", -1, 0, null, 20, 7, 4, 0, 160, 250, null, null],
|
||||
[0, "하후상", -1, 0, null, 79, 72, 74, 0, 160, 250, null, null],
|
||||
[0, "하후연", -1, 0, null, 87, 91, 54, 0, 160, 250, null, null],
|
||||
[0, "하후영녀", -1, 0, null, 89, 40, 88, 0, 160, 250, null, null],
|
||||
[0, "하후위", -1, 0, null, 71, 73, 49, 0, 160, 250, null, null],
|
||||
[0, "하후은", -1, 0, null, 63, 72, 52, 0, 160, 250, null, null],
|
||||
[0, "하후패", -1, 0, null, 79, 84, 77, 0, 160, 250, null, null],
|
||||
[0, "하후현", -1, 0, null, 54, 39, 75, 0, 160, 250, null, null],
|
||||
[0, "하후혜", -1, 0, null, 50, 44, 75, 0, 160, 250, null, null],
|
||||
[0, "하후화", -1, 0, null, 48, 51, 70, 0, 160, 250, null, null],
|
||||
[0, "학맹", -1, 0, null, 62, 67, 42, 0, 160, 250, null, null],
|
||||
[0, "학소", -1, 0, null, 89, 79, 80, 0, 160, 250, null, null],
|
||||
[0, "한거자", -1, 0, null, 51, 59, 51, 0, 160, 250, null, null],
|
||||
[0, "한당", -1, 0, null, 76, 85, 56, 0, 160, 250, null, null],
|
||||
[0, "한덕", -1, 0, null, 63, 76, 25, 0, 160, 250, null, null],
|
||||
[0, "한복", -1, 0, null, 13, 3, 27, 0, 160, 250, null, null],
|
||||
[0, "한섬", -1, 0, null, 69, 66, 36, 0, 160, 250, null, null],
|
||||
[0, "한수", -1, 0, null, 89, 70, 77, 0, 160, 250, null, null],
|
||||
[0, "한숭", -1, 0, null, 25, 15, 70, 0, 160, 250, null, null],
|
||||
[0, "한윤", -1, 0, null, 26, 29, 64, 0, 160, 250, null, null],
|
||||
[0, "한충", -1, 0, null, 64, 67, 18, 0, 160, 250, null, null],
|
||||
[0, "한현", -1, 0, null, 42, 43, 7, 0, 160, 250, null, null],
|
||||
[0, "한호", -1, 0, null, 69, 72, 68, 0, 160, 250, null, null],
|
||||
[0, "향랑", -1, 0, null, 28, 18, 73, 0, 160, 250, null, null],
|
||||
[0, "향총", -1, 0, null, 76, 61, 76, 0, 160, 250, null, null],
|
||||
[0, "허공", -1, 0, null, 44, 66, 64, 0, 160, 250, null, null],
|
||||
[0, "허소", -1, 0, null, 16, 11, 74, 0, 160, 250, null, null],
|
||||
[0, "허유", -1, 0, null, 36, 21, 80, 0, 160, 250, null, null],
|
||||
[0, "허의", -1, 0, null, 51, 74, 15, 0, 160, 250, null, null],
|
||||
[0, "허저", -1, 0, null, 65, 96, 36, 0, 160, 250, null, null],
|
||||
[0, "허정", -1, 0, null, 3, 5, 67, 0, 160, 250, null, null],
|
||||
[0, "형도영", -1, 0, null, 61, 80, 41, 0, 160, 250, null, null],
|
||||
[0, "호거아", -1, 0, null, 26, 82, 41, 0, 160, 250, null, null],
|
||||
[0, "호반", -1, 0, null, 55, 55, 58, 0, 160, 250, null, null],
|
||||
[0, "호분", -1, 0, null, 71, 76, 50, 0, 160, 250, null, null],
|
||||
[0, "호열", -1, 0, null, 73, 67, 72, 0, 160, 250, null, null],
|
||||
[0, "호제", -1, 0, null, 57, 39, 68, 0, 160, 250, null, null],
|
||||
[0, "호준", -1, 0, null, 70, 76, 52, 0, 160, 250, null, null],
|
||||
[0, "호진", -1, 0, null, 65, 74, 12, 0, 160, 250, null, null],
|
||||
[0, "호질", -1, 0, null, 73, 46, 74, 0, 160, 250, null, null],
|
||||
[0, "화만", -1, 0, null, 69, 82, 32, 0, 160, 250, null, null],
|
||||
[0, "화웅", -1, 0, null, 81, 90, 56, 0, 160, 250, null, null],
|
||||
[0, "화타", -1, 0, null, 8, 7, 68, 0, 160, 250, null, null],
|
||||
[0, "화핵", -1, 0, null, 20, 24, 71, 0, 160, 250, null, null],
|
||||
[0, "화흠", -1, 0, null, 18, 33, 82, 0, 160, 250, null, null],
|
||||
[0, "환계", -1, 0, null, 10, 26, 67, 0, 160, 250, null, null],
|
||||
[0, "환범", -1, 0, null, 20, 11, 78, 0, 160, 250, null, null],
|
||||
[0, "황개", -1, 0, null, 79, 83, 65, 0, 160, 250, null, null],
|
||||
[0, "황권", -1, 0, null, 78, 59, 82, 0, 160, 250, null, null],
|
||||
[0, "황보숭", -1, 0, null, 87, 61, 73, 0, 160, 250, null, null],
|
||||
[0, "황숭", -1, 0, null, 67, 63, 72, 0, 160, 250, null, null],
|
||||
[0, "황월영", -1, 0, null, 81, 42, 90, 0, 160, 250, null, null],
|
||||
[0, "황조", -1, 0, null, 74, 66, 53, 0, 160, 250, null, null],
|
||||
[0, "황충", -1, 0, null, 86, 93, 60, 0, 160, 250, null, null],
|
||||
[0, "황호", -1, 0, null, 1, 1, 30, 0, 160, 250, null, null],
|
||||
[0, "후선", -1, 0, null, 63, 66, 34, 0, 160, 250, null, null],
|
||||
[0, "후성", -1, 0, null, 74, 75, 63, 0, 160, 250, null, null],
|
||||
[0, "휴고", -1, 0, null, 63, 71, 38, 0, 160, 250, null, null],
|
||||
[0, "휴원진", -1, 0, null, 52, 68, 45, 0, 160, 250, null, null],
|
||||
[0, "희지재", -1, 0, null, 23, 7, 88, 0, 160, 250, null, null],
|
||||
[0, "왕원희", -1, 0, null, 93, 51, 90, 0, 160, 250, null, null],
|
||||
[0, "김세정", -1, 0, null, 97, 93, 93, 0, 160, 250, null, null]
|
||||
],
|
||||
"general_ex":[
|
||||
],
|
||||
"cities":[
|
||||
|
||||
],
|
||||
"history":[
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>제작자: 세정.",
|
||||
"<C>●</>180년 1월:<L><b>【가상모드11】 삼국지11 영웅 난무</>",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>당대의 대표 세력들이 등장합니다."
|
||||
],
|
||||
"initialEvents":[
|
||||
|
||||
],
|
||||
"events":[
|
||||
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,665 @@
|
||||
{
|
||||
"title": "【가상모드19a】 진유저무쌍! (소형 지도)",
|
||||
"startYear": 180,
|
||||
"history": [
|
||||
"<C>●</>180년 1월:<L><b>【가상모드19a】</b>진유저무쌍! (소형 지도)</>",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>고대장수 다 덤벼라! 유저가 최강이다!"
|
||||
],
|
||||
"stat": {
|
||||
"total": 285,
|
||||
"min": 55,
|
||||
"max": 120
|
||||
},
|
||||
"fiction": 1,
|
||||
"nation":[
|
||||
],
|
||||
"map":{
|
||||
"mapName":"miniche",
|
||||
"unitSet":"che"
|
||||
},
|
||||
"diplomacy":[],
|
||||
"general":[
|
||||
[0, "아회남", null, 0, null, 65, 74, 26, 0, 160, 300, null, null],
|
||||
[0, "이적", null, 0, null, 40, 24, 84, 0, 160, 300, null, null],
|
||||
[0, "윤상", null, 0, null, 51, 44, 62, 0, 160, 300, null, null],
|
||||
[0, "윤묵", null, 0, null, 26, 15, 66, 0, 160, 300, null, null],
|
||||
[0, "우금", null, 0, null, 85, 82, 75, 0, 160, 300, null, null],
|
||||
[0, "위관", null, 0, null, 69, 46, 79, 0, 160, 300, null, null],
|
||||
[0, "원윤", null, 0, null, 32, 14, 39, 0, 160, 300, null, null],
|
||||
[0, "원희", null, 0, null, 66, 51, 63, 0, 160, 300, null, null],
|
||||
[0, "염행", null, 0, null, 78, 90, 58, 0, 160, 300, null, null],
|
||||
[0, "염유", null, 0, null, 71, 57, 71, 0, 160, 300, null, null],
|
||||
[0, "원술", null, 0, null, 76, 65, 75, 0, 160, 300, null, null, "천한 것들관 상종을 하면 안돼"],
|
||||
[0, "원상", null, 0, null, 63, 75, 42, 0, 160, 300, null, null],
|
||||
[0, "원소", null, 0, null, 90, 69, 81, 0, 160, 300, null, null],
|
||||
[0, "염상", null, 0, null, 40, 27, 71, 0, 160, 300, null, null],
|
||||
[0, "원담", null, 0, null, 60, 78, 30, 0, 160, 300, null, null],
|
||||
[0, "염포", null, 0, null, 40, 25, 82, 0, 160, 300, null, null],
|
||||
[0, "왕위", null, 0, null, 60, 70, 62, 0, 160, 300, null, null],
|
||||
[0, "왕윤", null, 0, null, 26, 6, 68, 0, 160, 300, null, null],
|
||||
[0, "왕항", null, 0, null, 76, 60, 61, 0, 160, 300, null, null],
|
||||
[0, "왕찬", null, 0, null, 15, 3, 79, 0, 160, 300, null, null],
|
||||
[0, "왕수", null, 0, null, 54, 27, 77, 0, 160, 300, null, null],
|
||||
[0, "왕숙", null, 0, null, 36, 22, 76, 0, 160, 300, null, null],
|
||||
[0, "왕준", null, 0, null, 85, 73, 84, 0, 160, 300, null, null],
|
||||
[0, "왕쌍", null, 0, null, 67, 88, 19, 0, 160, 300, null, null],
|
||||
[0, "왕창", null, 0, null, 74, 64, 79, 0, 160, 300, null, null],
|
||||
[0, "왕평", null, 0, null, 88, 81, 70, 0, 160, 300, null, null],
|
||||
[0, "왕보", null, 0, null, 62, 41, 79, 0, 160, 300, null, null],
|
||||
[0, "왕문", null, 0, null, 65, 64, 31, 0, 160, 300, null, null],
|
||||
[0, "왕릉", null, 0, null, 74, 64, 71, 0, 160, 300, null, null],
|
||||
[0, "왕루", null, 0, null, 28, 30, 79, 0, 160, 300, null, null],
|
||||
[0, "왕랑", null, 0, null, 47, 35, 79, 0, 160, 300, null, null],
|
||||
[0, "온회", null, 0, null, 62, 36, 74, 0, 160, 300, null, null],
|
||||
[0, "하안", null, 0, null, 15, 30, 72, 0, 160, 300, null, null],
|
||||
[0, "괴월", null, 0, null, 50, 38, 85, 0, 160, 300, null, null],
|
||||
[0, "괴량", null, 0, null, 68, 33, 88, 0, 160, 300, null, null],
|
||||
[0, "가화", null, 0, null, 49, 65, 41, 0, 160, 300, null, null],
|
||||
[0, "가규", null, 0, null, 78, 61, 84, 0, 160, 300, null, null],
|
||||
[0, "하의", null, 0, null, 56, 69, 36, 0, 160, 300, null, null],
|
||||
[0, "화흠", null, 0, null, 51, 33, 88, 0, 160, 300, null, null],
|
||||
[0, "가후", null, 0, null, 71, 40, 98, 0, 160, 300, null, null, "이기기 위한 전략만 내드리겠습니다"],
|
||||
[0, "곽가", null, 0, null, 70, 41, 97, 0, 160, 300, null, null, "조공을 위한 명이 조금만 더 남았다면..."],
|
||||
[0, "악환", null, 0, null, 65, 80, 42, 0, 160, 300, null, null],
|
||||
[0, "곽사", null, 0, null, 64, 76, 13, 0, 160, 300, null, null],
|
||||
[0, "악취", null, 0, null, 53, 66, 61, 0, 160, 300, null, null],
|
||||
[0, "곽준", null, 0, null, 73, 66, 73, 0, 160, 300, null, null],
|
||||
[0, "학소", null, 0, null, 88, 75, 83, 0, 160, 300, null, null],
|
||||
[0, "악진", null, 0, null, 80, 85, 56, 0, 160, 300, null, null],
|
||||
[0, "곽도", null, 0, null, 62, 50, 82, 0, 160, 300, null, null],
|
||||
[0, "학맹", null, 0, null, 62, 67, 42, 0, 160, 300, null, null],
|
||||
[0, "곽유지", null, 0, null, 28, 9, 69, 0, 160, 300, null, null],
|
||||
[0, "곽익", null, 0, null, 73, 69, 69, 0, 160, 300, null, null],
|
||||
[0, "곽회", null, 0, null, 90, 77, 85, 0, 160, 300, null, null],
|
||||
[0, "하후위", null, 0, null, 71, 73, 49, 0, 160, 300, null, null],
|
||||
[0, "하후연", null, 0, null, 95, 92, 74, 0, 160, 300, null, null, "궁술로 날 당해낼 자가 있을까?"],
|
||||
[0, "하후은", null, 0, null, 63, 72, 53, 0, 160, 300, null, null],
|
||||
[0, "하후화", null, 0, null, 48, 51, 71, 0, 160, 300, null, null],
|
||||
[0, "하후혜", null, 0, null, 50, 44, 76, 0, 160, 300, null, null],
|
||||
[0, "하후현", null, 0, null, 54, 39, 76, 0, 160, 300, null, null],
|
||||
[0, "하후상", null, 0, null, 79, 72, 75, 0, 160, 300, null, null],
|
||||
[0, "하후덕", null, 0, null, 69, 73, 32, 0, 160, 300, null, null],
|
||||
[0, "하후돈", null, 0, null, 91, 88, 68, 0, 160, 300, null, null],
|
||||
[0, "하후패", null, 0, null, 79, 85, 77, 0, 160, 300, null, null],
|
||||
[0, "하후무", null, 0, null, 20, 7, 4, 0, 160, 300, null, null],
|
||||
[0, "가충", null, 0, null, 54, 31, 89, 0, 160, 300, null, null],
|
||||
[0, "하진", null, 0, null, 68, 54, 75, 0, 160, 300, null, null],
|
||||
[0, "화웅", null, 0, null, 78, 90, 55, 0, 160, 300, null, null],
|
||||
[0, "한윤", null, 0, null, 26, 29, 65, 0, 160, 300, null, null],
|
||||
[0, "관우", null, 0, null, 96, 99, 76, 0, 160, 300, null, null, "차가 식기 전에 적장의 목을 베어 오겠소!"],
|
||||
[0, "환계", null, 0, null, 25, 26, 68, 0, 160, 300, null, null],
|
||||
[0, "관해", null, 0, null, 70, 82, 10, 0, 160, 300, null, null],
|
||||
[0, "관구검", null, 0, null, 84, 86, 62, 0, 160, 300, null, null],
|
||||
[0, "한현", null, 0, null, 22, 33, 7, 0, 160, 300, null, null],
|
||||
[0, "한호", null, 0, null, 73, 72, 84, 0, 160, 300, null, null],
|
||||
[0, "관흥", null, 0, null, 76, 84, 67, 0, 160, 300, null, null],
|
||||
[0, "관색", null, 0, null, 74, 83, 56, 0, 160, 300, null, null],
|
||||
[0, "한수", null, 0, null, 78, 75, 79, 0, 160, 300, null, null],
|
||||
[0, "한숭", null, 0, null, 25, 15, 71, 0, 160, 300, null, null],
|
||||
[0, "관정", null, 0, null, 36, 52, 73, 0, 160, 300, null, null],
|
||||
[0, "한섬", null, 0, null, 69, 66, 36, 0, 160, 300, null, null],
|
||||
[0, "감택", null, 0, null, 51, 49, 83, 0, 160, 300, null, null],
|
||||
[0, "한충", null, 0, null, 64, 67, 18, 0, 160, 300, null, null],
|
||||
[0, "한당", null, 0, null, 76, 85, 61, 0, 160, 300, null, null],
|
||||
[0, "한덕", null, 0, null, 63, 76, 25, 0, 160, 300, null, null],
|
||||
[0, "감녕", null, 0, null, 92, 95, 76, 0, 160, 300, null, null],
|
||||
[0, "한복", null, 0, null, 28, 3, 27, 0, 160, 300, null, null],
|
||||
[0, "관평", null, 0, null, 78, 82, 72, 0, 160, 300, null, null],
|
||||
[0, "간옹", null, 0, null, 20, 32, 75, 0, 160, 300, null, null],
|
||||
[0, "안량", null, 0, null, 88, 96, 43, 0, 160, 300, null, null],
|
||||
[0, "위연", null, 0, null, 91, 90, 75, 0, 160, 300, null, null],
|
||||
[0, "국의", null, 0, null, 84, 78, 51, 0, 160, 300, null, null],
|
||||
[0, "희지재", null, 0, null, 63, 35, 91, 0, 160, 300, null, null],
|
||||
[0, "위속", null, 0, null, 67, 78, 31, 0, 160, 300, null, null],
|
||||
[0, "위유", null, 0, null, 46, 29, 74, 0, 160, 300, null, null],
|
||||
[0, "우금2", null, 0, null, 72, 79, 38, 0, 160, 300, null, null],
|
||||
[0, "우보", null, 0, null, 38, 60, 21, 0, 160, 300, null, null],
|
||||
[0, "강유", null, 0, null, 92, 88, 93, 0, 160, 300, null, null],
|
||||
[0, "공지", null, 0, null, 43, 53, 62, 0, 160, 300, null, null],
|
||||
[0, "교유", null, 0, null, 64, 69, 38, 0, 160, 300, null, null],
|
||||
[0, "공도", null, 0, null, 59, 70, 23, 0, 160, 300, null, null],
|
||||
[0, "허공", null, 0, null, 44, 66, 64, 0, 160, 300, null, null],
|
||||
[0, "허정", null, 0, null, 23, 5, 68, 0, 160, 300, null, null],
|
||||
[0, "허저", null, 0, null, 74, 97, 36, 0, 160, 300, null, null],
|
||||
[0, "허유", null, 0, null, 36, 21, 80, 0, 160, 300, null, null],
|
||||
[0, "기령", null, 0, null, 85, 84, 51, 0, 160, 300, null, null],
|
||||
[0, "김의", null, 0, null, 32, 38, 65, 0, 160, 300, null, null],
|
||||
[0, "김배삼결", null, 0, null, 64, 76, 19, 0, 160, 300, null, null],
|
||||
[0, "김선", null, 0, null, 52, 68, 13, 0, 160, 300, null, null],
|
||||
[0, "우번", null, 0, null, 46, 46, 87, 0, 160, 300, null, null],
|
||||
[0, "형도영", null, 0, null, 69, 79, 41, 0, 160, 300, null, null],
|
||||
[0, "엄안", null, 0, null, 82, 83, 72, 0, 160, 300, null, null],
|
||||
[0, "엄망", null, 0, null, 68, 71, 40, 0, 160, 300, null, null],
|
||||
[0, "엄준", null, 0, null, 41, 12, 71, 0, 160, 300, null, null],
|
||||
[0, "엄정", null, 0, null, 50, 55, 39, 0, 160, 300, null, null],
|
||||
[0, "엄백호", null, 0, null, 67, 70, 42, 0, 160, 300, null, null],
|
||||
[0, "엄여", null, 0, null, 61, 78, 44, 0, 160, 300, null, null],
|
||||
[0, "오의", null, 0, null, 79, 73, 70, 0, 160, 300, null, null],
|
||||
[0, "황개", null, 0, null, 80, 86, 70, 0, 160, 300, null, null],
|
||||
[0, "고간", null, 0, null, 74, 56, 48, 0, 160, 300, null, null],
|
||||
[0, "황권", null, 0, null, 75, 59, 88, 0, 160, 300, null, null],
|
||||
[0, "고유", null, 0, null, 57, 43, 72, 0, 160, 300, null, null],
|
||||
[0, "고순", null, 0, null, 87, 89, 60, 0, 160, 300, null, null],
|
||||
[0, "고상", null, 0, null, 68, 68, 53, 0, 160, 300, null, null],
|
||||
[0, "고승", null, 0, null, 67, 73, 41, 0, 160, 300, null, null],
|
||||
[0, "후성", null, 0, null, 74, 75, 68, 0, 160, 300, null, null],
|
||||
[0, "후선", null, 0, null, 63, 66, 34, 0, 160, 300, null, null],
|
||||
[0, "황조", null, 0, null, 81, 66, 62, 0, 160, 300, null, null],
|
||||
[0, "공손월", null, 0, null, 74, 72, 47, 0, 160, 300, null, null],
|
||||
[0, "공손연", null, 0, null, 65, 70, 60, 0, 160, 300, null, null],
|
||||
[0, "공손공", null, 0, null, 39, 17, 69, 0, 160, 300, null, null],
|
||||
[0, "공손강", null, 0, null, 72, 66, 65, 0, 160, 300, null, null],
|
||||
[0, "공손찬", null, 0, null, 86, 82, 75, 0, 160, 300, null, null],
|
||||
[0, "공손속", null, 0, null, 63, 68, 57, 0, 160, 300, null, null],
|
||||
[0, "공손도", null, 0, null, 67, 71, 66, 0, 160, 300, null, null],
|
||||
[0, "공손범", null, 0, null, 73, 69, 66, 0, 160, 300, null, null],
|
||||
[0, "황충", null, 0, null, 88, 96, 65, 0, 160, 300, null, null],
|
||||
[0, "고정", null, 0, null, 55, 63, 43, 0, 160, 300, null, null],
|
||||
[0, "고패", null, 0, null, 66, 61, 69, 0, 160, 300, null, null],
|
||||
[0, "황보숭", null, 0, null, 91, 61, 82, 0, 160, 300, null, null],
|
||||
[0, "공융", null, 0, null, 30, 5, 73, 0, 160, 300, null, null],
|
||||
[0, "고람", null, 0, null, 76, 82, 68, 0, 160, 300, null, null],
|
||||
[0, "오경", null, 0, null, 69, 66, 52, 0, 160, 300, null, null],
|
||||
[0, "호거아", null, 0, null, 70, 82, 41, 0, 160, 300, null, null],
|
||||
[0, "호진", null, 0, null, 65, 74, 12, 0, 160, 300, null, null],
|
||||
[0, "올돌골", null, 0, null, 79, 86, 11, 0, 160, 300, null, null],
|
||||
[0, "호반", null, 0, null, 55, 55, 59, 0, 160, 300, null, null],
|
||||
[0, "오반", null, 0, null, 74, 71, 59, 0, 160, 300, null, null],
|
||||
[0, "고옹", null, 0, null, 52, 18, 81, 0, 160, 300, null, null],
|
||||
[0, "오란", null, 0, null, 68, 80, 35, 0, 160, 300, null, null],
|
||||
[0, "채화", null, 0, null, 39, 50, 1, 0, 160, 300, null, null],
|
||||
[0, "채중", null, 0, null, 40, 54, 2, 0, 160, 300, null, null],
|
||||
[0, "채모", null, 0, null, 70, 70, 77, 0, 160, 300, null, null],
|
||||
[0, "착융", null, 0, null, 60, 69, 38, 0, 160, 300, null, null],
|
||||
[0, "사마의", null, 0, null, 99, 63, 98, 0, 160, 300, null, null],
|
||||
[0, "사마염", null, 0, null, 69, 59, 77, 0, 160, 300, null, null],
|
||||
[0, "사마사", null, 0, null, 84, 64, 89, 0, 160, 300, null, null],
|
||||
[0, "사마소", null, 0, null, 85, 57, 88, 0, 160, 300, null, null],
|
||||
[0, "사마부", null, 0, null, 70, 37, 77, 0, 160, 300, null, null],
|
||||
[0, "사마랑", null, 0, null, 20, 21, 72, 0, 160, 300, null, null],
|
||||
[0, "사마가", null, 0, null, 66, 84, 25, 0, 160, 300, null, null],
|
||||
[0, "주흔", null, 0, null, 65, 62, 73, 0, 160, 300, null, null],
|
||||
[0, "주앙", null, 0, null, 74, 65, 65, 0, 160, 300, null, null],
|
||||
[0, "주지", null, 0, null, 73, 85, 41, 0, 160, 300, null, null],
|
||||
[0, "주창", null, 0, null, 68, 77, 42, 0, 160, 300, null, null],
|
||||
[0, "주태", null, 0, null, 84, 90, 48, 0, 160, 300, null, null],
|
||||
[0, "주방", null, 0, null, 52, 41, 80, 0, 160, 300, null, null],
|
||||
[0, "주유", null, 0, null, 97, 71, 97, 0, 160, 300, null, null],
|
||||
[0, "주환", null, 0, null, 87, 84, 77, 0, 160, 300, null, null],
|
||||
[0, "주거", null, 0, null, 77, 57, 72, 0, 160, 300, null, null],
|
||||
[0, "축융", null, 0, null, 72, 75, 35, 0, 160, 300, null, null],
|
||||
[0, "주준", null, 0, null, 89, 65, 76, 0, 160, 300, null, null],
|
||||
[0, "주연", null, 0, null, 86, 75, 74, 0, 160, 300, null, null],
|
||||
[0, "주치", null, 0, null, 71, 56, 72, 0, 160, 300, null, null],
|
||||
[0, "주포", null, 0, null, 68, 73, 34, 0, 160, 300, null, null],
|
||||
[0, "주령", null, 0, null, 78, 73, 67, 0, 160, 300, null, null],
|
||||
[0, "순욱", null, 0, null, 78, 38, 97, 0, 160, 300, null, null],
|
||||
[0, "순우경", null, 0, null, 78, 66, 29, 0, 160, 300, null, null],
|
||||
[0, "순심", null, 0, null, 45, 25, 78, 0, 160, 300, null, null],
|
||||
[0, "순유", null, 0, null, 80, 35, 95, 0, 160, 300, null, null],
|
||||
[0, "장완", null, 0, null, 78, 34, 89, 0, 160, 300, null, null],
|
||||
[0, "종회", null, 0, null, 88, 62, 93, 0, 160, 300, null, null],
|
||||
[0, "장간", null, 0, null, 19, 6, 66, 0, 160, 300, null, null],
|
||||
[0, "장의거", null, 0, null, 71, 58, 59, 0, 160, 300, null, null],
|
||||
[0, "장흠", null, 0, null, 78, 85, 54, 0, 160, 300, null, null],
|
||||
[0, "장제3", null, 0, null, 62, 43, 85, 0, 160, 300, null, null],
|
||||
[0, "초주", null, 0, null, 16, 3, 67, 0, 160, 300, null, null],
|
||||
[0, "초촉", null, 0, null, 65, 76, 33, 0, 160, 300, null, null],
|
||||
[0, "향총", null, 0, null, 76, 61, 77, 0, 160, 300, null, null],
|
||||
[0, "종요", null, 0, null, 79, 24, 90, 0, 160, 300, null, null],
|
||||
[0, "향랑", null, 0, null, 28, 18, 74, 0, 160, 300, null, null],
|
||||
[0, "서영", null, 0, null, 92, 80, 62, 0, 160, 300, null, null],
|
||||
[0, "제갈각", null, 0, null, 72, 47, 90, 0, 160, 300, null, null],
|
||||
[0, "제갈근", null, 0, null, 75, 34, 85, 0, 160, 300, null, null],
|
||||
[0, "제갈균", null, 0, null, 29, 25, 52, 0, 160, 300, null, null],
|
||||
[0, "제갈탄", null, 0, null, 72, 72, 76, 0, 160, 300, null, null],
|
||||
[0, "제갈량", null, 0, null, 98, 43, 100, 0, 160, 300, null, null],
|
||||
[0, "서황", null, 0, null, 95, 94, 78, 0, 160, 300, null, null],
|
||||
[0, "서서", null, 0, null, 85, 64, 94, 0, 160, 300, null, null],
|
||||
[0, "서성", null, 0, null, 86, 81, 78, 0, 160, 300, null, null],
|
||||
[0, "서막", null, 0, null, 55, 32, 68, 0, 160, 300, null, null],
|
||||
[0, "신의", null, 0, null, 55, 59, 60, 0, 160, 300, null, null],
|
||||
[0, "신탐", null, 0, null, 56, 62, 54, 0, 160, 300, null, null],
|
||||
[0, "심배", null, 0, null, 80, 60, 84, 0, 160, 300, null, null],
|
||||
[0, "신비", null, 0, null, 42, 24, 79, 0, 160, 300, null, null],
|
||||
[0, "신평", null, 0, null, 69, 43, 77, 0, 160, 300, null, null],
|
||||
[0, "진복", null, 0, null, 31, 7, 73, 0, 160, 300, null, null],
|
||||
[0, "진랑", null, 0, null, 58, 70, 35, 0, 160, 300, null, null],
|
||||
[0, "휴고", null, 0, null, 63, 71, 38, 0, 160, 300, null, null],
|
||||
[0, "추단", null, 0, null, 61, 64, 34, 0, 160, 300, null, null],
|
||||
[0, "성의", null, 0, null, 74, 72, 41, 0, 160, 300, null, null],
|
||||
[0, "성공영", null, 0, null, 73, 71, 80, 0, 160, 300, null, null],
|
||||
[0, "설종", null, 0, null, 34, 16, 73, 0, 160, 300, null, null],
|
||||
[0, "단경", null, 0, null, 71, 68, 43, 0, 160, 300, null, null],
|
||||
[0, "전종", null, 0, null, 78, 72, 75, 0, 160, 300, null, null],
|
||||
[0, "조예", null, 0, null, 72, 52, 82, 0, 160, 300, null, null],
|
||||
[0, "조휴", null, 0, null, 84, 78, 62, 0, 160, 300, null, null],
|
||||
[0, "송헌", null, 0, null, 68, 77, 38, 0, 160, 300, null, null],
|
||||
[0, "조앙", null, 0, null, 78, 67, 69, 0, 160, 300, null, null],
|
||||
[0, "조홍", null, 0, null, 80, 75, 55, 0, 160, 300, null, null],
|
||||
[0, "조순", null, 0, null, 85, 83, 63, 0, 160, 300, null, null],
|
||||
[0, "조창", null, 0, null, 86, 91, 59, 0, 160, 300, null, null],
|
||||
[0, "조식", null, 0, null, 45, 22, 86, 0, 160, 300, null, null],
|
||||
[0, "조진", null, 0, null, 88, 74, 70, 0, 160, 300, null, null],
|
||||
[0, "조인", null, 0, null, 94, 90, 72, 0, 160, 300, null, null],
|
||||
[0, "조성", null, 0, null, 54, 74, 38, 0, 160, 300, null, null],
|
||||
[0, "조조", null, 0, null, 100, 72, 96, 0, 160, 300, null, null, "미망인이 더 매력적이란 말이야... 후후"],
|
||||
[0, "조충", null, 0, null, 43, 21, 74, 0, 160, 300, null, null],
|
||||
[0, "장패", null, 0, null, 78, 86, 53, 0, 160, 300, null, null],
|
||||
[0, "조비", null, 0, null, 75, 71, 87, 0, 160, 300, null, null, "새로운 왕조를 열겠다..."],
|
||||
[0, "조표", null, 0, null, 54, 69, 32, 0, 160, 300, null, null],
|
||||
[0, "저수", null, 0, null, 86, 46, 95, 0, 160, 300, null, null],
|
||||
[0, "소비", null, 0, null, 69, 63, 66, 0, 160, 300, null, null],
|
||||
[0, "조무", null, 0, null, 70, 71, 66, 0, 160, 300, null, null],
|
||||
[0, "손환", null, 0, null, 82, 73, 76, 0, 160, 300, null, null],
|
||||
[0, "손견", null, 0, null, 94, 95, 73, 0, 160, 300, null, null],
|
||||
[0, "손건", null, 0, null, 44, 33, 79, 0, 160, 300, null, null],
|
||||
[0, "손권", null, 0, null, 86, 73, 81, 0, 160, 300, null, null],
|
||||
[0, "손교", null, 0, null, 77, 72, 67, 0, 160, 300, null, null],
|
||||
[0, "손책", null, 0, null, 93, 94, 74, 0, 160, 300, null, null],
|
||||
[0, "손소", null, 0, null, 82, 79, 76, 0, 160, 300, null, null],
|
||||
[0, "손정", null, 0, null, 66, 53, 73, 0, 160, 300, null, null],
|
||||
[0, "손중", null, 0, null, 62, 71, 36, 0, 160, 300, null, null],
|
||||
[0, "손등", null, 0, null, 62, 37, 79, 0, 160, 300, null, null],
|
||||
[0, "손유", null, 0, null, 77, 70, 68, 0, 160, 300, null, null],
|
||||
[0, "손익", null, 0, null, 67, 83, 27, 0, 160, 300, null, null],
|
||||
[0, "손례", null, 0, null, 78, 81, 67, 0, 160, 300, null, null],
|
||||
[0, "태사자", null, 0, null, 94, 94, 72, 0, 160, 300, null, null],
|
||||
[0, "대래동주", null, 0, null, 51, 53, 54, 0, 160, 300, null, null],
|
||||
[0, "대릉", null, 0, null, 70, 75, 39, 0, 160, 300, null, null],
|
||||
[0, "타사대왕", null, 0, null, 62, 59, 70, 0, 160, 300, null, null],
|
||||
[0, "담웅", null, 0, null, 58, 73, 14, 0, 160, 300, null, null],
|
||||
[0, "장윤", null, 0, null, 72, 67, 42, 0, 160, 300, null, null],
|
||||
[0, "조운", null, 0, null, 90, 96, 75, 0, 160, 300, null, null],
|
||||
[0, "장위", null, 0, null, 74, 66, 45, 0, 160, 300, null, null],
|
||||
[0, "장영", null, 0, null, 75, 74, 41, 0, 160, 300, null, null],
|
||||
[0, "장연", null, 0, null, 76, 81, 57, 0, 160, 300, null, null],
|
||||
[0, "장횡", null, 0, null, 59, 70, 23, 0, 160, 300, null, null],
|
||||
[0, "장온", null, 0, null, 32, 10, 72, 0, 160, 300, null, null],
|
||||
[0, "장개", null, 0, null, 34, 66, 8, 0, 160, 300, null, null],
|
||||
[0, "장각", null, 0, null, 87, 35, 90, 0, 160, 300, null, null],
|
||||
[0, "장기", null, 0, null, 74, 35, 76, 0, 160, 300, null, null],
|
||||
[0, "장의", null, 0, null, 79, 72, 75, 0, 160, 300, null, null],
|
||||
[0, "장훈", null, 0, null, 72, 68, 41, 0, 160, 300, null, null],
|
||||
[0, "장굉", null, 0, null, 24, 22, 86, 0, 160, 300, null, null],
|
||||
[0, "장합", null, 0, null, 92, 89, 76, 0, 160, 300, null, null],
|
||||
[0, "조홍2", null, 0, null, 66, 72, 28, 0, 160, 300, null, null],
|
||||
[0, "장제2", null, 0, null, 70, 66, 55, 0, 160, 300, null, null],
|
||||
[0, "장수", null, 0, null, 80, 73, 64, 0, 160, 300, null, null],
|
||||
[0, "장소", null, 0, null, 41, 13, 87, 0, 160, 300, null, null],
|
||||
[0, "장송", null, 0, null, 40, 6, 85, 0, 160, 300, null, null],
|
||||
[0, "장임", null, 0, null, 85, 84, 78, 0, 160, 300, null, null],
|
||||
[0, "장제", null, 0, null, 67, 43, 80, 0, 160, 300, null, null],
|
||||
[0, "장막", null, 0, null, 52, 53, 71, 0, 160, 300, null, null],
|
||||
[0, "조범", null, 0, null, 28, 21, 32, 0, 160, 300, null, null],
|
||||
[0, "장비", null, 0, null, 87, 98, 72, 0, 160, 300, null, null],
|
||||
[0, "장포", null, 0, null, 78, 84, 48, 0, 160, 300, null, null],
|
||||
[0, "장보", null, 0, null, 83, 71, 81, 0, 160, 300, null, null],
|
||||
[0, "장만성", null, 0, null, 75, 81, 45, 0, 160, 300, null, null],
|
||||
[0, "장양", null, 0, null, 72, 70, 66, 0, 160, 300, null, null],
|
||||
[0, "장익", null, 0, null, 75, 74, 76, 0, 160, 300, null, null],
|
||||
[0, "장료", null, 0, null, 96, 94, 78, 0, 160, 300, null, null],
|
||||
[0, "장량", null, 0, null, 78, 80, 74, 0, 160, 300, null, null],
|
||||
[0, "조루", null, 0, null, 70, 43, 68, 0, 160, 300, null, null],
|
||||
[0, "장로", null, 0, null, 65, 42, 81, 0, 160, 300, null, null],
|
||||
[0, "진횡", null, 0, null, 64, 63, 26, 0, 160, 300, null, null],
|
||||
[0, "진응", null, 0, null, 62, 72, 45, 0, 160, 300, null, null],
|
||||
[0, "진기", null, 0, null, 58, 65, 43, 0, 160, 300, null, null],
|
||||
[0, "진궁", null, 0, null, 84, 55, 90, 0, 160, 300, null, null],
|
||||
[0, "진교", null, 0, null, 61, 27, 77, 0, 160, 300, null, null],
|
||||
[0, "진군", null, 0, null, 32, 14, 75, 0, 160, 300, null, null],
|
||||
[0, "진규", null, 0, null, 30, 4, 82, 0, 160, 300, null, null],
|
||||
[0, "진식", null, 0, null, 70, 71, 25, 0, 160, 300, null, null],
|
||||
[0, "진진", null, 0, null, 46, 46, 69, 0, 160, 300, null, null],
|
||||
[0, "진태", null, 0, null, 86, 77, 89, 0, 160, 300, null, null],
|
||||
[0, "진등", null, 0, null, 79, 64, 81, 0, 160, 300, null, null],
|
||||
[0, "진도", null, 0, null, 82, 78, 67, 0, 160, 300, null, null],
|
||||
[0, "진무", null, 0, null, 76, 87, 43, 0, 160, 300, null, null],
|
||||
[0, "진란", null, 0, null, 66, 69, 40, 0, 160, 300, null, null],
|
||||
[0, "진림", null, 0, null, 25, 9, 75, 0, 160, 300, null, null],
|
||||
[0, "정욱", null, 0, null, 76, 49, 94, 0, 160, 300, null, null],
|
||||
[0, "정원지", null, 0, null, 69, 74, 17, 0, 160, 300, null, null],
|
||||
[0, "정은", null, 0, null, 69, 73, 40, 0, 160, 300, null, null],
|
||||
[0, "정원", null, 0, null, 70, 76, 35, 0, 160, 300, null, null],
|
||||
[0, "정보", null, 0, null, 84, 79, 79, 0, 160, 300, null, null],
|
||||
[0, "정봉", null, 0, null, 81, 92, 75, 0, 160, 300, null, null],
|
||||
[0, "전위", null, 0, null, 79, 98, 42, 0, 160, 300, null, null],
|
||||
[0, "전해", null, 0, null, 68, 65, 58, 0, 160, 300, null, null],
|
||||
[0, "전주", null, 0, null, 66, 66, 73, 0, 160, 300, null, null],
|
||||
[0, "전풍", null, 0, null, 82, 43, 96, 0, 160, 300, null, null],
|
||||
[0, "전예", null, 0, null, 93, 85, 80, 0, 160, 300, null, null],
|
||||
[0, "동윤", null, 0, null, 47, 28, 79, 0, 160, 300, null, null],
|
||||
[0, "동화", null, 0, null, 57, 34, 75, 0, 160, 300, null, null],
|
||||
[0, "등애", null, 0, null, 92, 80, 94, 0, 160, 300, null, null],
|
||||
[0, "도겸", null, 0, null, 51, 27, 64, 0, 160, 300, null, null],
|
||||
[0, "등현", null, 0, null, 61, 73, 45, 0, 160, 300, null, null],
|
||||
[0, "등지", null, 0, null, 73, 52, 81, 0, 160, 300, null, null],
|
||||
[0, "동습", null, 0, null, 72, 85, 50, 0, 160, 300, null, null],
|
||||
[0, "동승", null, 0, null, 56, 53, 65, 0, 160, 300, null, null],
|
||||
[0, "동소", null, 0, null, 34, 25, 80, 0, 160, 300, null, null],
|
||||
[0, "동탁", null, 0, null, 91, 87, 72, 0, 160, 300, null, null],
|
||||
[0, "동도나", null, 0, null, 68, 73, 31, 0, 160, 300, null, null],
|
||||
[0, "동민", null, 0, null, 49, 60, 25, 0, 160, 300, null, null],
|
||||
[0, "등무", null, 0, null, 61, 75, 29, 0, 160, 300, null, null],
|
||||
[0, "두기", null, 0, null, 74, 43, 78, 0, 160, 300, null, null],
|
||||
[0, "두예", null, 0, null, 96, 69, 95, 0, 160, 300, null, null],
|
||||
[0, "배원소", null, 0, null, 49, 65, 25, 0, 160, 300, null, null],
|
||||
[0, "마완", null, 0, null, 71, 74, 16, 0, 160, 300, null, null],
|
||||
[0, "마휴", null, 0, null, 68, 73, 48, 0, 160, 300, null, null],
|
||||
[0, "파재", null, 0, null, 74, 74, 55, 0, 160, 300, null, null],
|
||||
[0, "마준", null, 0, null, 38, 52, 31, 0, 160, 300, null, null],
|
||||
[0, "마속", null, 0, null, 61, 67, 84, 0, 160, 300, null, null],
|
||||
[0, "마대", null, 0, null, 79, 85, 62, 0, 160, 300, null, null],
|
||||
[0, "마충", null, 0, null, 78, 72, 68, 0, 160, 300, null, null],
|
||||
[0, "마초", null, 0, null, 86, 97, 44, 0, 160, 300, null, null, "서량의 금마초 나가신다!"],
|
||||
[0, "마철", null, 0, null, 70, 62, 58, 0, 160, 300, null, null],
|
||||
[0, "마등", null, 0, null, 85, 80, 52, 0, 160, 300, null, null],
|
||||
[0, "마량", null, 0, null, 53, 23, 85, 0, 160, 300, null, null],
|
||||
[0, "반준", null, 0, null, 61, 46, 82, 0, 160, 300, null, null],
|
||||
[0, "반장", null, 0, null, 76, 80, 69, 0, 160, 300, null, null],
|
||||
[0, "번조", null, 0, null, 66, 73, 31, 0, 160, 300, null, null],
|
||||
[0, "번능", null, 0, null, 69, 61, 36, 0, 160, 300, null, null],
|
||||
[0, "반봉", null, 0, null, 56, 77, 4, 0, 160, 300, null, null],
|
||||
[0, "비의", null, 0, null, 82, 56, 88, 0, 160, 300, null, null],
|
||||
[0, "비연", null, 0, null, 60, 66, 21, 0, 160, 300, null, null],
|
||||
[0, "비시", null, 0, null, 18, 28, 65, 0, 160, 300, null, null],
|
||||
[0, "미축", null, 0, null, 33, 29, 78, 0, 160, 300, null, null],
|
||||
[0, "미방", null, 0, null, 54, 61, 32, 0, 160, 300, null, null],
|
||||
[0, "비요", null, 0, null, 70, 66, 73, 0, 160, 300, null, null],
|
||||
[0, "무안국", null, 0, null, 70, 79, 34, 0, 160, 300, null, null],
|
||||
[0, "풍습", null, 0, null, 72, 71, 39, 0, 160, 300, null, null],
|
||||
[0, "부사인", null, 0, null, 46, 63, 37, 0, 160, 300, null, null],
|
||||
[0, "부첨", null, 0, null, 73, 85, 76, 0, 160, 300, null, null],
|
||||
[0, "부손", null, 0, null, 29, 13, 70, 0, 160, 300, null, null],
|
||||
[0, "문앙", null, 0, null, 76, 96, 65, 0, 160, 300, null, null],
|
||||
[0, "문흠", null, 0, null, 74, 79, 43, 0, 160, 300, null, null],
|
||||
[0, "문추", null, 0, null, 87, 95, 49, 0, 160, 300, null, null],
|
||||
[0, "문빙", null, 0, null, 88, 85, 69, 0, 160, 300, null, null],
|
||||
[0, "변희", null, 0, null, 56, 70, 62, 0, 160, 300, null, null],
|
||||
[0, "망아장", null, 0, null, 45, 79, 3, 0, 160, 300, null, null],
|
||||
[0, "봉기", null, 0, null, 56, 48, 84, 0, 160, 300, null, null],
|
||||
[0, "방희", null, 0, null, 60, 38, 69, 0, 160, 300, null, null],
|
||||
[0, "법정", null, 0, null, 82, 47, 94, 0, 160, 300, null, null],
|
||||
[0, "방통", null, 0, null, 79, 34, 97, 0, 160, 300, null, null],
|
||||
[0, "방덕", null, 0, null, 89, 94, 70, 0, 160, 300, null, null],
|
||||
[0, "포륭", null, 0, null, 58, 76, 49, 0, 160, 300, null, null],
|
||||
[0, "목순", null, 0, null, 52, 77, 11, 0, 160, 300, null, null],
|
||||
[0, "목록대왕", null, 0, null, 65, 71, 39, 0, 160, 300, null, null],
|
||||
[0, "보즐", null, 0, null, 83, 51, 81, 0, 160, 300, null, null],
|
||||
[0, "만총", null, 0, null, 88, 64, 87, 0, 160, 300, null, null],
|
||||
[0, "모개", null, 0, null, 63, 39, 60, 0, 160, 300, null, null],
|
||||
[0, "맹획", null, 0, null, 81, 88, 42, 0, 160, 300, null, null],
|
||||
[0, "맹체", null, 0, null, 75, 73, 75, 0, 160, 300, null, null],
|
||||
[0, "맹우", null, 0, null, 50, 68, 22, 0, 160, 300, null, null],
|
||||
[0, "유섭", null, 0, null, 62, 79, 24, 0, 160, 300, null, null],
|
||||
[0, "양부", null, 0, null, 62, 68, 68, 0, 160, 300, null, null],
|
||||
[0, "옹개", null, 0, null, 73, 75, 57, 0, 160, 300, null, null],
|
||||
[0, "양의", null, 0, null, 68, 40, 82, 0, 160, 300, null, null],
|
||||
[0, "양호", null, 0, null, 94, 69, 92, 0, 160, 300, null, null],
|
||||
[0, "양홍", null, 0, null, 33, 15, 77, 0, 160, 300, null, null],
|
||||
[0, "양앙", null, 0, null, 68, 72, 38, 0, 160, 300, null, null],
|
||||
[0, "양추", null, 0, null, 52, 65, 40, 0, 160, 300, null, null],
|
||||
[0, "양수", null, 0, null, 46, 23, 83, 0, 160, 300, null, null],
|
||||
[0, "양추2", null, 0, null, 67, 64, 60, 0, 160, 300, null, null],
|
||||
[0, "양송", null, 0, null, 17, 5, 28, 0, 160, 300, null, null],
|
||||
[0, "양임", null, 0, null, 70, 78, 56, 0, 160, 300, null, null],
|
||||
[0, "양조", null, 0, null, 53, 61, 36, 0, 160, 300, null, null],
|
||||
[0, "양백", null, 0, null, 44, 45, 19, 0, 160, 300, null, null],
|
||||
[0, "양부2", null, 0, null, 67, 50, 83, 0, 160, 300, null, null],
|
||||
[0, "양봉", null, 0, null, 66, 65, 31, 0, 160, 300, null, null],
|
||||
[0, "양봉2", null, 0, null, 54, 62, 53, 0, 160, 300, null, null],
|
||||
[0, "뇌동", null, 0, null, 69, 78, 51, 0, 160, 300, null, null],
|
||||
[0, "뇌박", null, 0, null, 62, 70, 36, 0, 160, 300, null, null],
|
||||
[0, "이이", null, 0, null, 63, 77, 19, 0, 160, 300, null, null],
|
||||
[0, "이회", null, 0, null, 79, 65, 79, 0, 160, 300, null, null],
|
||||
[0, "이각", null, 0, null, 69, 72, 24, 0, 160, 300, null, null],
|
||||
[0, "육항", null, 0, null, 94, 68, 93, 0, 160, 300, null, null],
|
||||
[0, "육적", null, 0, null, 20, 7, 72, 0, 160, 300, null, null],
|
||||
[0, "육손", null, 0, null, 95, 71, 96, 0, 160, 300, null, null],
|
||||
[0, "이엄", null, 0, null, 83, 84, 76, 0, 160, 300, null, null],
|
||||
[0, "이유", null, 0, null, 61, 26, 93, 0, 160, 300, null, null],
|
||||
[0, "이숙", null, 0, null, 46, 69, 61, 0, 160, 300, null, null],
|
||||
[0, "이통", null, 0, null, 73, 81, 62, 0, 160, 300, null, null],
|
||||
[0, "이전", null, 0, null, 78, 80, 79, 0, 160, 300, null, null],
|
||||
[0, "이풍", null, 0, null, 69, 74, 50, 0, 160, 300, null, null],
|
||||
[0, "유언", null, 0, null, 61, 38, 80, 0, 160, 300, null, null],
|
||||
[0, "유괴", null, 0, null, 71, 73, 67, 0, 160, 300, null, null],
|
||||
[0, "유기", null, 0, null, 52, 12, 63, 0, 160, 300, null, null],
|
||||
[0, "유우", null, 0, null, 62, 33, 75, 0, 160, 300, null, null],
|
||||
[0, "유훈", null, 0, null, 47, 63, 35, 0, 160, 300, null, null],
|
||||
[0, "유현", null, 0, null, 54, 66, 51, 0, 160, 300, null, null],
|
||||
[0, "유순", null, 0, null, 63, 46, 41, 0, 160, 300, null, null],
|
||||
[0, "유장", null, 0, null, 31, 5, 34, 0, 160, 300, null, null],
|
||||
[0, "유심", null, 0, null, 60, 62, 70, 0, 160, 300, null, null],
|
||||
[0, "유선", null, 0, null, 3, 5, 9, 0, 160, 300, null, null],
|
||||
[0, "유종", null, 0, null, 24, 22, 65, 0, 160, 300, null, null],
|
||||
[0, "유도", null, 0, null, 25, 23, 26, 0, 160, 300, null, null],
|
||||
[0, "유파", null, 0, null, 29, 22, 75, 0, 160, 300, null, null],
|
||||
[0, "유반", null, 0, null, 69, 76, 47, 0, 160, 300, null, null],
|
||||
[0, "유비", null, 0, null, 88, 78, 75, 0, 160, 300, null, null, "한왕실은 중산정왕의 후손인 내가 이어받겠다...!"],
|
||||
[0, "유표", null, 0, null, 48, 31, 72, 0, 160, 300, null, null],
|
||||
[0, "유복", null, 0, null, 64, 49, 74, 0, 160, 300, null, null],
|
||||
[0, "유벽", null, 0, null, 70, 72, 47, 0, 160, 300, null, null],
|
||||
[0, "유봉", null, 0, null, 75, 79, 44, 0, 160, 300, null, null],
|
||||
[0, "유엽", null, 0, null, 56, 32, 92, 0, 160, 300, null, null],
|
||||
[0, "유요", null, 0, null, 62, 67, 46, 0, 160, 300, null, null],
|
||||
[0, "여위황", null, 0, null, 58, 63, 29, 0, 160, 300, null, null],
|
||||
[0, "요화", null, 0, null, 73, 76, 69, 0, 160, 300, null, null],
|
||||
[0, "양흥", null, 0, null, 61, 65, 19, 0, 160, 300, null, null],
|
||||
[0, "양습", null, 0, null, 73, 40, 74, 0, 160, 300, null, null],
|
||||
[0, "양서", null, 0, null, 56, 62, 66, 0, 160, 300, null, null],
|
||||
[0, "능조", null, 0, null, 75, 81, 42, 0, 160, 300, null, null],
|
||||
[0, "능통", null, 0, null, 83, 89, 60, 0, 160, 300, null, null],
|
||||
[0, "여개", null, 0, null, 53, 30, 67, 0, 160, 300, null, null],
|
||||
[0, "여건", null, 0, null, 57, 70, 62, 0, 160, 300, null, null],
|
||||
[0, "여광", null, 0, null, 56, 70, 13, 0, 160, 300, null, null],
|
||||
[0, "여상", null, 0, null, 54, 71, 12, 0, 160, 300, null, null],
|
||||
[0, "여대", null, 0, null, 80, 71, 70, 0, 160, 300, null, null],
|
||||
[0, "여범", null, 0, null, 73, 63, 75, 0, 160, 300, null, null],
|
||||
[0, "여포", null, 0, null, 89, 100, 42, 0, 160, 300, null, null, "다 덤비거라! 하하하하"],
|
||||
[0, "여몽", null, 0, null, 91, 81, 90, 0, 160, 300, null, null],
|
||||
[0, "윤직", null, 0, null, 46, 42, 73, 0, 160, 300, null, null],
|
||||
[0, "냉포", null, 0, null, 71, 82, 61, 0, 160, 300, null, null],
|
||||
[0, "누규", null, 0, null, 52, 13, 87, 0, 160, 300, null, null],
|
||||
[0, "노숙", null, 0, null, 89, 56, 93, 0, 160, 300, null, null],
|
||||
[0, "노식", null, 0, null, 86, 63, 82, 0, 160, 300, null, null],
|
||||
[0, "범강", null, 0, null, 49, 50, 36, 0, 160, 300, null, null],
|
||||
[0, "장달", null, 0, null, 43, 56, 34, 0, 160, 300, null, null],
|
||||
[0, "규람", null, 0, null, 55, 70, 58, 0, 160, 300, null, null],
|
||||
[0, "대원", null, 0, null, 38, 32, 68, 0, 160, 300, null, null],
|
||||
[0, "왕기", null, 0, null, 81, 72, 86, 0, 160, 300, null, null],
|
||||
[0, "왕상", null, 0, null, 23, 19, 68, 0, 160, 300, null, null],
|
||||
[0, "왕돈", null, 0, null, 60, 66, 46, 0, 160, 300, null, null],
|
||||
[0, "악침", null, 0, null, 73, 75, 43, 0, 160, 300, null, null],
|
||||
[0, "하제", null, 0, null, 83, 70, 82, 0, 160, 300, null, null],
|
||||
[0, "환범", null, 0, null, 40, 11, 78, 0, 160, 300, null, null],
|
||||
[0, "견초", null, 0, null, 72, 79, 73, 0, 160, 300, null, null],
|
||||
[0, "고당륭", null, 0, null, 35, 24, 76, 0, 160, 300, null, null],
|
||||
[0, "오찬", null, 0, null, 68, 41, 78, 0, 160, 300, null, null],
|
||||
[0, "호질", null, 0, null, 73, 46, 74, 0, 160, 300, null, null],
|
||||
[0, "오질", null, 0, null, 16, 29, 68, 0, 160, 300, null, null],
|
||||
[0, "호준", null, 0, null, 79, 76, 62, 0, 160, 300, null, null],
|
||||
[0, "고담", null, 0, null, 53, 23, 77, 0, 160, 300, null, null],
|
||||
[0, "최림", null, 0, null, 32, 22, 66, 0, 160, 300, null, null],
|
||||
[0, "사마망", null, 0, null, 78, 58, 83, 0, 160, 300, null, null],
|
||||
[0, "주이", null, 0, null, 70, 73, 61, 0, 160, 300, null, null],
|
||||
[0, "전단", null, 0, null, 67, 64, 39, 0, 160, 300, null, null],
|
||||
[0, "조우", null, 0, null, 50, 43, 37, 0, 160, 300, null, null],
|
||||
[0, "조상", null, 0, null, 39, 33, 30, 0, 160, 300, null, null],
|
||||
[0, "조방", null, 0, null, 20, 14, 27, 0, 160, 300, null, null],
|
||||
[0, "태사향", null, 0, null, 57, 66, 48, 0, 160, 300, null, null],
|
||||
[0, "장휴", null, 0, null, 63, 27, 74, 0, 160, 300, null, null],
|
||||
[0, "장호", null, 0, null, 75, 74, 51, 0, 160, 300, null, null],
|
||||
[0, "조광", null, 0, null, 67, 71, 53, 0, 160, 300, null, null],
|
||||
[0, "장집", null, 0, null, 76, 29, 80, 0, 160, 300, null, null],
|
||||
[0, "장승", null, 0, null, 77, 70, 75, 0, 160, 300, null, null],
|
||||
[0, "장소2", null, 0, null, 23, 56, 31, 0, 160, 300, null, null],
|
||||
[0, "조통", null, 0, null, 68, 67, 61, 0, 160, 300, null, null],
|
||||
[0, "진표", null, 0, null, 66, 42, 74, 0, 160, 300, null, null],
|
||||
[0, "정무", null, 0, null, 56, 35, 75, 0, 160, 300, null, null],
|
||||
[0, "정봉2", null, 0, null, 66, 66, 53, 0, 160, 300, null, null],
|
||||
[0, "전만", null, 0, null, 51, 73, 39, 0, 160, 300, null, null],
|
||||
[0, "마균", null, 0, null, 22, 17, 71, 0, 160, 300, null, null],
|
||||
[0, "방회", null, 0, null, 69, 75, 49, 0, 160, 300, null, null],
|
||||
[0, "낙통", null, 0, null, 76, 58, 75, 0, 160, 300, null, null],
|
||||
[0, "육개", null, 0, null, 65, 61, 79, 0, 160, 300, null, null],
|
||||
[0, "유찬", null, 0, null, 78, 81, 64, 0, 160, 300, null, null],
|
||||
[0, "유소", null, 0, null, 68, 53, 74, 0, 160, 300, null, null],
|
||||
[0, "요립", null, 0, null, 32, 15, 76, 0, 160, 300, null, null],
|
||||
[0, "여거", null, 0, null, 78, 69, 71, 0, 160, 300, null, null],
|
||||
[0, "제갈첨", null, 0, null, 70, 57, 76, 0, 160, 300, null, null],
|
||||
[0, "손휴", null, 0, null, 57, 42, 78, 0, 160, 300, null, null],
|
||||
[0, "극정", null, 0, null, 42, 23, 68, 0, 160, 300, null, null],
|
||||
[0, "호분", null, 0, null, 71, 76, 50, 0, 160, 300, null, null],
|
||||
[0, "손량", null, 0, null, 32, 26, 70, 0, 160, 300, null, null],
|
||||
[0, "마막", null, 0, null, 34, 12, 44, 0, 160, 300, null, null],
|
||||
[0, "손호", null, 0, null, 41, 73, 71, 0, 160, 300, null, null],
|
||||
[0, "조모", null, 0, null, 54, 61, 59, 0, 160, 300, null, null],
|
||||
[0, "조환", null, 0, null, 30, 28, 30, 0, 160, 300, null, null],
|
||||
[0, "사마유", null, 0, null, 71, 68, 75, 0, 160, 300, null, null],
|
||||
[0, "제갈상", null, 0, null, 64, 79, 62, 0, 160, 300, null, null],
|
||||
[0, "손화", null, 0, null, 31, 39, 68, 0, 160, 300, null, null],
|
||||
[0, "염우", null, 0, null, 52, 61, 51, 0, 160, 300, null, null],
|
||||
[0, "왕경", null, 0, null, 67, 63, 71, 0, 160, 300, null, null],
|
||||
[0, "왕혼", null, 0, null, 74, 71, 63, 0, 160, 300, null, null],
|
||||
[0, "곽혁", null, 0, null, 33, 29, 70, 0, 160, 300, null, null],
|
||||
[0, "가범", null, 0, null, 60, 62, 73, 0, 160, 300, null, null],
|
||||
[0, "서질", null, 0, null, 68, 83, 24, 0, 160, 300, null, null],
|
||||
[0, "손준", null, 0, null, 64, 70, 65, 0, 160, 300, null, null],
|
||||
[0, "손침", null, 0, null, 58, 55, 65, 0, 160, 300, null, null],
|
||||
[0, "우사", null, 0, null, 61, 34, 74, 0, 160, 300, null, null],
|
||||
[0, "진건", null, 0, null, 72, 71, 65, 0, 160, 300, null, null],
|
||||
[0, "동궐", null, 0, null, 65, 59, 76, 0, 160, 300, null, null],
|
||||
[0, "당자", null, 0, null, 61, 71, 50, 0, 160, 300, null, null],
|
||||
[0, "등충", null, 0, null, 76, 80, 69, 0, 160, 300, null, null],
|
||||
[0, "황숭", null, 0, null, 67, 63, 72, 0, 160, 300, null, null],
|
||||
[0, "화핵", null, 0, null, 20, 24, 71, 0, 160, 300, null, null],
|
||||
[0, "허의", null, 0, null, 51, 74, 15, 0, 160, 300, null, null],
|
||||
[0, "송겸", null, 0, null, 66, 78, 42, 0, 160, 300, null, null],
|
||||
[0, "호제", null, 0, null, 57, 39, 68, 0, 160, 300, null, null],
|
||||
[0, "나헌", null, 0, null, 86, 70, 82, 0, 160, 300, null, null],
|
||||
[0, "노숙2", null, 0, null, 73, 53, 74, 0, 160, 300, null, null],
|
||||
[0, "구성", null, 0, null, 63, 70, 38, 0, 160, 300, null, null],
|
||||
[0, "어부라", null, 0, null, 72, 68, 21, 0, 160, 300, null, null],
|
||||
[0, "아하소과", null, 0, null, 61, 76, 13, 0, 160, 300, null, null],
|
||||
[0, "가비능", null, 0, null, 77, 69, 52, 0, 160, 300, null, null],
|
||||
[0, "구력거", null, 0, null, 80, 68, 56, 0, 160, 300, null, null],
|
||||
[0, "강단", null, 0, null, 65, 83, 48, 0, 160, 300, null, null],
|
||||
[0, "황란", null, 0, null, 63, 75, 44, 0, 160, 300, null, null],
|
||||
[0, "호주천", null, 0, null, 70, 71, 40, 0, 160, 300, null, null],
|
||||
[0, "종리목", null, 0, null, 84, 72, 82, 0, 160, 300, null, null],
|
||||
[0, "제갈교", null, 0, null, 62, 27, 75, 0, 160, 300, null, null],
|
||||
[0, "답돈", null, 0, null, 84, 82, 61, 0, 160, 300, null, null],
|
||||
[0, "반임", null, 0, null, 66, 79, 38, 0, 160, 300, null, null],
|
||||
[0, "보도근", null, 0, null, 64, 73, 50, 0, 160, 300, null, null],
|
||||
[0, "미당대왕", null, 0, null, 59, 69, 21, 0, 160, 300, null, null],
|
||||
[0, "유표2", null, 0, null, 73, 74, 48, 0, 160, 300, null, null],
|
||||
[0, "루반", null, 0, null, 65, 76, 39, 0, 160, 300, null, null],
|
||||
[0, "손관", null, 0, null, 72, 78, 51, 0, 160, 300, null, null],
|
||||
[0, "곽석", null, 0, null, 59, 71, 48, 0, 160, 300, null, null],
|
||||
[0, "주조", null, 0, null, 63, 68, 26, 0, 160, 300, null, null],
|
||||
[0, "장거", null, 0, null, 79, 75, 56, 0, 160, 300, null, null],
|
||||
[0, "장순", null, 0, null, 73, 81, 60, 0, 160, 300, null, null],
|
||||
[0, "철리길", null, 0, null, 77, 70, 52, 0, 160, 300, null, null],
|
||||
[0, "주삭", null, 0, null, 54, 60, 50, 0, 160, 300, null, null],
|
||||
[0, "황월영", null, 0, null, 46, 33, 78, 0, 160, 300, null, null],
|
||||
[0, "채염", null, 0, null, 42, 26, 82, 0, 160, 300, null, null],
|
||||
[0, "소교", null, 0, null, 23, 15, 78, 0, 160, 300, null, null],
|
||||
[0, "신헌영", null, 0, null, 65, 35, 90, 0, 160, 300, null, null, "내가 사내로 태어났더라면..."],
|
||||
[0, "손상향", null, 0, null, 72, 79, 55, 0, 160, 300, null, null],
|
||||
[0, "대교", null, 0, null, 22, 30, 78, 0, 160, 300, null, null],
|
||||
[0, "초선", null, 0, null, 12, 22, 71, 0, 160, 300, null, null],
|
||||
[0, "교모", null, 0, null, 54, 45, 69, 0, 160, 300, null, null],
|
||||
[0, "관구수", null, 0, null, 58, 62, 33, 0, 160, 300, null, null],
|
||||
[0, "관구전", null, 0, null, 63, 60, 69, 0, 160, 300, null, null],
|
||||
[0, "원유", null, 0, null, 56, 40, 73, 0, 160, 300, null, null],
|
||||
[0, "왕광", null, 0, null, 65, 55, 61, 0, 160, 300, null, null],
|
||||
[0, "신창", null, 0, null, 50, 26, 42, 0, 160, 300, null, null],
|
||||
[0, "사마주", null, 0, null, 61, 52, 61, 0, 160, 300, null, null],
|
||||
[0, "양제", null, 0, null, 67, 68, 71, 0, 160, 300, null, null],
|
||||
[0, "성만", null, 0, null, 61, 68, 66, 0, 160, 300, null, null],
|
||||
[0, "오연", null, 0, null, 66, 73, 42, 0, 160, 300, null, null],
|
||||
[0, "맹충", null, 0, null, 47, 28, 72, 0, 160, 300, null, null],
|
||||
[0, "잠혼", null, 0, null, 1, 1, 22, 0, 160, 300, null, null],
|
||||
[0, "사정", null, 0, null, 64, 76, 34, 0, 160, 300, null, null],
|
||||
[0, "심영", null, 0, null, 70, 77, 61, 0, 160, 300, null, null],
|
||||
[0, "도준", null, 0, null, 65, 66, 46, 0, 160, 300, null, null],
|
||||
[0, "만욱", null, 0, null, 21, 25, 71, 0, 160, 300, null, null],
|
||||
[0, "오언", null, 0, null, 76, 81, 65, 0, 160, 300, null, null],
|
||||
[0, "위막", null, 0, null, 57, 62, 59, 0, 160, 300, null, null],
|
||||
[0, "시삭", null, 0, null, 38, 65, 47, 0, 160, 300, null, null],
|
||||
[0, "전속", null, 0, null, 47, 60, 55, 0, 160, 300, null, null],
|
||||
[0, "장화", null, 0, null, 36, 27, 78, 0, 160, 300, null, null],
|
||||
[0, "오거", null, 0, null, 49, 61, 23, 0, 160, 300, null, null],
|
||||
[0, "추정", null, 0, null, 70, 64, 66, 0, 160, 300, null, null],
|
||||
[0, "장특", null, 0, null, 73, 54, 75, 0, 160, 300, null, null],
|
||||
[0, "곽마", null, 0, null, 68, 71, 47, 0, 160, 300, null, null],
|
||||
[0, "석포", null, 0, null, 69, 71, 56, 0, 160, 300, null, null],
|
||||
[0, "견홍", null, 0, null, 70, 74, 66, 0, 160, 300, null, null],
|
||||
[0, "한거자", null, 0, null, 51, 59, 51, 0, 160, 300, null, null],
|
||||
[0, "휴원진", null, 0, null, 52, 68, 45, 0, 160, 300, null, null],
|
||||
[0, "곽원", null, 0, null, 66, 73, 36, 0, 160, 300, null, null],
|
||||
[0, "계옹", null, 0, null, 63, 52, 41, 0, 160, 300, null, null],
|
||||
[0, "이부", null, 0, null, 31, 36, 74, 0, 160, 300, null, null],
|
||||
[0, "왕업", null, 0, null, 33, 6, 35, 0, 160, 300, null, null],
|
||||
[0, "좌혁", null, 0, null, 62, 66, 51, 0, 160, 300, null, null],
|
||||
[0, "화타", null, 0, null, 57, 25, 73, 0, 160, 300, null, null, "아픈 사람들 모두 내게 오시오~"],
|
||||
[0, "사마휘", null, 0, null, 55, 26, 82, 0, 160, 300, null, null, "좋지 좋아~"],
|
||||
[0, "우길", null, 0, null, 23, 15, 90, 0, 160, 300, null, null, "길조로다"],
|
||||
[0, "헌제", null, 0, null, 22, 18, 68, 0, 160, 300, null, null, "한왕실은 정녕 여기서 끝이란 말인가.."],
|
||||
[0, "백기", null, 0, null, 100, 88, 82, 0, 160, 300, null, null],
|
||||
[0, "한신", null, 0, null, 100, 74, 95, 0, 160, 300, null, null],
|
||||
[0, "악비", null, 0, null, 99, 91, 86, 0, 160, 300, null, null],
|
||||
[0, "항적", null, 0, null, 99, 100, 65, 0, 160, 300, null, null],
|
||||
[0, "악의", null, 0, null, 98, 75, 96, 0, 160, 300, null, null],
|
||||
[0, "영정", null, 0, null, 97, 55, 92, 0, 160, 300, null, null],
|
||||
[0, "강상", null, 0, null, 94, 49, 100, 0, 160, 300, null, null],
|
||||
[0, "전단2", null, 0, null, 96, 75, 95, 0, 160, 300, null, null],
|
||||
[0, "이목", null, 0, null, 96, 78, 88, 0, 160, 300, null, null],
|
||||
[0, "염파", null, 0, null, 97, 96, 75, 0, 160, 300, null, null],
|
||||
[0, "왕전", null, 0, null, 94, 78, 83, 0, 160, 300, null, null],
|
||||
[0, "오기", null, 0, null, 94, 66, 95, 0, 160, 300, null, null],
|
||||
[0, "곽거병", null, 0, null, 93, 92, 53, 0, 160, 300, null, null],
|
||||
[0, "영포", null, 0, null, 82, 91, 54, 0, 160, 300, null, null],
|
||||
[0, "이신", null, 0, null, 81, 88, 63, 0, 160, 300, null, null],
|
||||
[0, "몽념", null, 0, null, 87, 86, 71, 0, 160, 300, null, null],
|
||||
[0, "전기", null, 0, null, 80, 85, 44, 0, 160, 300, null, null],
|
||||
[0, "극신", null, 0, null, 76, 83, 42, 0, 160, 300, null, null],
|
||||
[0, "항연", null, 0, null, 89, 80, 77, 0, 160, 300, null, null],
|
||||
[0, "인상여", null, 0, null, 69, 38, 96, 0, 160, 300, null, null],
|
||||
[0, "장자방", null, 0, null, 72, 40, 100, 0, 160, 300, null, null],
|
||||
[0, "관이오", null, 0, null, 85, 64, 99, 0, 160, 300, null, null],
|
||||
[0, "손빈", null, 0, null, 83, 22, 98, 0, 160, 300, null, null],
|
||||
[0, "소진", null, 0, null, 90, 47, 96, 0, 160, 300, null, null],
|
||||
[0, "범증", null, 0, null, 68, 24, 94, 0, 160, 300, null, null],
|
||||
[0, "장의2", null, 0, null, 75, 23, 93, 0, 160, 300, null, null],
|
||||
[0, "공구", null, 0, null, 68, 70, 91, 0, 160, 300, null, null],
|
||||
[0, "소하", null, 0, null, 56, 27, 97, 0, 160, 300, null, null],
|
||||
[0, "한비", null, 0, null, 49, 18, 97, 0, 160, 300, null, null],
|
||||
[0, "이사", null, 0, null, 48, 24, 95, 0, 160, 300, null, null],
|
||||
[0, "전문", null, 0, null, 79, 67, 89, 0, 160, 300, null, null],
|
||||
[0, "황헐", null, 0, null, 81, 68, 88, 0, 160, 300, null, null],
|
||||
[0, "방난", null, 0, null, 88, 95, 66, 0, 160, 300, null, null],
|
||||
[0, "개섭", null, 0, null, 43, 97, 54, 0, 160, 300, null, null],
|
||||
[0, "형가", null, 0, null, 42, 89, 43, 0, 160, 300, null, null],
|
||||
[0, "유방", null, 0, null, 90, 75, 85, 0, 160, 300, null, null, "나는 사람을 쓰는 재주로 천하를 얻었다"],
|
||||
[0, "하리", null, 0, null, 99, 99, 89, 0, 160, 300, null, null, "내 업적을 따라올 사람이 있을까?"],
|
||||
[0, "헹이", null, 0, null, 97, 72, 90, 0, 160, 300, null, null, "맛있다 'ㅅ'"],
|
||||
[0, "나나", null, 0, null, 96, 71, 86, 0, 160, 300, null, null, "이번 전쟁을 계산해보면 말이죠..."],
|
||||
[0, "장임2", null, 0, null, 90, 87, 85, 0, 160, 300, null, null, "으리!"],
|
||||
[0, "하야미", null, 0, null, 94, 85, 92, 0, 160, 300, null, null, "흑막이 되어볼까요"],
|
||||
[0, "이시리스", null, 0, null, 96, 80, 94, 0, 160, 300, null, null],
|
||||
[0, "연채홍", null, 0, null, 90, 81, 88, 0, 160, 300, null, null, "엄마도 천통할수 있다!"],
|
||||
[0, "임사영", null, 0, null, 75, 75, 75, 0, 160, 300, null, null, "일반인 양민입니다"],
|
||||
[0, "장군보", null, 0, null, 84, 90, 68, 0, 160, 300, null, null],
|
||||
[0, "크렌스", null, 0, null, 92, 80, 76, 0, 160, 300, null, null],
|
||||
[0, "콘", null, 0, null, 88, 96, 85, 0, 160, 300, null, null],
|
||||
[0, "리즈나", null, 0, null, 93, 65, 75, 0, 160, 300, null, null, "내가 다 했다"],
|
||||
[0, "오티누스", null, 0, null, 92, 89, 88, 0, 160, 300, null, null],
|
||||
[0, "네시", null, 0, null, 87, 85, 92, 0, 160, 300, null, null, "안 자고 싸우면 이겨요"],
|
||||
[0, "시뉴카린", null, 0, null, 85, 88, 75, 0, 160, 300, null, null, "흔들흔들"]
|
||||
],
|
||||
"general_ex":[
|
||||
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,665 @@
|
||||
{
|
||||
"title": "【가상모드19b】 진유저무쌍! (대형 지도)",
|
||||
"startYear": 180,
|
||||
"history": [
|
||||
"<C>●</>180년 1월:<L><b>【가상모드19ㅠ】</b>진유저무쌍! (대형 지도)</>",
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>고대장수 다 덤벼라! 유저가 최강이다!"
|
||||
],
|
||||
"stat": {
|
||||
"total": 285,
|
||||
"min": 55,
|
||||
"max": 120
|
||||
},
|
||||
"fiction": 1,
|
||||
"nation":[
|
||||
],
|
||||
"map":{
|
||||
"mapName":"che",
|
||||
"unitSet":"che"
|
||||
},
|
||||
"diplomacy":[],
|
||||
"general":[
|
||||
[0, "아회남", null, 0, null, 65, 74, 26, 0, 160, 300, null, null],
|
||||
[0, "이적", null, 0, null, 40, 24, 84, 0, 160, 300, null, null],
|
||||
[0, "윤상", null, 0, null, 51, 44, 62, 0, 160, 300, null, null],
|
||||
[0, "윤묵", null, 0, null, 26, 15, 66, 0, 160, 300, null, null],
|
||||
[0, "우금", null, 0, null, 85, 82, 75, 0, 160, 300, null, null],
|
||||
[0, "위관", null, 0, null, 69, 46, 79, 0, 160, 300, null, null],
|
||||
[0, "원윤", null, 0, null, 32, 14, 39, 0, 160, 300, null, null],
|
||||
[0, "원희", null, 0, null, 66, 51, 63, 0, 160, 300, null, null],
|
||||
[0, "염행", null, 0, null, 78, 90, 58, 0, 160, 300, null, null],
|
||||
[0, "염유", null, 0, null, 71, 57, 71, 0, 160, 300, null, null],
|
||||
[0, "원술", null, 0, null, 76, 65, 75, 0, 160, 300, null, null, "천한 것들관 상종을 하면 안돼"],
|
||||
[0, "원상", null, 0, null, 63, 75, 42, 0, 160, 300, null, null],
|
||||
[0, "원소", null, 0, null, 90, 69, 81, 0, 160, 300, null, null],
|
||||
[0, "염상", null, 0, null, 40, 27, 71, 0, 160, 300, null, null],
|
||||
[0, "원담", null, 0, null, 60, 78, 30, 0, 160, 300, null, null],
|
||||
[0, "염포", null, 0, null, 40, 25, 82, 0, 160, 300, null, null],
|
||||
[0, "왕위", null, 0, null, 60, 70, 62, 0, 160, 300, null, null],
|
||||
[0, "왕윤", null, 0, null, 26, 6, 68, 0, 160, 300, null, null],
|
||||
[0, "왕항", null, 0, null, 76, 60, 61, 0, 160, 300, null, null],
|
||||
[0, "왕찬", null, 0, null, 15, 3, 79, 0, 160, 300, null, null],
|
||||
[0, "왕수", null, 0, null, 54, 27, 77, 0, 160, 300, null, null],
|
||||
[0, "왕숙", null, 0, null, 36, 22, 76, 0, 160, 300, null, null],
|
||||
[0, "왕준", null, 0, null, 85, 73, 84, 0, 160, 300, null, null],
|
||||
[0, "왕쌍", null, 0, null, 67, 88, 19, 0, 160, 300, null, null],
|
||||
[0, "왕창", null, 0, null, 74, 64, 79, 0, 160, 300, null, null],
|
||||
[0, "왕평", null, 0, null, 88, 81, 70, 0, 160, 300, null, null],
|
||||
[0, "왕보", null, 0, null, 62, 41, 79, 0, 160, 300, null, null],
|
||||
[0, "왕문", null, 0, null, 65, 64, 31, 0, 160, 300, null, null],
|
||||
[0, "왕릉", null, 0, null, 74, 64, 71, 0, 160, 300, null, null],
|
||||
[0, "왕루", null, 0, null, 28, 30, 79, 0, 160, 300, null, null],
|
||||
[0, "왕랑", null, 0, null, 47, 35, 79, 0, 160, 300, null, null],
|
||||
[0, "온회", null, 0, null, 62, 36, 74, 0, 160, 300, null, null],
|
||||
[0, "하안", null, 0, null, 15, 30, 72, 0, 160, 300, null, null],
|
||||
[0, "괴월", null, 0, null, 50, 38, 85, 0, 160, 300, null, null],
|
||||
[0, "괴량", null, 0, null, 68, 33, 88, 0, 160, 300, null, null],
|
||||
[0, "가화", null, 0, null, 49, 65, 41, 0, 160, 300, null, null],
|
||||
[0, "가규", null, 0, null, 78, 61, 84, 0, 160, 300, null, null],
|
||||
[0, "하의", null, 0, null, 56, 69, 36, 0, 160, 300, null, null],
|
||||
[0, "화흠", null, 0, null, 51, 33, 88, 0, 160, 300, null, null],
|
||||
[0, "가후", null, 0, null, 71, 40, 98, 0, 160, 300, null, null, "이기기 위한 전략만 내드리겠습니다"],
|
||||
[0, "곽가", null, 0, null, 70, 41, 97, 0, 160, 300, null, null, "조공을 위한 명이 조금만 더 남았다면..."],
|
||||
[0, "악환", null, 0, null, 65, 80, 42, 0, 160, 300, null, null],
|
||||
[0, "곽사", null, 0, null, 64, 76, 13, 0, 160, 300, null, null],
|
||||
[0, "악취", null, 0, null, 53, 66, 61, 0, 160, 300, null, null],
|
||||
[0, "곽준", null, 0, null, 73, 66, 73, 0, 160, 300, null, null],
|
||||
[0, "학소", null, 0, null, 88, 75, 83, 0, 160, 300, null, null],
|
||||
[0, "악진", null, 0, null, 80, 85, 56, 0, 160, 300, null, null],
|
||||
[0, "곽도", null, 0, null, 62, 50, 82, 0, 160, 300, null, null],
|
||||
[0, "학맹", null, 0, null, 62, 67, 42, 0, 160, 300, null, null],
|
||||
[0, "곽유지", null, 0, null, 28, 9, 69, 0, 160, 300, null, null],
|
||||
[0, "곽익", null, 0, null, 73, 69, 69, 0, 160, 300, null, null],
|
||||
[0, "곽회", null, 0, null, 90, 77, 85, 0, 160, 300, null, null],
|
||||
[0, "하후위", null, 0, null, 71, 73, 49, 0, 160, 300, null, null],
|
||||
[0, "하후연", null, 0, null, 95, 92, 74, 0, 160, 300, null, null, "궁술로 날 당해낼 자가 있을까?"],
|
||||
[0, "하후은", null, 0, null, 63, 72, 53, 0, 160, 300, null, null],
|
||||
[0, "하후화", null, 0, null, 48, 51, 71, 0, 160, 300, null, null],
|
||||
[0, "하후혜", null, 0, null, 50, 44, 76, 0, 160, 300, null, null],
|
||||
[0, "하후현", null, 0, null, 54, 39, 76, 0, 160, 300, null, null],
|
||||
[0, "하후상", null, 0, null, 79, 72, 75, 0, 160, 300, null, null],
|
||||
[0, "하후덕", null, 0, null, 69, 73, 32, 0, 160, 300, null, null],
|
||||
[0, "하후돈", null, 0, null, 91, 88, 68, 0, 160, 300, null, null],
|
||||
[0, "하후패", null, 0, null, 79, 85, 77, 0, 160, 300, null, null],
|
||||
[0, "하후무", null, 0, null, 20, 7, 4, 0, 160, 300, null, null],
|
||||
[0, "가충", null, 0, null, 54, 31, 89, 0, 160, 300, null, null],
|
||||
[0, "하진", null, 0, null, 68, 54, 75, 0, 160, 300, null, null],
|
||||
[0, "화웅", null, 0, null, 78, 90, 55, 0, 160, 300, null, null],
|
||||
[0, "한윤", null, 0, null, 26, 29, 65, 0, 160, 300, null, null],
|
||||
[0, "관우", null, 0, null, 96, 99, 76, 0, 160, 300, null, null, "차가 식기 전에 적장의 목을 베어 오겠소!"],
|
||||
[0, "환계", null, 0, null, 25, 26, 68, 0, 160, 300, null, null],
|
||||
[0, "관해", null, 0, null, 70, 82, 10, 0, 160, 300, null, null],
|
||||
[0, "관구검", null, 0, null, 84, 86, 62, 0, 160, 300, null, null],
|
||||
[0, "한현", null, 0, null, 22, 33, 7, 0, 160, 300, null, null],
|
||||
[0, "한호", null, 0, null, 73, 72, 84, 0, 160, 300, null, null],
|
||||
[0, "관흥", null, 0, null, 76, 84, 67, 0, 160, 300, null, null],
|
||||
[0, "관색", null, 0, null, 74, 83, 56, 0, 160, 300, null, null],
|
||||
[0, "한수", null, 0, null, 78, 75, 79, 0, 160, 300, null, null],
|
||||
[0, "한숭", null, 0, null, 25, 15, 71, 0, 160, 300, null, null],
|
||||
[0, "관정", null, 0, null, 36, 52, 73, 0, 160, 300, null, null],
|
||||
[0, "한섬", null, 0, null, 69, 66, 36, 0, 160, 300, null, null],
|
||||
[0, "감택", null, 0, null, 51, 49, 83, 0, 160, 300, null, null],
|
||||
[0, "한충", null, 0, null, 64, 67, 18, 0, 160, 300, null, null],
|
||||
[0, "한당", null, 0, null, 76, 85, 61, 0, 160, 300, null, null],
|
||||
[0, "한덕", null, 0, null, 63, 76, 25, 0, 160, 300, null, null],
|
||||
[0, "감녕", null, 0, null, 92, 95, 76, 0, 160, 300, null, null],
|
||||
[0, "한복", null, 0, null, 28, 3, 27, 0, 160, 300, null, null],
|
||||
[0, "관평", null, 0, null, 78, 82, 72, 0, 160, 300, null, null],
|
||||
[0, "간옹", null, 0, null, 20, 32, 75, 0, 160, 300, null, null],
|
||||
[0, "안량", null, 0, null, 88, 96, 43, 0, 160, 300, null, null],
|
||||
[0, "위연", null, 0, null, 91, 90, 75, 0, 160, 300, null, null],
|
||||
[0, "국의", null, 0, null, 84, 78, 51, 0, 160, 300, null, null],
|
||||
[0, "희지재", null, 0, null, 63, 35, 91, 0, 160, 300, null, null],
|
||||
[0, "위속", null, 0, null, 67, 78, 31, 0, 160, 300, null, null],
|
||||
[0, "위유", null, 0, null, 46, 29, 74, 0, 160, 300, null, null],
|
||||
[0, "우금2", null, 0, null, 72, 79, 38, 0, 160, 300, null, null],
|
||||
[0, "우보", null, 0, null, 38, 60, 21, 0, 160, 300, null, null],
|
||||
[0, "강유", null, 0, null, 92, 88, 93, 0, 160, 300, null, null],
|
||||
[0, "공지", null, 0, null, 43, 53, 62, 0, 160, 300, null, null],
|
||||
[0, "교유", null, 0, null, 64, 69, 38, 0, 160, 300, null, null],
|
||||
[0, "공도", null, 0, null, 59, 70, 23, 0, 160, 300, null, null],
|
||||
[0, "허공", null, 0, null, 44, 66, 64, 0, 160, 300, null, null],
|
||||
[0, "허정", null, 0, null, 23, 5, 68, 0, 160, 300, null, null],
|
||||
[0, "허저", null, 0, null, 74, 97, 36, 0, 160, 300, null, null],
|
||||
[0, "허유", null, 0, null, 36, 21, 80, 0, 160, 300, null, null],
|
||||
[0, "기령", null, 0, null, 85, 84, 51, 0, 160, 300, null, null],
|
||||
[0, "김의", null, 0, null, 32, 38, 65, 0, 160, 300, null, null],
|
||||
[0, "김배삼결", null, 0, null, 64, 76, 19, 0, 160, 300, null, null],
|
||||
[0, "김선", null, 0, null, 52, 68, 13, 0, 160, 300, null, null],
|
||||
[0, "우번", null, 0, null, 46, 46, 87, 0, 160, 300, null, null],
|
||||
[0, "형도영", null, 0, null, 69, 79, 41, 0, 160, 300, null, null],
|
||||
[0, "엄안", null, 0, null, 82, 83, 72, 0, 160, 300, null, null],
|
||||
[0, "엄망", null, 0, null, 68, 71, 40, 0, 160, 300, null, null],
|
||||
[0, "엄준", null, 0, null, 41, 12, 71, 0, 160, 300, null, null],
|
||||
[0, "엄정", null, 0, null, 50, 55, 39, 0, 160, 300, null, null],
|
||||
[0, "엄백호", null, 0, null, 67, 70, 42, 0, 160, 300, null, null],
|
||||
[0, "엄여", null, 0, null, 61, 78, 44, 0, 160, 300, null, null],
|
||||
[0, "오의", null, 0, null, 79, 73, 70, 0, 160, 300, null, null],
|
||||
[0, "황개", null, 0, null, 80, 86, 70, 0, 160, 300, null, null],
|
||||
[0, "고간", null, 0, null, 74, 56, 48, 0, 160, 300, null, null],
|
||||
[0, "황권", null, 0, null, 75, 59, 88, 0, 160, 300, null, null],
|
||||
[0, "고유", null, 0, null, 57, 43, 72, 0, 160, 300, null, null],
|
||||
[0, "고순", null, 0, null, 87, 89, 60, 0, 160, 300, null, null],
|
||||
[0, "고상", null, 0, null, 68, 68, 53, 0, 160, 300, null, null],
|
||||
[0, "고승", null, 0, null, 67, 73, 41, 0, 160, 300, null, null],
|
||||
[0, "후성", null, 0, null, 74, 75, 68, 0, 160, 300, null, null],
|
||||
[0, "후선", null, 0, null, 63, 66, 34, 0, 160, 300, null, null],
|
||||
[0, "황조", null, 0, null, 81, 66, 62, 0, 160, 300, null, null],
|
||||
[0, "공손월", null, 0, null, 74, 72, 47, 0, 160, 300, null, null],
|
||||
[0, "공손연", null, 0, null, 65, 70, 60, 0, 160, 300, null, null],
|
||||
[0, "공손공", null, 0, null, 39, 17, 69, 0, 160, 300, null, null],
|
||||
[0, "공손강", null, 0, null, 72, 66, 65, 0, 160, 300, null, null],
|
||||
[0, "공손찬", null, 0, null, 86, 82, 75, 0, 160, 300, null, null],
|
||||
[0, "공손속", null, 0, null, 63, 68, 57, 0, 160, 300, null, null],
|
||||
[0, "공손도", null, 0, null, 67, 71, 66, 0, 160, 300, null, null],
|
||||
[0, "공손범", null, 0, null, 73, 69, 66, 0, 160, 300, null, null],
|
||||
[0, "황충", null, 0, null, 88, 96, 65, 0, 160, 300, null, null],
|
||||
[0, "고정", null, 0, null, 55, 63, 43, 0, 160, 300, null, null],
|
||||
[0, "고패", null, 0, null, 66, 61, 69, 0, 160, 300, null, null],
|
||||
[0, "황보숭", null, 0, null, 91, 61, 82, 0, 160, 300, null, null],
|
||||
[0, "공융", null, 0, null, 30, 5, 73, 0, 160, 300, null, null],
|
||||
[0, "고람", null, 0, null, 76, 82, 68, 0, 160, 300, null, null],
|
||||
[0, "오경", null, 0, null, 69, 66, 52, 0, 160, 300, null, null],
|
||||
[0, "호거아", null, 0, null, 70, 82, 41, 0, 160, 300, null, null],
|
||||
[0, "호진", null, 0, null, 65, 74, 12, 0, 160, 300, null, null],
|
||||
[0, "올돌골", null, 0, null, 79, 86, 11, 0, 160, 300, null, null],
|
||||
[0, "호반", null, 0, null, 55, 55, 59, 0, 160, 300, null, null],
|
||||
[0, "오반", null, 0, null, 74, 71, 59, 0, 160, 300, null, null],
|
||||
[0, "고옹", null, 0, null, 52, 18, 81, 0, 160, 300, null, null],
|
||||
[0, "오란", null, 0, null, 68, 80, 35, 0, 160, 300, null, null],
|
||||
[0, "채화", null, 0, null, 39, 50, 1, 0, 160, 300, null, null],
|
||||
[0, "채중", null, 0, null, 40, 54, 2, 0, 160, 300, null, null],
|
||||
[0, "채모", null, 0, null, 70, 70, 77, 0, 160, 300, null, null],
|
||||
[0, "착융", null, 0, null, 60, 69, 38, 0, 160, 300, null, null],
|
||||
[0, "사마의", null, 0, null, 99, 63, 98, 0, 160, 300, null, null],
|
||||
[0, "사마염", null, 0, null, 69, 59, 77, 0, 160, 300, null, null],
|
||||
[0, "사마사", null, 0, null, 84, 64, 89, 0, 160, 300, null, null],
|
||||
[0, "사마소", null, 0, null, 85, 57, 88, 0, 160, 300, null, null],
|
||||
[0, "사마부", null, 0, null, 70, 37, 77, 0, 160, 300, null, null],
|
||||
[0, "사마랑", null, 0, null, 20, 21, 72, 0, 160, 300, null, null],
|
||||
[0, "사마가", null, 0, null, 66, 84, 25, 0, 160, 300, null, null],
|
||||
[0, "주흔", null, 0, null, 65, 62, 73, 0, 160, 300, null, null],
|
||||
[0, "주앙", null, 0, null, 74, 65, 65, 0, 160, 300, null, null],
|
||||
[0, "주지", null, 0, null, 73, 85, 41, 0, 160, 300, null, null],
|
||||
[0, "주창", null, 0, null, 68, 77, 42, 0, 160, 300, null, null],
|
||||
[0, "주태", null, 0, null, 84, 90, 48, 0, 160, 300, null, null],
|
||||
[0, "주방", null, 0, null, 52, 41, 80, 0, 160, 300, null, null],
|
||||
[0, "주유", null, 0, null, 97, 71, 97, 0, 160, 300, null, null],
|
||||
[0, "주환", null, 0, null, 87, 84, 77, 0, 160, 300, null, null],
|
||||
[0, "주거", null, 0, null, 77, 57, 72, 0, 160, 300, null, null],
|
||||
[0, "축융", null, 0, null, 72, 75, 35, 0, 160, 300, null, null],
|
||||
[0, "주준", null, 0, null, 89, 65, 76, 0, 160, 300, null, null],
|
||||
[0, "주연", null, 0, null, 86, 75, 74, 0, 160, 300, null, null],
|
||||
[0, "주치", null, 0, null, 71, 56, 72, 0, 160, 300, null, null],
|
||||
[0, "주포", null, 0, null, 68, 73, 34, 0, 160, 300, null, null],
|
||||
[0, "주령", null, 0, null, 78, 73, 67, 0, 160, 300, null, null],
|
||||
[0, "순욱", null, 0, null, 78, 38, 97, 0, 160, 300, null, null],
|
||||
[0, "순우경", null, 0, null, 78, 66, 29, 0, 160, 300, null, null],
|
||||
[0, "순심", null, 0, null, 45, 25, 78, 0, 160, 300, null, null],
|
||||
[0, "순유", null, 0, null, 80, 35, 95, 0, 160, 300, null, null],
|
||||
[0, "장완", null, 0, null, 78, 34, 89, 0, 160, 300, null, null],
|
||||
[0, "종회", null, 0, null, 88, 62, 93, 0, 160, 300, null, null],
|
||||
[0, "장간", null, 0, null, 19, 6, 66, 0, 160, 300, null, null],
|
||||
[0, "장의거", null, 0, null, 71, 58, 59, 0, 160, 300, null, null],
|
||||
[0, "장흠", null, 0, null, 78, 85, 54, 0, 160, 300, null, null],
|
||||
[0, "장제3", null, 0, null, 62, 43, 85, 0, 160, 300, null, null],
|
||||
[0, "초주", null, 0, null, 16, 3, 67, 0, 160, 300, null, null],
|
||||
[0, "초촉", null, 0, null, 65, 76, 33, 0, 160, 300, null, null],
|
||||
[0, "향총", null, 0, null, 76, 61, 77, 0, 160, 300, null, null],
|
||||
[0, "종요", null, 0, null, 79, 24, 90, 0, 160, 300, null, null],
|
||||
[0, "향랑", null, 0, null, 28, 18, 74, 0, 160, 300, null, null],
|
||||
[0, "서영", null, 0, null, 92, 80, 62, 0, 160, 300, null, null],
|
||||
[0, "제갈각", null, 0, null, 72, 47, 90, 0, 160, 300, null, null],
|
||||
[0, "제갈근", null, 0, null, 75, 34, 85, 0, 160, 300, null, null],
|
||||
[0, "제갈균", null, 0, null, 29, 25, 52, 0, 160, 300, null, null],
|
||||
[0, "제갈탄", null, 0, null, 72, 72, 76, 0, 160, 300, null, null],
|
||||
[0, "제갈량", null, 0, null, 98, 43, 100, 0, 160, 300, null, null],
|
||||
[0, "서황", null, 0, null, 95, 94, 78, 0, 160, 300, null, null],
|
||||
[0, "서서", null, 0, null, 85, 64, 94, 0, 160, 300, null, null],
|
||||
[0, "서성", null, 0, null, 86, 81, 78, 0, 160, 300, null, null],
|
||||
[0, "서막", null, 0, null, 55, 32, 68, 0, 160, 300, null, null],
|
||||
[0, "신의", null, 0, null, 55, 59, 60, 0, 160, 300, null, null],
|
||||
[0, "신탐", null, 0, null, 56, 62, 54, 0, 160, 300, null, null],
|
||||
[0, "심배", null, 0, null, 80, 60, 84, 0, 160, 300, null, null],
|
||||
[0, "신비", null, 0, null, 42, 24, 79, 0, 160, 300, null, null],
|
||||
[0, "신평", null, 0, null, 69, 43, 77, 0, 160, 300, null, null],
|
||||
[0, "진복", null, 0, null, 31, 7, 73, 0, 160, 300, null, null],
|
||||
[0, "진랑", null, 0, null, 58, 70, 35, 0, 160, 300, null, null],
|
||||
[0, "휴고", null, 0, null, 63, 71, 38, 0, 160, 300, null, null],
|
||||
[0, "추단", null, 0, null, 61, 64, 34, 0, 160, 300, null, null],
|
||||
[0, "성의", null, 0, null, 74, 72, 41, 0, 160, 300, null, null],
|
||||
[0, "성공영", null, 0, null, 73, 71, 80, 0, 160, 300, null, null],
|
||||
[0, "설종", null, 0, null, 34, 16, 73, 0, 160, 300, null, null],
|
||||
[0, "단경", null, 0, null, 71, 68, 43, 0, 160, 300, null, null],
|
||||
[0, "전종", null, 0, null, 78, 72, 75, 0, 160, 300, null, null],
|
||||
[0, "조예", null, 0, null, 72, 52, 82, 0, 160, 300, null, null],
|
||||
[0, "조휴", null, 0, null, 84, 78, 62, 0, 160, 300, null, null],
|
||||
[0, "송헌", null, 0, null, 68, 77, 38, 0, 160, 300, null, null],
|
||||
[0, "조앙", null, 0, null, 78, 67, 69, 0, 160, 300, null, null],
|
||||
[0, "조홍", null, 0, null, 80, 75, 55, 0, 160, 300, null, null],
|
||||
[0, "조순", null, 0, null, 85, 83, 63, 0, 160, 300, null, null],
|
||||
[0, "조창", null, 0, null, 86, 91, 59, 0, 160, 300, null, null],
|
||||
[0, "조식", null, 0, null, 45, 22, 86, 0, 160, 300, null, null],
|
||||
[0, "조진", null, 0, null, 88, 74, 70, 0, 160, 300, null, null],
|
||||
[0, "조인", null, 0, null, 94, 90, 72, 0, 160, 300, null, null],
|
||||
[0, "조성", null, 0, null, 54, 74, 38, 0, 160, 300, null, null],
|
||||
[0, "조조", null, 0, null, 100, 72, 96, 0, 160, 300, null, null, "미망인이 더 매력적이란 말이야... 후후"],
|
||||
[0, "조충", null, 0, null, 43, 21, 74, 0, 160, 300, null, null],
|
||||
[0, "장패", null, 0, null, 78, 86, 53, 0, 160, 300, null, null],
|
||||
[0, "조비", null, 0, null, 75, 71, 87, 0, 160, 300, null, null, "새로운 왕조를 열겠다..."],
|
||||
[0, "조표", null, 0, null, 54, 69, 32, 0, 160, 300, null, null],
|
||||
[0, "저수", null, 0, null, 86, 46, 95, 0, 160, 300, null, null],
|
||||
[0, "소비", null, 0, null, 69, 63, 66, 0, 160, 300, null, null],
|
||||
[0, "조무", null, 0, null, 70, 71, 66, 0, 160, 300, null, null],
|
||||
[0, "손환", null, 0, null, 82, 73, 76, 0, 160, 300, null, null],
|
||||
[0, "손견", null, 0, null, 94, 95, 73, 0, 160, 300, null, null],
|
||||
[0, "손건", null, 0, null, 44, 33, 79, 0, 160, 300, null, null],
|
||||
[0, "손권", null, 0, null, 86, 73, 81, 0, 160, 300, null, null],
|
||||
[0, "손교", null, 0, null, 77, 72, 67, 0, 160, 300, null, null],
|
||||
[0, "손책", null, 0, null, 93, 94, 74, 0, 160, 300, null, null],
|
||||
[0, "손소", null, 0, null, 82, 79, 76, 0, 160, 300, null, null],
|
||||
[0, "손정", null, 0, null, 66, 53, 73, 0, 160, 300, null, null],
|
||||
[0, "손중", null, 0, null, 62, 71, 36, 0, 160, 300, null, null],
|
||||
[0, "손등", null, 0, null, 62, 37, 79, 0, 160, 300, null, null],
|
||||
[0, "손유", null, 0, null, 77, 70, 68, 0, 160, 300, null, null],
|
||||
[0, "손익", null, 0, null, 67, 83, 27, 0, 160, 300, null, null],
|
||||
[0, "손례", null, 0, null, 78, 81, 67, 0, 160, 300, null, null],
|
||||
[0, "태사자", null, 0, null, 94, 94, 72, 0, 160, 300, null, null],
|
||||
[0, "대래동주", null, 0, null, 51, 53, 54, 0, 160, 300, null, null],
|
||||
[0, "대릉", null, 0, null, 70, 75, 39, 0, 160, 300, null, null],
|
||||
[0, "타사대왕", null, 0, null, 62, 59, 70, 0, 160, 300, null, null],
|
||||
[0, "담웅", null, 0, null, 58, 73, 14, 0, 160, 300, null, null],
|
||||
[0, "장윤", null, 0, null, 72, 67, 42, 0, 160, 300, null, null],
|
||||
[0, "조운", null, 0, null, 90, 96, 75, 0, 160, 300, null, null],
|
||||
[0, "장위", null, 0, null, 74, 66, 45, 0, 160, 300, null, null],
|
||||
[0, "장영", null, 0, null, 75, 74, 41, 0, 160, 300, null, null],
|
||||
[0, "장연", null, 0, null, 76, 81, 57, 0, 160, 300, null, null],
|
||||
[0, "장횡", null, 0, null, 59, 70, 23, 0, 160, 300, null, null],
|
||||
[0, "장온", null, 0, null, 32, 10, 72, 0, 160, 300, null, null],
|
||||
[0, "장개", null, 0, null, 34, 66, 8, 0, 160, 300, null, null],
|
||||
[0, "장각", null, 0, null, 87, 35, 90, 0, 160, 300, null, null],
|
||||
[0, "장기", null, 0, null, 74, 35, 76, 0, 160, 300, null, null],
|
||||
[0, "장의", null, 0, null, 79, 72, 75, 0, 160, 300, null, null],
|
||||
[0, "장훈", null, 0, null, 72, 68, 41, 0, 160, 300, null, null],
|
||||
[0, "장굉", null, 0, null, 24, 22, 86, 0, 160, 300, null, null],
|
||||
[0, "장합", null, 0, null, 92, 89, 76, 0, 160, 300, null, null],
|
||||
[0, "조홍2", null, 0, null, 66, 72, 28, 0, 160, 300, null, null],
|
||||
[0, "장제2", null, 0, null, 70, 66, 55, 0, 160, 300, null, null],
|
||||
[0, "장수", null, 0, null, 80, 73, 64, 0, 160, 300, null, null],
|
||||
[0, "장소", null, 0, null, 41, 13, 87, 0, 160, 300, null, null],
|
||||
[0, "장송", null, 0, null, 40, 6, 85, 0, 160, 300, null, null],
|
||||
[0, "장임", null, 0, null, 85, 84, 78, 0, 160, 300, null, null],
|
||||
[0, "장제", null, 0, null, 67, 43, 80, 0, 160, 300, null, null],
|
||||
[0, "장막", null, 0, null, 52, 53, 71, 0, 160, 300, null, null],
|
||||
[0, "조범", null, 0, null, 28, 21, 32, 0, 160, 300, null, null],
|
||||
[0, "장비", null, 0, null, 87, 98, 72, 0, 160, 300, null, null],
|
||||
[0, "장포", null, 0, null, 78, 84, 48, 0, 160, 300, null, null],
|
||||
[0, "장보", null, 0, null, 83, 71, 81, 0, 160, 300, null, null],
|
||||
[0, "장만성", null, 0, null, 75, 81, 45, 0, 160, 300, null, null],
|
||||
[0, "장양", null, 0, null, 72, 70, 66, 0, 160, 300, null, null],
|
||||
[0, "장익", null, 0, null, 75, 74, 76, 0, 160, 300, null, null],
|
||||
[0, "장료", null, 0, null, 96, 94, 78, 0, 160, 300, null, null],
|
||||
[0, "장량", null, 0, null, 78, 80, 74, 0, 160, 300, null, null],
|
||||
[0, "조루", null, 0, null, 70, 43, 68, 0, 160, 300, null, null],
|
||||
[0, "장로", null, 0, null, 65, 42, 81, 0, 160, 300, null, null],
|
||||
[0, "진횡", null, 0, null, 64, 63, 26, 0, 160, 300, null, null],
|
||||
[0, "진응", null, 0, null, 62, 72, 45, 0, 160, 300, null, null],
|
||||
[0, "진기", null, 0, null, 58, 65, 43, 0, 160, 300, null, null],
|
||||
[0, "진궁", null, 0, null, 84, 55, 90, 0, 160, 300, null, null],
|
||||
[0, "진교", null, 0, null, 61, 27, 77, 0, 160, 300, null, null],
|
||||
[0, "진군", null, 0, null, 32, 14, 75, 0, 160, 300, null, null],
|
||||
[0, "진규", null, 0, null, 30, 4, 82, 0, 160, 300, null, null],
|
||||
[0, "진식", null, 0, null, 70, 71, 25, 0, 160, 300, null, null],
|
||||
[0, "진진", null, 0, null, 46, 46, 69, 0, 160, 300, null, null],
|
||||
[0, "진태", null, 0, null, 86, 77, 89, 0, 160, 300, null, null],
|
||||
[0, "진등", null, 0, null, 79, 64, 81, 0, 160, 300, null, null],
|
||||
[0, "진도", null, 0, null, 82, 78, 67, 0, 160, 300, null, null],
|
||||
[0, "진무", null, 0, null, 76, 87, 43, 0, 160, 300, null, null],
|
||||
[0, "진란", null, 0, null, 66, 69, 40, 0, 160, 300, null, null],
|
||||
[0, "진림", null, 0, null, 25, 9, 75, 0, 160, 300, null, null],
|
||||
[0, "정욱", null, 0, null, 76, 49, 94, 0, 160, 300, null, null],
|
||||
[0, "정원지", null, 0, null, 69, 74, 17, 0, 160, 300, null, null],
|
||||
[0, "정은", null, 0, null, 69, 73, 40, 0, 160, 300, null, null],
|
||||
[0, "정원", null, 0, null, 70, 76, 35, 0, 160, 300, null, null],
|
||||
[0, "정보", null, 0, null, 84, 79, 79, 0, 160, 300, null, null],
|
||||
[0, "정봉", null, 0, null, 81, 92, 75, 0, 160, 300, null, null],
|
||||
[0, "전위", null, 0, null, 79, 98, 42, 0, 160, 300, null, null],
|
||||
[0, "전해", null, 0, null, 68, 65, 58, 0, 160, 300, null, null],
|
||||
[0, "전주", null, 0, null, 66, 66, 73, 0, 160, 300, null, null],
|
||||
[0, "전풍", null, 0, null, 82, 43, 96, 0, 160, 300, null, null],
|
||||
[0, "전예", null, 0, null, 93, 85, 80, 0, 160, 300, null, null],
|
||||
[0, "동윤", null, 0, null, 47, 28, 79, 0, 160, 300, null, null],
|
||||
[0, "동화", null, 0, null, 57, 34, 75, 0, 160, 300, null, null],
|
||||
[0, "등애", null, 0, null, 92, 80, 94, 0, 160, 300, null, null],
|
||||
[0, "도겸", null, 0, null, 51, 27, 64, 0, 160, 300, null, null],
|
||||
[0, "등현", null, 0, null, 61, 73, 45, 0, 160, 300, null, null],
|
||||
[0, "등지", null, 0, null, 73, 52, 81, 0, 160, 300, null, null],
|
||||
[0, "동습", null, 0, null, 72, 85, 50, 0, 160, 300, null, null],
|
||||
[0, "동승", null, 0, null, 56, 53, 65, 0, 160, 300, null, null],
|
||||
[0, "동소", null, 0, null, 34, 25, 80, 0, 160, 300, null, null],
|
||||
[0, "동탁", null, 0, null, 91, 87, 72, 0, 160, 300, null, null],
|
||||
[0, "동도나", null, 0, null, 68, 73, 31, 0, 160, 300, null, null],
|
||||
[0, "동민", null, 0, null, 49, 60, 25, 0, 160, 300, null, null],
|
||||
[0, "등무", null, 0, null, 61, 75, 29, 0, 160, 300, null, null],
|
||||
[0, "두기", null, 0, null, 74, 43, 78, 0, 160, 300, null, null],
|
||||
[0, "두예", null, 0, null, 96, 69, 95, 0, 160, 300, null, null],
|
||||
[0, "배원소", null, 0, null, 49, 65, 25, 0, 160, 300, null, null],
|
||||
[0, "마완", null, 0, null, 71, 74, 16, 0, 160, 300, null, null],
|
||||
[0, "마휴", null, 0, null, 68, 73, 48, 0, 160, 300, null, null],
|
||||
[0, "파재", null, 0, null, 74, 74, 55, 0, 160, 300, null, null],
|
||||
[0, "마준", null, 0, null, 38, 52, 31, 0, 160, 300, null, null],
|
||||
[0, "마속", null, 0, null, 61, 67, 84, 0, 160, 300, null, null],
|
||||
[0, "마대", null, 0, null, 79, 85, 62, 0, 160, 300, null, null],
|
||||
[0, "마충", null, 0, null, 78, 72, 68, 0, 160, 300, null, null],
|
||||
[0, "마초", null, 0, null, 86, 97, 44, 0, 160, 300, null, null, "서량의 금마초 나가신다!"],
|
||||
[0, "마철", null, 0, null, 70, 62, 58, 0, 160, 300, null, null],
|
||||
[0, "마등", null, 0, null, 85, 80, 52, 0, 160, 300, null, null],
|
||||
[0, "마량", null, 0, null, 53, 23, 85, 0, 160, 300, null, null],
|
||||
[0, "반준", null, 0, null, 61, 46, 82, 0, 160, 300, null, null],
|
||||
[0, "반장", null, 0, null, 76, 80, 69, 0, 160, 300, null, null],
|
||||
[0, "번조", null, 0, null, 66, 73, 31, 0, 160, 300, null, null],
|
||||
[0, "번능", null, 0, null, 69, 61, 36, 0, 160, 300, null, null],
|
||||
[0, "반봉", null, 0, null, 56, 77, 4, 0, 160, 300, null, null],
|
||||
[0, "비의", null, 0, null, 82, 56, 88, 0, 160, 300, null, null],
|
||||
[0, "비연", null, 0, null, 60, 66, 21, 0, 160, 300, null, null],
|
||||
[0, "비시", null, 0, null, 18, 28, 65, 0, 160, 300, null, null],
|
||||
[0, "미축", null, 0, null, 33, 29, 78, 0, 160, 300, null, null],
|
||||
[0, "미방", null, 0, null, 54, 61, 32, 0, 160, 300, null, null],
|
||||
[0, "비요", null, 0, null, 70, 66, 73, 0, 160, 300, null, null],
|
||||
[0, "무안국", null, 0, null, 70, 79, 34, 0, 160, 300, null, null],
|
||||
[0, "풍습", null, 0, null, 72, 71, 39, 0, 160, 300, null, null],
|
||||
[0, "부사인", null, 0, null, 46, 63, 37, 0, 160, 300, null, null],
|
||||
[0, "부첨", null, 0, null, 73, 85, 76, 0, 160, 300, null, null],
|
||||
[0, "부손", null, 0, null, 29, 13, 70, 0, 160, 300, null, null],
|
||||
[0, "문앙", null, 0, null, 76, 96, 65, 0, 160, 300, null, null],
|
||||
[0, "문흠", null, 0, null, 74, 79, 43, 0, 160, 300, null, null],
|
||||
[0, "문추", null, 0, null, 87, 95, 49, 0, 160, 300, null, null],
|
||||
[0, "문빙", null, 0, null, 88, 85, 69, 0, 160, 300, null, null],
|
||||
[0, "변희", null, 0, null, 56, 70, 62, 0, 160, 300, null, null],
|
||||
[0, "망아장", null, 0, null, 45, 79, 3, 0, 160, 300, null, null],
|
||||
[0, "봉기", null, 0, null, 56, 48, 84, 0, 160, 300, null, null],
|
||||
[0, "방희", null, 0, null, 60, 38, 69, 0, 160, 300, null, null],
|
||||
[0, "법정", null, 0, null, 82, 47, 94, 0, 160, 300, null, null],
|
||||
[0, "방통", null, 0, null, 79, 34, 97, 0, 160, 300, null, null],
|
||||
[0, "방덕", null, 0, null, 89, 94, 70, 0, 160, 300, null, null],
|
||||
[0, "포륭", null, 0, null, 58, 76, 49, 0, 160, 300, null, null],
|
||||
[0, "목순", null, 0, null, 52, 77, 11, 0, 160, 300, null, null],
|
||||
[0, "목록대왕", null, 0, null, 65, 71, 39, 0, 160, 300, null, null],
|
||||
[0, "보즐", null, 0, null, 83, 51, 81, 0, 160, 300, null, null],
|
||||
[0, "만총", null, 0, null, 88, 64, 87, 0, 160, 300, null, null],
|
||||
[0, "모개", null, 0, null, 63, 39, 60, 0, 160, 300, null, null],
|
||||
[0, "맹획", null, 0, null, 81, 88, 42, 0, 160, 300, null, null],
|
||||
[0, "맹체", null, 0, null, 75, 73, 75, 0, 160, 300, null, null],
|
||||
[0, "맹우", null, 0, null, 50, 68, 22, 0, 160, 300, null, null],
|
||||
[0, "유섭", null, 0, null, 62, 79, 24, 0, 160, 300, null, null],
|
||||
[0, "양부", null, 0, null, 62, 68, 68, 0, 160, 300, null, null],
|
||||
[0, "옹개", null, 0, null, 73, 75, 57, 0, 160, 300, null, null],
|
||||
[0, "양의", null, 0, null, 68, 40, 82, 0, 160, 300, null, null],
|
||||
[0, "양호", null, 0, null, 94, 69, 92, 0, 160, 300, null, null],
|
||||
[0, "양홍", null, 0, null, 33, 15, 77, 0, 160, 300, null, null],
|
||||
[0, "양앙", null, 0, null, 68, 72, 38, 0, 160, 300, null, null],
|
||||
[0, "양추", null, 0, null, 52, 65, 40, 0, 160, 300, null, null],
|
||||
[0, "양수", null, 0, null, 46, 23, 83, 0, 160, 300, null, null],
|
||||
[0, "양추2", null, 0, null, 67, 64, 60, 0, 160, 300, null, null],
|
||||
[0, "양송", null, 0, null, 17, 5, 28, 0, 160, 300, null, null],
|
||||
[0, "양임", null, 0, null, 70, 78, 56, 0, 160, 300, null, null],
|
||||
[0, "양조", null, 0, null, 53, 61, 36, 0, 160, 300, null, null],
|
||||
[0, "양백", null, 0, null, 44, 45, 19, 0, 160, 300, null, null],
|
||||
[0, "양부2", null, 0, null, 67, 50, 83, 0, 160, 300, null, null],
|
||||
[0, "양봉", null, 0, null, 66, 65, 31, 0, 160, 300, null, null],
|
||||
[0, "양봉2", null, 0, null, 54, 62, 53, 0, 160, 300, null, null],
|
||||
[0, "뇌동", null, 0, null, 69, 78, 51, 0, 160, 300, null, null],
|
||||
[0, "뇌박", null, 0, null, 62, 70, 36, 0, 160, 300, null, null],
|
||||
[0, "이이", null, 0, null, 63, 77, 19, 0, 160, 300, null, null],
|
||||
[0, "이회", null, 0, null, 79, 65, 79, 0, 160, 300, null, null],
|
||||
[0, "이각", null, 0, null, 69, 72, 24, 0, 160, 300, null, null],
|
||||
[0, "육항", null, 0, null, 94, 68, 93, 0, 160, 300, null, null],
|
||||
[0, "육적", null, 0, null, 20, 7, 72, 0, 160, 300, null, null],
|
||||
[0, "육손", null, 0, null, 95, 71, 96, 0, 160, 300, null, null],
|
||||
[0, "이엄", null, 0, null, 83, 84, 76, 0, 160, 300, null, null],
|
||||
[0, "이유", null, 0, null, 61, 26, 93, 0, 160, 300, null, null],
|
||||
[0, "이숙", null, 0, null, 46, 69, 61, 0, 160, 300, null, null],
|
||||
[0, "이통", null, 0, null, 73, 81, 62, 0, 160, 300, null, null],
|
||||
[0, "이전", null, 0, null, 78, 80, 79, 0, 160, 300, null, null],
|
||||
[0, "이풍", null, 0, null, 69, 74, 50, 0, 160, 300, null, null],
|
||||
[0, "유언", null, 0, null, 61, 38, 80, 0, 160, 300, null, null],
|
||||
[0, "유괴", null, 0, null, 71, 73, 67, 0, 160, 300, null, null],
|
||||
[0, "유기", null, 0, null, 52, 12, 63, 0, 160, 300, null, null],
|
||||
[0, "유우", null, 0, null, 62, 33, 75, 0, 160, 300, null, null],
|
||||
[0, "유훈", null, 0, null, 47, 63, 35, 0, 160, 300, null, null],
|
||||
[0, "유현", null, 0, null, 54, 66, 51, 0, 160, 300, null, null],
|
||||
[0, "유순", null, 0, null, 63, 46, 41, 0, 160, 300, null, null],
|
||||
[0, "유장", null, 0, null, 31, 5, 34, 0, 160, 300, null, null],
|
||||
[0, "유심", null, 0, null, 60, 62, 70, 0, 160, 300, null, null],
|
||||
[0, "유선", null, 0, null, 3, 5, 9, 0, 160, 300, null, null],
|
||||
[0, "유종", null, 0, null, 24, 22, 65, 0, 160, 300, null, null],
|
||||
[0, "유도", null, 0, null, 25, 23, 26, 0, 160, 300, null, null],
|
||||
[0, "유파", null, 0, null, 29, 22, 75, 0, 160, 300, null, null],
|
||||
[0, "유반", null, 0, null, 69, 76, 47, 0, 160, 300, null, null],
|
||||
[0, "유비", null, 0, null, 88, 78, 75, 0, 160, 300, null, null, "한왕실은 중산정왕의 후손인 내가 이어받겠다...!"],
|
||||
[0, "유표", null, 0, null, 48, 31, 72, 0, 160, 300, null, null],
|
||||
[0, "유복", null, 0, null, 64, 49, 74, 0, 160, 300, null, null],
|
||||
[0, "유벽", null, 0, null, 70, 72, 47, 0, 160, 300, null, null],
|
||||
[0, "유봉", null, 0, null, 75, 79, 44, 0, 160, 300, null, null],
|
||||
[0, "유엽", null, 0, null, 56, 32, 92, 0, 160, 300, null, null],
|
||||
[0, "유요", null, 0, null, 62, 67, 46, 0, 160, 300, null, null],
|
||||
[0, "여위황", null, 0, null, 58, 63, 29, 0, 160, 300, null, null],
|
||||
[0, "요화", null, 0, null, 73, 76, 69, 0, 160, 300, null, null],
|
||||
[0, "양흥", null, 0, null, 61, 65, 19, 0, 160, 300, null, null],
|
||||
[0, "양습", null, 0, null, 73, 40, 74, 0, 160, 300, null, null],
|
||||
[0, "양서", null, 0, null, 56, 62, 66, 0, 160, 300, null, null],
|
||||
[0, "능조", null, 0, null, 75, 81, 42, 0, 160, 300, null, null],
|
||||
[0, "능통", null, 0, null, 83, 89, 60, 0, 160, 300, null, null],
|
||||
[0, "여개", null, 0, null, 53, 30, 67, 0, 160, 300, null, null],
|
||||
[0, "여건", null, 0, null, 57, 70, 62, 0, 160, 300, null, null],
|
||||
[0, "여광", null, 0, null, 56, 70, 13, 0, 160, 300, null, null],
|
||||
[0, "여상", null, 0, null, 54, 71, 12, 0, 160, 300, null, null],
|
||||
[0, "여대", null, 0, null, 80, 71, 70, 0, 160, 300, null, null],
|
||||
[0, "여범", null, 0, null, 73, 63, 75, 0, 160, 300, null, null],
|
||||
[0, "여포", null, 0, null, 89, 100, 42, 0, 160, 300, null, null, "다 덤비거라! 하하하하"],
|
||||
[0, "여몽", null, 0, null, 91, 81, 90, 0, 160, 300, null, null],
|
||||
[0, "윤직", null, 0, null, 46, 42, 73, 0, 160, 300, null, null],
|
||||
[0, "냉포", null, 0, null, 71, 82, 61, 0, 160, 300, null, null],
|
||||
[0, "누규", null, 0, null, 52, 13, 87, 0, 160, 300, null, null],
|
||||
[0, "노숙", null, 0, null, 89, 56, 93, 0, 160, 300, null, null],
|
||||
[0, "노식", null, 0, null, 86, 63, 82, 0, 160, 300, null, null],
|
||||
[0, "범강", null, 0, null, 49, 50, 36, 0, 160, 300, null, null],
|
||||
[0, "장달", null, 0, null, 43, 56, 34, 0, 160, 300, null, null],
|
||||
[0, "규람", null, 0, null, 55, 70, 58, 0, 160, 300, null, null],
|
||||
[0, "대원", null, 0, null, 38, 32, 68, 0, 160, 300, null, null],
|
||||
[0, "왕기", null, 0, null, 81, 72, 86, 0, 160, 300, null, null],
|
||||
[0, "왕상", null, 0, null, 23, 19, 68, 0, 160, 300, null, null],
|
||||
[0, "왕돈", null, 0, null, 60, 66, 46, 0, 160, 300, null, null],
|
||||
[0, "악침", null, 0, null, 73, 75, 43, 0, 160, 300, null, null],
|
||||
[0, "하제", null, 0, null, 83, 70, 82, 0, 160, 300, null, null],
|
||||
[0, "환범", null, 0, null, 40, 11, 78, 0, 160, 300, null, null],
|
||||
[0, "견초", null, 0, null, 72, 79, 73, 0, 160, 300, null, null],
|
||||
[0, "고당륭", null, 0, null, 35, 24, 76, 0, 160, 300, null, null],
|
||||
[0, "오찬", null, 0, null, 68, 41, 78, 0, 160, 300, null, null],
|
||||
[0, "호질", null, 0, null, 73, 46, 74, 0, 160, 300, null, null],
|
||||
[0, "오질", null, 0, null, 16, 29, 68, 0, 160, 300, null, null],
|
||||
[0, "호준", null, 0, null, 79, 76, 62, 0, 160, 300, null, null],
|
||||
[0, "고담", null, 0, null, 53, 23, 77, 0, 160, 300, null, null],
|
||||
[0, "최림", null, 0, null, 32, 22, 66, 0, 160, 300, null, null],
|
||||
[0, "사마망", null, 0, null, 78, 58, 83, 0, 160, 300, null, null],
|
||||
[0, "주이", null, 0, null, 70, 73, 61, 0, 160, 300, null, null],
|
||||
[0, "전단", null, 0, null, 67, 64, 39, 0, 160, 300, null, null],
|
||||
[0, "조우", null, 0, null, 50, 43, 37, 0, 160, 300, null, null],
|
||||
[0, "조상", null, 0, null, 39, 33, 30, 0, 160, 300, null, null],
|
||||
[0, "조방", null, 0, null, 20, 14, 27, 0, 160, 300, null, null],
|
||||
[0, "태사향", null, 0, null, 57, 66, 48, 0, 160, 300, null, null],
|
||||
[0, "장휴", null, 0, null, 63, 27, 74, 0, 160, 300, null, null],
|
||||
[0, "장호", null, 0, null, 75, 74, 51, 0, 160, 300, null, null],
|
||||
[0, "조광", null, 0, null, 67, 71, 53, 0, 160, 300, null, null],
|
||||
[0, "장집", null, 0, null, 76, 29, 80, 0, 160, 300, null, null],
|
||||
[0, "장승", null, 0, null, 77, 70, 75, 0, 160, 300, null, null],
|
||||
[0, "장소2", null, 0, null, 23, 56, 31, 0, 160, 300, null, null],
|
||||
[0, "조통", null, 0, null, 68, 67, 61, 0, 160, 300, null, null],
|
||||
[0, "진표", null, 0, null, 66, 42, 74, 0, 160, 300, null, null],
|
||||
[0, "정무", null, 0, null, 56, 35, 75, 0, 160, 300, null, null],
|
||||
[0, "정봉2", null, 0, null, 66, 66, 53, 0, 160, 300, null, null],
|
||||
[0, "전만", null, 0, null, 51, 73, 39, 0, 160, 300, null, null],
|
||||
[0, "마균", null, 0, null, 22, 17, 71, 0, 160, 300, null, null],
|
||||
[0, "방회", null, 0, null, 69, 75, 49, 0, 160, 300, null, null],
|
||||
[0, "낙통", null, 0, null, 76, 58, 75, 0, 160, 300, null, null],
|
||||
[0, "육개", null, 0, null, 65, 61, 79, 0, 160, 300, null, null],
|
||||
[0, "유찬", null, 0, null, 78, 81, 64, 0, 160, 300, null, null],
|
||||
[0, "유소", null, 0, null, 68, 53, 74, 0, 160, 300, null, null],
|
||||
[0, "요립", null, 0, null, 32, 15, 76, 0, 160, 300, null, null],
|
||||
[0, "여거", null, 0, null, 78, 69, 71, 0, 160, 300, null, null],
|
||||
[0, "제갈첨", null, 0, null, 70, 57, 76, 0, 160, 300, null, null],
|
||||
[0, "손휴", null, 0, null, 57, 42, 78, 0, 160, 300, null, null],
|
||||
[0, "극정", null, 0, null, 42, 23, 68, 0, 160, 300, null, null],
|
||||
[0, "호분", null, 0, null, 71, 76, 50, 0, 160, 300, null, null],
|
||||
[0, "손량", null, 0, null, 32, 26, 70, 0, 160, 300, null, null],
|
||||
[0, "마막", null, 0, null, 34, 12, 44, 0, 160, 300, null, null],
|
||||
[0, "손호", null, 0, null, 41, 73, 71, 0, 160, 300, null, null],
|
||||
[0, "조모", null, 0, null, 54, 61, 59, 0, 160, 300, null, null],
|
||||
[0, "조환", null, 0, null, 30, 28, 30, 0, 160, 300, null, null],
|
||||
[0, "사마유", null, 0, null, 71, 68, 75, 0, 160, 300, null, null],
|
||||
[0, "제갈상", null, 0, null, 64, 79, 62, 0, 160, 300, null, null],
|
||||
[0, "손화", null, 0, null, 31, 39, 68, 0, 160, 300, null, null],
|
||||
[0, "염우", null, 0, null, 52, 61, 51, 0, 160, 300, null, null],
|
||||
[0, "왕경", null, 0, null, 67, 63, 71, 0, 160, 300, null, null],
|
||||
[0, "왕혼", null, 0, null, 74, 71, 63, 0, 160, 300, null, null],
|
||||
[0, "곽혁", null, 0, null, 33, 29, 70, 0, 160, 300, null, null],
|
||||
[0, "가범", null, 0, null, 60, 62, 73, 0, 160, 300, null, null],
|
||||
[0, "서질", null, 0, null, 68, 83, 24, 0, 160, 300, null, null],
|
||||
[0, "손준", null, 0, null, 64, 70, 65, 0, 160, 300, null, null],
|
||||
[0, "손침", null, 0, null, 58, 55, 65, 0, 160, 300, null, null],
|
||||
[0, "우사", null, 0, null, 61, 34, 74, 0, 160, 300, null, null],
|
||||
[0, "진건", null, 0, null, 72, 71, 65, 0, 160, 300, null, null],
|
||||
[0, "동궐", null, 0, null, 65, 59, 76, 0, 160, 300, null, null],
|
||||
[0, "당자", null, 0, null, 61, 71, 50, 0, 160, 300, null, null],
|
||||
[0, "등충", null, 0, null, 76, 80, 69, 0, 160, 300, null, null],
|
||||
[0, "황숭", null, 0, null, 67, 63, 72, 0, 160, 300, null, null],
|
||||
[0, "화핵", null, 0, null, 20, 24, 71, 0, 160, 300, null, null],
|
||||
[0, "허의", null, 0, null, 51, 74, 15, 0, 160, 300, null, null],
|
||||
[0, "송겸", null, 0, null, 66, 78, 42, 0, 160, 300, null, null],
|
||||
[0, "호제", null, 0, null, 57, 39, 68, 0, 160, 300, null, null],
|
||||
[0, "나헌", null, 0, null, 86, 70, 82, 0, 160, 300, null, null],
|
||||
[0, "노숙2", null, 0, null, 73, 53, 74, 0, 160, 300, null, null],
|
||||
[0, "구성", null, 0, null, 63, 70, 38, 0, 160, 300, null, null],
|
||||
[0, "어부라", null, 0, null, 72, 68, 21, 0, 160, 300, null, null],
|
||||
[0, "아하소과", null, 0, null, 61, 76, 13, 0, 160, 300, null, null],
|
||||
[0, "가비능", null, 0, null, 77, 69, 52, 0, 160, 300, null, null],
|
||||
[0, "구력거", null, 0, null, 80, 68, 56, 0, 160, 300, null, null],
|
||||
[0, "강단", null, 0, null, 65, 83, 48, 0, 160, 300, null, null],
|
||||
[0, "황란", null, 0, null, 63, 75, 44, 0, 160, 300, null, null],
|
||||
[0, "호주천", null, 0, null, 70, 71, 40, 0, 160, 300, null, null],
|
||||
[0, "종리목", null, 0, null, 84, 72, 82, 0, 160, 300, null, null],
|
||||
[0, "제갈교", null, 0, null, 62, 27, 75, 0, 160, 300, null, null],
|
||||
[0, "답돈", null, 0, null, 84, 82, 61, 0, 160, 300, null, null],
|
||||
[0, "반임", null, 0, null, 66, 79, 38, 0, 160, 300, null, null],
|
||||
[0, "보도근", null, 0, null, 64, 73, 50, 0, 160, 300, null, null],
|
||||
[0, "미당대왕", null, 0, null, 59, 69, 21, 0, 160, 300, null, null],
|
||||
[0, "유표2", null, 0, null, 73, 74, 48, 0, 160, 300, null, null],
|
||||
[0, "루반", null, 0, null, 65, 76, 39, 0, 160, 300, null, null],
|
||||
[0, "손관", null, 0, null, 72, 78, 51, 0, 160, 300, null, null],
|
||||
[0, "곽석", null, 0, null, 59, 71, 48, 0, 160, 300, null, null],
|
||||
[0, "주조", null, 0, null, 63, 68, 26, 0, 160, 300, null, null],
|
||||
[0, "장거", null, 0, null, 79, 75, 56, 0, 160, 300, null, null],
|
||||
[0, "장순", null, 0, null, 73, 81, 60, 0, 160, 300, null, null],
|
||||
[0, "철리길", null, 0, null, 77, 70, 52, 0, 160, 300, null, null],
|
||||
[0, "주삭", null, 0, null, 54, 60, 50, 0, 160, 300, null, null],
|
||||
[0, "황월영", null, 0, null, 46, 33, 78, 0, 160, 300, null, null],
|
||||
[0, "채염", null, 0, null, 42, 26, 82, 0, 160, 300, null, null],
|
||||
[0, "소교", null, 0, null, 23, 15, 78, 0, 160, 300, null, null],
|
||||
[0, "신헌영", null, 0, null, 65, 35, 90, 0, 160, 300, null, null, "내가 사내로 태어났더라면..."],
|
||||
[0, "손상향", null, 0, null, 72, 79, 55, 0, 160, 300, null, null],
|
||||
[0, "대교", null, 0, null, 22, 30, 78, 0, 160, 300, null, null],
|
||||
[0, "초선", null, 0, null, 12, 22, 71, 0, 160, 300, null, null],
|
||||
[0, "교모", null, 0, null, 54, 45, 69, 0, 160, 300, null, null],
|
||||
[0, "관구수", null, 0, null, 58, 62, 33, 0, 160, 300, null, null],
|
||||
[0, "관구전", null, 0, null, 63, 60, 69, 0, 160, 300, null, null],
|
||||
[0, "원유", null, 0, null, 56, 40, 73, 0, 160, 300, null, null],
|
||||
[0, "왕광", null, 0, null, 65, 55, 61, 0, 160, 300, null, null],
|
||||
[0, "신창", null, 0, null, 50, 26, 42, 0, 160, 300, null, null],
|
||||
[0, "사마주", null, 0, null, 61, 52, 61, 0, 160, 300, null, null],
|
||||
[0, "양제", null, 0, null, 67, 68, 71, 0, 160, 300, null, null],
|
||||
[0, "성만", null, 0, null, 61, 68, 66, 0, 160, 300, null, null],
|
||||
[0, "오연", null, 0, null, 66, 73, 42, 0, 160, 300, null, null],
|
||||
[0, "맹충", null, 0, null, 47, 28, 72, 0, 160, 300, null, null],
|
||||
[0, "잠혼", null, 0, null, 1, 1, 22, 0, 160, 300, null, null],
|
||||
[0, "사정", null, 0, null, 64, 76, 34, 0, 160, 300, null, null],
|
||||
[0, "심영", null, 0, null, 70, 77, 61, 0, 160, 300, null, null],
|
||||
[0, "도준", null, 0, null, 65, 66, 46, 0, 160, 300, null, null],
|
||||
[0, "만욱", null, 0, null, 21, 25, 71, 0, 160, 300, null, null],
|
||||
[0, "오언", null, 0, null, 76, 81, 65, 0, 160, 300, null, null],
|
||||
[0, "위막", null, 0, null, 57, 62, 59, 0, 160, 300, null, null],
|
||||
[0, "시삭", null, 0, null, 38, 65, 47, 0, 160, 300, null, null],
|
||||
[0, "전속", null, 0, null, 47, 60, 55, 0, 160, 300, null, null],
|
||||
[0, "장화", null, 0, null, 36, 27, 78, 0, 160, 300, null, null],
|
||||
[0, "오거", null, 0, null, 49, 61, 23, 0, 160, 300, null, null],
|
||||
[0, "추정", null, 0, null, 70, 64, 66, 0, 160, 300, null, null],
|
||||
[0, "장특", null, 0, null, 73, 54, 75, 0, 160, 300, null, null],
|
||||
[0, "곽마", null, 0, null, 68, 71, 47, 0, 160, 300, null, null],
|
||||
[0, "석포", null, 0, null, 69, 71, 56, 0, 160, 300, null, null],
|
||||
[0, "견홍", null, 0, null, 70, 74, 66, 0, 160, 300, null, null],
|
||||
[0, "한거자", null, 0, null, 51, 59, 51, 0, 160, 300, null, null],
|
||||
[0, "휴원진", null, 0, null, 52, 68, 45, 0, 160, 300, null, null],
|
||||
[0, "곽원", null, 0, null, 66, 73, 36, 0, 160, 300, null, null],
|
||||
[0, "계옹", null, 0, null, 63, 52, 41, 0, 160, 300, null, null],
|
||||
[0, "이부", null, 0, null, 31, 36, 74, 0, 160, 300, null, null],
|
||||
[0, "왕업", null, 0, null, 33, 6, 35, 0, 160, 300, null, null],
|
||||
[0, "좌혁", null, 0, null, 62, 66, 51, 0, 160, 300, null, null],
|
||||
[0, "화타", null, 0, null, 57, 25, 73, 0, 160, 300, null, null, "아픈 사람들 모두 내게 오시오~"],
|
||||
[0, "사마휘", null, 0, null, 55, 26, 82, 0, 160, 300, null, null, "좋지 좋아~"],
|
||||
[0, "우길", null, 0, null, 23, 15, 90, 0, 160, 300, null, null, "길조로다"],
|
||||
[0, "헌제", null, 0, null, 22, 18, 68, 0, 160, 300, null, null, "한왕실은 정녕 여기서 끝이란 말인가.."],
|
||||
[0, "백기", null, 0, null, 100, 88, 82, 0, 160, 300, null, null],
|
||||
[0, "한신", null, 0, null, 100, 74, 95, 0, 160, 300, null, null],
|
||||
[0, "악비", null, 0, null, 99, 91, 86, 0, 160, 300, null, null],
|
||||
[0, "항적", null, 0, null, 99, 100, 65, 0, 160, 300, null, null],
|
||||
[0, "악의", null, 0, null, 98, 75, 96, 0, 160, 300, null, null],
|
||||
[0, "영정", null, 0, null, 97, 55, 92, 0, 160, 300, null, null],
|
||||
[0, "강상", null, 0, null, 94, 49, 100, 0, 160, 300, null, null],
|
||||
[0, "전단2", null, 0, null, 96, 75, 95, 0, 160, 300, null, null],
|
||||
[0, "이목", null, 0, null, 96, 78, 88, 0, 160, 300, null, null],
|
||||
[0, "염파", null, 0, null, 97, 96, 75, 0, 160, 300, null, null],
|
||||
[0, "왕전", null, 0, null, 94, 78, 83, 0, 160, 300, null, null],
|
||||
[0, "오기", null, 0, null, 94, 66, 95, 0, 160, 300, null, null],
|
||||
[0, "곽거병", null, 0, null, 93, 92, 53, 0, 160, 300, null, null],
|
||||
[0, "영포", null, 0, null, 82, 91, 54, 0, 160, 300, null, null],
|
||||
[0, "이신", null, 0, null, 81, 88, 63, 0, 160, 300, null, null],
|
||||
[0, "몽념", null, 0, null, 87, 86, 71, 0, 160, 300, null, null],
|
||||
[0, "전기", null, 0, null, 80, 85, 44, 0, 160, 300, null, null],
|
||||
[0, "극신", null, 0, null, 76, 83, 42, 0, 160, 300, null, null],
|
||||
[0, "항연", null, 0, null, 89, 80, 77, 0, 160, 300, null, null],
|
||||
[0, "인상여", null, 0, null, 69, 38, 96, 0, 160, 300, null, null],
|
||||
[0, "장자방", null, 0, null, 72, 40, 100, 0, 160, 300, null, null],
|
||||
[0, "관이오", null, 0, null, 85, 64, 99, 0, 160, 300, null, null],
|
||||
[0, "손빈", null, 0, null, 83, 22, 98, 0, 160, 300, null, null],
|
||||
[0, "소진", null, 0, null, 90, 47, 96, 0, 160, 300, null, null],
|
||||
[0, "범증", null, 0, null, 68, 24, 94, 0, 160, 300, null, null],
|
||||
[0, "장의2", null, 0, null, 75, 23, 93, 0, 160, 300, null, null],
|
||||
[0, "공구", null, 0, null, 68, 70, 91, 0, 160, 300, null, null],
|
||||
[0, "소하", null, 0, null, 56, 27, 97, 0, 160, 300, null, null],
|
||||
[0, "한비", null, 0, null, 49, 18, 97, 0, 160, 300, null, null],
|
||||
[0, "이사", null, 0, null, 48, 24, 95, 0, 160, 300, null, null],
|
||||
[0, "전문", null, 0, null, 79, 67, 89, 0, 160, 300, null, null],
|
||||
[0, "황헐", null, 0, null, 81, 68, 88, 0, 160, 300, null, null],
|
||||
[0, "방난", null, 0, null, 88, 95, 66, 0, 160, 300, null, null],
|
||||
[0, "개섭", null, 0, null, 43, 97, 54, 0, 160, 300, null, null],
|
||||
[0, "형가", null, 0, null, 42, 89, 43, 0, 160, 300, null, null],
|
||||
[0, "유방", null, 0, null, 90, 75, 85, 0, 160, 300, null, null, "나는 사람을 쓰는 재주로 천하를 얻었다"],
|
||||
[0, "하리", null, 0, null, 99, 99, 89, 0, 160, 300, null, null, "내 업적을 따라올 사람이 있을까?"],
|
||||
[0, "헹이", null, 0, null, 97, 72, 90, 0, 160, 300, null, null, "맛있다 'ㅅ'"],
|
||||
[0, "나나", null, 0, null, 96, 71, 86, 0, 160, 300, null, null, "이번 전쟁을 계산해보면 말이죠..."],
|
||||
[0, "장임2", null, 0, null, 90, 87, 85, 0, 160, 300, null, null, "으리!"],
|
||||
[0, "하야미", null, 0, null, 94, 85, 92, 0, 160, 300, null, null, "흑막이 되어볼까요"],
|
||||
[0, "이시리스", null, 0, null, 96, 80, 94, 0, 160, 300, null, null],
|
||||
[0, "연채홍", null, 0, null, 90, 81, 88, 0, 160, 300, null, null, "엄마도 천통할수 있다!"],
|
||||
[0, "임사영", null, 0, null, 75, 75, 75, 0, 160, 300, null, null, "일반인 양민입니다"],
|
||||
[0, "장군보", null, 0, null, 84, 90, 68, 0, 160, 300, null, null],
|
||||
[0, "크렌스", null, 0, null, 92, 80, 76, 0, 160, 300, null, null],
|
||||
[0, "콘", null, 0, null, 88, 96, 85, 0, 160, 300, null, null],
|
||||
[0, "리즈나", null, 0, null, 93, 65, 75, 0, 160, 300, null, null, "내가 다 했다"],
|
||||
[0, "오티누스", null, 0, null, 92, 89, 88, 0, 160, 300, null, null],
|
||||
[0, "네시", null, 0, null, 87, 85, 92, 0, 160, 300, null, null, "안 자고 싸우면 이겨요"],
|
||||
[0, "시뉴카린", null, 0, null, 85, 88, 75, 0, 160, 300, null, null, "흔들흔들"]
|
||||
],
|
||||
"general_ex":[
|
||||
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,507 @@
|
||||
{
|
||||
"title": "【가상모드20】 스타크래프트 1 프로게이대전",
|
||||
"startYear": 2002,
|
||||
"history": [
|
||||
"<C>●</>2002년 1월:<L><b>【가상모드20】</b>스타크래프트 1 프로게이대전</>",
|
||||
"<C>●</>2002년 1월:<L><b>【이벤트】</b></>프로게이들이 삼국지 시대에 떨어졌다! 집에 돌아가고 싶으면 천통하자"
|
||||
],
|
||||
"stat": {
|
||||
"total": 225,
|
||||
"min": 40,
|
||||
"max": 95,
|
||||
"npcMax": 90,
|
||||
"chiefMin": 65
|
||||
},
|
||||
"iconPath": "스타1프로게이머",
|
||||
"fiction": 1,
|
||||
"nation":[
|
||||
|
||||
],
|
||||
"map":{
|
||||
"mapName":"miniche",
|
||||
"unitSet":"che"
|
||||
},
|
||||
"diplomacy":[],
|
||||
"general":[
|
||||
[0, "이윤열", null, 0, null, 110, 105, 111, 0, 1985, 2190, null, null, "전 전설로 남고 싶셒습니다"],
|
||||
[0, "임요환", null, 0, null, 95, 100, 112, 0, 1985, 2190, null, null, "역시 콩은 까야 제맛이지"],
|
||||
[0, "이영호", null, 0, null, 115, 111, 111, 0, 1985, 2190, null, null, "정말 득도를 했어요 정말 스타를 깨달았어요!"],
|
||||
[0, "서지훈", null, 0, null, 99, 99, 96, 0, 1985, 2190, null, null, "엄마 많이 사랑해요!"],
|
||||
[0, "전상욱", null, 0, null, 93, 90, 91, 0, 1985, 2190, null, null],
|
||||
[0, "염보성", null, 0, null, 90, 88, 86, 0, 1985, 2190, null, null],
|
||||
[0, "최연성", null, 0, null, 112, 115, 100, 0, 1985, 2190, null, null, "별로.. 별로 안좋아요"],
|
||||
[0, "이재호", null, 0, null, 91, 86, 81, 0, 1985, 2190, null, null],
|
||||
[0, "변형태", null, 0, null, 89, 93, 79, 0, 1985, 2190, null, null],
|
||||
[0, "구성훈", null, 0, null, 76, 79, 81, 0, 1985, 2190, null, null],
|
||||
[0, "정명훈", null, 0, null, 102, 100, 99, 0, 1985, 2190, null, null],
|
||||
[0, "박성균", null, 0, null, 94, 93, 98, 0, 1985, 2190, null, null],
|
||||
[0, "신상문", null, 0, null, 91, 94, 81, 0, 1985, 2190, null, null],
|
||||
[0, "이성은", null, 0, null, 89, 95, 79, 0, 1985, 2190, null, null],
|
||||
[0, "한동욱", null, 0, null, 94, 91, 96, 0, 1985, 2190, null, null],
|
||||
[0, "고인규", null, 0, null, 82, 78, 81, 0, 1985, 2190, null, null],
|
||||
[0, "전태양", null, 0, null, 83, 84, 85, 0, 1985, 2190, null, null],
|
||||
[0, "차재욱", null, 0, null, 79, 79, 73, 0, 1985, 2190, null, null],
|
||||
[0, "박상우", null, 0, null, 82, 81, 76, 0, 1985, 2190, null, null],
|
||||
[0, "조병세", null, 0, null, 80, 73, 81, 0, 1985, 2190, null, null],
|
||||
[0, "이학주", null, 0, null, 65, 67, 43, 0, 1985, 2190, null, null],
|
||||
[0, "손주흥", null, 0, null, 64, 31, 77, 0, 1985, 2190, null, null],
|
||||
[0, "민찬기", null, 0, null, 86, 82, 59, 0, 1985, 2190, null, null],
|
||||
[0, "안상원", null, 0, null, 71, 72, 63, 0, 1985, 2190, null, null],
|
||||
[0, "임진묵", null, 0, null, 74, 32, 68, 0, 1985, 2190, null, null],
|
||||
[0, "최호선", null, 0, null, 69, 73, 48, 0, 1985, 2190, null, null],
|
||||
[0, "이신형", null, 0, null, 79, 81, 71, 0, 1985, 2190, null, null],
|
||||
[0, "김선기", null, 0, null, 64, 63, 51, 0, 1985, 2190, null, null],
|
||||
[0, "이동준", null, 0, null, 59, 58, 34, 0, 1985, 2190, null, null],
|
||||
[0, "강정우", null, 0, null, 64, 61, 42, 0, 1985, 2190, null, null],
|
||||
[0, "김성진", null, 0, null, 58, 39, 58, 0, 1985, 2190, null, null],
|
||||
[0, "김성현", null, 0, null, 81, 64, 75, 0, 1985, 2190, null, null],
|
||||
[0, "박정욱", null, 0, null, 59, 47, 42, 0, 1985, 2190, null, null],
|
||||
[0, "정종현", null, 0, null, 67, 39, 49, 0, 1985, 2190, null, null],
|
||||
[0, "김영진", null, 0, null, 62, 67, 62, 0, 1985, 2190, null, null],
|
||||
[0, "황병영", null, 0, null, 70, 67, 48, 0, 1985, 2190, null, null],
|
||||
[0, "박경수", null, 0, null, 58, 35, 31, 0, 1985, 2190, null, null],
|
||||
[0, "강구열", null, 0, null, 66, 57, 53, 0, 1985, 2190, null, null],
|
||||
[0, "남승현", null, 0, null, 61, 41, 48, 0, 1985, 2190, null, null],
|
||||
[0, "김도우", null, 0, null, 64, 37, 43, 0, 1985, 2190, null, null],
|
||||
[0, "정우용", null, 0, null, 53, 67, 41, 0, 1985, 2190, null, null],
|
||||
[0, "김대건", null, 0, null, 50, 55, 42, 0, 1985, 2190, null, null],
|
||||
[0, "오총훈", null, 0, null, 62, 53, 41, 0, 1985, 2190, null, null],
|
||||
[0, "임성진", null, 0, null, 49, 69, 65, 0, 1985, 2190, null, null],
|
||||
[0, "이기석", null, 0, null, 80, 37, 50, 0, 1985, 2190, null, null],
|
||||
[0, "김기현", null, 0, null, 63, 36, 68, 0, 1985, 2190, null, null],
|
||||
[0, "정유석", null, 0, null, 48, 55, 63, 0, 1985, 2190, null, null],
|
||||
[0, "박대호", null, 0, null, 61, 40, 42, 0, 1985, 2190, null, null],
|
||||
[0, "윤찬희", null, 0, null, 70, 42, 53, 0, 1985, 2190, null, null],
|
||||
[0, "공민창", null, 0, null, 60, 68, 45, 0, 1985, 2190, null, null],
|
||||
[0, "심성수", null, 0, null, 54, 43, 44, 0, 1985, 2190, null, null],
|
||||
[0, "윤정민", null, 0, null, 59, 51, 52, 0, 1985, 2190, null, null],
|
||||
[0, "노준규", null, 0, null, 50, 46, 32, 0, 1985, 2190, null, null],
|
||||
[0, "정영재", null, 0, null, 52, 38, 32, 0, 1985, 2190, null, null],
|
||||
[0, "주한진", null, 0, null, 61, 42, 42, 0, 1985, 2190, null, null],
|
||||
[0, "허용석", null, 0, null, 47, 35, 46, 0, 1985, 2190, null, null],
|
||||
[0, "조기석", null, 0, null, 60, 54, 57, 0, 1985, 2190, null, null],
|
||||
[0, "유영진", null, 0, null, 46, 53, 51, 0, 1985, 2190, null, null],
|
||||
[0, "이승훈1", null, 0, null, 50, 41, 36, 0, 1985, 2190, null, null],
|
||||
[0, "오세기", null, 0, null, 46, 33, 68, 0, 1985, 2190, null, null],
|
||||
[0, "백승혁", null, 0, null, 55, 30, 47, 0, 1985, 2190, null, null],
|
||||
[0, "모상호", null, 0, null, 55, 60, 65, 0, 1985, 2190, null, null],
|
||||
[0, "김대기", null, 0, null, 70, 70, 70, 0, 1985, 2190, null, null],
|
||||
[0, "박상규", null, 0, null, 46, 46, 68, 0, 1985, 2190, null, null],
|
||||
[0, "최은창", null, 0, null, 50, 37, 46, 0, 1985, 2190, null, null],
|
||||
[0, "김우영", null, 0, null, 59, 46, 30, 0, 1985, 2190, null, null],
|
||||
[0, "이영웅", null, 0, null, 57, 45, 47, 0, 1985, 2190, null, null],
|
||||
[0, "차호영", null, 0, null, 57, 48, 32, 0, 1985, 2190, null, null],
|
||||
[0, "전영현", null, 0, null, 60, 60, 43, 0, 1985, 2190, null, null],
|
||||
[0, "임기홍", null, 0, null, 54, 62, 45, 0, 1985, 2190, null, null],
|
||||
[0, "하동수", null, 0, null, 54, 51, 31, 0, 1985, 2190, null, null],
|
||||
[0, "황경영", null, 0, null, 52, 50, 41, 0, 1985, 2190, null, null],
|
||||
[0, "조경운", null, 0, null, 59, 57, 68, 0, 1985, 2190, null, null],
|
||||
[0, "소현두", null, 0, null, 55, 30, 39, 0, 1985, 2190, null, null],
|
||||
[0, "신성은", null, 0, null, 56, 41, 30, 0, 1985, 2190, null, null],
|
||||
[0, "김슬기", null, 0, null, 53, 56, 61, 0, 1985, 2190, null, null],
|
||||
[0, "김동원", null, 0, null, 46, 64, 54, 0, 1985, 2190, null, null],
|
||||
[0, "박경태", null, 0, null, 47, 55, 50, 0, 1985, 2190, null, null],
|
||||
[0, "윤주영", null, 0, null, 52, 43, 60, 0, 1985, 2190, null, null],
|
||||
[0, "나영석", null, 0, null, 52, 57, 43, 0, 1985, 2190, null, null],
|
||||
[0, "김동구", null, 0, null, 60, 30, 38, 0, 1985, 2190, null, null],
|
||||
[0, "이승렬", null, 0, null, 60, 45, 54, 0, 1985, 2190, null, null],
|
||||
[0, "한규종", null, 0, null, 45, 63, 52, 0, 1985, 2190, null, null],
|
||||
[0, "이선종", null, 0, null, 57, 59, 58, 0, 1985, 2190, null, null],
|
||||
[0, "임완", null, 0, null, 61, 33, 45, 0, 1985, 2190, null, null],
|
||||
[0, "미구엘", null, 0, null, 49, 44, 50, 0, 1985, 2190, null, null],
|
||||
[0, "박승호", null, 0, null, 49, 54, 40, 0, 1985, 2190, null, null],
|
||||
[0, "이승열", null, 0, null, 48, 46, 60, 0, 1985, 2190, null, null],
|
||||
[0, "손정준", null, 0, null, 57, 44, 51, 0, 1985, 2190, null, null],
|
||||
[0, "이창덕", null, 0, null, 57, 39, 31, 0, 1985, 2190, null, null],
|
||||
[0, "김지훈", null, 0, null, 45, 66, 47, 0, 1985, 2190, null, null],
|
||||
[0, "최진태", null, 0, null, 50, 51, 51, 0, 1985, 2190, null, null],
|
||||
[0, "김수인", null, 0, null, 46, 49, 65, 0, 1985, 2190, null, null],
|
||||
[0, "지동원", null, 0, null, 61, 35, 36, 0, 1985, 2190, null, null],
|
||||
[0, "홍진표", null, 0, null, 53, 53, 66, 0, 1985, 2190, null, null],
|
||||
[0, "김준희", null, 0, null, 51, 40, 37, 0, 1985, 2190, null, null],
|
||||
[0, "김준엽", null, 0, null, 61, 55, 68, 0, 1985, 2190, null, null],
|
||||
[0, "오정환", null, 0, null, 46, 38, 39, 0, 1985, 2190, null, null],
|
||||
[0, "문세일", null, 0, null, 59, 46, 34, 0, 1985, 2190, null, null],
|
||||
[0, "정동우", null, 0, null, 58, 42, 63, 0, 1985, 2190, null, null],
|
||||
[0, "케빈", null, 0, null, 60, 54, 33, 0, 1985, 2190, null, null],
|
||||
[0, "홍갑규", null, 0, null, 45, 66, 37, 0, 1985, 2190, null, null],
|
||||
[0, "정문호", null, 0, null, 54, 48, 45, 0, 1985, 2190, null, null],
|
||||
[0, "최병현", null, 0, null, 59, 45, 59, 0, 1985, 2190, null, null],
|
||||
[0, "김영주", null, 0, null, 58, 69, 43, 0, 1985, 2190, null, null],
|
||||
[0, "최아신", null, 0, null, 51, 40, 59, 0, 1985, 2190, null, null],
|
||||
[0, "조영찬", null, 0, null, 56, 63, 52, 0, 1985, 2190, null, null],
|
||||
[0, "권태훈", null, 0, null, 49, 59, 38, 0, 1985, 2190, null, null],
|
||||
[0, "최준경", null, 0, null, 52, 56, 35, 0, 1985, 2190, null, null],
|
||||
[0, "서재원", null, 0, null, 56, 54, 40, 0, 1985, 2190, null, null],
|
||||
[0, "성시경", null, 0, null, 56, 62, 48, 0, 1985, 2190, null, null],
|
||||
[0, "신동화", null, 0, null, 55, 60, 36, 0, 1985, 2190, null, null],
|
||||
[0, "배지웅", null, 0, null, 56, 31, 59, 0, 1985, 2190, null, null],
|
||||
[0, "황희두", null, 0, null, 56, 66, 56, 0, 1985, 2190, null, null],
|
||||
[0, "김용호", null, 0, null, 45, 67, 56, 0, 1985, 2190, null, null],
|
||||
[0, "김도욱", null, 0, null, 41, 40, 22, 0, 1985, 2190, null, null],
|
||||
[0, "서지수", null, 0, null, 100, 100, 100, 0, 1985, 2190, null, null],
|
||||
[0, "송병구", null, 0, null, 102, 102, 98, 0, 1985, 2190, null, null],
|
||||
[0, "김택용", null, 0, null, 110, 105, 105, 0, 1985, 2190, null, null],
|
||||
[0, "박정석", null, 0, null, 98, 95, 90, 0, 1985, 2190, null, null],
|
||||
[0, "강민", null, 0, null, 99, 94, 99, 0, 1985, 2190, null, null],
|
||||
[0, "윤용태", null, 0, null, 93, 99, 79, 0, 1985, 2190, null, null],
|
||||
[0, "김구현", null, 0, null, 88, 91, 70, 0, 1985, 2190, null, null],
|
||||
[0, "허영무", null, 0, null, 97, 97, 97, 0, 1985, 2190, null, null, "게임 알지도 못하는 놈들아 너네들이 와서 함 해볼래!?"],
|
||||
[0, "박지호", null, 0, null, 81, 94, 69, 0, 1985, 2190, null, null],
|
||||
[0, "전태규", null, 0, null, 83, 87, 75, 0, 1985, 2190, null, null],
|
||||
[0, "오영종", null, 0, null, 97, 88, 96, 0, 1985, 2190, null, null],
|
||||
[0, "도재욱", null, 0, null, 103, 101, 79, 0, 1985, 2190, null, null],
|
||||
[0, "박영민", null, 0, null, 78, 73, 68, 0, 1985, 2190, null, null],
|
||||
[0, "기욤패트리", null, 0, null, 93, 91, 91, 0, 1985, 2190, null, null],
|
||||
[0, "안기효", null, 0, null, 81, 76, 73, 0, 1985, 2190, null, null],
|
||||
[0, "김환중", null, 0, null, 76, 72, 49, 0, 1985, 2190, null, null],
|
||||
[0, "진영화", null, 0, null, 88, 81, 84, 0, 1985, 2190, null, null],
|
||||
[0, "김윤중", null, 0, null, 72, 61, 81, 0, 1985, 2190, null, null],
|
||||
[0, "서기수", null, 0, null, 72, 63, 45, 0, 1985, 2190, null, null],
|
||||
[0, "김대엽", null, 0, null, 84, 77, 83, 0, 1985, 2190, null, null],
|
||||
[0, "박세정", null, 0, null, 73, 65, 62, 0, 1985, 2190, null, null],
|
||||
[0, "김재훈", null, 0, null, 65, 59, 63, 0, 1985, 2190, null, null],
|
||||
[0, "박종수", null, 0, null, 63, 62, 49, 0, 1985, 2190, null, null],
|
||||
[0, "박수범", null, 0, null, 59, 32, 63, 0, 1985, 2190, null, null],
|
||||
[0, "장윤철", null, 0, null, 73, 60, 73, 0, 1985, 2190, null, null],
|
||||
[0, "우정호", null, 0, null, 85, 80, 79, 0, 1985, 2190, null, null],
|
||||
[0, "이경민", null, 0, null, 83, 63, 83, 0, 1985, 2190, null, null],
|
||||
[0, "김승현", null, 0, null, 51, 32, 38, 0, 1985, 2190, null, null],
|
||||
[0, "손찬웅", null, 0, null, 49, 62, 46, 0, 1985, 2190, null, null],
|
||||
[0, "박대만", null, 0, null, 50, 42, 49, 0, 1985, 2190, null, null],
|
||||
[0, "신상호", null, 0, null, 48, 51, 51, 0, 1985, 2190, null, null],
|
||||
[0, "박재영", null, 0, null, 49, 64, 45, 0, 1985, 2190, null, null],
|
||||
[0, "이영호P", null, 0, null, 56, 32, 60, 0, 1985, 2190, null, null],
|
||||
[0, "이승훈", null, 0, null, 61, 32, 39, 0, 1985, 2190, null, null],
|
||||
[0, "임태규", null, 0, null, 61, 55, 52, 0, 1985, 2190, null, null],
|
||||
[0, "임원기", null, 0, null, 45, 30, 35, 0, 1985, 2190, null, null],
|
||||
[0, "김태균", null, 0, null, 54, 48, 42, 0, 1985, 2190, null, null],
|
||||
[0, "한동훈", null, 0, null, 61, 63, 46, 0, 1985, 2190, null, null],
|
||||
[0, "김민제", null, 0, null, 51, 43, 58, 0, 1985, 2190, null, null],
|
||||
[0, "신재욱", null, 0, null, 50, 40, 31, 0, 1985, 2190, null, null],
|
||||
[0, "손석희", null, 0, null, 40, 20, 89, 0, 1985, 2190, null, null],
|
||||
[0, "손재범", null, 0, null, 60, 36, 62, 0, 1985, 2190, null, null],
|
||||
[0, "노영훈", null, 0, null, 55, 36, 54, 0, 1985, 2190, null, null],
|
||||
[0, "김인기", null, 0, null, 59, 31, 64, 0, 1985, 2190, null, null],
|
||||
[0, "유병준", null, 0, null, 45, 63, 64, 0, 1985, 2190, null, null],
|
||||
[0, "권오혁", null, 0, null, 57, 41, 35, 0, 1985, 2190, null, null],
|
||||
[0, "정윤종", null, 0, null, 82, 79, 83, 0, 1985, 2190, null, null],
|
||||
[0, "장민철", null, 0, null, 50, 45, 42, 0, 1985, 2190, null, null],
|
||||
[0, "강민구", null, 0, null, 57, 60, 40, 0, 1985, 2190, null, null],
|
||||
[0, "조성호", null, 0, null, 55, 54, 46, 0, 1985, 2190, null, null],
|
||||
[0, "조재걸", null, 0, null, 54, 35, 32, 0, 1985, 2190, null, null],
|
||||
[0, "김학수", null, 0, null, 47, 40, 41, 0, 1985, 2190, null, null],
|
||||
[0, "임효진", null, 0, null, 61, 31, 33, 0, 1985, 2190, null, null],
|
||||
[0, "윤현욱", null, 0, null, 47, 49, 49, 0, 1985, 2190, null, null],
|
||||
[0, "변현제", null, 0, null, 51, 33, 79, 0, 1985, 2190, null, null],
|
||||
[0, "최홍희", null, 0, null, 57, 44, 48, 0, 1985, 2190, null, null],
|
||||
[0, "정경두", null, 0, null, 47, 39, 60, 0, 1985, 2190, null, null],
|
||||
[0, "최수민", null, 0, null, 55, 56, 47, 0, 1985, 2190, null, null],
|
||||
[0, "김봉준", null, 0, null, 60, 48, 50, 0, 1985, 2190, null, null],
|
||||
[0, "김유진", null, 0, null, 54, 64, 54, 0, 1985, 2190, null, null],
|
||||
[0, "하태준", null, 0, null, 46, 34, 40, 0, 1985, 2190, null, null],
|
||||
[0, "박태건", null, 0, null, 47, 46, 30, 0, 1985, 2190, null, null],
|
||||
[0, "백동준", null, 0, null, 59, 40, 56, 0, 1985, 2190, null, null],
|
||||
[0, "박준상", null, 0, null, 56, 49, 46, 0, 1985, 2190, null, null],
|
||||
[0, "주성욱", null, 0, null, 76, 75, 63, 0, 1985, 2190, null, null],
|
||||
[0, "황영재", null, 0, null, 54, 56, 54, 0, 1985, 2190, null, null],
|
||||
[0, "송현덕", null, 0, null, 50, 49, 34, 0, 1985, 2190, null, null],
|
||||
[0, "백현길", null, 0, null, 55, 37, 44, 0, 1985, 2190, null, null],
|
||||
[0, "최영웅", null, 0, null, 46, 61, 54, 0, 1985, 2190, null, null],
|
||||
[0, "신성철", null, 0, null, 57, 32, 47, 0, 1985, 2190, null, null],
|
||||
[0, "강동원", null, 0, null, 47, 47, 57, 0, 1985, 2190, null, null],
|
||||
[0, "최재원", null, 0, null, 48, 46, 54, 0, 1985, 2190, null, null],
|
||||
[0, "최찬호", null, 0, null, 50, 46, 50, 0, 1985, 2190, null, null],
|
||||
[0, "오창종", null, 0, null, 51, 49, 62, 0, 1985, 2190, null, null],
|
||||
[0, "이만근", null, 0, null, 54, 61, 38, 0, 1985, 2190, null, null],
|
||||
[0, "세르게이", null, 0, null, 45, 51, 49, 0, 1985, 2190, null, null],
|
||||
[0, "변도섭", null, 0, null, 52, 63, 64, 0, 1985, 2190, null, null],
|
||||
[0, "홍명철", null, 0, null, 55, 41, 35, 0, 1985, 2190, null, null],
|
||||
[0, "김대호", null, 0, null, 45, 50, 56, 0, 1985, 2190, null, null],
|
||||
[0, "임동춘", null, 0, null, 55, 64, 57, 0, 1985, 2190, null, null],
|
||||
[0, "유태영", null, 0, null, 45, 30, 38, 0, 1985, 2190, null, null],
|
||||
[0, "송동호", null, 0, null, 49, 53, 36, 0, 1985, 2190, null, null],
|
||||
[0, "김태목", null, 0, null, 59, 62, 57, 0, 1985, 2190, null, null],
|
||||
[0, "강명훈", null, 0, null, 58, 53, 44, 0, 1985, 2190, null, null],
|
||||
[0, "김기훈", null, 0, null, 57, 43, 45, 0, 1985, 2190, null, null],
|
||||
[0, "하재상", null, 0, null, 45, 50, 48, 0, 1985, 2190, null, null],
|
||||
[0, "서한규", null, 0, null, 56, 62, 55, 0, 1985, 2190, null, null],
|
||||
[0, "박성준P", null, 0, null, 56, 59, 34, 0, 1985, 2190, null, null],
|
||||
[0, "이두인", null, 0, null, 56, 52, 46, 0, 1985, 2190, null, null],
|
||||
[0, "최문석", null, 0, null, 55, 58, 37, 0, 1985, 2190, null, null],
|
||||
[0, "이정훈", null, 0, null, 50, 35, 50, 0, 1985, 2190, null, null],
|
||||
[0, "김태훈P", null, 0, null, 55, 33, 48, 0, 1985, 2190, null, null],
|
||||
[0, "김민규P", null, 0, null, 61, 36, 49, 0, 1985, 2190, null, null],
|
||||
[0, "유병욱", null, 0, null, 45, 37, 33, 0, 1985, 2190, null, null],
|
||||
[0, "유병옥", null, 0, null, 61, 40, 40, 0, 1985, 2190, null, null],
|
||||
[0, "김민우P", null, 0, null, 46, 53, 44, 0, 1985, 2190, null, null],
|
||||
[0, "윤지용", null, 0, null, 56, 31, 54, 0, 1985, 2190, null, null],
|
||||
[0, "이기호", null, 0, null, 49, 45, 31, 0, 1985, 2190, null, null],
|
||||
[0, "홍정우", null, 0, null, 57, 62, 32, 0, 1985, 2190, null, null],
|
||||
[0, "박진영", null, 0, null, 48, 41, 33, 0, 1985, 2190, null, null],
|
||||
[0, "박재현", null, 0, null, 46, 63, 50, 0, 1985, 2190, null, null],
|
||||
[0, "채규승", null, 0, null, 59, 48, 51, 0, 1985, 2190, null, null],
|
||||
[0, "이호성", null, 0, null, 52, 39, 37, 0, 1985, 2190, null, null],
|
||||
[0, "김진", null, 0, null, 53, 30, 49, 0, 1985, 2190, null, null],
|
||||
[0, "hao lei", null, 0, null, 53, 35, 32, 0, 1985, 2190, null, null],
|
||||
[0, "김승엽", null, 0, null, 56, 30, 45, 0, 1985, 2190, null, null],
|
||||
[0, "이상길", null, 0, null, 50, 63, 60, 0, 1985, 2190, null, null],
|
||||
[0, "정재우P", null, 0, null, 59, 37, 30, 0, 1985, 2190, null, null],
|
||||
[0, "곽기성", null, 0, null, 50, 38, 49, 0, 1985, 2190, null, null],
|
||||
[0, "김성욱", null, 0, null, 49, 35, 45, 0, 1985, 2190, null, null],
|
||||
[0, "백동건", null, 0, null, 60, 58, 44, 0, 1985, 2190, null, null],
|
||||
[0, "송경준", null, 0, null, 46, 57, 47, 0, 1985, 2190, null, null],
|
||||
[0, "정재철", null, 0, null, 51, 55, 31, 0, 1985, 2190, null, null],
|
||||
[0, "신주영", null, 0, null, 54, 50, 41, 0, 1985, 2190, null, null],
|
||||
[0, "김이삭", null, 0, null, 57, 40, 62, 0, 1985, 2190, null, null],
|
||||
[0, "김병운", null, 0, null, 49, 48, 55, 0, 1985, 2190, null, null],
|
||||
[0, "남지현", null, 0, null, 61, 61, 53, 0, 1985, 2190, null, null],
|
||||
[0, "정정호", null, 0, null, 50, 39, 31, 0, 1985, 2190, null, null],
|
||||
[0, "구찬우", null, 0, null, 60, 30, 41, 0, 1985, 2190, null, null],
|
||||
[0, "원선재", null, 0, null, 46, 39, 52, 0, 1985, 2190, null, null],
|
||||
[0, "콩", null, 0, null, 22, 22, 22, 0, 1985, 2190, null, null, "Chili Con Carne Chili Con Carne"],
|
||||
[0, "이제동", null, 0, null, 109, 113, 106, 0, 1985, 2190, null, null],
|
||||
[0, "홍진호", null, 0, null, 100, 102, 98, 0, 1985, 2190, null, null, "오늘의 전 홍진호도 아니고 폭풍저그도 아니었습니다. 그냥.. 그냥.. 저그 였습니다. 저그.."],
|
||||
[0, "박성준", null, 0, null, 101, 109, 95, 0, 1985, 2190, null, null],
|
||||
[0, "박태민", null, 0, null, 98, 90, 106, 0, 1985, 2190, null, null],
|
||||
[0, "김윤환Z", null, 0, null, 90, 81, 95, 0, 1985, 2190, null, null],
|
||||
[0, "김명운", null, 0, null, 97, 94, 99, 0, 1985, 2190, null, null],
|
||||
[0, "김정우", null, 0, null, 100, 108, 99, 0, 1985, 2190, null, null],
|
||||
[0, "김준영", null, 0, null, 105, 87, 96, 0, 1985, 2190, null, null],
|
||||
[0, "주진철", null, 0, null, 63, 42, 56, 0, 1985, 2190, null, null],
|
||||
[0, "박재혁", null, 0, null, 74, 71, 62, 0, 1985, 2190, null, null],
|
||||
[0, "박준오", null, 0, null, 84, 74, 88, 0, 1985, 2190, null, null],
|
||||
[0, "이주영", null, 0, null, 63, 45, 64, 0, 1985, 2190, null, null],
|
||||
[0, "조일장", null, 0, null, 82, 83, 79, 0, 1985, 2190, null, null],
|
||||
[0, "고석현", null, 0, null, 74, 76, 53, 0, 1985, 2190, null, null],
|
||||
[0, "한상봉", null, 0, null, 67, 43, 88, 0, 1985, 2190, null, null],
|
||||
[0, "차명환", null, 0, null, 71, 40, 77, 0, 1985, 2190, null, null],
|
||||
[0, "신노열", null, 0, null, 62, 33, 67, 0, 1985, 2190, null, null],
|
||||
[0, "신동원", null, 0, null, 76, 80, 44, 0, 1985, 2190, null, null],
|
||||
[0, "이영한", null, 0, null, 78, 84, 39, 0, 1985, 2190, null, null],
|
||||
[0, "김민철", null, 0, null, 99, 90, 97, 0, 1985, 2190, null, null],
|
||||
[0, "김동현", null, 0, null, 63, 32, 62, 0, 1985, 2190, null, null],
|
||||
[0, "서경종", null, 0, null, 73, 63, 54, 0, 1985, 2190, null, null],
|
||||
[0, "이승석", null, 0, null, 59, 63, 23, 0, 1985, 2190, null, null],
|
||||
[0, "김성대", null, 0, null, 79, 77, 67, 0, 1985, 2190, null, null],
|
||||
[0, "박상익", null, 0, null, 57, 43, 62, 0, 1985, 2190, null, null],
|
||||
[0, "신대근", null, 0, null, 47, 39, 37, 0, 1985, 2190, null, null],
|
||||
[0, "나경보", null, 0, null, 58, 50, 69, 0, 1985, 2190, null, null],
|
||||
[0, "김재춘", null, 0, null, 58, 48, 50, 0, 1985, 2190, null, null],
|
||||
[0, "고강민", null, 0, null, 75, 73, 45, 0, 1985, 2190, null, null],
|
||||
[0, "주영달", null, 0, null, 50, 69, 61, 0, 1985, 2190, null, null],
|
||||
[0, "박신영", null, 0, null, 50, 61, 34, 0, 1985, 2190, null, null],
|
||||
[0, "김경모", null, 0, null, 70, 78, 61, 0, 1985, 2190, null, null],
|
||||
[0, "정영주", null, 0, null, 53, 52, 33, 0, 1985, 2190, null, null],
|
||||
[0, "윤종민", null, 0, null, 56, 51, 42, 0, 1985, 2190, null, null],
|
||||
[0, "배병우", null, 0, null, 50, 53, 60, 0, 1985, 2190, null, null],
|
||||
[0, "임정현", null, 0, null, 67, 71, 36, 0, 1985, 2190, null, null],
|
||||
[0, "김현우", null, 0, null, 54, 55, 59, 0, 1985, 2190, null, null],
|
||||
[0, "임동혁", null, 0, null, 53, 48, 65, 0, 1985, 2190, null, null],
|
||||
[0, "권수현", null, 0, null, 61, 55, 33, 0, 1985, 2190, null, null],
|
||||
[0, "유준희", null, 0, null, 60, 32, 32, 0, 1985, 2190, null, null],
|
||||
[0, "어윤수", null, 0, null, 68, 33, 76, 0, 1985, 2190, null, null],
|
||||
[0, "박현준", null, 0, null, 61, 39, 53, 0, 1985, 2190, null, null],
|
||||
[0, "안석열", null, 0, null, 59, 30, 46, 0, 1985, 2190, null, null],
|
||||
[0, "변성철", null, 0, null, 49, 54, 60, 0, 1985, 2190, null, null],
|
||||
[0, "성준모", null, 0, null, 55, 66, 62, 0, 1985, 2190, null, null],
|
||||
[0, "박문기", null, 0, null, 51, 46, 31, 0, 1985, 2190, null, null],
|
||||
[0, "김완철", null, 0, null, 49, 44, 34, 0, 1985, 2190, null, null],
|
||||
[0, "김갑용", null, 0, null, 51, 56, 43, 0, 1985, 2190, null, null],
|
||||
[0, "한두열", null, 0, null, 48, 48, 62, 0, 1985, 2190, null, null],
|
||||
[0, "임정호", null, 0, null, 55, 60, 62, 0, 1985, 2190, null, null],
|
||||
[0, "김신덕", null, 0, null, 52, 49, 65, 0, 1985, 2190, null, null],
|
||||
[0, "국기봉", null, 0, null, 61, 68, 33, 0, 1985, 2190, null, null],
|
||||
[0, "이정현", null, 0, null, 49, 55, 49, 0, 1985, 2190, null, null],
|
||||
[0, "봉준구", null, 0, null, 52, 48, 63, 0, 1985, 2190, null, null],
|
||||
[0, "정명호", null, 0, null, 61, 61, 52, 0, 1985, 2190, null, null],
|
||||
[0, "김태훈Z", null, 0, null, 55, 49, 36, 0, 1985, 2190, null, null],
|
||||
[0, "김준호", null, 0, null, 60, 48, 39, 0, 1985, 2190, null, null],
|
||||
[0, "민광현", null, 0, null, 47, 63, 39, 0, 1985, 2190, null, null],
|
||||
[0, "임균태", null, 0, null, 49, 61, 57, 0, 1985, 2190, null, null],
|
||||
[0, "박효민", null, 0, null, 57, 59, 43, 0, 1985, 2190, null, null],
|
||||
[0, "이예훈", null, 0, null, 56, 37, 56, 0, 1985, 2190, null, null],
|
||||
[0, "김종성", null, 0, null, 56, 60, 35, 0, 1985, 2190, null, null],
|
||||
[0, "안준영", null, 0, null, 56, 46, 58, 0, 1985, 2190, null, null],
|
||||
[0, "이태우", null, 0, null, 55, 57, 33, 0, 1985, 2190, null, null],
|
||||
[0, "신우진", null, 0, null, 46, 59, 61, 0, 1985, 2190, null, null],
|
||||
[0, "임홍규", null, 0, null, 47, 48, 64, 0, 1985, 2190, null, null],
|
||||
[0, "김수한", null, 0, null, 61, 68, 45, 0, 1985, 2190, null, null],
|
||||
[0, "한정근", null, 0, null, 56, 36, 33, 0, 1985, 2190, null, null],
|
||||
[0, "창석준", null, 0, null, 52, 40, 62, 0, 1985, 2190, null, null],
|
||||
[0, "손승재", null, 0, null, 55, 39, 65, 0, 1985, 2190, null, null],
|
||||
[0, "정우서", null, 0, null, 51, 60, 64, 0, 1985, 2190, null, null],
|
||||
[0, "최진우", null, 0, null, 58, 47, 39, 0, 1985, 2190, null, null],
|
||||
[0, "김시훈", null, 0, null, 58, 36, 39, 0, 1985, 2190, null, null],
|
||||
[0, "조성봉", null, 0, null, 58, 31, 33, 0, 1985, 2190, null, null],
|
||||
[0, "방태수", null, 0, null, 52, 53, 61, 0, 1985, 2190, null, null],
|
||||
[0, "강동현", null, 0, null, 45, 51, 36, 0, 1985, 2190, null, null],
|
||||
[0, "이근택", null, 0, null, 47, 39, 56, 0, 1985, 2190, null, null],
|
||||
[0, "김중엽", null, 0, null, 52, 33, 69, 0, 1985, 2190, null, null],
|
||||
[0, "조창우", null, 0, null, 57, 68, 44, 0, 1985, 2190, null, null],
|
||||
[0, "안형모", null, 0, null, 53, 61, 33, 0, 1985, 2190, null, null],
|
||||
[0, "강석", null, 0, null, 50, 65, 67, 0, 1985, 2190, null, null],
|
||||
[0, "황성욱", null, 0, null, 49, 30, 48, 0, 1985, 2190, null, null],
|
||||
[0, "지영훈", null, 0, null, 45, 65, 56, 0, 1985, 2190, null, null],
|
||||
[0, "김경훈", null, 0, null, 53, 52, 34, 0, 1985, 2190, null, null],
|
||||
[0, "장지수", null, 0, null, 61, 47, 61, 0, 1985, 2190, null, null],
|
||||
[0, "백진용", null, 0, null, 45, 51, 49, 0, 1985, 2190, null, null],
|
||||
[0, "정재우Z", null, 0, null, 51, 53, 38, 0, 1985, 2190, null, null],
|
||||
[0, "노재상", null, 0, null, 51, 56, 40, 0, 1985, 2190, null, null],
|
||||
[0, "장일석", null, 0, null, 47, 37, 34, 0, 1985, 2190, null, null],
|
||||
[0, "이정진", null, 0, null, 47, 41, 32, 0, 1985, 2190, null, null],
|
||||
[0, "이진수", null, 0, null, 45, 60, 58, 0, 1985, 2190, null, null],
|
||||
[0, "한지원", null, 0, null, 48, 34, 63, 0, 1985, 2190, null, null],
|
||||
[0, "박경호", null, 0, null, 46, 43, 40, 0, 1985, 2190, null, null],
|
||||
[0, "이병렬", null, 0, null, 56, 38, 59, 0, 1985, 2190, null, null],
|
||||
[0, "김현철", null, 0, null, 49, 64, 48, 0, 1985, 2190, null, null],
|
||||
[0, "정대희", null, 0, null, 45, 48, 30, 0, 1985, 2190, null, null],
|
||||
[0, "임현진", null, 0, null, 51, 68, 60, 0, 1985, 2190, null, null],
|
||||
[0, "유두현", null, 0, null, 58, 61, 61, 0, 1985, 2190, null, null],
|
||||
[0, "유현근", null, 0, null, 60, 39, 42, 0, 1985, 2190, null, null],
|
||||
[0, "김동현1", null, 0, null, 46, 64, 46, 0, 1985, 2190, null, null],
|
||||
[0, "임민재", null, 0, null, 57, 42, 49, 0, 1985, 2190, null, null],
|
||||
[0, "서상훈", null, 0, null, 49, 32, 40, 0, 1985, 2190, null, null],
|
||||
[0, "최재웅", null, 0, null, 52, 39, 69, 0, 1985, 2190, null, null],
|
||||
[0, "장광우", null, 0, null, 50, 33, 53, 0, 1985, 2190, null, null],
|
||||
[0, "임우진", null, 0, null, 56, 64, 50, 0, 1985, 2190, null, null],
|
||||
[0, "오삼택", null, 0, null, 47, 31, 55, 0, 1985, 2190, null, null],
|
||||
[0, "곽주훈", null, 0, null, 57, 45, 54, 0, 1985, 2190, null, null],
|
||||
[0, "조귀환", null, 0, null, 55, 36, 44, 0, 1985, 2190, null, null],
|
||||
[0, "임두성", null, 0, null, 45, 33, 60, 0, 1985, 2190, null, null],
|
||||
[0, "송영진", null, 0, null, 51, 44, 50, 0, 1985, 2190, null, null],
|
||||
[0, "장경호", null, 0, null, 52, 62, 37, 0, 1985, 2190, null, null],
|
||||
[0, "채정원", null, 0, null, 60, 34, 40, 0, 1985, 2190, null, null],
|
||||
[0, "김성운", null, 0, null, 51, 59, 47, 0, 1985, 2190, null, null],
|
||||
[0, "이창우", null, 0, null, 54, 51, 54, 0, 1985, 2190, null, null],
|
||||
[0, "방현성", null, 0, null, 56, 36, 58, 0, 1985, 2190, null, null],
|
||||
[0, "박대현", null, 0, null, 61, 45, 62, 0, 1985, 2190, null, null],
|
||||
[0, "위조운", null, 0, null, 56, 68, 48, 0, 1985, 2190, null, null],
|
||||
[0, "최승윤", null, 0, null, 59, 42, 62, 0, 1985, 2190, null, null],
|
||||
[0, "전대한", null, 0, null, 61, 48, 69, 0, 1985, 2190, null, null],
|
||||
[0, "최익준", null, 0, null, 56, 61, 66, 0, 1985, 2190, null, null],
|
||||
[0, "강병수", null, 0, null, 57, 46, 45, 0, 1985, 2190, null, null],
|
||||
[0, "김경범", null, 0, null, 55, 68, 66, 0, 1985, 2190, null, null],
|
||||
[0, "염현규", null, 0, null, 54, 37, 64, 0, 1985, 2190, null, null],
|
||||
[0, "김범성", null, 0, null, 51, 69, 50, 0, 1985, 2190, null, null],
|
||||
[0, "정영진", null, 0, null, 55, 32, 67, 0, 1985, 2190, null, null],
|
||||
[0, "김준석", null, 0, null, 61, 41, 53, 0, 1985, 2190, null, null],
|
||||
[0, "최육신", null, 0, null, 58, 50, 48, 0, 1985, 2190, null, null],
|
||||
[0, "빅터마틴", null, 0, null, 50, 47, 36, 0, 1985, 2190, null, null],
|
||||
[0, "홍승진", null, 0, null, 60, 43, 37, 0, 1985, 2190, null, null],
|
||||
[0, "이중헌", null, 0, null, 46, 47, 49, 0, 1985, 2190, null, null],
|
||||
[0, "한재웅", null, 0, null, 46, 58, 63, 0, 1985, 2190, null, null],
|
||||
[0, "김민우Z", null, 0, null, 45, 58, 62, 0, 1985, 2190, null, null],
|
||||
[0, "유기성", null, 0, null, 61, 45, 30, 0, 1985, 2190, null, null],
|
||||
[0, "고한석", null, 0, null, 50, 33, 34, 0, 1985, 2190, null, null],
|
||||
[0, "전현진", null, 0, null, 45, 66, 34, 0, 1985, 2190, null, null],
|
||||
[0, "김정근", null, 0, null, 58, 35, 58, 0, 1985, 2190, null, null],
|
||||
[0, "함상우", null, 0, null, 49, 31, 61, 0, 1985, 2190, null, null],
|
||||
[0, "김인철", null, 0, null, 54, 52, 59, 0, 1985, 2190, null, null],
|
||||
[0, "안형진", null, 0, null, 52, 48, 35, 0, 1985, 2190, null, null],
|
||||
[0, "안진영", null, 0, null, 45, 53, 37, 0, 1985, 2190, null, null],
|
||||
[0, "장영환", null, 0, null, 56, 65, 59, 0, 1985, 2190, null, null],
|
||||
[0, "나용준", null, 0, null, 52, 61, 43, 0, 1985, 2190, null, null],
|
||||
[0, "차대한", null, 0, null, 57, 44, 52, 0, 1985, 2190, null, null],
|
||||
[0, "이병열", null, 0, null, 51, 55, 31, 0, 1985, 2190, null, null],
|
||||
[0, "김용혁", null, 0, null, 55, 67, 38, 0, 1985, 2190, null, null],
|
||||
[0, "김민규Z", null, 0, null, 50, 43, 22, 0, 1985, 2190, null, null],
|
||||
[0, "김영미", null, 0, null, 93, 83, 90, 0, 1985, 2190, null, null],
|
||||
[0, "이은경", null, 0, null, 92, 91, 79, 0, 1985, 2190, null, null],
|
||||
[0, "한미경", null, 0, null, 94, 88, 85, 0, 1985, 2190, null, null],
|
||||
[0, "최안나", null, 0, null, 89, 92, 79, 0, 1985, 2190, null, null],
|
||||
[0, "김가을", null, 0, null, 99, 100, 92, 0, 1985, 2190, null, null],
|
||||
[0, "안소정", null, 0, null, 87, 94, 76, 0, 1985, 2190, null, null],
|
||||
[0, "염선희", null, 0, null, 89, 81, 88, 0, 1985, 2190, null, null],
|
||||
[0, "박소현", null, 0, null, 92, 76, 98, 0, 1985, 2190, null, null],
|
||||
[0, "이지혜", null, 0, null, 89, 89, 89, 0, 1985, 2190, null, null],
|
||||
[0, "김지은", null, 0, null, 92, 87, 93, 0, 1985, 2190, null, null],
|
||||
[0, "강민경", null, 0, null, 88, 71, 97, 0, 1985, 2190, null, null],
|
||||
[0, "이현주", null, 0, null, 97, 98, 90, 0, 1985, 2190, null, null],
|
||||
[0, "김지혜", null, 0, null, 98, 94, 89, 0, 1985, 2190, null, null],
|
||||
[0, "이종미", null, 0, null, 102, 96, 103, 0, 1985, 2190, null, null],
|
||||
[0, "윤지현", null, 0, null, 99, 90, 104, 0, 1985, 2190, null, null],
|
||||
[0, "김정민", null, 0, null, 92, 88, 93, 0, 1985, 2190, null, null],
|
||||
[0, "조용호", null, 0, null, 100, 99, 94, 0, 1985, 2190, null, null],
|
||||
[0, "변길섭", null, 0, null, 89, 99, 78, 0, 1985, 2190, null, null],
|
||||
[0, "이재훈", null, 0, null, 80, 79, 85, 0, 1985, 2190, null, null],
|
||||
[0, "박경락", null, 0, null, 94, 97, 79, 0, 1985, 2190, null, null],
|
||||
[0, "최인규", null, 0, null, 87, 81, 84, 0, 1985, 2190, null, null],
|
||||
[0, "나도현", null, 0, null, 91, 93, 79, 0, 1985, 2190, null, null],
|
||||
[0, "성학승", null, 0, null, 78, 82, 79, 0, 1985, 2190, null, null],
|
||||
[0, "강도경", null, 0, null, 92, 83, 94, 0, 1985, 2190, null, null],
|
||||
[0, "변은종", null, 0, null, 78, 88, 71, 0, 1985, 2190, null, null],
|
||||
[0, "박용욱", null, 0, null, 92, 90, 92, 0, 1985, 2190, null, null],
|
||||
[0, "이병민", null, 0, null, 90, 91, 73, 0, 1985, 2190, null, null],
|
||||
[0, "박지수", null, 0, null, 93, 93, 93, 0, 1985, 2190, null, null],
|
||||
[0, "장진남", null, 0, null, 82, 79, 83, 0, 1985, 2190, null, null],
|
||||
[0, "이재항", null, 0, null, 67, 81, 35, 0, 1985, 2190, null, null],
|
||||
[0, "김동건", null, 0, null, 67, 70, 32, 0, 1985, 2190, null, null],
|
||||
[0, "김근백", null, 0, null, 64, 62, 42, 0, 1985, 2190, null, null],
|
||||
[0, "최우범", null, 0, null, 90, 15, 64, 0, 1985, 2190, null, null],
|
||||
[0, "임성춘", null, 0, null, 93, 91, 46, 0, 1985, 2190, null, null],
|
||||
[0, "한웅렬", null, 0, null, 75, 80, 31, 0, 1985, 2190, null, null],
|
||||
[0, "한승엽", null, 0, null, 88, 63, 88, 0, 1985, 2190, null, null],
|
||||
[0, "베르트랑", null, 0, null, 99, 63, 72, 0, 1985, 2190, null, null],
|
||||
[0, "삼성박성준", null, 0, null, 74, 63, 43, 0, 1985, 2190, null, null],
|
||||
[0, "장진수", null, 0, null, 82, 83, 79, 0, 1985, 2190, null, null],
|
||||
[0, "박성훈", null, 0, null, 62, 42, 51, 0, 1985, 2190, null, null],
|
||||
[0, "조정현", null, 0, null, 84, 87, 45, 0, 1985, 2190, null, null],
|
||||
[0, "심소명", null, 0, null, 49, 32, 41, 0, 1985, 2190, null, null],
|
||||
[0, "김현진", null, 0, null, 69, 74, 43, 0, 1985, 2190, null, null],
|
||||
[0, "박정길", null, 0, null, 60, 32, 45, 0, 1985, 2190, null, null],
|
||||
[0, "김윤환T", null, 0, null, 74, 67, 52, 0, 1985, 2190, null, null],
|
||||
[0, "이창훈", null, 0, null, 64, 34, 67, 0, 1985, 2190, null, null],
|
||||
[0, "이현승", null, 0, null, 71, 63, 48, 0, 1985, 2190, null, null],
|
||||
[0, "김상욱", null, 0, null, 46, 66, 63, 0, 1985, 2190, null, null],
|
||||
[0, "김동수", null, 0, null, 97, 99, 89, 0, 1985, 2190, null, null],
|
||||
[0, "신정민", null, 0, null, 64, 54, 57, 0, 1985, 2190, null, null],
|
||||
[0, "이운재", null, 0, null, 75, 47, 44, 0, 1985, 2190, null, null],
|
||||
[0, "조형근", null, 0, null, 61, 35, 62, 0, 1985, 2190, null, null],
|
||||
[0, "김남기", null, 0, null, 49, 41, 63, 0, 1985, 2190, null, null],
|
||||
[0, "주현준", null, 0, null, 64, 38, 47, 0, 1985, 2190, null, null],
|
||||
[0, "송병석", null, 0, null, 18, 69, 32, 0, 1985, 2190, null, null],
|
||||
[0, "김정환", null, 0, null, 70, 45, 56, 0, 1985, 2190, null, null],
|
||||
[0, "정영철", null, 0, null, 64, 46, 36, 0, 1985, 2190, null, null],
|
||||
[0, "정재호", null, 0, null, 63, 58, 31, 0, 1985, 2190, null, null],
|
||||
[0, "김민구", null, 0, null, 62, 61, 35, 0, 1985, 2190, null, null],
|
||||
[0, "조병호", null, 0, null, 63, 61, 56, 0, 1985, 2190, null, null],
|
||||
[0, "김동주", null, 0, null, 71, 57, 36, 0, 1985, 2190, null, null],
|
||||
[0, "도진광", null, 0, null, 76, 56, 51, 0, 1985, 2190, null, null],
|
||||
[0, "이재황", null, 0, null, 65, 54, 64, 0, 1985, 2190, null, null],
|
||||
[0, "손영훈", null, 0, null, 62, 46, 32, 0, 1985, 2190, null, null],
|
||||
[0, "이호준", null, 0, null, 61, 31, 45, 0, 1985, 2190, null, null],
|
||||
[0, "조용성", null, 0, null, 62, 36, 58, 0, 1985, 2190, null, null],
|
||||
[0, "임채성", null, 0, null, 64, 49, 35, 0, 1985, 2190, null, null],
|
||||
[0, "박동욱", null, 0, null, 71, 38, 40, 0, 1985, 2190, null, null],
|
||||
[0, "박영훈", null, 0, null, 59, 59, 47, 0, 1985, 2190, null, null],
|
||||
[0, "김경호", null, 0, null, 56, 57, 53, 0, 1985, 2190, null, null],
|
||||
[0, "손승완", null, 0, null, 57, 35, 53, 0, 1985, 2190, null, null],
|
||||
[0, "김동진", null, 0, null, 63, 46, 34, 0, 1985, 2190, null, null],
|
||||
[0, "장육", null, 0, null, 78, 32, 33, 0, 1985, 2190, null, null],
|
||||
[0, "이용범", null, 0, null, 63, 46, 63, 0, 1985, 2190, null, null],
|
||||
[0, "김상우", null, 0, null, 48, 49, 31, 0, 1985, 2190, null, null],
|
||||
[0, "문준희", null, 0, null, 69, 99, 35, 0, 1985, 2190, null, null],
|
||||
[0, "박동수", null, 0, null, 45, 67, 59, 0, 1985, 2190, null, null],
|
||||
[0, "박대경", null, 0, null, 65, 34, 56, 0, 1985, 2190, null, null],
|
||||
[0, "임재덕", null, 0, null, 74, 45, 35, 0, 1985, 2190, null, null],
|
||||
[0, "김원기", null, 0, null, 51, 58, 53, 0, 1985, 2190, null, null],
|
||||
[0, "유대현", null, 0, null, 84, 43, 90, 0, 1985, 2190, null, null],
|
||||
[0, "김동우", null, 0, null, 64, 37, 64, 0, 1985, 2190, null, null],
|
||||
[0, "김민호", null, 0, null, 46, 44, 59, 0, 1985, 2190, null, null],
|
||||
[0, "이건준", null, 0, null, 52, 43, 48, 0, 1985, 2190, null, null],
|
||||
[0, "김세현", null, 0, null, 63, 66, 33, 0, 1985, 2190, null, null],
|
||||
[0, "이유석", null, 0, null, 51, 67, 44, 0, 1985, 2190, null, null],
|
||||
[0, "김성곤", null, 0, null, 67, 58, 41, 0, 1985, 2190, null, null],
|
||||
[0, "오민규", null, 0, null, 66, 47, 68, 0, 1985, 2190, null, null],
|
||||
[0, "최윤선", null, 0, null, 64, 69, 42, 0, 1985, 2190, null, null],
|
||||
[0, "이예준", null, 0, null, 24, 61, 62, 0, 1985, 2190, null, null],
|
||||
[0, "문지훈", null, 0, null, 63, 56, 34, 0, 1985, 2190, null, null],
|
||||
[0, "장용석", null, 0, null, 66, 55, 44, 0, 1985, 2190, null, null],
|
||||
[0, "유인봉", null, 0, null, 62, 64, 60, 0, 1985, 2190, null, null],
|
||||
[0, "김동준", null, 0, null, 86, 72, 93, 0, 1985, 2190, null, null]
|
||||
],
|
||||
"general_ex":[
|
||||
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"title":"【공백지】 충차전",
|
||||
"startYear":180,
|
||||
"map":{
|
||||
"mapName":"che",
|
||||
"unitSet":"siegetank"
|
||||
},
|
||||
"stat":{
|
||||
"chiefMin":9
|
||||
},
|
||||
"history": [
|
||||
"<C>●</>180년 1월:<L><b>【이벤트】</b></>병기로 싸운다! 최고의 충차 지휘관을 가린다"
|
||||
],
|
||||
"initialEvents":[
|
||||
[
|
||||
true,
|
||||
["ChangeCity", "free", {
|
||||
"pop":"70%",
|
||||
"agri":"70%",
|
||||
"comm":"70%",
|
||||
"secu":"70%",
|
||||
"rate":80
|
||||
}],
|
||||
["ChangeCity", "occupied", {
|
||||
"pop":"70%",
|
||||
"agri":"70%",
|
||||
"comm":"70%",
|
||||
"secu":"70%",
|
||||
"rate":80,
|
||||
"def":"70%",
|
||||
"wall":"70%"
|
||||
}]
|
||||
]
|
||||
],
|
||||
"events":[
|
||||
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
class GameUnitConst extends GameUnitConstBase
|
||||
{
|
||||
const DEFAULT_CREWTYPE = 0;
|
||||
|
||||
protected static $_buildData = [
|
||||
[
|
||||
-1, self::T_CASTLE, '성벽',
|
||||
100, 100, 7, 0, 0, 99, 9,
|
||||
999999, null, null, 999999,
|
||||
[],//성벽은 공격할 수 없다.
|
||||
[self::T_FOOTMAN=>1.2],
|
||||
['성벽입니다.','생성할 수 없습니다.']
|
||||
],
|
||||
|
||||
[
|
||||
0, self::T_FOOTMAN, '보병',
|
||||
100, 150, 7, 10, 0, 9, 9,
|
||||
0, null, null, 0,
|
||||
[self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8, self::T_SIEGE=>1.2],
|
||||
[self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2, self::T_SIEGE=>0.8],
|
||||
['표준적인 보병입니다.','보병은 방어특화이며, 상대가 회피하기 어렵습니다.']
|
||||
],
|
||||
|
||||
[
|
||||
10, self::T_ARCHER, '궁병',
|
||||
100, 100, 7, 20, 0, 10, 10,
|
||||
0, null, null, 0,
|
||||
[self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8, self::T_SIEGE=>1.2],
|
||||
[self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2, self::T_SIEGE=>0.8],
|
||||
['표준적인 궁병입니다.','궁병은 회피특화입니다.']
|
||||
],
|
||||
|
||||
[
|
||||
20, self::T_CAVALRY, '기병',
|
||||
150, 100, 7, 5, 0, 11, 11,
|
||||
0, null, null, 0,
|
||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8, self::T_SIEGE=>1.2],
|
||||
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2, self::T_SIEGE=>0.8],
|
||||
['표준적인 기병입니다.','기병은 공격특화입니다.']
|
||||
],
|
||||
|
||||
[
|
||||
30, self::T_WIZARD, '귀병',
|
||||
80, 80, 7, 5, 0.5, 9, 9,
|
||||
0, null, null, 0,
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['계략을 사용하는 병종입니다.']
|
||||
],
|
||||
[
|
||||
35, self::T_WIZARD, '남귀병',
|
||||
60, 60, 7, 10, 0.8, 8, 8,
|
||||
1000, null, null, 0,
|
||||
[self::T_SIEGE=>1.2],
|
||||
[self::T_SIEGE=>0.8],
|
||||
['전투를 포기하고 계략에 몰두합니다.']
|
||||
],
|
||||
|
||||
[
|
||||
40, self::T_SIEGE, '정란',
|
||||
100, 100, 6, 0, 0, 15, 5,
|
||||
0, null, null, 3,
|
||||
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>1.8],
|
||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2],
|
||||
['높은 구조물 위에서 공격합니다.']
|
||||
],
|
||||
[
|
||||
41, self::T_SIEGE, '충차',
|
||||
150, 100, 6, 0, 0, 20, 5,
|
||||
1000, null, null, 3,
|
||||
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>0.8, self::T_CAVALRY=>0.8, self::T_WIZARD=>0.8, self::T_CASTLE=>2.4],
|
||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>1.2, self::T_CAVALRY=>1.2, self::T_WIZARD=>1.2],
|
||||
['엄청난 위력으로 성벽을 부수어버립니다.']
|
||||
]
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
class GameUnitConst extends GameUnitConstBase
|
||||
{
|
||||
const DEFAULT_CREWTYPE = 40;
|
||||
|
||||
protected static $_buildData = [
|
||||
[
|
||||
-1, self::T_CASTLE, '성벽',
|
||||
100, 100, 7, 0, 0, 99, 9,
|
||||
999999, null, null, 999999,
|
||||
[],//성벽은 공격할 수 없다.
|
||||
[self::T_FOOTMAN=>1.2],
|
||||
['성벽입니다.','생성할 수 없습니다.']
|
||||
],
|
||||
[
|
||||
0, self::T_FOOTMAN, '보병',
|
||||
100, 150, 7, 10, 0, 18, 18,
|
||||
0, null, null, 0,
|
||||
[self::T_ARCHER=>1.2, self::T_CAVALRY=>0.8],
|
||||
[self::T_ARCHER=>0.8, self::T_CAVALRY=>1.2],
|
||||
['표준적인 보병입니다.','보병은 방어특화이며, 상대가 회피하기 어렵습니다.']
|
||||
],
|
||||
|
||||
[
|
||||
10, self::T_ARCHER, '궁병',
|
||||
100, 100, 7, 20, 0, 20, 20,
|
||||
0, null, null, 0,
|
||||
[self::T_CAVALRY=>1.2, self::T_FOOTMAN=>0.8],
|
||||
[self::T_CAVALRY=>0.8, self::T_FOOTMAN=>1.2],
|
||||
['표준적인 궁병입니다.','궁병은 회피특화입니다.']
|
||||
],
|
||||
|
||||
[
|
||||
20, self::T_CAVALRY, '기병',
|
||||
150, 100, 7, 5, 0, 22, 22,
|
||||
0, null, null, 0,
|
||||
[self::T_FOOTMAN=>1.2, self::T_ARCHER=>0.8],
|
||||
[self::T_FOOTMAN=>0.8, self::T_ARCHER=>1.2],
|
||||
['표준적인 기병입니다.','기병은 공격특화입니다.']
|
||||
],
|
||||
|
||||
[
|
||||
30, self::T_WIZARD, '귀병',
|
||||
80, 80, 7, 5, 0.5, 18, 18,
|
||||
0, null, null, 0,
|
||||
[],
|
||||
[],
|
||||
['계략을 사용하는 병종입니다.']
|
||||
],
|
||||
[
|
||||
35, self::T_WIZARD, '남귀병',
|
||||
60, 60, 7, 10, 0.8, 16, 16,
|
||||
1000, null, null, 0,
|
||||
[],
|
||||
[],
|
||||
['전투를 포기하고 계략에 몰두합니다.']
|
||||
],
|
||||
|
||||
[
|
||||
40, self::T_SIEGE, '정란',
|
||||
100, 100, 6, 0, 0, 7, 3,
|
||||
0, null, null, 0,
|
||||
[self::T_CASTLE=>1.8],
|
||||
[],
|
||||
['높은 구조물 위에서 공격합니다.']
|
||||
],
|
||||
[
|
||||
41, self::T_SIEGE, '충차',
|
||||
150, 100, 6, 0, 0, 10, 3,
|
||||
1000, null, null, 3,
|
||||
[self::T_CASTLE=>2.4],
|
||||
[],
|
||||
['엄청난 위력으로 성벽을 부수어버립니다.']
|
||||
],
|
||||
[
|
||||
42, self::T_SIEGE, '벽력거',
|
||||
200, 100, 6, 0, 0, 20, 4,
|
||||
3000, ['업'], null, 0,
|
||||
[self::T_CASTLE=>1.8],
|
||||
[],
|
||||
['상대에게 돌덩이를 날립니다.']
|
||||
],
|
||||
[
|
||||
43, self::T_SIEGE, '목우',
|
||||
50, 200, 5, 0, 0, 15, 3,
|
||||
3000, ['성도'], null, 0,
|
||||
[],
|
||||
[],
|
||||
['상대를 저지하는 특수병기입니다.']
|
||||
]
|
||||
];
|
||||
}
|
||||
+43
-5
@@ -26,7 +26,7 @@ $nationList = $db->query('SELECT nation,`name`,color,scout,scoutmsg FROM nation
|
||||
<title><?=UniqueConst::$serverName?>: NPC빙의</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=1024" />
|
||||
<meta name="viewport" content="style='width:1024" />
|
||||
<?=WebUtil::printCSS('../e_lib/bootstrap.min.css')?>
|
||||
<?=WebUtil::printCSS('../d_shared/common.css')?>
|
||||
<?=WebUtil::printCSS('../css/config.css')?>
|
||||
@@ -50,7 +50,16 @@ foreach (SpecialityConst::WAR as $id=>$values) {
|
||||
$specialAll['-'] = '없음';
|
||||
echo Json::encode($specialAll);
|
||||
?>
|
||||
;
|
||||
;
|
||||
var characterInfo =
|
||||
<?php
|
||||
$characterAll = [];
|
||||
foreach(getCharacterList() as $id=>[$name, $info]){
|
||||
$characterAll[$name] = $info;
|
||||
}
|
||||
echo Json::encode($characterAll);
|
||||
?>
|
||||
;
|
||||
</script>
|
||||
|
||||
<?=WebUtil::printJS('../d_shared/common_path.js')?>
|
||||
@@ -63,7 +72,7 @@ echo Json::encode($specialAll);
|
||||
|
||||
|
||||
<?php
|
||||
if ($gencount >= $maxgeneral) {
|
||||
if ($gencount>= $maxgeneral) {
|
||||
?>
|
||||
|
||||
<body>
|
||||
@@ -93,9 +102,38 @@ history.go(-1);
|
||||
<form class="card_holder">
|
||||
</form>
|
||||
</div>
|
||||
<div class="with_border legacy_layout" style="text-align:center">
|
||||
<button id="btn_pick_more" disabled="disabled" class="with_skin with_border">다른 장수 보기</button><br>
|
||||
<div class="with_border legacy_layout" style="text-align:center; padding-top:20px; padding-bottom:20px;">
|
||||
<button type="button" id="btn_pick_more" disabled="disabled" class="with_skin with_border">다른 장수 보기</button><button type="button" id="btn_load_general_list" class="with_skin with_border" style='margin-left:2ch;'>장수 목록 보기</button><br>
|
||||
</div>
|
||||
|
||||
<table style='width:970px;table-layout: fixed;display:none; margin-bottom:20px;' class="tb_layout bg0" id='tb_general_list'>
|
||||
<thead>
|
||||
<tr class='bg1'>
|
||||
<th style='width:64px;'>얼 굴</td>
|
||||
<th style='width:140px;'>이 름</td>
|
||||
<th style='width:40px;'>연령</td>
|
||||
<th style='width:40px;'>성격</td>
|
||||
<th style='width:80px;'>특기</td>
|
||||
<th style='width:45px;'>레 벨</td>
|
||||
<th style='width:140px;'>국 가</td>
|
||||
<th style='width:50px;'>명 성</td>
|
||||
<th style='width:50px;'>계 급</td>
|
||||
<th style='width:75px;'>관 직</td>
|
||||
<th style='width:60px;'>종능</td>
|
||||
<th style='width:45px;'>통솔</td>
|
||||
<th style='width:45px;'>무력</td>
|
||||
<th style='width:45px;'>지력</td>
|
||||
<th style='width:45px;'>삭턴</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id='general_list'>
|
||||
</tbody>
|
||||
<tfoot id='row_print_more' style='display:none;'>
|
||||
<tr>
|
||||
<td colspan="15"><button type="button" class="with_skin with_border" id="btn_print_more" style="width:100%;">장수 더 보기</button></td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<div class="with_border legacy_layout"><?=backButton()?></div>
|
||||
<div class="with_border legacy_layout"><?=banner()?></div>
|
||||
</div>
|
||||
|
||||
+3
-1
@@ -438,6 +438,7 @@ ENGINE=InnoDB;
|
||||
CREATE TABLE IF NOT EXISTS `ng_hall` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`server_id` CHAR(20) NOT NULL,
|
||||
`season` INT(11) NOT NULL,
|
||||
`scenario` INT(11) NOT NULL,
|
||||
`general_no` INT(11) NOT NULL,
|
||||
`type` INT(11) NOT NULL,
|
||||
@@ -448,7 +449,7 @@ CREATE TABLE IF NOT EXISTS `ng_hall` (
|
||||
UNIQUE INDEX `server_general` (`server_id`, `type`, `general_no`),
|
||||
UNIQUE INDEX `owner` (`owner`, `server_id`, `type`),
|
||||
INDEX `server_show` (`server_id`, `type`, `value`),
|
||||
INDEX `scenario` (`scenario`, `type`, `value`)
|
||||
INDEX `scenario` (`season`, `scenario`, `type`, `value`)
|
||||
)
|
||||
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPRESSED;
|
||||
|
||||
@@ -463,6 +464,7 @@ CREATE TABLE IF NOT EXISTS `ng_games` (
|
||||
`date` DATETIME NOT NULL,
|
||||
`winner_nation` INT(11) NULL DEFAULT NULL,
|
||||
`map` VARCHAR(50) NULL DEFAULT NULL,
|
||||
`season` INT(11) NOT NULL,
|
||||
`scenario` INT(11) NOT NULL,
|
||||
`scenario_name` TEXT NOT NULL,
|
||||
`env` TEXT NOT NULL COMMENT 'json',
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
data-general-nation="<?=$nation?>"
|
||||
data-general-nation-name="<?=$nationName?>"
|
||||
>
|
||||
<td height="64"></td>
|
||||
<td height="64"><img class='generalIcon' width='64' height='64' src='<?=$iconPath?>'></td>
|
||||
<td><?=$nameText?></td>
|
||||
<td><?=$leadershipText?><?=$leadershipBonusText?></td>
|
||||
<td><?=$powerText?></td>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<span class="obj_tooltip" data-toggle="tooltip" data-placement="top"><?=$text??''?>
|
||||
<span class="tooltiptext">
|
||||
<?=$info??''?>
|
||||
</span>
|
||||
</span>
|
||||
<span class="obj_tooltip" data-toggle="tooltip" data-placement="top"
|
||||
><span <?=isset($style)?"style=\"$style\"":''?>><?=$text??''?></span
|
||||
><span class="tooltiptext"
|
||||
><?=$info??''
|
||||
?></span
|
||||
></span>
|
||||
@@ -1,65 +0,0 @@
|
||||
<?php
|
||||
namespace sammo;
|
||||
|
||||
include "lib.php";
|
||||
include "func.php";
|
||||
//로그인 검사
|
||||
|
||||
$type = Util::getReq('type', 'int', 0);
|
||||
$sel = Util::getReq('sel', 'int', 1);
|
||||
|
||||
if($sel <= 0 || $sel > 12){
|
||||
$sel = 1;
|
||||
}
|
||||
|
||||
$session = Session::requireGameLogin()->setReadOnly();
|
||||
$userID = Session::getUserID();
|
||||
|
||||
$db = DB::db();
|
||||
$gameStor = KVStorage::getStorage($db, 'game_env');
|
||||
$connect=$db->get();
|
||||
|
||||
increaseRefresh("턴반복", 1);
|
||||
|
||||
$myActionCnt = $db->queryFirstField('SELECT con FROM general WHERE `owner`=%i', $userID);
|
||||
|
||||
$con = checkLimit($myActionCnt);
|
||||
if($con >= 2) {
|
||||
header('location:commandlist.php');
|
||||
exit();
|
||||
}
|
||||
|
||||
switch($type) {
|
||||
case 0://반복
|
||||
$valueMap = [];
|
||||
foreach(range($sel, GameConst::$maxTurn - 1) as $idx){
|
||||
$src = $idx % $sel;
|
||||
$valueMap['turn'.$idx] = $db->sqleval('%b', 'turn'.$src);
|
||||
}
|
||||
$db->update('general', $valueMap, 'owner=%i', $userID);
|
||||
break;
|
||||
case 1:
|
||||
$valueMap = [];
|
||||
foreach(range(GameConst::$maxTurn -1, $sel, -1) as $idx){
|
||||
$src = $idx - $sel;
|
||||
$valueMap['turn'.$idx] = $db->sqleval('%b', 'turn'.$src);
|
||||
}
|
||||
foreach(range($sel -1, 0, -1) as $idx){
|
||||
$valueMap['turn'.$idx] = EncodeCommand(0, 0, 0, 0);
|
||||
}
|
||||
$db->update('general', $valueMap, 'owner=%i', $userID);
|
||||
break;
|
||||
case 2:
|
||||
$valueMap = [];
|
||||
foreach(range(0, GameConst::$maxTurn - $sel - 1) as $idx){
|
||||
$src = $idx + $sel;
|
||||
$valueMap['turn'.$idx] = $db->sqleval('%b', 'turn'.$src);
|
||||
}
|
||||
foreach(range(GameConst::$maxTurn - $sel, GameConst::$maxTurn - 1) as $idx){
|
||||
$valueMap['turn'.$idx] = EncodeCommand(0, 0, 0, 0);
|
||||
}
|
||||
$db->update('general', $valueMap, 'owner=%i', $userID);
|
||||
break;
|
||||
}
|
||||
|
||||
header('location:commandlist.php');
|
||||
@@ -16,4 +16,4 @@ $me = MYDB_fetch_array($result);
|
||||
|
||||
updateCommand($me['no'], 2);
|
||||
|
||||
header('location:b_chiefcenter.php');
|
||||
header('location:b_chiefcenter.php', true, 303);
|
||||
|
||||
@@ -16,4 +16,4 @@ $me = MYDB_fetch_array($result);
|
||||
|
||||
backupdateCommand($me['no'], 2);
|
||||
|
||||
header('location:b_chiefcenter.php');
|
||||
header('location:b_chiefcenter.php', true, 303);
|
||||
|
||||
@@ -30,9 +30,10 @@ $acl = $session->acl;
|
||||
<?=WebUtil::printCSS('../css/entrance.css')?>
|
||||
|
||||
<!-- 액션 -->
|
||||
<?=WebUtil::printJS('../js/common.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/moment.min.js')?>
|
||||
<?=WebUtil::printJS('../js/common.js')?>
|
||||
<?=WebUtil::printJS('../js/func.js')?>
|
||||
<?=WebUtil::printJS('../js/entrance.js')?>
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ if(!is_uploaded_file($image['tmp_name'])) {
|
||||
|
||||
foreach(AppConf::getList() as $key=>$setting){
|
||||
if($setting->isRunning()){
|
||||
$servers[] = $key;
|
||||
$servers[] = [$key, $setting->getKorName()];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ if($dt == $rf) {
|
||||
foreach(AppConf::getList() as $key=>$setting){
|
||||
|
||||
if($setting->isRunning()){
|
||||
$servers[] = $key;
|
||||
$servers[] = [$key, $setting->getKorName()];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,39 @@ function doServerModeSet($server, $action, &$response, $session){
|
||||
$serverPath = $settingObj->getBasePath();
|
||||
$realServerPath = realpath(dirname(__FILE__)).'/'.$serverPath;
|
||||
|
||||
if($action == 'close' && ($userGrade >= 5 || in_array('openClose', $serverAcl))) { //폐쇄
|
||||
if($action == 'close') { //폐쇄
|
||||
$doClose = false;
|
||||
if($userGrade >= 5){
|
||||
$doClose = true;
|
||||
}
|
||||
else if(in_array('openClose', $serverAcl)){
|
||||
$doClose = true;
|
||||
}
|
||||
|
||||
if(!$doClose && in_array('reset', $serverAcl) && file_exists($serverPath.'/d_setting/DB.php')){
|
||||
require($serverPath.'/lib.php');
|
||||
$localGameStorage = KVStorage::getStorage(DB::db(), 'game_env');
|
||||
//천통 이후, 오픈 직후는 닫을 수 있음
|
||||
$localGameStorage->cacheValues(['isunited', 'startyear', 'year']);
|
||||
|
||||
if($localGameStorage->isunited){
|
||||
$doClose = true;
|
||||
}
|
||||
else if($localGameStorage->year < $localGameStorage->startyear + 2){
|
||||
$doClose = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(!$doClose){
|
||||
if(in_array('reset', $serverAcl)){
|
||||
$response['msg'] = '서버 시작 직후, 또는 천하통일 이후에만 닫을 수 있습니다.';
|
||||
}
|
||||
else{
|
||||
$response['msg'] = '서버 닫기 권한이 부족합니다.';
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return $settingObj->closeServer();
|
||||
} elseif($action == 'reset' && $userGrade >= 6) {//리셋
|
||||
//FIXME: reset, reset_full 구현
|
||||
|
||||
@@ -76,7 +76,7 @@ foreach (AppConf::getList() as $setting) {
|
||||
'korName' => $serverKorName,
|
||||
'color' => $serverColor,
|
||||
'isRoot' => $serverDir == $rootServer,
|
||||
'lastGitPath' => ($serverGitPath[$serverDir][0])??'origin/master'
|
||||
'lastGitPath' => ($serverGitPath[$serverDir][0])??($serverDir == $rootServer?'devel':'origin/devel')
|
||||
];
|
||||
$server[] = $state;
|
||||
}
|
||||
|
||||
@@ -18,10 +18,10 @@ require(__dir__.'/../vendor/autoload.php');
|
||||
<?=WebUtil::printCSS('../css/user_info.css')?>
|
||||
|
||||
<!-- 액션 -->
|
||||
<?=WebUtil::printJS('../d_shared/common_path.js')?>
|
||||
<?=WebUtil::printJS('../js/common.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/jquery-3.3.1.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/bootstrap.bundle.min.js')?>
|
||||
<?=WebUtil::printJS('../d_shared/common_path.js')?>
|
||||
<?=WebUtil::printJS('../js/common.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/sha512.min.js')?>
|
||||
<?=WebUtil::printJS('../e_lib/moment.min.js')?>
|
||||
<?=WebUtil::printJS('../js/func.js')?>
|
||||
@@ -163,7 +163,30 @@ require(__dir__.'/../vendor/autoload.php');
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="chooseServer" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">완료되었습니다.<br>새 아이콘을 적용할 서버를 선택하세요.</h5>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
|
||||
<form id="chooseServerForm">
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">닫기</button>
|
||||
<button type="button" class="btn btn-primary" id="modal-apply">서버 적용</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -196,7 +196,7 @@ function postOAuthResult(result){
|
||||
</div>
|
||||
</div>
|
||||
<div id="bottom_box">
|
||||
<div class="container"><a href="terms.2.html">개인정보처리방침</a> & <a href="terms.1.html">이용약관</a><br>© 2018 • HideD
|
||||
<div class="container"><a href="terms.2.html">개인정보처리방침</a> & <a href="terms.1.html">이용약관</a><br>© 2019 • HideD
|
||||
<br>크롬과 파이어폭스에 최적화되어있습니다.</div></div>
|
||||
</div>
|
||||
|
||||
|
||||
+1
-1
@@ -76,7 +76,7 @@ function kakaoOAuthCheck(array $userInfo) : ?array {
|
||||
$refreshTokenValidUntil = TimeUtil::DatetimeFromNowSecond($refreshResult['refresh_token_expires_in']);
|
||||
|
||||
$oauthInfo['refreshToken'] = $refreshToken;
|
||||
$oauthInfo['refresh_token_expires_in'] = $refresh_token_expires_in;
|
||||
$oauthInfo['refresh_token_expires_in'] = $refreshTokenValidUntil;
|
||||
}
|
||||
|
||||
RootDB::db()->update('member', [
|
||||
|
||||
+58
-6
@@ -58,12 +58,13 @@ if(!$allowUpdate){
|
||||
]);
|
||||
}
|
||||
|
||||
$src_target = $storage->$server;
|
||||
if($src_target){
|
||||
$src_target = $src_target[0];
|
||||
}
|
||||
|
||||
if(!$allowFullUpdate || !$target){
|
||||
$target = $storage->$server;
|
||||
if($target){
|
||||
$target = $target[0];
|
||||
}
|
||||
$target = $src_target;
|
||||
}
|
||||
else{
|
||||
$target = $request['target'];
|
||||
@@ -114,6 +115,26 @@ if(!file_exists($server)){
|
||||
|
||||
|
||||
if($server == $baseServerName){
|
||||
|
||||
exec("git fetch -q 2>&1", $output);
|
||||
if($output){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>'git pull 작업 : '.join(', ', $output)
|
||||
]);
|
||||
}
|
||||
|
||||
if($target != $src_target){
|
||||
$command = sprintf('git checkout %s -q 2>&1', $target);
|
||||
exec($command, $output);
|
||||
if($output){
|
||||
Json::die([
|
||||
'result'=>false,
|
||||
'reason'=>join(', ', $output)
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
exec("git pull -q 2>&1", $output);
|
||||
if($output && $output[0] != 'Already up-to-date.'){
|
||||
Json::die([
|
||||
@@ -129,13 +150,44 @@ if($server == $baseServerName){
|
||||
'verionGit'=>$version
|
||||
], true
|
||||
);
|
||||
|
||||
if(ServConfig::$imageRequestKey){
|
||||
try {
|
||||
$imagePullPath = ServConfig::getImagePullURI();
|
||||
$pullResult = @file_get_contents($imagePullPath);
|
||||
if($pullResult === false){
|
||||
throw new \ErrorException('Invalid URI');
|
||||
}
|
||||
$pullResult = Json::decode($pullResult);
|
||||
if($pullResult['result']){
|
||||
$imgResult = true;
|
||||
$imgDetail = $pullResult['version'];
|
||||
}
|
||||
else{
|
||||
$imgResult = false;
|
||||
$imgDetail = $pullResult['reason'];
|
||||
}
|
||||
}
|
||||
catch(\Exception $e){
|
||||
$imgResult = false;
|
||||
$imgDetail = $e->getMessage();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$imgResult = true;
|
||||
$imgDetail = 'No key';
|
||||
}
|
||||
|
||||
|
||||
|
||||
$storage->$server = [null, $version];
|
||||
$storage->$server = [$target, $version];
|
||||
|
||||
Json::die([
|
||||
'server'=>$server,
|
||||
'result'=>true,
|
||||
'version'=>$version
|
||||
'version'=>$version,
|
||||
'imgResult'=>$imgResult,
|
||||
'imgDetail'=>$imgDetail,
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
+16
-14
@@ -38,22 +38,20 @@ function serverUpdate(caller){
|
||||
return;
|
||||
}
|
||||
|
||||
if(isRoot){
|
||||
if(!confirm('서버 라이브러리, 루트 서버에 대해 git pull을 실행합니다.')){
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if(!allowFullUpdate){
|
||||
if (!confirm('다음 git tree-ish 주소로 업데이트를 시도합니다 : ' + target)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
if(allowFullUpdate){
|
||||
target = prompt('가져올 git tree-ish 명을 입력해주세요.', target)
|
||||
if(!target){
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
else if(isRoot){
|
||||
if(!confirm('서버 라이브러리, 루트 서버에 대해 git pull을 실행합니다.')){
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (!confirm('다음 git tree-ish 주소로 업데이트를 시도합니다 : ' + target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
@@ -66,7 +64,11 @@ function serverUpdate(caller){
|
||||
}
|
||||
}).then(function(response) {
|
||||
if(response.result) {
|
||||
alert('{0} 서버가 {1} 버전으로 업데이트 되었습니다.'.format(response.server, response.version));
|
||||
var aux = '';
|
||||
if(isRoot){
|
||||
aux = ' (이미지 서버 갱신:{0}, {1})'.format(response.imgResult, response.imgDetail);
|
||||
}
|
||||
alert('{0} 서버가 {1} 버전으로 업데이트 되었습니다.{2}'.format(response.server, response.version, aux));
|
||||
location.reload();
|
||||
} else {
|
||||
alert(response.reason);
|
||||
@@ -131,7 +133,7 @@ function drawServerAdminList(serverList){
|
||||
if(!server.installed){
|
||||
return true;
|
||||
}
|
||||
$tr.find('.serv_act_reset').prop('disabled', false);
|
||||
$tr.find('.serv_act_reset, .serv_act_close').prop('disabled', false);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
+48
-1
@@ -141,4 +141,51 @@ function quickReject(errMsg){
|
||||
var deferred = $.Deferred();
|
||||
deferred.reject(errMsg);
|
||||
return deferred.promise();
|
||||
}
|
||||
}
|
||||
|
||||
function initTooltip($obj){
|
||||
if($obj === undefined){
|
||||
$obj = $('.obj_tooltip');
|
||||
}
|
||||
else if(!$obj.hasClass('obj_tooltip')){
|
||||
$obj = $obj.find('.obj_tooltip');
|
||||
}
|
||||
console.log($obj);
|
||||
|
||||
$obj.each(function(){
|
||||
$target = $(this);
|
||||
|
||||
if($target.data('installHandler')){
|
||||
return true;
|
||||
}
|
||||
$target.data('installHandler', true);
|
||||
|
||||
$target.mouseover(function(){
|
||||
var $objTooltip = $(this);
|
||||
if($objTooltip.data('setObjTooltip')){
|
||||
return true;
|
||||
}
|
||||
|
||||
var tooltipClassText = $objTooltip.data('tooltip-class');
|
||||
if(!tooltipClassText){
|
||||
tooltipClassText = '';
|
||||
}
|
||||
var template = '<div class="tooltip {0}" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>'
|
||||
.format(tooltipClassText);
|
||||
|
||||
$objTooltip.tooltip({
|
||||
title:function(){
|
||||
return $.trim($(this).find('.tooltiptext').html());
|
||||
},
|
||||
template:template,
|
||||
html:true
|
||||
}).tooltip('show');
|
||||
|
||||
$objTooltip.data('setObjTooltip', true);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
jQuery(function($){
|
||||
initTooltip();
|
||||
});
|
||||
+41
-11
@@ -1,8 +1,9 @@
|
||||
var serverListTemplate = "\
|
||||
<tr class='server_item bg0 server_name_<%name%>' data-server='<%name%>'>\
|
||||
<td class='server_name'>\
|
||||
<td class='server_name obj_tooltip' data-toggle='tooltip' data-placement='bottom'>\
|
||||
<span style='font-weight:bold;font-size:1.4em;color:<%color%>'><%korName%>섭</span><br>\
|
||||
<span class='n_country'></span>\
|
||||
<span class='tooltiptext server_date'></span>\
|
||||
</td>\
|
||||
<td colspan='4' class='server_down'>- 폐 쇄 중 -</td>\
|
||||
</tr>\
|
||||
@@ -11,7 +12,17 @@ var serverListTemplate = "\
|
||||
var serverTextInfo = "\
|
||||
<td>\
|
||||
서기 <%year%>년 <%month%>월 (<span style='color:orange;'><%scenario%></span>)<br>\
|
||||
유저 : <%userCnt%> / <%maxUserCnt%>명 <span style='color:cyan;'>NPC : <%npcCnt%>명</span> (<span style='color:limegreen;'><%turnTerm%>분 턴 서버</span>)\
|
||||
유저 : <%userCnt%> / <%maxUserCnt%>명 <span style='color:cyan;'>NPC : <%npcCnt%>명</span> (<span style='color:limegreen;'><%turnTerm%>분 턴 서버</span>)<br>\
|
||||
(상성 설정:<%fictionMode%>), (기타 설정:<%otherTextInfo%>)\
|
||||
</td>\
|
||||
";
|
||||
|
||||
var serverProvisionalInfo = "\
|
||||
<td>\
|
||||
- 오픈 일시 : <%opentime%> -<br>\
|
||||
서기 <%year%>년 <%month%>월 (<span style='color:orange;'><%scenario%></span>)<br>\
|
||||
유저 : <%userCnt%> / <%maxUserCnt%>명 <span style='color:cyan;'>NPC : <%npcCnt%>명</span> (<span style='color:limegreen;'><%turnTerm%>분 턴 서버</span>)<br>\
|
||||
(상성 설정:<%fictionMode%>), (기타 설정:<%otherTextInfo%>)\
|
||||
</td>\
|
||||
";
|
||||
|
||||
@@ -35,7 +46,7 @@ var serverCreateTemplate = "\
|
||||
";
|
||||
|
||||
var serverLoginTemplate = "\
|
||||
<td style='background:url(<%picture%>);background-size: 64px 64px;'></td>\
|
||||
<td style='background:url(\"<%picture%>\");background-size: 64px 64px;'></td>\
|
||||
<td><%name%></td>\
|
||||
<td class='ignore_border'>\
|
||||
<a href='<%serverPath%>/'><button class='general_login with_skin'>입장</button></a>\
|
||||
@@ -45,9 +56,11 @@ var serverLoginTemplate = "\
|
||||
|
||||
var serverReservedTemplate = "\
|
||||
<td colspan='4' class='server_reserved'>\
|
||||
- 오픈 일시 : <%openDatetime%> - <br>\
|
||||
<%openDatetime==starttime?'':'- 가오픈 일시 : '+openDatetime+ '- <br>'%>\
|
||||
- 오픈 일시 : <%starttime%> - <br>\
|
||||
<span style='color:orange;'><%scenarioName%></span> <span style='color:limegreen;'><%turnterm%>분 턴 서버</span><br>\
|
||||
(상성 설정:<%fictionMode%>), (빙의 여부:<%npcMode%>), (최대 스탯:<%gameConf.defaultStatTotal%>), (기타 설정:<%otherTextInfo%>)</td>\
|
||||
(상성 설정:<%fictionMode%>), (빙의 여부:<%npcMode%>), (최대 스탯:<%gameConf.defaultStatTotal%>), (기타 설정:<%otherTextInfo%>)\
|
||||
</td>\
|
||||
";
|
||||
|
||||
$(function(){
|
||||
@@ -69,6 +82,7 @@ function Entrance_UpdateServer() {
|
||||
|
||||
function Entrance_drawServerList(serverInfos){
|
||||
var $serverList = $('#server_list');
|
||||
var now = moment().format('YYYY-MM-DD HH:mm:ss');
|
||||
$.each(serverInfos, function(idx, serverInfo){
|
||||
var $serverHtml = $(TemplateEngine(serverListTemplate, serverInfo));
|
||||
$serverList.append($serverHtml);
|
||||
@@ -85,6 +99,7 @@ function Entrance_drawServerList(serverInfos){
|
||||
$serverHtml.append(
|
||||
TemplateEngine(serverReservedTemplate, result.reserved)
|
||||
);
|
||||
initTooltip($serverHtml);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -96,17 +111,32 @@ function Entrance_drawServerList(serverInfos){
|
||||
var game= result.game;
|
||||
//TODO: 서버 폐쇄 방식을 새롭게 변경
|
||||
$serverHtml.find('.server_down').detach();
|
||||
var serverTime = '%s ~ %s'.format(game.startFrom)
|
||||
|
||||
if(game.isUnited == 2){
|
||||
$serverHtml.find('.n_country').html('§천하통일§');
|
||||
$serverHtml.find('.server_date').html('{0} <br>~ {1}'.format(game.starttime, game.turntime));
|
||||
}
|
||||
else if(game.opentime <= now){
|
||||
$serverHtml.find('.n_country').html('<{0}국 경쟁중>'.format(game.nationCnt));
|
||||
$serverHtml.find('.server_date').html('{0} ~'.format(game.starttime));
|
||||
}
|
||||
else{
|
||||
$serverHtml.find('.n_country').html('<{0}국 경쟁중>'.format(game.nationCnt));
|
||||
$serverHtml.find('.n_country').html('-가오픈 중-');
|
||||
$serverHtml.find('.server_date').html('{0} ~'.format(game.starttime));
|
||||
}
|
||||
|
||||
$serverHtml.append(
|
||||
TemplateEngine(serverTextInfo, game)
|
||||
);
|
||||
if(game.opentime <= now){
|
||||
$serverHtml.append(
|
||||
TemplateEngine(serverTextInfo, game)
|
||||
);
|
||||
}
|
||||
else{
|
||||
$serverHtml.append(
|
||||
TemplateEngine(serverProvisionalInfo, game)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
if(result.me && result.me.name){
|
||||
var me = result.me;
|
||||
@@ -120,7 +150,7 @@ function Entrance_drawServerList(serverInfos){
|
||||
TemplateEngine(serverFullTemplate, {})
|
||||
);
|
||||
}
|
||||
else if(game.npcMode == 1){
|
||||
else if(game.npcMode == '가능'){
|
||||
$serverHtml.append(
|
||||
TemplateEngine(serverCreateAndSelectTemplate, {serverPath:serverPath})
|
||||
).addClass('server_create_and_select');
|
||||
@@ -131,7 +161,7 @@ function Entrance_drawServerList(serverInfos){
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
initTooltip($serverHtml);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
+19
-2
@@ -47,6 +47,16 @@ $(document).ready( function () {
|
||||
$('#serv_host').val(
|
||||
[location.protocol, '//', location.host, parentPathname].join('')
|
||||
);
|
||||
|
||||
$('#btn_random_generate_key').click(function(){
|
||||
var token = '';
|
||||
while(token.length < 24){
|
||||
token += (Math.random() + 1).toString(36).substring(7);
|
||||
}
|
||||
token = token.substr(0,24);
|
||||
$('#image_request_key').val(token);
|
||||
});
|
||||
|
||||
$('#db_form').validate({
|
||||
rules:{
|
||||
db_host:"required",
|
||||
@@ -56,7 +66,11 @@ $(document).ready( function () {
|
||||
db_name:"required",
|
||||
serv_host:"required",
|
||||
shared_icon_path:"required",
|
||||
game_image_path:"required"
|
||||
game_image_path:"required",
|
||||
image_request_key:{
|
||||
required:false,
|
||||
minlength:16
|
||||
}
|
||||
},
|
||||
errorElement: "div",
|
||||
errorPlacement: function ( error, element ) {
|
||||
@@ -94,7 +108,10 @@ $(document).ready( function () {
|
||||
db_name:$('#db_name').val(),
|
||||
serv_host:$('#serv_host').val(),
|
||||
shared_icon_path:$('#shared_icon_path').val(),
|
||||
game_image_path:$('#game_image_path').val()
|
||||
game_image_path:$('#game_image_path').val(),
|
||||
image_request_key:$('#image_request_key').val(),
|
||||
kakao_rest_key:$('#kakao_rest_key').val(),
|
||||
kakao_admin_key:$('#kakao_admin_key').val(),
|
||||
}
|
||||
}).then(function(result){
|
||||
var deferred = $.Deferred();
|
||||
|
||||
+53
-34
@@ -59,23 +59,7 @@ function deleteIcon(){
|
||||
return;
|
||||
}
|
||||
|
||||
var ajaxResults = result.servers.map(function(server){
|
||||
return $.ajax({
|
||||
type:'post',
|
||||
url:'../{0}/j_adjust_icon.php'.format(server),
|
||||
dataType:'json'
|
||||
});
|
||||
});
|
||||
|
||||
$.when.apply($, ajaxResults).then(function(){
|
||||
alert('이미지를 삭제했습니다.');
|
||||
location.reload();
|
||||
},function(){
|
||||
//서버 폐쇄등으로 접근하지 못할 수도 있음.
|
||||
alert('이미지를 삭제했습니다.');
|
||||
location.reload();
|
||||
});
|
||||
|
||||
showAdjustServerModal(result.servers);
|
||||
},function(){
|
||||
alert('알 수 없는 이유로 아이콘 삭제를 실패했습니다.');
|
||||
location.reload();
|
||||
@@ -96,6 +80,57 @@ function disallowThirdUse(){
|
||||
});
|
||||
}
|
||||
|
||||
function showAdjustServerModal(serverList){
|
||||
|
||||
var $form = $('#chooseServerForm');
|
||||
$form.empty();
|
||||
|
||||
serverList.map(function(server){
|
||||
var serverKey = server[0];
|
||||
var serverKorName = server[1];
|
||||
|
||||
var $item = $('<div style="display:inline-block;margin-right:7px;" class="custom-control custom-checkbox">\
|
||||
<input type="checkbox" checked class="custom-control-input" name="{1}" id="switch_{1}">\
|
||||
<label class="custom-control-label" for="switch_{1}">{0}</label>\
|
||||
</div>'.format(serverKorName, serverKey));
|
||||
$form.append($item);
|
||||
});
|
||||
|
||||
|
||||
var $modal = $('#chooseServer');
|
||||
$modal.modal({
|
||||
backdrop:'static'
|
||||
});
|
||||
$modal.on('hidden.bs.modal', function (event) {
|
||||
location.reload();
|
||||
return;
|
||||
});
|
||||
|
||||
$("#modal-apply").off("click").on("click", function(){
|
||||
var events = [];
|
||||
$form.find('input:checked').each(function(){
|
||||
var $input = $(this);
|
||||
var server = $input.attr('name');
|
||||
console.log(server);
|
||||
events.push($.ajax({
|
||||
type:'post',
|
||||
url:'../{0}/j_adjust_icon.php'.format(server),
|
||||
dataType:'json'
|
||||
}));
|
||||
})
|
||||
|
||||
$.when.apply($, events).then(function(){
|
||||
alert('적용되었습니다.');
|
||||
location.reload();
|
||||
},function(){
|
||||
//서버 폐쇄등으로 접근하지 못할 수도 있음.
|
||||
alert('적용되었습니다.');
|
||||
location.reload();
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function changeIcon(e){
|
||||
e.preventDefault();
|
||||
var $icon = $('#image_upload');
|
||||
@@ -122,23 +157,7 @@ function changeIcon(e){
|
||||
return;
|
||||
}
|
||||
|
||||
var ajaxResults = result.servers.map(function(server){
|
||||
return $.ajax({
|
||||
type:'post',
|
||||
url:'../{0}/j_adjust_icon.php'.format(server),
|
||||
dataType:'json'
|
||||
});
|
||||
});
|
||||
|
||||
$.when.apply($, ajaxResults).then(function(){
|
||||
alert('이미지를 업로드했습니다.');
|
||||
location.reload();
|
||||
},function(){
|
||||
//서버 폐쇄등으로 접근하지 못할 수도 있음.
|
||||
alert('이미지를 업로드했습니다.');
|
||||
location.reload();
|
||||
});
|
||||
|
||||
showAdjustServerModal(result.servers);
|
||||
},function(){
|
||||
alert('알 수 없는 이유로 아이콘 업로드를 실패했습니다.');
|
||||
location.reload();
|
||||
|
||||
+7
-1
@@ -29,7 +29,9 @@ $err_logs = $fdb->select('err_log', [
|
||||
'date',
|
||||
'err',
|
||||
'errstr',
|
||||
'trace'
|
||||
'errpath',
|
||||
'trace',
|
||||
'webuser'
|
||||
], [
|
||||
'ORDER'=>['id'=>'DESC'],
|
||||
'LIMIT'=>100
|
||||
@@ -61,9 +63,13 @@ $err_logs = $fdb->select('err_log', [
|
||||
<div class="card-body">
|
||||
<div class="card-title"><?=htmlspecialchars($err['errstr'])?></div>
|
||||
<ul class="list-group list-group-flush">
|
||||
<?php if($err['errpath']): ?>
|
||||
<li class="list-group-item"><?=htmlspecialchars($err['errpath'])?></li>
|
||||
<?php endif; ?>
|
||||
<?php foreach(Json::decode($err['trace']) as $trace): ?>
|
||||
<li class="list-group-item"><?=htmlspecialchars($trace)?></li>
|
||||
<?php endforeach; ?>
|
||||
<li class="list-group-item"><?=htmlspecialchars($err['webuser'])?></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+7
-3
@@ -5,9 +5,11 @@ import time
|
||||
import glob
|
||||
import urllib.request
|
||||
import concurrent.futures
|
||||
from datetime import datetime
|
||||
|
||||
def run(webPath):
|
||||
print(webPath)
|
||||
now = datetime.now()
|
||||
print(now.strftime("%Y-%m-%d %H:%M:%S"), webPath)
|
||||
obj = urllib.request.urlopen(webPath)
|
||||
obj.read()
|
||||
|
||||
@@ -44,15 +46,17 @@ def main():
|
||||
|
||||
servList.append(webPath)
|
||||
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=len(servList)) as executor:
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=max(1,len(servList))) as executor:
|
||||
waiters=[]
|
||||
for resetPath in autoResetList:
|
||||
future = executor.submit(run, resetPath)
|
||||
waiters.append(future)
|
||||
for _ in range(4):
|
||||
for idx in range(4):
|
||||
for webPath in servList:
|
||||
future = executor.submit(run, webPath)
|
||||
waiters.append(future)
|
||||
if idx == 3:
|
||||
break
|
||||
time.sleep(15)
|
||||
for future in waiters:
|
||||
future.done()
|
||||
|
||||
@@ -21,6 +21,7 @@ class WebUtil
|
||||
{
|
||||
if (!headers_sent()) {
|
||||
header('Expires: Wed, 01 Jan 2014 00:00:00 GMT');
|
||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
@@ -132,6 +133,9 @@ class WebUtil
|
||||
}
|
||||
|
||||
$config = \HTMLPurifier_HTML5Config::createDefault();
|
||||
$config->set('Filter.Custom', array (new \HTMLPurifier_Filter_YouTube()));
|
||||
$config->set('HTML.SafeIframe', true);
|
||||
$config->set('URI.SafeIframeRegexp', '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%'); //allow YouTube and Vimeo
|
||||
$def = $config->getHTMLDefinition();
|
||||
$def->info_global_attr['data-flip'] = new \HTMLPurifier_AttrDef_Text;
|
||||
$purifier = new \HTMLPurifier($config);
|
||||
|
||||
Reference in New Issue
Block a user