Guest User

Untitled

a guest
Jul 8th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.58 KB | None | 0 0
  1. <?php
  2. $host = "localhost";
  3. $user = "root";
  4. $password = "root";
  5. $db_name = "temp_char";
  6.  
  7. $link = mysql_connect($host, $user, $password) or die("Сервер базы данных не доступен");
  8. $db = mysql_select_db($db_name) or die("База данных не доступна");
  9.  
  10. function LoadRadio($account)
  11. {
  12.     echo "<center>";
  13.     $r = mysql_query("SELECT guid, name FROM characters WHERE account = ".$account." AND ported = 0") or die("Ошибка при выполнении запроса: ".mysql_error());
  14.     $row = mysql_fetch_row($r);
  15.     if ($row > 0)
  16.     {        
  17.         echo "<b>Выберите персонажа для переноса!</b>";
  18.         echo "<form action='' method=POST>";
  19.         while ($row = mysql_fetch_array($r))
  20.             echo '<br><INPUT type="radio" name="character" value="'.$row[guid].'">'.$row[name];    
  21.         echo "<br><INPUT type=submit value=Перенести name=button_form2> </form>";
  22.     } else echo "<b>Нет персонажей доступных для переноса.</b>";
  23. }
  24.  
  25. function AllChecks($account, $guid)
  26. {    
  27.     $r = mysql_query("SELECT COUNT(*) FROM characters WHERE account = ".$account) or die("Ошибка при выполнении запроса: ".mysql_error());
  28.     $row = mysql_fetch_row($r);
  29.     if ($row[0] > 9)
  30.         die("Ошибка: У вас на аккаунте больше 9 персонажей. Для продолжения, вы должны сделать их количество не больше 9.");
  31.    
  32.     $r = mysql_query("SELECT ported FROM characters WHERE guid = ".$guid) or die("Ошибка при выполнении запроса: ".mysql_error());
  33.     $row = mysql_fetch_row($r);
  34.     if ($row[0] == 1)
  35.         die("Ошибка: Данный персонаж уже перенесён!");
  36. }
  37.  
  38. function DumpCharacter($dump_dir, $guid, $realm)
  39. {
  40.     AllChecks("3", $guid);
  41.    
  42.     $table_name =
  43.     array(
  44.     0 => "characters",
  45.     1 => "character_queststatus",
  46.     2 => "character_reputation",
  47.     3 => "character_spell",
  48.     4 => "character_spell_cooldown",
  49.     5 => "character_action",
  50.     6 => "character_aura",
  51.     7 => "character_homebind",
  52.     8 => "character_skills",
  53.     9 => "character_inventory",
  54.     10 => "item_instance",
  55.     11 => "character_pet",
  56.     12 => "character_gifts",
  57.     13 => "pet_spell",
  58.     14 => "pet_spell_cooldown",
  59.     15 => "pet_aura",
  60.     16 => "mail",
  61.     17 => "mail_items",
  62.     18 => "character_glyphs");
  63.    
  64.     $dump_tables =
  65.     array(
  66.     0 => "SELECT * FROM characters WHERE guid = ",
  67.     1 => "SELECT * FROM character_queststatus WHERE guid = ",
  68.     2 => "SELECT * FROM character_reputation WHERE guid = ",
  69.     3 => "SELECT * FROM character_spell WHERE guid = ",
  70.     4 => "SELECT * FROM character_spell_cooldown WHERE guid = ",
  71.     5 => "SELECT * FROM character_action WHERE guid = ",
  72.     6 => "SELECT * FROM character_aura WHERE guid = ",
  73.     7 => "SELECT * FROM character_homebind WHERE guid = ",
  74.     8 => "SELECT * FROM character_skills WHERE guid = ",
  75.     9 => "SELECT * FROM character_inventory WHERE guid = ",
  76.     10 => "SELECT * FROM item_instance WHERE owner_guid  = ",
  77.     11 => "SELECT * FROM character_pet WHERE owner = ",
  78.     12 => "SELECT * FROM character_gifts WHERE guid = ",    
  79.     13 => "SELECT * FROM pet_spell WHERE guid IN (SELECT id FROM character_pet WHERE owner = ",
  80.     14 => "SELECT * FROM pet_spell_cooldown WHERE guid IN (SELECT id FROM character_pet WHERE owner = ",
  81.     15 => "SELECT * FROM pet_aura WHERE guid IN (SELECT id FROM character_pet WHERE owner = ",
  82.     16 => "SELECT * FROM mail WHERE receiver = ",
  83.     17 => "SELECT * FROM mail_items WHERE receiver = ",
  84.     18 => "SELECT * FROM character_glyphs WHERE guid = ");
  85.    
  86.     $count = 17;
  87.     if ($realm == "1")    // 0 - TBC;    
  88.         $count = 18;     // 1 - WotLK
  89.    
  90.     mysql_query("UPDATE characters SET ported = 1, at_login = at_login + 1 WHERE guid = ".$guid) or die("Ошибка при выполнении запроса: ".mysql_error());
  91.     $full_dump = "";    
  92.     for ($i = 0; $i <= $count; $i++)
  93.     {          
  94.         if ($i > 12 && $i < 16)
  95.             $rows = $dump_tables[$i].$guid.");";
  96.         else $rows = $dump_tables[$i].$guid.";";
  97.         $r = mysql_query($rows) or die("Ошибка при выполнении запроса: ".mysql_error());
  98.         while($row = mysql_fetch_row($r))
  99.         {
  100.             $query = "";
  101.             foreach ($row as $field)
  102.             {
  103.                 if (is_null($field))
  104.                     $field = "NULL";
  105.                 else
  106.                     $field = "'".mysql_escape_string($field)."'";
  107.                 if ($query == "")
  108.                     $query = $field;
  109.                 else
  110.                     $query = $query.', '.$field;
  111.             }
  112.             $full_dump = $full_dump."INSERT INTO `".$table_name[$i]."` VALUES (".$query.");\n";            
  113.         }        
  114.     }
  115.    
  116.     $fp = fopen($dump_dir."/"."player_guid-".$guid.".sql", "a");
  117.     if ($fp)
  118.     {
  119.         fwrite ($fp, $full_dump);
  120.         fclose ($fp);        
  121.     }    
  122.     mysql_close($link);
  123.     echo "<center><b>Операция успешна выполнена! В течении 5 минут персонаж будет перенесён.</b>";
  124. }
  125.  
  126. if (isset ($_POST['button_form1']) )
  127. {
  128.   LoadRadio("2");           // достать из сессии ид акка.
  129.   mysql_close($link);
  130. }
  131.  
  132. if (isset ($_POST['button_form2']) )
  133. {
  134.   DumpCharacter(".", $_POST['character'], "0");
  135.   DumpCharacter(".", $_POST['character'], "1");
  136.   mysql_close($link);
  137. }
  138. ?>
Add Comment
Please, Sign In to add comment