示例#1
0
 function DoChangeClass(&$db, &$acc, $post)
 {
     require $_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "Config/Main.php";
     require $_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "Config/SQL.php";
     require $_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "Config/UserTools.php";
     require $_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "Config/VIP_.php";
     require $_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "Config/TopLevel.php";
     require $_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "Language/{$MainLanguage}/UserTools.php";
     require $_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "Language/{$MainLanguage}/CreditShop.php";
     if (!isset($UserToolsChangeClass) || !$UserToolsChangeClass) {
         return;
     }
     $ConnectStatus = $acc->CheckConnectStatus($acc->memb___id, $db);
     if ($ConnectStatus == 1) {
         return $UserToolsMsg51;
     }
     if ($acc->{$SQLVIPColumn} < $UserToolsChangeClassMinAL) {
         return $UserToolsMsg52;
     }
     if (!isset($post['char']) || empty($post['char']) || !isset($post['classe'])) {
         return $UserToolsMsg53 . " #1";
     }
     if ($acc->GetAccountFromCharacter($post['char'], $db) != $acc->memb___id) {
         return $UserToolsMsg53 . " #2";
     }
     if ($UserToolsChangeClassCurrency > -1) {
         if (${"UserToolsChangeClassAmountAL" . $acc->{$SQLVIPColumn}} > 0) {
             $userCredits = $acc->GetCreditAmount($acc->memb___id, $UserToolsChangeClassCurrency, $db);
             if ($userCredits < ${"UserToolsChangeClassAmountAL" . $acc->{$SQLVIPColumn}}) {
                 $db->Query("SELECT name FROM Z_Currencies WHERE idx = '{$UserToolsResetTransferCurrency}'");
                 $currency = $db->GetRow();
                 $currency = $currency[0];
                 return $UserToolsMsg35 . ${"UserToolsChangeClassAmountAL" . $acc->{$SQLVIPColumn}} . " " . $currency;
             }
         }
     }
     $db->Query("SELECT Class FROM Character WHERE Name = '" . $post['char'] . "'");
     $data = $db->GetRow();
     if ($data[0] == $post['classe'] || $data[0] == $post['classe'] + 1 || $data[0] == $post['classe'] + 2) {
         return $UserToolsMsg54;
     }
     $class = $data[0];
     if ($UserToolsChangeClassCheckGuild) {
         require $_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "System/Guild.class.php";
         $guild = new Guild();
         if ($guild->GetCharacterGuild($db, $post['char'])) {
             return $UserToolsMsg55;
         }
     }
     if ($UserToolsChangeClassCheckItems) {
         require $_SERVER['DOCUMENT_ROOT'] . "/" . $_SESSION['SiteFolder'] . "System/Character.class.php";
         $character = new Character();
         if (!$character->CheckEmptyInventory($post['char'], $db)) {
             return $UserToolsMsg56;
         }
     }
     $return = "";
     $OriginalClass = $class;
     $UpClass = 0;
     while ($OriginalClass % 16 != 0) {
         $OriginalClass--;
         $UpClass++;
     }
     if ($post['classe'] == 48 || $post['classe'] == 64 || $post['classe'] == 96) {
         if ($UpClass > 2) {
             $UpClass = 2;
         }
     }
     $NewClass = $post['classe'] + $UpClass;
     //Check for wrong class numbers
     if ($NewClass == 49 || $NewClass == 51 || $NewClass == 65 || $NewClass == 67 || $NewClass == 97 || $NewClass == 99) {
         $NewClass--;
     }
     //Check for new classe values
     if (isset($UserToolsChangeClassMode) && $UserToolsChangeClassMode == true) {
         if ($NewClass == 2 || $NewClass == 18 || $NewClass == 34 || $NewClass == 82) {
             $NewClass++;
         }
     }
     /////////****************************************************
     if ($SQLLevelMasterTable != "Character") {
         $db->Query("DELETE FROM {$SQLLevelMasterTable} WHERE {$SQLNameMasterColumn} = '" . $post['char'] . "'");
     } else {
         $db->Query("UPDATE Character SET {$SQLLevelMasterColumn} = 0 WHERE Name = '" . $post['char'] . "'");
     }
     /*$db->Query("SELECT * FROM DefaultClassType WHERE Class = '$OriginalClass'");
     		$defaultData = $db->GetRow();*/
     /*$db->Query("SELECT COLUMNPROPERTY( OBJECT_ID('dbo.DefaultClassType'),'MagicList','PRECISION'),COLUMNPROPERTY( OBJECT_ID('dbo.DefaultClassType'),'Quest','PRECISION')");
     		$data = $db->GetRow();
     		$MagicListSize = $data[0];
     		if(strlen($defaultData['MagicList']) == $MagicListSize)
     			$NewMagicList = bin2hex($defaultData['MagicList']);
     		else
     			$NewMagicList = $defaultData['MagicList'];
     			
     		$QuestSize = $data[1];
     		if(strlen($defaultData['Quest']) == $QuestSize)
     			$NewQuest = bin2hex($defaultData['Quest']);
     		else
     			$NewQuest = $defaultData['Quest'];*/
     $db->Query("UPDATE Character SET MagicList = (SELECT MagicList FROM DefaultClassType WHERE Class = '{$OriginalClass}'), Class = '{$NewClass}', Quest = (SELECT Quest FROM DefaultClassType WHERE Class = '{$OriginalClass}') WHERE Name = '" . $post['char'] . "'");
     $acc->ReduceCredits($acc->memb___id, $UserToolsChangeClassCurrency, ${"UserToolsChangeClassAmountAL" . $acc->{$SQLVIPColumn}}, $db);
     $db->Query("INSERT INTO Z_ChangeClassLog ([memb___id],[char],[fromClass],[toClass]) VALUES ('{$acc->memb___id}','" . $post['char'] . "','{$class}','{$NewClass}')");
     $return = $UserToolsMsg57;
     return $return;
 }