}
}
} else if(strcmp($action, 'chstg') == 0){
- //ステージ移動
- if(!isset($_GET['id'])){
- exit("eee");
- }
- $id = $_GET['id'];
- //deleteUserStageObjectAll($db, $id);
- updateUserStage($db, $id, $name);
- exit("success");
+ //ステージ移動
+ if(!isset($_GET['id'])){
+ exit("eee");
+ }
+ $id = $_GET['id'];
+ //deleteUserStageObjectAll($db, $id);
+ updateUserStage($db, $id, $name);
+ exit("success");
+ } else if(strcmp($action, 'chcharacter') == 0){
+ if(!isset($_GET['id'])){
+ exit("eee");
+ }
+ $id = $_GET['id'];
+ updateUserCharacterClass($db,$id,$name);
+ exit("success");
}
}
}
{
updateUserTimestamp($db, $userID);
updateUserStage($db, $userID, DEFAULT_START_STAGE);
- exit("[" . $userID . "," . getTimeStampMs() . ",\"" . DEFAULT_START_STAGE . "\", 10]");
+ exit("[" . $userID . "," . getTimeStampMs() . ",\"" . DEFAULT_START_STAGE . "\", 10, null]");
}
function responseExistUser($db, $userID, $stageName)
$ts -= getTimeStampMs();
if(-$ts < USER_ALIVE_TIME_MS){
// info == 11: すでにユーザーがログインしている。ログインできない。
- exit("[" . $userID . "," . getTimeStampMs() . ",\"" . $stageName . "\", 11];");
+ exit("[" . $userID . "," . getTimeStampMs() . ",\"" . $stageName . "\", 11, \"" . getUserCharacterClass($db, $userID) . "\"];");
}
deleteUserStageObjectAll($db, $userID);
updateUserTimestamp($db, $userID);
- exit("[" . $userID . "," . getTimeStampMs() . ",\"" . $stageName . "\", 10]");
+ exit("[" . $userID . "," . getTimeStampMs() . ",\"" . $stageName . "\", 10, \"" . getUserCharacterClass($db, $userID) . "\"]");
}
//
return $stgName;
}
+function updateUserCharacterClass($db, $userID, $className)
+{
+ $stmt = $db->prepare(QUERY_UPDATE_USER_CCLASS);
+ $stmt->bind_param(QUERY_UPDATE_USER_CCLASS_TYPES, $className, $userID);
+ $stmt->execute();
+ //エラーチェック省略
+ if($stmt->errno != 0){
+ exit("error573");
+ }
+ $stmt->close();
+}
+
+function getUserCharacterClass($db, $userID)
+{
+ $className = "unknown";
+ $stmt = $db->prepare(QUERY_SELECT_USER_CCLASS);
+ $stmt->bind_param(QUERY_SELECT_USER_CCLASS_TYPES, $userID);
+ $stmt->execute();
+ if($stmt->errno == 0){
+ //クエリ成功
+ $stmt->store_result();
+ // 結果の個数を確認
+ if($stmt->num_rows != 0){
+ //結果格納
+ $stmt->bind_result($className);
+ $stmt->fetch();
+ }
+ }
+ $stmt->close();
+ return $className;
+}
+
function deleteUserStageObjectAll($db, $userID)
{
$stmt = $db->prepare(QUERY_DELETE_USER_OBJECT_ALL);
define("QUERY_SELECT_USER_TIMESTAMP_TYPES", "i");
define("QUERY_DELETE_OFFLINE_USER", "DELETE from authUserTable WHERE lastResponseTimestamp<=?");
define("QUERY_DELETE_OFFLINE_USER_TYPES", "i");
+define("QUERY_SELECT_USER_CCLASS", "SELECT userCharacterBaseClass from authUserTable where id=?");
+define("QUERY_SELECT_USER_CCLASS_TYPES", "i");
+define("QUERY_UPDATE_USER_CCLASS", "UPDATE authUserTable SET userCharacterBaseClass=? where id=?");
+define("QUERY_UPDATE_USER_CCLASS_TYPES", "si");
//SQL文 for stageObjectTable
define("QUERY_ADD_OBJECT", "insert into stageObjectTable (locationX, locationY, velocityX, velocityY, stageName, className, objectAttribute, constructorArgs, ownerUserID, modifiedTimestamp, addedTimestamp) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
define("QUERY_ADD_OBJECT_TYPES", "ddddssssiii");
define("OBJECT_ALIVE_TIME_MS", 2000);
define("OBJECT_DELETE_TIME_MS", 30000);
define("USER_ALIVE_TIME_MS", 2000);
-define("USER_DELETE_TIME_MS", 30000);
+define("USER_DELETE_TIME_MS", 180000);
function escapeMySQLArgumentString(&$str)
{