diff --git a/hwe/_admin2_submit.php b/hwe/_admin2_submit.php
index 0e38c1b8..87ef4fb5 100644
--- a/hwe/_admin2_submit.php
+++ b/hwe/_admin2_submit.php
@@ -75,7 +75,7 @@ switch($btn) {
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
$general = MYDB_fetch_array($result);
- $special2 = getSpecial2($connect, $general['leader'], $general['power'], $general['intel']);
+ $special2 = getSpecial2($general['leader'], $general['power'], $general['intel']);
$query = "update general set specage2=age,special2='$special2' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
diff --git a/hwe/func.php b/hwe/func.php
index e3bb9953..d55df440 100644
--- a/hwe/func.php
+++ b/hwe/func.php
@@ -1713,7 +1713,7 @@ function addAge($connect) {
for($i=0; $i < $gencount; $i++) {
$general = MYDB_fetch_array($result);
- $special2 = getSpecial2($connect, $general['leader'], $general['power'], $general['intel'], 0, $general['dex0'], $general['dex10'], $general['dex20'], $general['dex30'], $general['dex40']);
+ $special2 = getSpecial2($general['leader'], $general['power'], $general['intel'], 0, $general['dex0'], $general['dex10'], $general['dex20'], $general['dex30'], $general['dex40']);
$query = "update general set special2='$special2' where no='{$general['no']}'";
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
diff --git a/hwe/func_gamerule.php b/hwe/func_gamerule.php
index 66c149a0..0e761be0 100644
--- a/hwe/func_gamerule.php
+++ b/hwe/func_gamerule.php
@@ -126,7 +126,7 @@ function getSpecial($connect, $leader, $power, $intel) {
// 60 돌격, 무쌍, 견고, 위압 = 4 무장전투
// 70 저격, 필살, 징병, 의술, 격노, 척사 = 6 공통전투
-function getSpecial2($connect, $leader, $power, $intel, $nodex=1, $dex0=0, $dex10=0, $dex20=0, $dex30=0, $dex40=0) {
+function getSpecial2($leader, $power, $intel, $nodex=1, $dex0=0, $dex10=0, $dex20=0, $dex30=0, $dex40=0) {
$special2 = 70;
// 숙련 10,000: 25%, 40,000: 50%, 100,000: 79%, 160,000: 100%
$dex = sqrt($dex0 + $dex10 + $dex20 + $dex30 + $dex40);
diff --git a/hwe/j_adjust_icon.php b/hwe/j_adjust_icon.php
index 3e3f79a6..65c7e90a 100644
--- a/hwe/j_adjust_icon.php
+++ b/hwe/j_adjust_icon.php
@@ -2,25 +2,10 @@
namespace sammo;
include('lib.php');
-include('func.php');
-$userID = Session::getUserID();
-$generalID = Session::Instance()->generalID;
-session_write_close();
-
-if(!$userID){
- Json::die([
- 'result'=>false,
- 'reason'=>'로그인되지 않았습니다.'
- ]);
-}
-
-if(!$generalID){
- Json::die([
- 'result'=>false,
- 'reason'=>'장수를 생성하지 않았습니다.'
- ]);
-}
+$session = Session::requireGameLogin([])->setReadOnly();
+$userID = $session->userID;
+$generalID = $session->generalID;
$rootDB = RootDB::db();
$db = DB::db();
@@ -39,6 +24,14 @@ $db->update('general', [
'imgsvr'=>$image['imgsvr']
], 'owner = %i and npc = 0', $userID);
+$affected = $db->affectedRows();
+if($affected == 0){
+ Json::die([
+ 'result'=>true,
+ 'reason'=>'등록된 장수가 없습니다'
+ ]);
+}
+
Json::die([
'result'=>true,
'reason'=>'success'
diff --git a/hwe/j_msgsubmit.php b/hwe/j_msgsubmit.php
index ea80522a..31c5ae89 100644
--- a/hwe/j_msgsubmit.php
+++ b/hwe/j_msgsubmit.php
@@ -48,7 +48,7 @@ if(getBlockLevel() == 1 || getBlockLevel() == 3) {
$conlimit = $db->queryFirstField('select conlimit from game limit 1');
-$me = $db->queryFirstRow('select `no`,`name`,`nation`,`level`,`con`,`picture`,`imgsvr` from `general` where `owner` = %i', Session::getUserID());
+$me = $db->queryFirstRow('select `no`,`name`,`nation`,`level`,`con`,`picture`,`imgsvr` from `general` where `owner` = %i', $session->userID);
if(!$me){
$session->logoutGame();
diff --git a/hwe/join.php b/hwe/join.php
index f40aee8f..fef0c79c 100644
--- a/hwe/join.php
+++ b/hwe/join.php
@@ -4,7 +4,9 @@ namespace sammo;
include "lib.php";
include "func.php";
-$userID = Session::getUserID();
+$session = Session::requireLogin()->setReadOnly();
+
+$userID = $session->userID;
if(!$userID) {
MessageBox("잘못된 접근입니다!!!");
diff --git a/hwe/join_post.php b/hwe/join_post.php
index d115b535..9d6068d3 100644
--- a/hwe/join_post.php
+++ b/hwe/join_post.php
@@ -4,30 +4,60 @@ namespace sammo;
include "lib.php";
include "func.php";
+$v = new Validator($_POST);
+$v
+->rule('required', [
+ 'name',
+ 'pic',
+ 'leader',
+ 'power',
+ 'intel'
+])
+->rule('integer', [
+ 'leader',
+ 'power',
+ 'intel',
+ 'character',
+ 'pic'
+])
+->rule('lengthBetween', 'name', [1, 6])
+->rule('min', [
+ 'leader',
+ 'power',
+ 'intel'
+], 10)
+->rule('max', [
+ 'leader',
+ 'power',
+ 'intel'
+], 75)
+->rule('min', 'character', 0)
+->rule('max', 'character', 11);
-
-$name = $_POST['name'];
-$name = StringUtil::NoSpecialCharacter($name);
-$pic = Util::array_get($_POST['pic'],'');
-$character = $_POST['character'];
-
-$leader = Util::array_get($_POST['leader'], 50);
-$power = Util::array_get($_POST['power'], 50);
-$intel = Util::array_get($_POST['intel'], 50);
-
-$mylog = [];
-
-$userID = Session::getUserID();
-
-if(!$userID) {
- MessageBox("잘못된 접근입니다!!!");
+if(!$v->validate()){
+ MessageBox($v->errorStr());
echo "";
exit(1);
}
+$session = Session::requireLogin()->setReadOnly();
+//NOTE: 이 페이지에서는 세션에 데이터를 등록하지 않음. 로그인은 이후에.
+$name = $_POST['name'];
+$name = StringUtil::NoSpecialCharacter($name);
+$pic = (int)Util::array_get($_POST['pic'], 0);
+$character = (int)Util::array_get($_POST['character'], 0);
+
+$leader = (int)$_POST['leader'];
+$power = (int)$_POST['power'];
+$intel = (int)$_POST['intel'];
+
+$mylog = [];
+
+$userID = $session->userID;
+$rootDB = RootDB::db();
//회원 테이블에서 정보확인
-$member = RootDB::db()->queryFirstRow("select no,id,picture,imgsvr,grade from MEMBER where no = %i", $userID);
+$member = $rootDB->queryFirstRow('SELECT `no`, id, picture, grade, `name` FROM MEMBER WHERE no=%i', $userID);
if(!$member) {
MessageBox("잘못된 접근입니다!!!");
@@ -35,233 +65,217 @@ if(!$member) {
exit(1);
}
-$date = date('Y-m-d H:i:s');
-//등록정보
-RootDB::db()->query("update MEMBER set reg_num=reg_num+1,reg_date=%s where no=%i", $date, $userID);
-
-$connect = dbConn();
$db = DB::db();
########## 동일 정보 존재여부 확인. ##########
-$admin = $db->queryFirstRow("select year,month,scenario,maxgeneral,turnterm,genius,img from game limit 1");
-$gencount = $db->queryFirstField("select count(no) from general where npc<2");
-$id_num = $db->queryFirstField("select count(no) from general where owner= %i", $userID);
-$name_num = $db->queryFirstField("select count(no) from general where name= %s", $name);
+$admin = $db->queryFirstRow('SELECT year,month,maxgeneral,turnterm,genius,npcmode from game limit 1');
+$gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE noc<2');
+$oldGeneral = $db->queryFirstField('SELECT `no` FROM general WHERE `owner`=%i', $userID);
+$oldName = $db->queryFirstField('SELECT `no` FROM general WHERE `name`=%i', $name);
-if($id_num) {
+if($oldGeneral) {
echo("");
exit;
-} elseif($name_num) {
+}
+if($oldName) {
echo("");
exit;
-} elseif($token_num != 1) {
- echo("");
- exit;
-} elseif($admin['maxgeneral'] <= $gencount) {
+}
+if($admin['maxgeneral'] <= $gencount) {
echo("");
exit;
-} elseif($id == "") {
- echo("");
- exit;
-} elseif(StringUtil::GetStrLen($name) < 1) {
+}
+if(mb_strlen($name) < 1) {
echo("");
exit;
-} elseif($name == "") {
- echo("");
- exit;
-} elseif(StringUtil::GetStrLen($name) > 6) {
+}
+if(mb_strlen($name) > 6) {
echo("");
exit;
-} elseif($leader + $power + $intel > 150) {
+}
+if($leader + $power + $intel > 150) {
echo("");
exit;
-} elseif($leader > 75 || $leader < 10 || $power > 75 || $power < 10 || $intel > 75 || $intel < 10) {
- echo("");
- exit;
-} elseif($character < 0 || $character > 11) {
- echo("");
- exit;
-} else {
- $ratio = rand() % 100;
- // 현재 1%
- if($ratio == 50 && $admin['genius'] > 0) {
- $genius = 1;
-
- $db->query("update game set genius=genius-1");
- } else {
- $genius = 0;
- }
-
- //중, 소 공백지 개수
- $citycount = Util::toInt($db->queryFirstField("select count(city) from city where level>=5 and level<=6 and nation=0"));
-
- // 공백지에서만 태어나게
- if($citycount > 0) {
- $city = Util::toInt($db->queryFirstField("select city from city where level>=5 and level<=6 and nation=0 order by rand() limit 0,1"));
- } else {
- $city = Util::toInt($db->queryFirstField("select city from city where level>=5 and level<=6 order by rand() limit 0,1"));
- }
-
- $total = rand() % 6;
- $pleader = rand() % 100;
- $ppower = rand() % 100;
- $pintel = rand() % 100;
- $rate = $pleader + $ppower + $pintel;
- $pleader = floor($pleader / $rate * $total + 0.5);
- $ppower = floor($ppower / $rate * $total + 0.5);
- $pintel = floor($pintel / $rate * $total + 0.5);
-
- $leader = $leader + $pleader;
- $power = $power + $ppower;
- $intel = $intel + $pintel;
-
- $age = 20 + ($pleader + $ppower + $pintel) * 2 + (rand() % 2);
- // 아직 남았고 천재등록상태이면 특기 부여
- if($genius == 1) {
- $specage2 = $age;
- $special2 = getSpecial2($connect, $leader, $power, $intel);
- } else {
- $specage2 = round((80 - $age)/3) + $age;
- $special2 = 0;
- }
- //내특
- $specage = round((80 - $age)/12) + $age;
- $special = 0;
-
- if($admin['scenario'] > 0) {
- $specage2 = $age + 3;
- $specage = $age + 3;
- }
-
- $turntime = getRandTurn($admin['turnterm']);
-
- $lastconnect = date('Y-m-d H:i:s');
- if($lastconnect >= $turntime) {
- $turntime = addTurn($turntime, $admin['turnterm']);
- }
-
- //특회 전콘
- if($admin['show_img_level'] >= 1 && $member['grade'] >= 1 && $member['picture'] != "" && $pic == 1) {
- $face = $member['picture'];
- $imgsvr = $member['imgsvr'];
- } else {
- $face = "default.jpg";
- $imgsvr = 0;
- }
-
- //성격 랜덤시
- if($character == 11) $character = rand()%10;
- //상성 랜덤
- $affinity = rand()%150 + 1;
-
- ########## 회원정보 테이블에 입력값을 등록한다. ##########
- $db->insert('general', [
- 'owner' => $userID,
- 'name' => $name,
- 'picture' => $face,
- 'imgsvr' => $imgsvr,
- 'nation' => 0,
- 'city' => $city,
- 'troop' => 0,
- 'affinity' => $affinity,
- 'leader' => $leader,
- 'power' => $power,
- 'intel' => $intel,
- 'experience' => 0,
- 'dedication' => 0,
- 'gold' => 1000,
- 'rice' => 1000,
- 'crew' => 0,
- 'train' => 0,
- 'atmos' => 0,
- 'level' => 0,
- 'turntime' => $turntime,
- 'killturn' => 6,
- 'lastconnect' => $lastconnect,
- 'makelimit' => 0,
- 'age' => $age,
- 'startage' => $age,
- 'personal' => $character,
- 'specage' => $specage,
- 'special' => $special,
- 'specage2' => $specage2,
- 'special2' => $special2
- ]);
-
- $me = $db->queryFirstRow("select no,name from general where owner= %i", $userID);
-
- if($me['name'] == "") {
- $r = rand() % 999 + 1;
- $me['name'] = '장수-'.$r;
-
- $db->query("update general set name=%s where owner=%i", $me['name'], $userID);
- }
- $cityname = getCity($connect, $city, "name");
- if($genius == 1) {
- $log[0] = "●>{$admin['month']}월:{$cityname['name']}>에서 {$me['name']}>(이)라는 기재가 천하에 이름을 알립니다.";
- $log[1] = "●>{$admin['month']}월:".getGenSpecial($special2)."> 특기를 가진 천재>의 등장으로 온 천하가 떠들썩합니다.";
-
- $history[0] = "●>{$admin['year']}년 {$admin['month']}월:【천재】>{$cityname['name']}>에 천재가 등장했습니다.";
- pushWorldHistory($history, $admin['year'], $admin['month']);
- } else {
- $log[0] = "●>{$admin['month']}월:{$cityname['name']}>에서 {$me['name']}>(이)라는 호걸이 천하에 이름을 알립니다.";
- }
- pushGeneralHistory($me, "●>{$admin['year']}년 {$admin['month']}월:{$me['name']}>, {$cityname['name']}>에서 큰 뜻을 품다.");
- $mylog[] = "●>삼국지 모의전투 PHP의 세계에 오신 것을 환영합니다 ^o^";
- $mylog[] = "●>처음 하시는 경우에는 도움말>을 참고하시고,";
- $mylog[] = "●>문의사항이 있으시면 게시판에 글을 남겨주시면 되겠네요~";
- $mylog[] = "●>부디 즐거운 삼모전 되시길 바랍니다 ^^";
- $mylog[] = "●>통솔 $pleader> 무력 $ppower> 지력 $pintel> 의 보너스를 받으셨습니다.";
- $mylog[] = "●>연령은 $age>세로 시작합니다.";
- if($genius == 1) {
- $mylog[] = "●>축하합니다! 천재로 태어나 처음부터 ".getGenSpecial($special2)."> 특기를 가지게 됩니다!";
- pushGeneralHistory($me, "●>{$admin['year']}년 {$admin['month']}월:".getGenSpecial($special2)."> 특기를 가진 천재로 탄생.");
- }
- pushGenLog($me, $mylog);
- pushGeneralPublicRecord($log, $admin['year'], $admin['month']);
-
- $adminLog[0] = "가입 : {$name} // {$me['name']} // {$id} // ".getenv("REMOTE_ADDR");
- pushAdminLog($adminLog);
-
- MYDB_close($connect);
-
- echo("");
- //echo("");
- echo 'index.php';//TODO:debug all and replace
}
+$genius = Util::randBool(0.01);
+// 현재 1%
+if($genius && $admin['genius'] > 0) {
+
+ $db->update('game', [
+ 'genius'=>$db->sqleval('genius-1')
+ ], true);
+} else {
+ $genius = false;
+}
+
+// 공백지에서만 태어나게
+$city = $db->queryFirstField("select city from city where level>=5 and level<=6 and nation=0 order by rand() limit 0,1");
+if(!$city) {
+ $city = $db->queryFirstField("select city from city where level>=5 and level<=6 order by rand() limit 0,1");
+}
+
+$pleader = 0;
+$ppower = 0;
+$pintel = 0;
+for($statBonusCnt = 3 + mt_rand(0, 2); $statBonusCnt > 0; $statBonusCnt--){
+ switch(Util::choiceRandomUsingWeight(array($leader, $power, $intel))){
+ case 0:
+ $pleader++;
+ break;
+ case 1:
+ $ppower++;
+ break;
+ case 2:
+ $pintel++;
+ break;
+ }
+}
+
+$leader = $leader + $pleader;
+$power = $power + $ppower;
+$intel = $intel + $pintel;
+
+$age = 20 + ($pleader + $ppower + $pintel) * 2 - (mt_rand(0, 1));
+// 아직 남았고 천재등록상태이면 특기 부여
+if($genius) {
+ $specage2 = $age;
+ $special2 = getSpecial2($leader, $power, $intel);
+} else {
+ $specage2 = round((80 - $age)/3) + $age;
+ $special2 = 0;
+}
+//내특
+$specage = round((80 - $age)/12) + $age;
+$special = 0;
+
+if($admin['scenario'] > 0) {
+ $specage2 = $age + 3;
+ $specage = $age + 3;
+}
+
+$turntime = getRandTurn($admin['turnterm']);
+
+$lastconnect = date('Y-m-d H:i:s');
+if($lastconnect >= $turntime) {
+ $turntime = addTurn($turntime, $admin['turnterm']);
+}
+
+//특회 전콘
+if($admin['show_img_level'] >= 1 && $member['grade'] >= 1 && $member['picture'] != "" && $pic == 1) {
+ $face = $member['picture'];
+ $imgsvr = $member['imgsvr'];
+} else {
+ $face = "default.jpg";
+ $imgsvr = 0;
+}
+
+//성격 랜덤시
+if($character == 11) $character = rand()%10;
+//상성 랜덤
+$affinity = rand()%150 + 1;
+
+########## 회원정보 테이블에 입력값을 등록한다. ##########
+$db->insert('general', [
+ 'owner' => $userID,
+ 'name' => $name,
+ 'picture' => $face,
+ 'imgsvr' => $imgsvr,
+ 'nation' => 0,
+ 'city' => $city,
+ 'troop' => 0,
+ 'affinity' => $affinity,
+ 'leader' => $leader,
+ 'power' => $power,
+ 'intel' => $intel,
+ 'experience' => 0,
+ 'dedication' => 0,
+ 'gold' => 1000,
+ 'rice' => 1000,
+ 'crew' => 0,
+ 'train' => 0,
+ 'atmos' => 0,
+ 'level' => 0,
+ 'turntime' => $turntime,
+ 'killturn' => 6,
+ 'lastconnect' => $lastconnect,
+ 'makelimit' => 0,
+ 'age' => $age,
+ 'startage' => $age,
+ 'personal' => $character,
+ 'specage' => $specage,
+ 'special' => $special,
+ 'specage2' => $specage2,
+ 'special2' => $special2
+]);
+$generalID = $db->insertId();
+
+$cityname = CityConst::byID($city)->name;
+
+$me = [
+ 'no'=>$generalID
+];
+
+if($genius) {
+ $log[0] = "●>{$admin['month']}월:{$cityname}>에서 {$name}>(이)라는 기재가 천하에 이름을 알립니다.";
+ $log[1] = "●>{$admin['month']}월:".getGenSpecial($special2)."> 특기를 가진 천재>의 등장으로 온 천하가 떠들썩합니다.";
+
+ $history[0] = "●>{$admin['year']}년 {$admin['month']}월:【천재】>{$cityname}>에 천재가 등장했습니다.";
+ pushWorldHistory($history, $admin['year'], $admin['month']);
+} else {
+ $log[0] = "●>{$admin['month']}월:{$cityname}>에서 {$name}>(이)라는 호걸이 천하에 이름을 알립니다.";
+}
+pushGeneralHistory($me, "●>{$admin['year']}년 {$admin['month']}월:{$name}>, {$cityname}>에서 큰 뜻을 품다.");
+$mylog[] = "●>삼국지 모의전투 PHP의 세계에 오신 것을 환영합니다 ^o^";
+$mylog[] = "●>처음 하시는 경우에는 도움말>을 참고하시고,";
+$mylog[] = "●>문의사항이 있으시면 게시판에 글을 남겨주시면 되겠네요~";
+$mylog[] = "●>부디 즐거운 삼모전 되시길 바랍니다 ^^";
+$mylog[] = "●>통솔 $pleader> 무력 $ppower> 지력 $pintel> 의 보너스를 받으셨습니다.";
+$mylog[] = "●>연령은 $age>세로 시작합니다.";
+if($genius) {
+ $mylog[] = "●>축하합니다! 천재로 태어나 처음부터 ".getGenSpecial($special2)."> 특기를 가지게 됩니다!";
+ pushGeneralHistory($me, "●>{$admin['year']}년 {$admin['month']}월:".getGenSpecial($special2)."> 특기를 가진 천재로 탄생.");
+}
+pushGenLog($me, $mylog);
+pushGeneralPublicRecord($log, $admin['year'], $admin['month']);
+
+$adminLog[0] = "가입 : {$name} // {$name} // {$id} // ".getenv("REMOTE_ADDR");
+pushAdminLog($adminLog);
+
+$rootDB->insert('member_log', [
+ 'member_no' => $userID,
+ 'date'=>date('Y-m-d H:i:s'),
+ 'action_type'=>'make_general',
+ 'action'=>Json::encode([
+ 'server'=>DB::prefix(),
+ 'type'=>'general',
+ 'generalID'=>$generalID,
+ 'generalName'=>$name
+ ])
+]);
+
+?>
+
+
+
+
diff --git a/hwe/select_npc_post.php b/hwe/select_npc_post.php
index 9fe1d286..2f516c8c 100644
--- a/hwe/select_npc_post.php
+++ b/hwe/select_npc_post.php
@@ -4,15 +4,15 @@ namespace sammo;
include "lib.php";
include "func.php";
+$session = Session::requireLogin()->setReadOnly();
+
$face = $_POST['face'];//TODO: face를 user_id에서 general.no 값을 이용하도록 변경
-$userID = Session::getUserID();
-$connect = dbConn(true);
+$userID = $session->userID;
+$rootDB = RootDB::db();
//회원 테이블에서 정보확인
-$query = "select no,id,picture,grade,name from MEMBER where no='$userID'";
-$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-$member = MYDB_fetch_array($result);
+$member = $rootDB->queryFirstRow('SELECT `no`, id, picture, grade, `name` FROM MEMBER WHERE no=%i', $userID);
if(!$member) {
MessageBox("잘못된 접근입니다!!!");
@@ -20,100 +20,107 @@ if(!$member) {
exit(1);
}
-$date = date('Y-m-d H:i:s');
-//등록정보
-$query = "update MEMBER set reg_num=reg_num+1,reg_date='$date' where no='{$member['no']}'";
-$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
+$db = DB::db();
-$connect = dbConn();
-
-$npcid = "gen{$face}";
-$query = "select no,npc,level from general where no='$face'";
-$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
-$npc = MYDB_fetch_array($result);
+$npc = $db->queryFirstRow('SELECT `no`, `name`, `npc`, `level` FROM general WHERE `no`=%i', $face);
+if(!$npc){
+ echo "";
+ echo "";
+ exit();
+}
+$npcID = $npc['no'];
########## 동일 정보 존재여부 확인. ##########
-$query = "select year,month,maxgeneral,turnterm,genius,npcmode from game limit 1";
-$result = MYDB_query($query, $connect) or Error("join_post ".MYDB_error($connect),"");
-$admin = MYDB_fetch_array($result);
-
-$query = "select no from general where npc<2";
-$result = MYDB_query($query,$connect) or Error(__LINE__.MYDB_error($connect),"");
-$gencount = MYDB_num_rows($result);
-
-$query = "select no from general where owner='$userID'";
-$result = MYDB_query($query,$connect) or Error(__LINE__.MYDB_error($connect),"");
-$id_num = MYDB_num_rows($result);
+$admin = $db->queryFirstRow('SELECT year,month,maxgeneral,turnterm,genius,npcmode from game limit 1');
+$gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE noc<2');
+$oldGeneral = $db->queryFirstField('SELECT `no` FROM general WHERE `owner`=%i', $userID);
if($admin['npcmode'] != 1) {
echo "";
echo "";
exit();
-} elseif($id_num) {
+}
+if($oldGeneral) {
echo("");
exit;
-} elseif($admin['maxgeneral'] <= $gencount) {
+}
+if($admin['maxgeneral'] <= $gencount) {
echo("");
exit;
-} elseif($npc['npc'] < 2) {
+}
+if($npc['npc'] < 2) {
echo("");
exit;
-} elseif($npc['npc'] != 2) {
+}
+if($npc['npc'] != 2) {
echo("");
exit;
-/*
-} elseif($npc['level'] >= 5) {
+}
+/*if($npc['level'] >= 5) {
echo("");
exit;
-*/
-} else {
- $query = "
- update general set
- name2='{$member['name']}',
- npc=1,
- killturn=6,
- mode=2,
- map=0,
- owner='$userID',
- where no='{$npcid}'
- ";
- MYDB_query($query, $connect) or Error("join_post ".MYDB_error($connect),"");
- $query = "select no,name from general where user_id='$id'";
- $result = MYDB_query($query, $connect) or Error("join_post ".MYDB_error($connect),"");
- $me = MYDB_fetch_array($result);
-
- $log[0] = "●>{$admin['month']}월:{$me['name']}>의 육체에 {$member['name']}>(이)가 빙의>됩니다!";
- pushGeneralHistory($me, "●>{$admin['year']}년 {$admin['month']}월:{$me['name']}>의 육체에 {$member['name']}>(이)가 빙의되다.");
- pushGenLog($me, $mylog);
- pushGeneralPublicRecord($log, $admin['year'], $admin['month']);
-
- $adminLog[0] = "가입 : {$me['name']} // {$id} // ".getenv("REMOTE_ADDR");
- pushAdminLog($adminLog);
-
- MYDB_close($connect);
+} */
+$db->update('general', [
+ 'name2'=>$session->userName,
+ 'npc'=>1,
+ 'killturn'=>6,
+ 'mode'=>2,
+ 'map'=>0,
+ 'owner'=>$userID
+], 'no=%i and npc=2', $npcID);
+$affected = $db->affectedRows();
+if(!$affected){
echo("");
- echo("");
- //echo("");
- echo 'index.php';//TODO:debug all and replace
+ window.alert('이미 선택된 장수입니다!')
+ history.go(-1)
+ ");
+ exit;
}
+$me = [
+ 'no'=>$npcID
+];
+
+$log[0] = "●>{$admin['month']}월:{$npc['name']}>의 육체에 {$session->userName}>(이)가 빙의>됩니다!";
+pushGeneralHistory($me, "●>{$admin['year']}년 {$admin['month']}월:{$npc['name']}>의 육체에 {$session->userName}>(이)가 빙의되다.");
+pushGenLog($me, $mylog);
+pushGeneralPublicRecord($log, $admin['year'], $admin['month']);
+
+$adminLog[0] = "가입 : {$session->userName} // {$id} // ".getenv("REMOTE_ADDR");
+pushAdminLog($adminLog);
+
+$rootDB->insert('member_log', [
+ 'member_no' => $userID,
+ 'date'=>date('Y-m-d H:i:s'),
+ 'action_type'=>'make_general',
+ 'action'=>Json::encode([
+ 'server'=>DB::prefix(),
+ 'type'=>'npc',
+ 'generalID'=>$me['no'],
+ 'generalName'=>$me['name']
+ ])
+]);
+
+?>
+");
+
diff --git a/src/sammo/Util.php b/src/sammo/Util.php
index 713c061c..99c50867 100644
--- a/src/sammo/Util.php
+++ b/src/sammo/Util.php
@@ -189,7 +189,7 @@ class Util extends \utilphp\util{
* @return boolean
*/
public static function randBool($prob = 0.5){
- return randF() < $prob;
+ return self::randF() < $prob;
}