function adr_get_poster_infos($poster_id) { global $db, $lang, $phpEx, $phpbb_root_path, $board_config, $table_prefix; define('IN_ADR_CHARACTER', 1); include_once $phpbb_root_path . 'adr/includes/adr_constants.' . $phpEx; $poster_id = intval($poster_id); $cache_config = explode('-', $board_config['Adr_use_cache_system']); if ($cache_config[6]) { // All the following code has been made by Ptirhiik @(include $phpbb_root_path . './adr/cache/cache_posters.' . $phpEx); if (!empty($adr_posters)) { $cached_adr_posters = $adr_posters[$poster_id]; } else { $sql = "SELECT c.character_level, r.race_name, r.race_img, e.element_name, e.element_img, a.alignment_name, a.alignment_img,\n\t\t\t\tcl.class_name, cl.class_img\n\t\t\t\tFROM " . ADR_CHARACTERS_TABLE . " c, " . ADR_RACES_TABLE . " r, " . ADR_ELEMENTS_TABLE . " e, " . ADR_ALIGNMENTS_TABLE . " a, " . ADR_CLASSES_TABLE . " cl\n\t\t\t\tWHERE c.character_id = '{$poster_id}'\n\t\t\t\tAND cl.class_id = c.character_class\n\t\t\t\tAND r.race_id = c.character_race\n\t\t\t\tAND e.element_id = c.character_element\n\t\t\t\tAND a.alignment_id = c.character_alignment "; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Error Getting Adr Users!', '', __LINE__, __FILE__, $sql); } @(include $phpbb_root_path . './adr/cache/cache_posters.' . $phpEx); if (empty($adr_posters)) { adr_update_posters_infos(); include $phpbb_root_path . './adr/cache/cache_posters.' . $phpEx; $cached_adr_posters = $adr_posters[$poster_id]; } } } else { $poster_sql = "SELECT c.character_level, r.race_name, r.race_img, e.element_name, e.element_img, a.alignment_name, a.alignment_img,\n\t\t\tcl.class_name, cl.class_img\n\t\t\tFROM " . ADR_CHARACTERS_TABLE . " c, " . ADR_RACES_TABLE . " r, " . ADR_ELEMENTS_TABLE . " e, " . ADR_ALIGNMENTS_TABLE . " a, " . ADR_CLASSES_TABLE . " cl\n\t\t\tWHERE c.character_id = {$poster_id}\n\t\t\tAND cl.class_id = c.character_class\n\t\t\tAND r.race_id = c.character_race\n\t\t\tAND e.element_id = c.character_element\n\t\t\tAND a.alignment_id = c.character_alignment "; if (!($poster_result = $db->sql_query($poster_sql))) { message_die(GENERAL_ERROR, 'Error Getting Adr Users!', '', __LINE__, __FILE__, $sql); } $cached_adr_posters = $db->sql_fetchrow($poster_result); } return $cached_adr_posters; }
function adr_get_poster_infos($poster_id) { global $db, $lang, $phpEx, $phpbb_root_path, $board_config, $table_prefix; redefine('IN_ADR_CHARACTER', 1); include_once $phpbb_root_path . 'adr/includes/adr_constants.' . $phpEx; $poster_id = intval($poster_id); // All the following code has been made by Ptirhiik @(include $phpbb_root_path . './adr/cache/cache_posters.' . $phpEx); if (!empty($adr_posters)) { $cached_adr_posters = $adr_posters[$poster_id]; } else { adr_update_posters_infos(); include $phpbb_root_path . './adr/cache/cache_posters.' . $phpEx; $cached_adr_posters = $adr_posters[$poster_id]; } return $cached_adr_posters; }
function adr_level_up($user_id, $from) { global $db, $lang, $phpEx, $adr_general; $user_id = intval($user_id); $sql = "SELECT cl.* , c.* FROM " . ADR_CHARACTERS_TABLE . " c , " . ADR_CLASSES_TABLE . " cl\n\t\tWHERE cl.class_id = c.character_class \n\t\tAND c.character_id = {$user_id} "; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not check user experience', "", __LINE__, __FILE__, $sql); } $level = $db->sql_fetchrow($result); $max_hp = $level['class_update_xp_req']; for ($p = 1; $p < $level['character_level']; $p++) { $max_hp = floor($max_hp * (($adr_general['next_level_penalty'] + 100) / 100)); } // Damned vicious users :) if ($level['character_xp'] < $max_hp && $from == 'character_page') { exit; } $xp_req = $max_hp; $hp = intval($level['class_update_hp']); $mp = intval($level['class_update_mp']); $ac = intval($level['class_update_ac']); switch ($from) { case 'character_page': $direction = append_sid("adr_character.{$phpEx}"); $more_sql = 'character_xp = character_xp - ' . $xp_req; break; case 'training': $direction = append_sid("adr_character_training.{$phpEx}"); $more_sql = 'character_xp = 0 '; break; } $sql = "UPDATE " . ADR_CHARACTERS_TABLE . "\n\t\tSET character_level = character_level + 1 ,\n\t\t\tcharacter_ac = character_ac + {$ac},\n\t\t\tcharacter_mp_max = character_mp_max + {$mp},\n\t\t\tcharacter_hp_max = character_hp_max + {$hp},\n\t\t\t{$more_sql}\n\t\tWHERE character_id = {$user_id} "; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not update user experience', "", __LINE__, __FILE__, $sql); } $new_level = $level['character_level'] + 1; adr_update_posters_infos(); $message = sprintf($lang['Adr_level_up_congrats'], $new_level); $message .= '<br /><br />' . sprintf($lang['Adr_return'], "<a href=\"" . $direction . "\">", "</a>"); message_die(GENERAL_MESSAGE, $message); }
$forge_uses = intval($_POST['character_skill_forge_uses']); $enchantment_uses = intval($_POST['character_skill_enchantment_uses']); $trading_uses = intval($_POST['character_skill_trading_uses']); $thief_uses = intval($_POST['character_skill_thief_uses']); $victories = intval($_POST['character_victories']); $defeats = intval($_POST['character_defeats']); $flees = intval($_POST['character_flees']); $character_battle_limit = intval($_POST['character_battle_limit']); $character_skill_limit = intval($_POST['character_skill_limit']); $character_trading_limit = intval($_POST['character_trading_limit']); $character_thief_limit = intval($_POST['character_thief_limit']); $sql = "UPDATE " . ADR_CHARACTERS_TABLE . "\n\t\t\t\tSET character_class = {$class} ,\n\t\t\t\t\tcharacter_name = '" . str_replace("\\'", "''", $name) . "',\n\t\t\t\t\tcharacter_desc = '{$bio}' ,\n\t\t\t\t\tcharacter_alignment = {$alignment} ,\n\t\t\t\t\tcharacter_race = {$race} ,\n\t\t\t\t\tcharacter_element = {$element} ,\n\t\t\t\t\tcharacter_might = {$power} ,\n\t\t\t\t\tcharacter_dexterity = {$agility} ,\n\t\t\t\t\tcharacter_constitution = {$endurance} ,\n\t\t\t\t\tcharacter_intelligence = {$intelligence} ,\n\t\t\t\t\tcharacter_wisdom = {$willpower} ,\n\t\t\t\t\tcharacter_charisma = {$charm} ,\n\t\t\t\t\tcharacter_skill_mining = {$mining} ,\n\t\t\t\t\tcharacter_skill_stone = {$stone} ,\n\t\t\t\t\tcharacter_skill_forge = {$forge} ,\n\t\t\t\t\tcharacter_skill_enchantment = {$enchantment} ,\n\t\t\t\t\tcharacter_skill_trading = {$trading} ,\n\t\t\t\t\tcharacter_skill_thief = {$thief} ,\n\t\t\t\t\tcharacter_skill_mining_uses = {$mining_uses} ,\n\t\t\t\t\tcharacter_skill_stone_uses = {$stone_uses} ,\n\t\t\t\t\tcharacter_skill_forge_uses = {$forge_uses} ,\n\t\t\t\t\tcharacter_skill_enchantment_uses = {$enchantment_uses} ,\n\t\t\t\t\tcharacter_skill_trading_uses = {$trading_uses} ,\n\t\t\t\t\tcharacter_skill_thief_uses = {$thief_uses} ,\n\t\t\t\t\tcharacter_victories = {$victories} ,\n\t\t\t\t\tcharacter_defeats = {$defeats} ,\n\t\t\t\t\tcharacter_flees = {$flees} ,\n\t\t\t\t\tcharacter_level = {$level} ,\n\t\t\t\t\tcharacter_hp = {$hp},\n\t\t\t\t\tcharacter_hp_max = {$hp_max},\n\t\t\t\t\tcharacter_mp = {$mp},\n\t\t\t\t\tcharacter_mp_max = {$mp_max},\n\t\t\t\t\tcharacter_xp = {$xp},\n\t\t\t\t\tcharacter_sp = {$sp},\n\t\t\t\t\tcharacter_battle_limit = {$character_battle_limit},\n\t\t\t\t\tcharacter_skill_limit = {$character_skill_limit},\t\n\t\t\t\t\tcharacter_trading_limit = {$character_trading_limit},\t\n\t\t\t\t\tcharacter_thief_limit = {$character_thief_limit},\t\n\t\t\t\t\tcharacter_ac = {$ac}\n\t\t\tWHERE character_id = '{$searchid}'"; if (!($result = $db->sql_query($sql))) { message_die(CRITICAL_ERROR, 'Error updating character !'); } adr_update_posters_infos(); adr_previous(Adr_admin_character_edited, admin_adr_users, "mode=edit&" . POST_USERS_URL . "=" . $searchid); break; case 'edit': adr_template_file('admin/config_adr_character_body.tpl'); $template->assign_block_vars('edit', array()); if (isset($_GET[POST_USERS_URL]) || isset($_POST[POST_USERS_URL])) { $user_id = isset($_POST[POST_USERS_URL]) ? intval($_POST[POST_USERS_URL]) : intval($_GET[POST_USERS_URL]); $this_userdata = get_userdata($user_id); if (!$this_userdata) { message_die(GENERAL_MESSAGE, $lang['No_user_id_specified']); } } else { $this_userdata = get_userdata($_POST['username'], true); if (!$this_userdata) { message_die(GENERAL_MESSAGE, $lang['No_user_id_specified']);
function adr_level_up($user_id, $from) { global $db, $lang, $phpEx, $adr_general; $user_id = intval($user_id); $sql = "SELECT cl.* , c.* FROM " . ADR_CHARACTERS_TABLE . " c , " . ADR_CLASSES_TABLE . " cl\r\n\t\tWHERE cl.class_id = c.character_class \r\n\t\tAND c.character_id = {$user_id} "; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not check user experience', "", __LINE__, __FILE__, $sql); } $level = $db->sql_fetchrow($result); $max_hp = $level['class_update_xp_req']; for ($p = 1; $p < $level['character_level']; $p++) { $max_hp = floor($max_hp * (($adr_general['next_level_penalty'] + 100) / 100)); } // Damned vicious users :) if ($level['character_xp'] < $max_hp && $from == 'character_page') { exit; } $xp_req = $max_hp; $hp = intval($level['class_update_hp']); $mp = intval($level['class_update_mp']); $ac = intval($level['class_update_ac']); switch ($from) { case 'character_page': $direction = append_sid("adr_character.{$phpEx}"); $more_sql = 'character_xp = character_xp - ' . $xp_req; break; case 'training': $direction = append_sid("adr_character_training.{$phpEx}"); $more_sql = 'character_xp = 0 '; break; } $sql = "UPDATE " . ADR_CHARACTERS_TABLE . "\r\n\t\tSET character_level = character_level + 1 ,\r\n\t\t\tcharacter_ac = character_ac + {$ac},\r\n\t\t\tcharacter_mp_max = character_mp_max + {$mp},\r\n\t\t\tcharacter_hp_max = character_hp_max + {$hp},\r\n\t\t\t{$more_sql}\r\n\t\tWHERE character_id = {$user_id} "; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not update user experience', "", __LINE__, __FILE__, $sql); } $new_level = $level['character_level'] + 1; $sql = "SELECT spell_id FROM " . ADR_SHOPS_SPELLS_TABLE . "\r\n\t\tWHERE spell_owner_id = {$user_id}\r\n\t\tORDER BY spell_id \r\n\t\tDESC LIMIT 1"; $result = $db->sql_query($sql); if (!$result) { message_die(GENERAL_ERROR, 'Could not obtain item information', "", __LINE__, __FILE__, $sql); } $data = $db->sql_fetchrow($result); $new_item_id = $data['spell_id'] + 1; $sql = "SELECT * FROM " . ADR_CHARACTERS_TABLE . "\r\n\t\tWHERE character_id = {$user_id}"; $result = $db->sql_query($sql); if (!$result) { message_die(GENERAL_ERROR, 'Could not obtain item information', "", __LINE__, __FILE__, $sql); } $char1 = $db->sql_fetchrow($result); $char_class = $char1['character_class']; $sql = "SELECT * FROM " . ADR_SHOPS_SPELLS_TABLE . "\r\n\t\tWHERE spell_level = {$new_level}\r\n\t\tAND spell_owner_id = '1'"; $result = $db->sql_query($sql); if (!$result) { message_die(GENERAL_ERROR, 'Could not obtain item information', "", __LINE__, __FILE__, $sql); } $data = $db->sql_fetchrowset($result); $spell_list = array(); for ($i = 0; $i < count($data); $i++) { // Check to see if any spells are available $classes = explode(",", $data[$i]['spell_class']); // Create our array $success = in_array($char_class, $classes) || in_array('0', $classes); // Check our array if ($success) { // This row PASSES all checks so should be stored. $spell_list[] = $data[$i]; } } if (!$spell_list) { $new_spell = $lang['Adr_spell_not_learned']; } else { // Now roll for spell $rand_spell = $spell_list[array_rand($spell_list, 1)]; $item_type_use = $rand_spell['item_type_use']; $item_name = addslashes($rand_spell['spell_name']); $item_desc = addslashes($rand_spell['spell_desc']); $item_icon = trim($rand_spell['spell_icon']); $item_power = $rand_spell['spell_power']; $item_add_power = $rand_spell['spell_add_power']; $item_mp_use = $rand_spell['spell_mp_use']; $item_element = $rand_spell['spell_element']; $item_element_str_dmg = $rand_spell['spell_element_str_dmg']; $item_element_same_dmg = $rand_spell['spell_element_same_dmg']; $item_element_weak_dmg = $rand_spell['spell_element_weak_dmg']; $item_max_skill = $rand_spell['spell_max_skill']; $item_original_id = $rand_spell['spell_id']; $sql = "INSERT INTO " . ADR_SHOPS_SPELLS_TABLE . " \r\n\t\t\t( spell_id , spell_owner_id , item_type_use , spell_name , spell_desc , spell_icon , spell_power , spell_add_power , spell_mp_use , spell_element , spell_element_str_dmg , spell_element_same_dmg , spell_element_weak_dmg , spell_max_skill , spell_original_id)\r\n\t\t\tVALUES ( {$new_item_id} , {$user_id} , {$item_type_use} , '{$item_name}' , '{$item_desc}' , '" . str_replace("\\'", "''", $item_icon) . "' , {$item_power} , {$item_add_power} , {$item_mp_use} , {$item_element} , {$item_element_str_dmg} , {$item_element_same_dmg} , {$item_element_weak_dmg} , {$item_max_skill} , {$item_original_id})"; $result = $db->sql_query($sql); if (!$result) { message_die(GENERAL_ERROR, "Couldn't insert new item", "", __LINE__, __FILE__, $sql); } $new_spell = sprintf($lang['Adr_spell_learned'], $item_name); } adr_update_posters_infos(); $message = sprintf($lang['Adr_level_up_congrats'], $new_level, $new_spell); $message .= '<br /><br />' . sprintf($lang['Adr_return'], "<a href=\"" . $direction . "\">", "</a>"); message_die(GENERAL_MESSAGE, $message); }