示例#1
0
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 . '&nbsp;';
                }
                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');
    }
}
示例#2
0
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);
}