장수 등록 / 빙의 코드 수정 (Validator, query), TM서버 추가 능력치 코드 이전
random 코드 버그 수정 일부 코드의 Session 참조 방식을 새롭게 추가한 방식으로 변경
This commit is contained in:
@@ -75,7 +75,7 @@ switch($btn) {
|
|||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
$general = MYDB_fetch_array($result);
|
$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']}'";
|
$query = "update general set specage2=age,special2='$special2' where no='{$general['no']}'";
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
|
|||||||
+1
-1
@@ -1713,7 +1713,7 @@ function addAge($connect) {
|
|||||||
|
|
||||||
for($i=0; $i < $gencount; $i++) {
|
for($i=0; $i < $gencount; $i++) {
|
||||||
$general = MYDB_fetch_array($result);
|
$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']}'";
|
$query = "update general set special2='$special2' where no='{$general['no']}'";
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ function getSpecial($connect, $leader, $power, $intel) {
|
|||||||
// 60 돌격, 무쌍, 견고, 위압 = 4 무장전투
|
// 60 돌격, 무쌍, 견고, 위압 = 4 무장전투
|
||||||
// 70 저격, 필살, 징병, 의술, 격노, 척사 = 6 공통전투
|
// 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;
|
$special2 = 70;
|
||||||
// 숙련 10,000: 25%, 40,000: 50%, 100,000: 79%, 160,000: 100%
|
// 숙련 10,000: 25%, 40,000: 50%, 100,000: 79%, 160,000: 100%
|
||||||
$dex = sqrt($dex0 + $dex10 + $dex20 + $dex30 + $dex40);
|
$dex = sqrt($dex0 + $dex10 + $dex20 + $dex30 + $dex40);
|
||||||
|
|||||||
+11
-18
@@ -2,25 +2,10 @@
|
|||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
include('lib.php');
|
include('lib.php');
|
||||||
include('func.php');
|
|
||||||
|
|
||||||
$userID = Session::getUserID();
|
$session = Session::requireGameLogin([])->setReadOnly();
|
||||||
$generalID = Session::Instance()->generalID;
|
$userID = $session->userID;
|
||||||
session_write_close();
|
$generalID = $session->generalID;
|
||||||
|
|
||||||
if(!$userID){
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'로그인되지 않았습니다.'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!$generalID){
|
|
||||||
Json::die([
|
|
||||||
'result'=>false,
|
|
||||||
'reason'=>'장수를 생성하지 않았습니다.'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$rootDB = RootDB::db();
|
$rootDB = RootDB::db();
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
@@ -39,6 +24,14 @@ $db->update('general', [
|
|||||||
'imgsvr'=>$image['imgsvr']
|
'imgsvr'=>$image['imgsvr']
|
||||||
], 'owner = %i and npc = 0', $userID);
|
], 'owner = %i and npc = 0', $userID);
|
||||||
|
|
||||||
|
$affected = $db->affectedRows();
|
||||||
|
if($affected == 0){
|
||||||
|
Json::die([
|
||||||
|
'result'=>true,
|
||||||
|
'reason'=>'등록된 장수가 없습니다'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
Json::die([
|
Json::die([
|
||||||
'result'=>true,
|
'result'=>true,
|
||||||
'reason'=>'success'
|
'reason'=>'success'
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ if(getBlockLevel() == 1 || getBlockLevel() == 3) {
|
|||||||
|
|
||||||
$conlimit = $db->queryFirstField('select conlimit from game limit 1');
|
$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){
|
if(!$me){
|
||||||
$session->logoutGame();
|
$session->logoutGame();
|
||||||
|
|||||||
+3
-1
@@ -4,7 +4,9 @@ namespace sammo;
|
|||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
$userID = Session::getUserID();
|
$session = Session::requireLogin()->setReadOnly();
|
||||||
|
|
||||||
|
$userID = $session->userID;
|
||||||
|
|
||||||
if(!$userID) {
|
if(!$userID) {
|
||||||
MessageBox("잘못된 접근입니다!!!");
|
MessageBox("잘못된 접근입니다!!!");
|
||||||
|
|||||||
+225
-211
@@ -4,30 +4,60 @@ namespace sammo;
|
|||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.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);
|
||||||
|
|
||||||
|
if(!$v->validate()){
|
||||||
$name = $_POST['name'];
|
MessageBox($v->errorStr());
|
||||||
$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("잘못된 접근입니다!!!");
|
|
||||||
echo "<script>history.go(-1);</script>";
|
echo "<script>history.go(-1);</script>";
|
||||||
exit(1);
|
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) {
|
if(!$member) {
|
||||||
MessageBox("잘못된 접근입니다!!!");
|
MessageBox("잘못된 접근입니다!!!");
|
||||||
@@ -35,233 +65,217 @@ if(!$member) {
|
|||||||
exit(1);
|
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();
|
$db = DB::db();
|
||||||
########## 동일 정보 존재여부 확인. ##########
|
########## 동일 정보 존재여부 확인. ##########
|
||||||
|
|
||||||
$admin = $db->queryFirstRow("select year,month,scenario,maxgeneral,turnterm,genius,img from game limit 1");
|
$admin = $db->queryFirstRow('SELECT year,month,maxgeneral,turnterm,genius,npcmode from game limit 1');
|
||||||
$gencount = $db->queryFirstField("select count(no) from general where npc<2");
|
$gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE noc<2');
|
||||||
$id_num = $db->queryFirstField("select count(no) from general where owner= %i", $userID);
|
$oldGeneral = $db->queryFirstField('SELECT `no` FROM general WHERE `owner`=%i', $userID);
|
||||||
$name_num = $db->queryFirstField("select count(no) from general where name= %s", $name);
|
$oldName = $db->queryFirstField('SELECT `no` FROM general WHERE `name`=%i', $name);
|
||||||
|
|
||||||
if($id_num) {
|
if($oldGeneral) {
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('이미 등록하셨습니다!')
|
window.alert('이미 등록하셨습니다!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
exit;
|
||||||
} elseif($name_num) {
|
}
|
||||||
|
if($oldName) {
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('이미 있는 장수입니다. 다른 이름으로 등록해 주세요!')
|
window.alert('이미 있는 장수입니다. 다른 이름으로 등록해 주세요!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
exit;
|
||||||
} elseif($token_num != 1) {
|
}
|
||||||
echo("<script>
|
if($admin['maxgeneral'] <= $gencount) {
|
||||||
window.alert('능력치 정보가 잘못되었습니다. 운영자에게 문의해 주세요!')
|
|
||||||
history.go(-1)
|
|
||||||
</script>");
|
|
||||||
exit;
|
|
||||||
} elseif($admin['maxgeneral'] <= $gencount) {
|
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('더이상 등록할 수 없습니다!')
|
window.alert('더이상 등록할 수 없습니다!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
exit;
|
||||||
} elseif($id == "") {
|
}
|
||||||
echo("<script>
|
if(mb_strlen($name) < 1) {
|
||||||
window.alert('ID가 없습니다. 다시 가입해주세요!')
|
|
||||||
history.go(-1)
|
|
||||||
</script>");
|
|
||||||
exit;
|
|
||||||
} elseif(StringUtil::GetStrLen($name) < 1) {
|
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('이름이 짧습니다. 다시 가입해주세요!')
|
window.alert('이름이 짧습니다. 다시 가입해주세요!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
exit;
|
||||||
} elseif($name == "") {
|
}
|
||||||
echo("<script>
|
if(mb_strlen($name) > 6) {
|
||||||
window.alert('이름이 없습니다. 다시 가입해주세요!')
|
|
||||||
history.go(-1)
|
|
||||||
</script>");
|
|
||||||
exit;
|
|
||||||
} elseif(StringUtil::GetStrLen($name) > 6) {
|
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('이름이 유효하지 않습니다. 다시 가입해주세요!')
|
window.alert('이름이 유효하지 않습니다. 다시 가입해주세요!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
exit;
|
||||||
} elseif($leader + $power + $intel > 150) {
|
}
|
||||||
|
if($leader + $power + $intel > 150) {
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('능력치가 150을 넘어섰습니다. 다시 가입해주세요!')
|
window.alert('능력치가 150을 넘어섰습니다. 다시 가입해주세요!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
exit;
|
||||||
} elseif($leader > 75 || $leader < 10 || $power > 75 || $power < 10 || $intel > 75 || $intel < 10) {
|
|
||||||
echo("<script>
|
|
||||||
window.alert('능력치가 비정상적입니다. 다시 가입해주세요!')
|
|
||||||
history.go(-1)
|
|
||||||
</script>");
|
|
||||||
exit;
|
|
||||||
} elseif($character < 0 || $character > 11) {
|
|
||||||
echo("<script>
|
|
||||||
window.alert('성격이 비정상적입니다. 다시 가입해주세요!')
|
|
||||||
history.go(-1)
|
|
||||||
</script>");
|
|
||||||
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] = "<C>●</>{$admin['month']}월:<G><b>{$cityname['name']}</b></>에서 <Y>{$me['name']}</>(이)라는 기재가 천하에 이름을 알립니다.";
|
|
||||||
$log[1] = "<C>●</>{$admin['month']}월:<C>".getGenSpecial($special2)."</> 특기를 가진 <C>천재</>의 등장으로 온 천하가 떠들썩합니다.";
|
|
||||||
|
|
||||||
$history[0] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<L><b>【천재】</b></><G><b>{$cityname['name']}</b></>에 천재가 등장했습니다.";
|
|
||||||
pushWorldHistory($history, $admin['year'], $admin['month']);
|
|
||||||
} else {
|
|
||||||
$log[0] = "<C>●</>{$admin['month']}월:<G><b>{$cityname['name']}</b></>에서 <Y>{$me['name']}</>(이)라는 호걸이 천하에 이름을 알립니다.";
|
|
||||||
}
|
|
||||||
pushGeneralHistory($me, "<C>●</>{$admin['year']}년 {$admin['month']}월:<Y>{$me['name']}</>, <G>{$cityname['name']}</>에서 큰 뜻을 품다.");
|
|
||||||
$mylog[] = "<C>●</>삼국지 모의전투 PHP의 세계에 오신 것을 환영합니다 ^o^";
|
|
||||||
$mylog[] = "<C>●</>처음 하시는 경우에는 <D>도움말</>을 참고하시고,";
|
|
||||||
$mylog[] = "<C>●</>문의사항이 있으시면 게시판에 글을 남겨주시면 되겠네요~";
|
|
||||||
$mylog[] = "<C>●</>부디 즐거운 삼모전 되시길 바랍니다 ^^";
|
|
||||||
$mylog[] = "<C>●</>통솔 <C>$pleader</> 무력 <C>$ppower</> 지력 <C>$pintel</> 의 보너스를 받으셨습니다.";
|
|
||||||
$mylog[] = "<C>●</>연령은 <C>$age</>세로 시작합니다.";
|
|
||||||
if($genius == 1) {
|
|
||||||
$mylog[] = "<C>●</>축하합니다! 천재로 태어나 처음부터 <C>".getGenSpecial($special2)."</> 특기를 가지게 됩니다!";
|
|
||||||
pushGeneralHistory($me, "<C>●</>{$admin['year']}년 {$admin['month']}월:<C>".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("<script>
|
|
||||||
window.alert('정상적으로 회원 가입되었습니다. ID : $id \n튜토리얼을 꼭 읽어보세요!');
|
|
||||||
</script>");
|
|
||||||
//echo("<script>location.replace('index.php');</script>");
|
|
||||||
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] = "<C>●</>{$admin['month']}월:<G><b>{$cityname}</b></>에서 <Y>{$name}</>(이)라는 기재가 천하에 이름을 알립니다.";
|
||||||
|
$log[1] = "<C>●</>{$admin['month']}월:<C>".getGenSpecial($special2)."</> 특기를 가진 <C>천재</>의 등장으로 온 천하가 떠들썩합니다.";
|
||||||
|
|
||||||
|
$history[0] = "<C>●</>{$admin['year']}년 {$admin['month']}월:<L><b>【천재】</b></><G><b>{$cityname}</b></>에 천재가 등장했습니다.";
|
||||||
|
pushWorldHistory($history, $admin['year'], $admin['month']);
|
||||||
|
} else {
|
||||||
|
$log[0] = "<C>●</>{$admin['month']}월:<G><b>{$cityname}</b></>에서 <Y>{$name}</>(이)라는 호걸이 천하에 이름을 알립니다.";
|
||||||
|
}
|
||||||
|
pushGeneralHistory($me, "<C>●</>{$admin['year']}년 {$admin['month']}월:<Y>{$name}</>, <G>{$cityname}</>에서 큰 뜻을 품다.");
|
||||||
|
$mylog[] = "<C>●</>삼국지 모의전투 PHP의 세계에 오신 것을 환영합니다 ^o^";
|
||||||
|
$mylog[] = "<C>●</>처음 하시는 경우에는 <D>도움말</>을 참고하시고,";
|
||||||
|
$mylog[] = "<C>●</>문의사항이 있으시면 게시판에 글을 남겨주시면 되겠네요~";
|
||||||
|
$mylog[] = "<C>●</>부디 즐거운 삼모전 되시길 바랍니다 ^^";
|
||||||
|
$mylog[] = "<C>●</>통솔 <C>$pleader</> 무력 <C>$ppower</> 지력 <C>$pintel</> 의 보너스를 받으셨습니다.";
|
||||||
|
$mylog[] = "<C>●</>연령은 <C>$age</>세로 시작합니다.";
|
||||||
|
if($genius) {
|
||||||
|
$mylog[] = "<C>●</>축하합니다! 천재로 태어나 처음부터 <C>".getGenSpecial($special2)."</> 특기를 가지게 됩니다!";
|
||||||
|
pushGeneralHistory($me, "<C>●</>{$admin['year']}년 {$admin['month']}월:<C>".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
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
|
||||||
|
?>
|
||||||
|
<script>
|
||||||
|
window.alert('정상적으로 회원 가입되었습니다. ID : <?=$id?> \n튜토리얼을 꼭 읽어보세요!');
|
||||||
|
</script>
|
||||||
|
<script>location.replace('index.php');</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+70
-63
@@ -4,15 +4,15 @@ namespace sammo;
|
|||||||
include "lib.php";
|
include "lib.php";
|
||||||
include "func.php";
|
include "func.php";
|
||||||
|
|
||||||
|
$session = Session::requireLogin()->setReadOnly();
|
||||||
|
|
||||||
$face = $_POST['face'];//TODO: face를 user_id에서 general.no 값을 이용하도록 변경
|
$face = $_POST['face'];//TODO: face를 user_id에서 general.no 값을 이용하도록 변경
|
||||||
|
|
||||||
$userID = Session::getUserID();
|
$userID = $session->userID;
|
||||||
$connect = dbConn(true);
|
$rootDB = RootDB::db();
|
||||||
|
|
||||||
//회원 테이블에서 정보확인
|
//회원 테이블에서 정보확인
|
||||||
$query = "select no,id,picture,grade,name from MEMBER where no='$userID'";
|
$member = $rootDB->queryFirstRow('SELECT `no`, id, picture, grade, `name` FROM MEMBER WHERE no=%i', $userID);
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$member = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
if(!$member) {
|
if(!$member) {
|
||||||
MessageBox("잘못된 접근입니다!!!");
|
MessageBox("잘못된 접근입니다!!!");
|
||||||
@@ -20,100 +20,107 @@ if(!$member) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$date = date('Y-m-d H:i:s');
|
$db = DB::db();
|
||||||
//등록정보
|
|
||||||
$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),"");
|
|
||||||
|
|
||||||
$connect = dbConn();
|
$npc = $db->queryFirstRow('SELECT `no`, `name`, `npc`, `level` FROM general WHERE `no`=%i', $face);
|
||||||
|
if(!$npc){
|
||||||
$npcid = "gen{$face}";
|
echo "<script>alert('선택한 장수가 없습니다!');</script>";
|
||||||
$query = "select no,npc,level from general where no='$face'";
|
echo "<script>history.go(-1);</script>";
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
exit();
|
||||||
$npc = MYDB_fetch_array($result);
|
}
|
||||||
|
|
||||||
|
$npcID = $npc['no'];
|
||||||
########## 동일 정보 존재여부 확인. ##########
|
########## 동일 정보 존재여부 확인. ##########
|
||||||
|
|
||||||
$query = "select year,month,maxgeneral,turnterm,genius,npcmode from game limit 1";
|
$admin = $db->queryFirstRow('SELECT year,month,maxgeneral,turnterm,genius,npcmode from game limit 1');
|
||||||
$result = MYDB_query($query, $connect) or Error("join_post ".MYDB_error($connect),"");
|
$gencount = $db->queryFirstField('SELECT count(`no`) FROM general WHERE noc<2');
|
||||||
$admin = MYDB_fetch_array($result);
|
$oldGeneral = $db->queryFirstField('SELECT `no` FROM general WHERE `owner`=%i', $userID);
|
||||||
|
|
||||||
$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);
|
|
||||||
|
|
||||||
if($admin['npcmode'] != 1) {
|
if($admin['npcmode'] != 1) {
|
||||||
echo "<script>alert('잘못된 접근입니다!');</script>";
|
echo "<script>alert('잘못된 접근입니다!');</script>";
|
||||||
echo "<script>history.go(-1);</script>";
|
echo "<script>history.go(-1);</script>";
|
||||||
exit();
|
exit();
|
||||||
} elseif($id_num) {
|
}
|
||||||
|
if($oldGeneral) {
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('이미 등록하셨습니다!')
|
window.alert('이미 등록하셨습니다!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
exit;
|
||||||
} elseif($admin['maxgeneral'] <= $gencount) {
|
}
|
||||||
|
if($admin['maxgeneral'] <= $gencount) {
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('더이상 등록할 수 없습니다!')
|
window.alert('더이상 등록할 수 없습니다!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
exit;
|
||||||
} elseif($npc['npc'] < 2) {
|
}
|
||||||
|
if($npc['npc'] < 2) {
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('이미 선택된 장수입니다!')
|
window.alert('이미 선택된 장수입니다!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
exit;
|
||||||
} elseif($npc['npc'] != 2) {
|
}
|
||||||
|
if($npc['npc'] != 2) {
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('선택할 수 없는 NPC입니다!')
|
window.alert('선택할 수 없는 NPC입니다!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
exit;
|
||||||
/*
|
}
|
||||||
} elseif($npc['level'] >= 5) {
|
/*if($npc['level'] >= 5) {
|
||||||
echo("<script>
|
echo("<script>
|
||||||
window.alert('수뇌부는 선택할 수 없습니다!')
|
window.alert('수뇌부는 선택할 수 없습니다!')
|
||||||
history.go(-1)
|
history.go(-1)
|
||||||
</script>");
|
</script>");
|
||||||
exit;
|
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] = "<C>●</>{$admin['month']}월:<Y>{$me['name']}</>의 육체에 <Y>{$member['name']}</>(이)가 <S>빙의</>됩니다!";
|
|
||||||
pushGeneralHistory($me, "<C>●</>{$admin['year']}년 {$admin['month']}월:<Y>{$me['name']}</>의 육체에 <Y>{$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("<script>
|
echo("<script>
|
||||||
window.alert('정상적으로 회원 가입되었습니다. ID : $id');
|
window.alert('이미 선택된 장수입니다!')
|
||||||
</script>");
|
history.go(-1)
|
||||||
echo("<script>window.open('../i_other/help.php');</script>");
|
</script>");
|
||||||
//echo("<script>location.replace('index.php');</script>");
|
exit;
|
||||||
echo 'index.php';//TODO:debug all and replace
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$me = [
|
||||||
|
'no'=>$npcID
|
||||||
|
];
|
||||||
|
|
||||||
|
$log[0] = "<C>●</>{$admin['month']}월:<Y>{$npc['name']}</>의 육체에 <Y>{$session->userName}</>(이)가 <S>빙의</>됩니다!";
|
||||||
|
pushGeneralHistory($me, "<C>●</>{$admin['year']}년 {$admin['month']}월:<Y>{$npc['name']}</>의 육체에 <Y>{$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']
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
|
||||||
|
?>
|
||||||
|
<script>
|
||||||
|
window.alert('정상적으로 회원 가입되었습니다. ID : <?=$id?>');
|
||||||
|
</script>");
|
||||||
|
<script>window.open('../i_other/help.php');</script>
|
||||||
|
|||||||
+1
-1
@@ -189,7 +189,7 @@ class Util extends \utilphp\util{
|
|||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public static function randBool($prob = 0.5){
|
public static function randBool($prob = 0.5){
|
||||||
return randF() < $prob;
|
return self::randF() < $prob;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user