Guest User

MOVE_CHARACTER

a guest
Nov 29th, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 22.14 KB | None | 0 0
  1. <?php
  2.  
  3. //require_once 'controller.php';
  4. require_once 'replace_items.php';
  5.  
  6.  
  7.  
  8. $files = array();
  9. $list;
  10. $xml_name;
  11.  
  12. $characters_xml ;
  13. $target_character_xml;
  14.  
  15.  
  16.  
  17.   function xml_auth($account_raw , $password_raw , $xml_account){
  18.  
  19.   $username = antiinjection($account_raw);
  20.   $password = antiinjection($password_raw);
  21.  
  22.   $xml_username = $xml_account->account->name;
  23.   $xml_password = '0x'.$xml_account->account->password ;        
  24.  
  25.   $user_password = @encrypt($password);
  26.    
  27.     if($user_password==$xml_password )
  28.     {
  29.           return true;
  30.     }
  31.    
  32.     return false;
  33.   }  
  34.  
  35.  
  36. function load_files(){
  37.     global $files , $xml_directory , $list;
  38.     $list = scandir($xml_directory);
  39.    
  40.     for ($x=0; $x<count($list); $x++)
  41.     {
  42.      if (!@is_dir($list[$x])&&basename($list[$x], ".xml")!=$list[$x])
  43.      {
  44.       $files[]=$list[$x];
  45.      }
  46.     }
  47. }
  48.  
  49. function get_xml_account($account){
  50.    
  51.  global $files , $xml_name , $xml_directory;
  52.  if (count($files)>0)
  53.  {
  54.   for ($x=0; $x<count($files); $x++)
  55.    {            
  56.         $xml=@simplexml_load_file($xml_directory.$files[$x]);
  57.         $acc_name=$xml->account->name;
  58.         if($acc_name == $account)
  59.         {
  60.             $xml_name = $files[$x];
  61.             return $xml;
  62.         }
  63.    }
  64.  
  65.  }  
  66.    
  67. }
  68.  
  69. function get_characters_names($xml , $desired_name){
  70.     $characters = array();
  71.    
  72.     $desired_character ;
  73.          if (count($xml->char)>0)
  74.          {
  75.           for ($i=0; $i<count($xml->char); $i++)
  76.            {
  77.               $name = $xml->char[$i]->details->char_name;        
  78.               if($name == $desired_name){$desired_character = $xml->char[$i];}
  79.               else{
  80.               $characters[] = $xml->char[$i];        
  81.               }
  82.            }
  83.          }
  84.          if(isset($desired_character) != null){array_unshift($characters,$desired_character );}
  85.          return $characters;
  86. }
  87.  
  88. function get_selected_character($char_name , $characters_xml){
  89.     foreach ($characters_xml as $character)
  90.     {              
  91.     $character_name = $character->details->char_name;
  92.     if($character_name == $char_name){
  93.         return $character;
  94.     }
  95.     }      
  96. }
  97.  
  98. function get_target_character($xml , $char_name){    
  99.          if (count($xml->char)>0)
  100.          {
  101.           for ($i=0; $i<count($xml->char); $i++)
  102.            {
  103.               if($char_name == $xml->char[$i]->details->char_name)
  104.               {
  105.                   return $xml->char[$i];
  106.               }
  107.            }
  108.          }
  109. }
  110.  
  111.  
  112. function is_premium_account($xml){
  113.  
  114.                   if( $xml->premium->enabled == "yes" )
  115.                   {
  116.                       return true;
  117.                   }
  118.                   return false;            
  119. }
  120.  
  121. function send_token_gif($account){
  122.    
  123.    
  124. }
  125.  
  126. function change_level($level){
  127.     global $DECREASE_PERCENT , $level_list;
  128.    
  129.     $server_top_level = get_server_top_level();
  130.     $server_average_level = get_server_average_level();
  131.    
  132.     if($server_average_level == 0){$server_average_level = $server_top_level;}
  133.    
  134.     $level_exp = $level_list[$level]['exp'];
  135.    
  136.     //1 we reduce % of exp
  137.     $new_level_exp = ($level_exp * $DECREASE_PERCENT) / 100;    
  138.     $new_level = exp_to_level($new_level_exp);
  139.    
  140.    
  141.     //2 we reduce level to server average
  142.     if($new_level > $server_average_level )
  143.     {
  144.         $new_posible_level = ($server_top_level + $server_average_level) /2;
  145.        
  146.         if($new_posible_level > $new_level ){
  147.             $new_level = $server_average_level;
  148.         }
  149.         else
  150.         {
  151.             $new_level = $new_posible_level;
  152.         }
  153.         $new_level_exp = $level_list[$new_level]['exp'];
  154.     }
  155.    
  156.     $character_level = array();
  157.     $character_level['exp'] = $new_level_exp;
  158.     $character_level['lvl'] = $new_level;
  159.     return $character_level;
  160. }
  161.  
  162. function exp_to_level($exp){    
  163.   global  $level_list;
  164.   $arrived_to_max = false;
  165.  
  166.   foreach ($level_list as $level)
  167.   {
  168.       if($exp <= $level['exp'] )
  169.       {          
  170.           return $level['lvl'];
  171.       }
  172.      
  173.   }
  174.   return 1;
  175. }
  176.  
  177.  
  178.  
  179. function import_character( $new_acc_id , $new_acc_name, $xml_char){
  180.    
  181.      global $server , $char_prefix  , $ALLOW_A_GRADE , $ALLOW_B_GRADE , $MAX_ADENA , $ALLOW_ALL_ITEMS;        
  182.      $server = 1;    
  183.      
  184.      $world= 1;
  185.      $connection_lin2world = open_connection("lin2world");
  186.      
  187.     $char_name=$xml_char->details->char_name;
  188.    
  189.     $result=_sql_query_ext($connection_lin2world , "SELECT char_name FROM user_data WHERE char_name='$char_name'");
  190.     if(check_result($result))
  191.     {
  192.        $char_name = $char_prefix.$char_name;
  193.         if (strlen($char_name)>16)
  194.         {
  195.          $char_name=substr($char_name, 0, 16);
  196.         }
  197.     }
  198.    
  199.     $result=_sql_query_ext($connection_lin2world , "SELECT char_name FROM user_data WHERE char_name='$char_name'");
  200.     if(check_result($result))
  201.     {
  202.         return false;
  203.     }
  204.     else{
  205.  
  206.         $level = intval($xml_char->details->lev);
  207.        
  208.         $new_character_level = change_level($level);
  209.        
  210.         $new_level = $new_character_level['lvl'];
  211.         $new_exp = $new_character_level['exp'];
  212.        
  213.    
  214.                   $result=_sql_query($connection_lin2world ,"INSERT INTO user_data (char_name, account_name, account_id, gender, race,
  215.                                                         class, world, xloc, yloc, zloc, HP, MP, cp, max_hp,
  216.                                                         max_mp, max_cp, SP, Exp, Lev, align, PK, PKpardon,
  217.                                                         Duel, quest_flag, power_flag, face_index,
  218.                                                         hair_shape_index, hair_color_index, use_time, subjob_id,
  219.                                                         subjob0_class, subjob1_class, subjob2_class, subjob3_class)
  220.                                  VALUES ('$char_name',
  221.                                          '$new_acc_name',
  222.                                           $new_acc_id,
  223.                                         ".$xml_char->details->gender.",
  224.                                         ".$xml_char->details->race.",
  225.                                         ".$xml_char->details->class.",
  226.                                           $world,
  227.                                         ".$xml_char->details->xloc.",
  228.                                         ".$xml_char->details->yloc.",
  229.                                         ".$xml_char->details->zloc.",
  230.                                         ".$xml_char->details->hp.",
  231.                                         ".$xml_char->details->mp.",
  232.                                         ".$xml_char->details->cp.",
  233.                                         ".$xml_char->details->max_hp.",
  234.                                         ".$xml_char->details->max_mp.",
  235.                                         ".$xml_char->details->max_cp.",
  236.                                         ".$xml_char->details->sp.",
  237.                                         ".$new_exp.",
  238.                                         ".$new_level.",
  239.                                         ".$xml_char->details->align.",
  240.                                         ".$xml_char->details->pk.",
  241.                                         ".$xml_char->details->pkpardon.",
  242.                                         ".$xml_char->details->duel.",
  243.                                         0x".$xml_char->details->quest_flag.",
  244.                                         0x".$xml_char->details->power_flag.",
  245.                                         ".$xml_char->details->face_index.",
  246.                                         ".$xml_char->details->hair_shape_index.",
  247.                                         ".$xml_char->details->hair_color_index.",
  248.                                         ".$xml_char->details->use_time.",
  249.                                         ".$xml_char->details->subjob_id.",
  250.                                         ".$xml_char->details->subjob0_class.",
  251.                                         ".$xml_char->details->subjob1_class.",
  252.                                         ".$xml_char->details->subjob2_class.",
  253.                                         ".$xml_char->details->subjob3_class.")");
  254.  
  255.               if ($result)
  256.                {
  257.                 $result=_sql_query($connection_lin2world ,"SELECT char_id FROM user_data WHERE char_name='$char_name'");
  258.                 $c=_sql_fetch_assoc($result);
  259.                 $new_char_id=$c["char_id"];
  260.  
  261.                 if (count($xml_char->hennas)>0)
  262.                  {
  263.                   $result=_sql_query($connection_lin2world ,"INSERT INTO user_henna (char_id, henna_1, henna_2, henna_3, subjob_id)
  264.                                      VALUES ($new_char_id,
  265.                                            ".$xml_char->hennas->henna_1.",
  266.                                            ".$xml_char->hennas->henna_2.",
  267.                                            ".$xml_char->hennas->henna_3.",
  268.                                            ".(intval($xml_char->hennas->subjob_id)+0).")");
  269.                  }
  270.                }
  271.  
  272.               if ($result)
  273.                {
  274.                 if (count($xml_char->subjobs)>0)
  275.                  {
  276.                   for ($j=0; $j<count($xml_char->subjobs->subjob); $j++)
  277.                    {
  278.                     $result=_sql_query($connection_lin2world ,"INSERT INTO user_subjob (char_id, hp, mp, sp, exp, level,
  279.                                                                 henna_1, henna_2, henna_3, subjob_id, create_date)
  280.                                        VALUES ($new_char_id,
  281.                                              ".$xml_char->subjobs->subjob[$j]->hp.",
  282.                                              ".$xml_char->subjobs->subjob[$j]->mp.",
  283.                                              ".$xml_char->subjobs->subjob[$j]->sp.",
  284.                                              ".$xml_char->subjobs->subjob[$j]->exp.",
  285.                                              ".$xml_char->subjobs->subjob[$j]->level.",
  286.                                              ".$xml_char->subjobs->subjob[$j]->henna_1.",
  287.                                              ".$xml_char->subjobs->subjob[$j]->henna_2.",
  288.                                              ".$xml_char->subjobs->subjob[$j]->henna_3.",
  289.                                              ".$xml_char->subjobs->subjob[$j]->subjob_id.", GETDATE())");
  290.                    }
  291.                  }
  292.                }
  293.  
  294.               if ($result)
  295.                {
  296.                 if (count($xml_char->quests)>0)
  297.                  {
  298.                   $result=_sql_query($connection_lin2world ,"INSERT INTO Quest (char_id, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10,
  299.                                                         q11, q12, q13, q14, q15, q16, s1, s2, s3, s4, s5,
  300.                                                         s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16,
  301.                                                         j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12,
  302.                                                         j13, j14, j15, j16, s2_1, s2_2, s2_3, s2_4, s2_5,
  303.                                                         s2_6, s2_7, s2_8, s2_9, s2_10, s2_11, s2_12, s2_13,
  304.                                                         s2_14, s2_15, s2_16)
  305.                                        VALUES ($new_char_id,
  306.                                              ".$xml_char->quests->q1.",
  307.                                              ".$xml_char->quests->q2.",
  308.                                              ".$xml_char->quests->q3.",
  309.                                              ".$xml_char->quests->q4.",
  310.                                              ".$xml_char->quests->q5.",
  311.                                              ".$xml_char->quests->q6.",
  312.                                              ".$xml_char->quests->q7.",
  313.                                              ".$xml_char->quests->q8.",
  314.                                              ".$xml_char->quests->q9.",
  315.                                              ".$xml_char->quests->q10.",
  316.                                              ".$xml_char->quests->q11.",
  317.                                              ".$xml_char->quests->q12.",
  318.                                              ".$xml_char->quests->q13.",
  319.                                              ".$xml_char->quests->q14.",
  320.                                              ".$xml_char->quests->q15.",
  321.                                              ".$xml_char->quests->q16.",
  322.                                              ".$xml_char->quests->s1.",
  323.                                              ".$xml_char->quests->s2.",
  324.                                              ".$xml_char->quests->s3.",
  325.                                              ".$xml_char->quests->s4.",
  326.                                              ".$xml_char->quests->s5.",
  327.                                              ".$xml_char->quests->s6.",
  328.                                              ".$xml_char->quests->s7.",
  329.                                              ".$xml_char->quests->s8.",
  330.                                              ".$xml_char->quests->s9.",
  331.                                              ".$xml_char->quests->s10.",
  332.                                              ".$xml_char->quests->s11.",
  333.                                              ".$xml_char->quests->s12.",
  334.                                              ".$xml_char->quests->s13.",
  335.                                              ".$xml_char->quests->s14.",
  336.                                              ".$xml_char->quests->s15.",
  337.                                              ".$xml_char->quests->s16.",
  338.                                              ".$xml_char->quests->j1.",
  339.                                              ".$xml_char->quests->j2.",
  340.                                              ".$xml_char->quests->j3.",
  341.                                              ".$xml_char->quests->j4.",
  342.                                              ".$xml_char->quests->j5.",
  343.                                              ".$xml_char->quests->j6.",
  344.                                              ".$xml_char->quests->j7.",
  345.                                              ".$xml_char->quests->j8.",
  346.                                              ".$xml_char->quests->j9.",
  347.                                              ".$xml_char->quests->j10.",
  348.                                              ".$xml_char->quests->j11.",
  349.                                              ".$xml_char->quests->j12.",
  350.                                              ".$xml_char->quests->j13.",
  351.                                              ".$xml_char->quests->j14.",
  352.                                              ".$xml_char->quests->j15.",
  353.                                              ".$xml_char->quests->j16.",
  354.                                              ".$xml_char->quests->s2_1.",
  355.                                              ".$xml_char->quests->s2_2.",
  356.                                              ".$xml_char->quests->s2_3.",
  357.                                              ".$xml_char->quests->s2_4.",
  358.                                              ".$xml_char->quests->s2_5.",
  359.                                              ".$xml_char->quests->s2_6.",
  360.                                              ".$xml_char->quests->s2_7.",
  361.                                              ".$xml_char->quests->s2_8.",
  362.                                              ".$xml_char->quests->s2_9.",
  363.                                              ".$xml_char->quests->s2_10.",
  364.                                              ".$xml_char->quests->s2_11.",
  365.                                              ".$xml_char->quests->s2_12.",
  366.                                              ".$xml_char->quests->s2_13.",
  367.                                              ".$xml_char->quests->s2_14.",
  368.                                              ".$xml_char->quests->s2_15.",
  369.                                              ".$xml_char->quests->s2_16.")");
  370.                  }
  371.                }
  372.  
  373.               if ($result)
  374.                {
  375.                  
  376.                  if (count($xml_char->weared_items->item)>0)
  377.                  {
  378.                      $chest_item = 0;
  379.                      $leg_item = 1;
  380.                   for ($j=0; $j<count($xml_char->weared_items->item); $j++)
  381.                    {
  382.                       $item_slot = $xml_char->weared_items->item[$j]->item_slot;
  383.                      
  384.                       if(intval($item_slot) == 0)
  385.                       {
  386.                         $item_id = intval($xml_char->weared_items->item[$j]->item_type);
  387.                        
  388.                         if($item_slot == "CHEST"){$chest_item = $item_id ;}
  389.                         if($item_slot == "LEGS"){$leg_item = $item_id ; }
  390.                        
  391.                         if($chest_item != $leg_item){
  392.                        
  393.                         $item_id = remove_sa($item_id);
  394.                        
  395.                         if(!$ALLOW_A_GRADE)
  396.                         {
  397.                             $item_id = replace_item_AB($item_id);
  398.                         }
  399.                         if (!$ALLOW_B_GRADE){
  400.                             $item_id = replace_item_BC($item_id);
  401.                         }
  402.  
  403.                         if($item_id == -5){  
  404.                             $old_item_id = intval($xml_char->weared_items->item[$j]->item_type);
  405.                             $items = get_double_items($old_item_id);
  406.                             if($items != null)
  407.                             {
  408.                                  $item_1 = $items[0];
  409.                                  $item_2 = $items[1];
  410.                                  $result=_sql_query($connection_lin2world ,"INSERT INTO user_item (char_id, item_type, amount, enchant, eroded, bless, ident, wished, warehouse) VALUES ($new_char_id,  ".$item_1.", 1, 0, 0, 0, 0, 0, 0)");
  411.                                  $result=_sql_query($connection_lin2world ,"INSERT INTO user_item (char_id, item_type, amount, enchant, eroded, bless, ident, wished, warehouse) VALUES ($new_char_id,  ".$item_2.", 1, 0, 0, 0, 0, 0, 0)");
  412.                             }
  413.                            
  414.                         }
  415.                        
  416.                         else{
  417.                         $result=_sql_query($connection_lin2world ,"INSERT INTO user_item (char_id, item_type, amount, enchant, eroded,
  418.                                                                 bless, ident, wished, warehouse)
  419.                                          VALUES ($new_char_id,
  420.                                                ".$item_id.",
  421.                                                1,
  422.                                                0,
  423.                                                0,
  424.                                                0,
  425.                                                0,
  426.                                                0,
  427.                                                0)");
  428.                         }
  429.                       }
  430.                    }
  431.                    }
  432.                  }                  
  433.                }
  434.  
  435.               if ($result)
  436.                {
  437.                 if (count($xml_char->skills->skill)>0)
  438.                  {
  439.                   for ($j=0; $j<count($xml_char->skills->skill); $j++)
  440.                    {
  441.                     $result=_sql_query($connection_lin2world ,"INSERT INTO user_skill (char_id, skill_id, skill_lev, subjob_id)
  442.                                        VALUES ($new_char_id,
  443.                                              ".$xml_char->skills->skill[$j]->skill_id.",
  444.                                              ".$xml_char->skills->skill[$j]->skill_lev.",
  445.                                              ".$xml_char->skills->skill[$j]->subjob_id.")");
  446.                    }
  447.                  }
  448.                }
  449.  
  450.               if ($result)
  451.                {
  452.                 if (count($xml_char->recipes)>0)
  453.                  {
  454.                   for ($j=0; $j<count($xml_char->recipes); $j++)
  455.                    {
  456.                     $result=_sql_query($connection_lin2world ,"INSERT INTO user_recipe (char_id, recipe_id)
  457.                                        VALUES ($new_char_id,
  458.                                              ".$xml_char->recipes->recipe_id[$j].")");
  459.                    }
  460.                  }
  461.                }
  462.                
  463.                //adena and items
  464.                if ($result)
  465.                {
  466.                 if (count($xml_char->items->item)>0)
  467.                  {
  468.                   for ($j=0; $j<count($xml_char->items->item); $j++)
  469.                    {
  470.                      
  471.                     $item_id = $xml_char->items->item[$j]->item_type;
  472.                     $amount = $xml_char->items->item[$j]->amount;
  473.                    
  474.                     if(intval($item_id) == 57 || $ALLOW_ALL_ITEMS)
  475.                     {
  476.                         if(intval($item_id) == 57  && intval($amount) > $MAX_ADENA)
  477.                         {
  478.                         $amount = $MAX_ADENA;    
  479.                         }
  480.                        
  481.                         $result=_sql_query($connection_lin2world ,"INSERT INTO user_item (char_id, item_type, amount, enchant, eroded,
  482.                                                               bless, ident, wished, warehouse)
  483.                                        VALUES ($new_char_id,
  484.                                              ".$item_id.",
  485.                                              ".$amount.",
  486.                                              0,
  487.                                              0,
  488.                                              0,
  489.                                              0,
  490.                                              0,
  491.                                              0)");      
  492.                         $j  = count($xml_char->items->item)+1;
  493.                     }                    
  494.                    }
  495.                  }
  496.                }
  497.         }
  498.       _sql_close($connection_lin2world);
  499. }
Advertisement
Add Comment
Please, Sign In to add comment