function adr_character_replen_quota() { global $db, $phpEx, $adr_general, $board_config, $lang, $table_prefix, $phpbb_root_path; // define some constants redefine('ADR_SHOPS_TABLE', $table_prefix . 'adr_shops'); redefine('IN_ADR_SETTINGS', 1); redefine('IN_ADR_VAULT', 1); redefine('IN_ADR_BATTLE', 1); redefine('IN_ADR_CHARACTER', 1); $sql = "SELECT * FROM " . ADR_CHARACTERS_TABLE; $result = $db->sql_query($sql); if (!$result) { message_die(GENERAL_ERROR, 'Could not obtain character list', '', __LINE__, __FILE__, $sql); } $characters = $db->sql_fetchrowset($result); for ($c = 0; $c < count($characters); $c++) { if ($characters[$c]['character_id'] != '0' && $characters[$c]['character_id'] != '') { // Define some variables $character_id = $characters[$c]['character_id']; $points = get_reward($character_id); $adr_user['character_birth'] = $characters[$c]['character_birth']; $adr_user['character_limit_update'] = $characters[$c]['character_limit_update']; $adr_user['character_warehouse_update'] = $characters[$c]['character_warehouse_update']; $adr_user['character_warehouse'] = $characters[$c]['character_warehouse']; $adr_user['character_shop_update'] = $characters[$c]['character_shop_update']; $pm_wh = FALSE; $pm_shop = FALSE; $wh_msg = ''; $shop_msg = ''; // Vault account check $sql = "SELECT account_sum FROM " . ADR_VAULT_USERS_TABLE . "\n\t\t\t\tWHERE owner_id = '{$character_id}'"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not query vault user table', '', __LINE__, __FILE__, $sql); } $vault_check = $db->sql_fetchrow($result); // Shop stats check $sql = "SELECT shop_id FROM " . ADR_SHOPS_TABLE . "\n\t\t\t\tWHERE shop_owner_id = '{$character_id}'"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not query shops table', '', __LINE__, __FILE__, $sql); } $shop_check = $db->sql_fetchrow($result); // Work out how many days have passed since character_creation $character_days = floor((time() - $adr_user['character_birth']) / 86400); // START battle & skill regening if (is_numeric($character_id) && $adr_general['Adr_character_limit_enable'] != '0' && $character_days > $adr_user['character_limit_update'] + ($adr_general['Adr_limit_regen_duration'] - 1)) { $new_battle_limit = intval($adr_general['Adr_character_battle_limit']); $new_skill_limit = intval($adr_general['Adr_character_skill_limit']); $new_trading_limit = intval($adr_general['Adr_character_trading_limit']); $new_thief_limit = intval($adr_general['Adr_character_thief_limit']); $sql = " UPDATE " . ADR_CHARACTERS_TABLE . "\n\t\t\t\t\tSET character_battle_limit = {$new_battle_limit},\n\t\t\t\t\t\tcharacter_skill_limit = {$new_skill_limit},\n\t\t\t\t\t\tcharacter_trading_limit = {$new_trading_limit},\n\t\t\t\t\t\tcharacter_thief_limit = {$new_thief_limit},\n\t\t\t\t\t\tcharacter_limit_update = {$character_days}\n\t\t\t\t\tWHERE character_id = '{$character_id}'"; if (!($results = $db->sql_query($sql))) { message_die(GENERAL_MESSAGE, 'Error regening user battle & skill limits'); } } // END battle & skill regening // START warehouse tax check if (is_numeric($character_id) && $character_days > $adr_user['character_warehouse_update'] + ($board_config['Adr_warehouse_duration'] - 1)) { $warehouse_days = $character_days - ($adr_user['character_warehouse_update'] + ($board_config['Adr_warehouse_duration'] - 1)); $warehouse_tax = $board_config['Adr_warehouse_tax'] * $warehouse_days; if ($adr_user['character_warehouse'] != '0' && $board_config['Adr_warehouse_tax'] > '0') { if ($points >= $warehouse_tax) { // Remove tax from user_points subtract_reward($user_id, $warehouse_tax); $wh_msg = sprintf($lang['Adr_character_warehouse_tax'], $warehouse_tax, get_reward_name()); } elseif ($points < $warehouse_tax && is_numeric($vault_check['account_sum']) && $vault_check['account_sum'] >= $warehouse_tax) { // Else remove from Vault $sql = "UPDATE " . ADR_VAULT_USERS_TABLE . "\n\t\t\t\t\t\t\t\tSET account_sum = (account_sum - {$warehouse_tax})\n\t\t\t\t\t\t\t\tWHERE owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(CRITICAL_ERROR, 'Error removing points for WH tax (vault)'); } $wh_msg = sprintf($lang['Adr_character_warehouse_tax'], $warehouse_tax, get_reward_name()); } else { // Close warehouse $sql = " UPDATE " . ADR_CHARACTERS_TABLE . "\n\t\t\t\t\t\t\tSET character_warehouse = 0\n\t\t\t\t\t\t\t\tWHERE character_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_MESSAGE, 'Error closing warehouse'); } // Remove warehouse status from itemsif rent not paid $sql = "UPDATE " . ADR_SHOPS_ITEMS_TABLE . "\n\t\t\t\t\t\t\tSET item_in_warehouse = 0\n\t\t\t\t\t\t\tWHERE item_owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not remove WH status for items', "", __LINE__, __FILE__, $sql); } $wh_msg = sprintf($lang['Adr_character_warehouse_closed'], $warehouse_tax, get_reward_name()); } // Check for any messages to use later on in PM to user $pm_wh = TRUE; } // Update user warehouse update time $sql = " UPDATE " . ADR_CHARACTERS_TABLE . "\n\t\t\t\t\tSET character_warehouse_update = {$character_days}\n\t\t\t\t\t\tWHERE character_id = '{$character_id}'"; if (!($results = $db->sql_query($sql))) { message_die(GENERAL_MESSAGE, 'Error updating warehouse'); } } // END warehouse tax check // START open shop tax check if (is_numeric($character_id) && $character_days > $adr_user['character_shop_update'] + ($board_config['Adr_shop_duration'] - 1)) { $shop_days = $character_days - ($adr_user['character_shop_update'] + ($board_config['Adr_shop_duration'] - 1)); $shop_tax = $board_config['Adr_shop_tax'] * $shop_days; // see if user has a shop open if (is_numeric($shop_check['shop_id']) && $board_config['Adr_shop_tax'] > '0') { if ($points >= $shop_tax) { // Remove tax from user_points subtract_reward($user_id, $shop_tax); $shop_msg = sprintf($lang['Adr_character_shop_tax'], $shop_tax, get_reward_name()); } elseif ($points < $shop_tax && is_numeric($vault_check['account_sum']) && $vault_check['account_sum'] >= $shop_tax) { $sql = "UPDATE " . ADR_VAULT_USERS_TABLE . "\n\t\t\t\t\t\t\t\tSET account_sum = (account_sum - {$shop_tax})\n\t\t\t\t\t\t\t\tWHERE owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(CRITICAL_ERROR, 'Error removing points for shop (vault)'); } $shop_msg = sprintf($lang['Adr_character_shop_tax'], $shop_tax, get_reward_name()); } else { // Remove shop status from items & close shop if rent not paid $sql = "UPDATE " . ADR_SHOPS_ITEMS_TABLE . "\n\t\t\t\t\t\t\tSET item_in_shop = 0\n\t\t\t\t\t\t\tWHERE item_owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not remove shop status for items', "", __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . ADR_SHOPS_TABLE . "\n\t\t\t\t\t\t\tWHERE shop_owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete shop', "", __LINE__, __FILE__, $sql); } // Remove all transaction logs for user store $sql = "DELETE FROM " . ADR_STORES_USER_HISTORY . "\n\t\t\t\t\t\t\tWHERE user_store_owner_id = '{$character_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete user store trans logs', "", __LINE__, __FILE__, $sql); } $shop_msg = sprintf($lang['Adr_character_shop_closed'], $shop_tax, get_reward_name()); } // Check for any messages to use later on in PM to user $pm_shop = TRUE; } // Last shop update $sql = " UPDATE " . ADR_CHARACTERS_TABLE . "\n\t\t\t\t\tSET character_shop_update = {$character_days}\n\t\t\t\t\t\tWHERE character_id = '{$character_id}'"; if (!($results = $db->sql_query($sql))) { message_die(GENERAL_MESSAGE, 'Error updating warehouse'); } } // END open shop tax check // Here we need to check whether to send user a PM notification of charges if ($pm_wh === TRUE || $pm_shop === TRUE) { $subject = sprintf($lang['Adr_tax_pm_sub']); if ($pm_wh === TRUE) { $message = $wh_msg . ' '; } if ($pm_shop === TRUE) { $message .= $shop_msg; } adr_send_pm($character_id, $subject, $message, 2); } } } $sql = "UPDATE " . ADR_GENERAL_TABLE . "\n\t\tSET config_value = '" . time() . "'\n\t\tWHERE config_name = 'last_character_replen'"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Unable to save character last replen'); } }
function adr_update_monster_infos() { global $db, $lang, $phpEx, $userdata, $phpbb_root_path, $table_prefix; redefine('IN_ADR_BATTLE', 1); include_once $phpbb_root_path . 'adr/includes/adr_constants.' . $phpEx; $template = new Template($phpbb_root_path); $template->set_filenames(array('cache' => 'adr/cache/cache_tpls/cache_monsters_def.tpls')); // $sql = "SELECT * FROM " . ADR_BATTLE_MONSTERS_TABLE; $sql = "SELECT * FROM " . $table_prefix . 'adr_battle_monsters ORDER BY monster_id'; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Unable to query monster infos (updating cache)', '', __LINE__, __FILE__, $sql); } $x = 1; while ($row = $db->sql_fetchrow($result)) { $id = $row['monster_id']; $cells = array(); @reset($row); while (list($key, $value) = @each($row)) { $nkey = intval($key); if ($key != "{$nkey}") { $cells[] = sprintf("'%s' => '%s'", str_replace("'", "\\'", $key), str_replace("'", "\\'", $value)); } } $s_cells = empty($cells) ? '' : implode(', ', $cells); $template->assign_block_vars('cache_row', array('ID' => sprintf("'%s'", str_replace("'", "\\'", $id)), 'CELLS' => $s_cells)); } $template->assign_var_from_handle('cache', 'cache'); $res = "<?php\n" . $template->_tpldata['.'][0]['cache'] . "\n?>"; $fname = $phpbb_root_path . './adr/cache/cache_monsters' . '.' . $phpEx; @chmod($fname, 0666); $handle = @fopen($fname, 'w'); @fwrite($handle, $res); @fclose($handle); }