Example #1
0
        adr_previous(Adr_vault_withdraw_lack, adr_vault, '');
    }
    $sql = "UPDATE " . ADR_VAULT_USERS_TABLE . "\n\t\tSET account_sum = account_sum - {$withdraw_sum} \n\t\tWHERE owner_id = {$user_id}";
    if (!$db->sql_query($sql)) {
        message_die(GENERAL_ERROR, 'Could not obtain accounts information', "", __LINE__, __FILE__, $sql);
    }
    add_reward($user_id, $withdraw_sum);
    adr_previous(Adr_vault_account_ok, adr_vault, '');
}
if ($loan && $loan_sum > 0) {
    if (!is_numeric($vault['owner_id'])) {
        // Send admin PM notification of attempted cheating...
        $member_id = 2;
        $subject = $lang['Adr_report_pm_sub'];
        $message = sprintf($lang['Adr_report_pm_msg2'], $userdata['username']);
        adr_send_pm($member_id, $subject, $message);
        adr_previous(Adr_vault_cheater, 'adr_vault', '');
    }
    if ($vault['loan_sum'] != 0) {
        adr_previous(Adr_vault_loan_no_double, adr_vault, '');
    }
    if ($userdata['user_posts'] < $vault_general['loan_requirements'] || $vault['loan_sum'] != 0) {
        $message = $lang['Adr_vault_loan_no_explain'] . $vault_general['loan_requirements'] . $lang['Posts'];
        $message .= '<br /><br />' . sprintf($lang['Adr_return'], "<a href=\"" . append_sid("adr_vault.{$phpEx}") . "\">", "</a>");
        message_die(GENERAL_MESSAGE, $message);
    }
    if ($loan_sum > $vault_general['loan_max_sum'] || $loan_sum < 0) {
        adr_previous(Adr_vault_loan_no_such, adr_vault, '');
    }
    add_reward($user_id, $loan_sum);
    $sql = "UPDATE " . ADR_VAULT_USERS_TABLE . "\n\t\tSET loan_sum = {$loan_sum} ,\n\t\tloan_time = " . time() . "\n\t\tWHERE owner_id = {$user_id}";
Example #2
0
            adr_send_pm($dest, $subject, $message);
        }
        $message = sprintf($lang['Adr_battle_pvp_lost'], $current_dmg);
        $message .= '<br /><br />' . sprintf($lang['Adr_battle_temple'], "<a href=\"" . 'adr_temple.' . $phpEx . "\">", "</a>");
        $message .= '<br /><br />' . sprintf($lang['Adr_pvp_return'], "<a href=\"" . 'adr_character.' . $phpEx . "\">", "</a>");
        message_die(GENERAL_MESSAGE, $message);
    }
    // End the turn of the user
    $sql = " UPDATE  " . ADR_BATTLE_PVP_TABLE . "\n                SET battle_turn = {$dest}\n                WHERE battle_id = {$battle_id}\n                AND battle_result = 3 ";
    if (!($result = $db->sql_query($sql))) {
        message_die(GENERAL_ERROR, 'Could not update battle list', '', __LINE__, __FILE__, $sql);
    }
    if ($opponent_pm_me) {
        $subject = $lang['Adr_pvp_turn'];
        $message = sprintf($lang['Adr_pvp_turn_by'], $current_infos['character_name']);
        adr_send_pm($dest, $subject, $message);
    }
}
// Show actions ONLY if current turn
if ($battle_pvp['battle_turn'] === $user_id) {
    $template->assign_block_vars('pvp', array());
}
// Get the users infos
$sql = "SELECT user_avatar , user_avatar_type, user_allowavatar FROM " . USERS_TABLE . "\n        WHERE user_id = {$dest} ";
if (!($result = $db->sql_query($sql))) {
    message_die(GENERAL_ERROR, 'Could not query user', '', __LINE__, __FILE__, $sql);
}
$challenger = $db->sql_fetchrow($result);
$opponent_avatar_img = '';
if ($challenger['user_avatar_type'] && $challenger['user_allowavatar']) {
    switch ($challenger['user_avatar_type']) {
Example #3
0
 $battle_id = intval($HTTP_GET_VARS['battle_id']);
 $sql = " SELECT * FROM " . ADR_BATTLE_PVP_TABLE . "\r\t\t\t\tWHERE battle_result = 3\r\t\t\t\tAND battle_id = {$battle_id}\r\t\t\t\tAND ( battle_opponent_id = {$user_id}\tOR battle_challenger_id = {$user_id} ) ";
 if (!($result = $db->sql_query($sql))) {
     message_die(GENERAL_ERROR, 'Could not query battle list', '', __LINE__, __FILE__, $sql);
 }
 $row = $db->sql_fetchrow($result);
 // Get the "other" id
 $other_id = $row['battle_opponent_id'] != $user_id ? intval($row['battle_opponent_id']) : intval($row['battle_challenger_id']);
 $stopped_by = $row['battle_opponent_id'] != $user_id ? 6 : 5;
 $sql = " UPDATE " . ADR_CHARACTERS_TABLE . "\r\t\t\t\tSET character_victories = character_victories + 1\r\t\t\t\tWHERE character_id = {$other_id} ";
 if (!($result = $db->sql_query($sql))) {
     message_die(GENERAL_ERROR, 'Could not update character', '', __LINE__, __FILE__, $sql);
 }
 $sql = " UPDATE " . ADR_CHARACTERS_TABLE . "\r\t\t\t\tSET character_flees = character_flees + 1\r\t\t\t\tWHERE character_id = {$user_id} ";
 if (!($result = $db->sql_query($sql))) {
     message_die(GENERAL_ERROR, 'Could not update character', '', __LINE__, __FILE__, $sql);
 }
 $sql = " UPDATE " . ADR_BATTLE_PVP_TABLE . "\r\t\t\t\tSET battle_result = {$stopped_by}\r\t\t\t\tWHERE battle_id = {$battle_id}\r\t\t\t\tAND ( battle_opponent_id = {$user_id}\tOR battle_challenger_id = {$user_id} ) ";
 if (!($result = $db->sql_query($sql))) {
     message_die(GENERAL_ERROR, 'Could not delete defy', '', __LINE__, __FILE__, $sql);
 }
 $sql = " SELECT prefs_pvp_notif_pm FROM " . ADR_CHARACTERS_TABLE . "\r\t\t\t\tWHERE character_id = {$other_id} ";
 $result = $db->sql_query($sql);
 if (!$result) {
     message_die(GENERAL_ERROR, "Couldn't query preferences", "", __LINE__, __FILE__, $sql);
 }
 $opponent = $db->sql_fetchrow($result);
 $subject = $lang['Adr_pvp_stopped'];
 $message = sprintf($lang['Adr_pvp_stopped_by'], $adr_user['character_name']);
 if ($opponent['prefs_pvp_notif_pm']) {
     adr_send_pm($other_id, $subject, $message);
function adr_give_item($user_id, $to_user_id, $item_id)
{
    global $db, $lang, $userdata, $adr_general;
    // Fix the values
    $user_id = intval($user_id);
    $to_user_id = intval($to_user_id);
    $item_id = intval($item_id);
    // Grab user infos
    $give_limit = adr_get_user_infos($user_id);
    if ($adr_general['Adr_character_limit_enable'] != 0 && $give_limit['character_trading_limit'] < 1) {
        adr_previous(Adr_trading_limit, adr_shops, '');
    } else {
        adr_trading_limit($user_id);
    }
    // Make the new id for the item
    $sql = "SELECT item_id, item_name FROM " . ADR_SHOPS_ITEMS_TABLE . "\n\t\tWHERE item_owner_id = {$to_user_id}\n\t\tORDER BY item_id \n\t\tDESC LIMIT 1";
    $result = $db->sql_query($sql);
    if (!$result) {
        adr_previous(Adr_shop_items_failure_deleted, adr_character_inventory, '');
    }
    $data = $db->sql_fetchrow($result);
    $new_item_id = $data['item_id'] + 1;
    // Grab the items details
    $sql = "SELECT item_id, item_name, item_stolen_id, item_stolen_by, item_stolen_timestamp, item_donated_by, item_donated_timestamp\n\t\tFROM " . ADR_SHOPS_ITEMS_TABLE . "\n\t\tWHERE item_owner_id = '{$user_id}'\n\t\tAND item_id = '{$item_id}'";
    $result = $db->sql_query($sql);
    if (!$result) {
        adr_previous(Adr_shop_items_failure_deleted, adr_character_inventory, '');
    }
    $item_details = $db->sql_fetchrow($result);
    // Check if recieving user has notify of donated items enabled
    $sql = "SELECT character_pref_give_pm FROM " . ADR_CHARACTERS_TABLE . "\n\t\t\tWHERE character_id = {$to_user_id} ";
    $result = $db->sql_query($sql);
    if (!$result) {
        message_die(GENERAL_ERROR, 'Could not obtain shops items information', "", __LINE__, __FILE__, $sql);
    }
    $reciever = $db->sql_fetchrow($result);
    // Send recieving user PM notification
    $subject = sprintf($lang['Adr_give_item_subject'], $userdata['username']);
    $message = sprintf($lang['Adr_give_item_msg'], adr_get_lang($item_details['item_name']), $userdata['username']);
    if ($reciever['character_pref_give_pm']) {
        adr_send_pm($to_user_id, $subject, $message);
    }
    $sql = "UPDATE " . ADR_SHOPS_ITEMS_TABLE . "\n\t\tSET item_owner_id = {$to_user_id},\n\t\t\titem_id = {$new_item_id},\n\t\t\titem_bought_timestamp = " . time() . ",\n\t\t\titem_in_shop = 0,\n\t\t\titem_auth = 0,\n\t\t\titem_stolen_id = " . $item_details['item_stolen_id'] . ",\n\t\t\titem_stolen_by = '" . $item_details['item_stolen_by'] . "',\n\t\t\titem_stolen_timestamp = " . $item_details['item_stolen_timestamp'] . ",\n\t\t\titem_donated_by = '" . str_replace("\\'", "''", $give_limit['character_name']) . "',\n\t\t\titem_donated_timestamp = " . time() . "\n\t\tWHERE item_owner_id = '{$user_id}'\n\t\tAND item_id = '{$item_id}'";
    $result = $db->sql_query($sql);
    if (!$result) {
        message_die(GENERAL_ERROR, 'Could not obtain shops items information', "", __LINE__, __FILE__, $sql);
    }
}
Example #5
0
function adr_item_quest_cheat_notification($user_id, $cheat_type)
{
    echo 'DEBUG: cheat';
    global $board_config, $userdata, $adr_general, $adr_user, $lang, $db, $phpEx, $table_prefix, $HTTP_SERVER_VARS, $HTTP_ENV_VARS;
    $adr_ban_punishment = false;
    if ($board_config['zone_cheat_auto_ban_adr']) {
        $sql = "UPDATE " . USERS_TABLE . "\r\n\t\t\t\tSET user_adr_ban = '1'\r\n\t\t\t\tWHERE user_id = '{$user_id}'";
        $result = $db->sql_query($sql);
        if (!$result) {
            message_die(GENERAL_ERROR, "Couldn't UPDATE ADR User Ban", "", __LINE__, __FILE__, $sql);
        }
        $cheat_punishment = '1~';
        $adr_ban_punishment = true;
    } else {
        $cheat_punishment = '0~';
    }
    $board_ban_punishment = false;
    if ($board_config['zone_cheat_auto_ban_board']) {
        $sql = "SELECT *\r\n\t\t\t\tFROM " . BANLIST_TABLE;
        if (!($result = $db->sql_query($sql))) {
            message_die(GENERAL_ERROR, "Couldn't obtain banlist information", "", __LINE__, __FILE__, $sql);
        }
        $current_banlist = $db->sql_fetchrowset($result);
        $db->sql_freeresult($result);
        $kill_session_sql = '';
        $in_banlist = false;
        for ($j = 0; $j < count($current_banlist); $j++) {
            if ($user_id == $current_banlist[$j]['ban_userid']) {
                $in_banlist = true;
            }
        }
        if (!$in_banlist) {
            $kill_session_sql .= ($kill_session_sql != '' ? ' OR ' : '') . "session_user_id = " . $user_id;
            $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_userid)\r\n\t\t\t\t\tVALUES (" . $user_id . ")";
            if (!$db->sql_query($sql)) {
                message_die(GENERAL_ERROR, "Couldn't insert ban_userid info into database", "", __LINE__, __FILE__, $sql);
            }
        }
        if ($kill_session_sql != '') {
            $sql = "DELETE FROM " . SESSIONS_TABLE . "\r\n\t\t\t\t\tWHERE {$kill_session_sql}";
            if (!$db->sql_query($sql)) {
                message_die(GENERAL_ERROR, "Couldn't delete banned sessions from database", "", __LINE__, __FILE__, $sql);
            }
        }
        $cheat_punishment .= '1~';
        $board_ban_punishment = true;
    } else {
        $cheat_punishment .= '0~';
    }
    $jail_punishment = false;
    if ($board_config['zone_cheat_auto_jail']) {
        include_once $phpbb_root_path . 'adr/includes/adr_functions_jail.' . $phpEx;
        define('ADR_JAIL_USERS_TABLE', $table_prefix . 'adr_jail_users');
        $time_day = intval($board_config['zone_cheat_auto_time_day']);
        $time_hour = intval($board_config['zone_cheat_auto_time_hour']);
        $time_minute = intval($board_config['zone_cheat_auto_time_minute']);
        $caution = intval($board_config['zone_cheat_auto_caution']);
        $cautionable = intval($board_config['zone_cheat_auto_cautionable']);
        $freeable = intval($board_config['zone_cheat_auto_freeable']);
        $punishment = intval($board_config['zone_cheat_auto_punishment']);
        $sentence = sprintf($lang['Adr_zone_cell_sentence_example'], $cheat_type);
        adr_cell_imprison_user($user_id, $time_day, $time_hour, $time_minute, $caution, $cautionable, $freeable, $sentence, $punishment);
        $jail_term = $lang['Adr_zone_cheat_log_imprisoned_for'];
        if ($time_day) {
            if ($time_day > 1) {
                $jail_term .= $time_day . $lang['Adr_zone_cheat_log_days'];
            } else {
                $jail_term .= $time_day . $lang['Adr_zone_cheat_log_day'];
            }
        }
        if ($time_hour) {
            if ($time_day) {
                if ($time_minute) {
                    $jail_term .= ', ';
                } else {
                    $jail_term .= $lang['Adr_zone_cheat_log_and'];
                }
            }
            if ($time_hour > 1) {
                $jail_term .= $time_hour . $lang['Adr_zone_cheat_log_hours'];
            } else {
                $jail_term .= $time_hour . $lang['Adr_zone_cheat_log_hour'];
            }
        }
        if ($time_minute) {
            if ($time_hour && $time_day) {
                $jail_term .= $lang['Adr_zone_cheat_log_comma_and'];
            } else {
                if (!$time_hour && $time_day || $time_hour && !$time_day) {
                    $jail_term .= $lang['Adr_zone_cheat_log_and'];
                }
            }
            if ($time_minute > 1) {
                $jail_term .= $time_hour . $lang['Adr_zone_cheat_log_minutes'];
            } else {
                $jail_term .= $time_hour . $lang['Adr_zone_cheat_log_minute'];
            }
        }
        $cheat_punishment .= '1~' . $jail_term;
        $jail_punishment = true;
    } else {
        $cheat_punishment .= '0~';
    }
    $cheat_public = '0';
    if (!$board_config['zone_cheat_auto_ban_adr'] && !$board_config['zone_cheat_auto_ban_board'] && !$board_config['zone_cheat_auto_jail']) {
        $cheat_punishment = '';
        $current_punishments = '';
    } else {
        $current_punishments = '';
        if ($adr_ban_punishment) {
            $current_punishments .= $lang['Adr_zone_cheat_log_banned_adr'];
        }
        if ($board_ban_punishment) {
            if ($adr_ban_punishment) {
                if ($jail_punishment) {
                    $current_punishments .= sprintf($lang['Adr_zone_cheat_log_comma_and_sprintf'], $lang['Adr_zone_cheat_log_banned_board']);
                } else {
                    $current_punishments .= sprintf($lang['Adr_zone_cheat_log_and_sprintf'], $lang['Adr_zone_cheat_log_banned_board']);
                }
            } else {
                $current_punishments .= $lang['Adr_zone_cheat_log_banned_board'];
            }
        }
        if ($jail_punishment) {
            if ($adr_ban_punishment) {
                if ($board_ban_punishment) {
                    $current_punishments .= sprintf($lang['Adr_zone_cheat_log_comma_and_sprintf'], $jail_term);
                } else {
                    $current_punishments .= sprintf($lang['Adr_zone_cheat_log_and_sprintf'], $jail_term);
                }
            } else {
                $current_punishments .= $jail_term;
            }
        }
        $current_punishments = sprintf($lang['Adr_zone_cheat_log_punishment'], $current_punishments);
    }
    $cheat_public = $board_config['zone_cheat_auto_public'];
    $pm_members = explode(',', $board_config['zone_cheat_member_pm']);
    $port = $board_config['server_port'] == '80' ? '' : ':' . $board_config['server_port'];
    $profile = 'http://' . $board_config['server_name'] . $port . $board_config['script_path'] . 'profile.php?mode=viewprofile&u=' . $user_id;
    $subject = sprintf($lang['Adr_zone_npc_cheating_pm_subject'], $userdata['username']);
    $message = sprintf($lang['Adr_zone_npc_cheating_pm_message'], $userdata['username'], $adr_user['character_name'], $cheat_type, $current_punishments, $profile);
    for ($i = 0; $i < count($pm_members); $i++) {
        adr_send_pm($pm_members[$i], $subject, $message);
    }
    $ip = !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : (!empty($HTTP_ENV_VARS['REMOTE_ADDR']) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv('REMOTE_ADDR'));
    $sql = "INSERT INTO " . ADR_CHEAT_LOG_TABLE . "\r\n\t\t\tVALUES ('', '" . encode_ip($ip) . "', '" . $cheat_type . "', '" . time() . "', '{$user_id}', '{$cheat_punishment}', '{$cheat_public}' )";
    $db->sql_query($sql);
    adr_previous(Adr_zone_npc_cheating, adr_zones, '');
}
Example #6
0
function adr_character_replen_quota()
{
    global $db, $phpEx, $adr_general, $board_config, $lang, $table_prefix, $phpbb_root_path;
    // define some constants
    define('ADR_SHOPS_TABLE', $table_prefix . 'adr_shops');
    define('IN_ADR_SETTINGS', 1);
    define('IN_ADR_VAULT', 1);
    define('IN_ADR_BATTLE', 1);
    define('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 = $adr_general['Adr_character_battle_limit'];
                $new_skill_limit = $adr_general['Adr_character_skill_limit'];
                $new_trading_limit = $adr_general['Adr_character_trading_limit'];
                $new_thief_limit = $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($character_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($character_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);
            }
        }
    }
    return;
}
function adr_admin_cmd_unban($username, $reason)
{
    global $db, $lang;
    $user_infos = adr_gc_username($username);
    $user_id = $user_infos['user_id'];
    $error_messages = '';
    if (is_numeric($user_id)) {
        if ($user_infos['user_adr_ban'] == '1') {
            $sql = "UPDATE " . USERS_TABLE . "\r\n\t\t  \t\tSET user_adr_ban = 0\r\n\t\t\t\tWHERE user_id = '{$user_id}'";
            $result = $db->sql_query($sql);
            if (!$result) {
                message_die(GENERAL_ERROR, 'Could not update user to ADR unbanage', "", __LINE__, __FILE__, $sql);
            }
            // Send PM to user to notify
            $subject = $lang['Adr_global_shout_unban_pm'];
            adr_send_pm($user_id, $subject, $reason);
            $error_messages = sprintf($lang['Adr_global_shout_unban_yes'], $user_infos['username']);
        } else {
            $error_messages = sprintf($lang['Adr_global_shout_unban_already'], $user_infos['username']);
        }
    } else {
        $error_messages = sprintf($lang['Adr_global_shout_incorrect_user'], $username);
    }
    return $error_messages;
}
function adr_job_salary_check($user_id)
{
    global $db, $adr_general, $lang, $phpEx, $phpbb_root_path, $board_config, $table_prefix;
    $user_id = intval($user_id);
    $sql = "SELECT * FROM " . ADR_CHARACTERS_TABLE . "\r\n\t\t WHERE character_id = {$user_id} ";
    if (!($result = $db->sql_query($sql))) {
        message_die(GENERAL_ERROR, 'Error showing all job list', "", __LINE__, __FILE__, $sql);
    }
    $character = $db->sql_fetchrow($result);
    if (!$character) {
        return;
    }
    if ($adr_general['job_salary_enable'] != 0 && $character['character_job_id'] != 0) {
        // Fix current time
        $current_time = time();
        // Character values
        $character_id = $character['character_id'];
        $character_job_id = $character['character_job_id'];
        $character_job_start = $character['character_job_start'];
        $character_job_pm = $character['character_job_pm'];
        $character_job_end = $character['character_job_end'];
        $last_paid = ($current_time - $character['character_job_last_paid']) / 86400;
        // Select job details
        $sql = " SELECT * FROM " . ADR_JOB_TABLE . "\r\n\t\t\tWHERE job_id = {$character_job_id} ";
        if (!($result = $db->sql_query($sql))) {
            message_die(GENERAL_ERROR, 'Could not query user job table', '', __LINE__, __FILE__, $sql);
        }
        $job = $db->sql_fetchrow($result);
        // Job values
        $salary = $job['job_salary'];
        $item_reward = $job['job_item_reward_id'];
        $sp_reward = $job['job_sp_reward'];
        if ($current_time < $character_job_end && $last_paid >= $job['job_payment_intervals']) {
            // Add salary to user
            $sql = "UPDATE " . USERS_TABLE . "\r\n\t\t\t\tSET user_points = user_points + {$salary}\r\n\t\t\t\tWHERE user_id = {$character_id} ";
            if (!($result = $db->sql_query($sql))) {
                message_die(GENERAL_ERROR, 'Error updating daily salary', "", __LINE__, __FILE__, $csql);
            }
            $sql = "UPDATE " . ADR_CHARACTERS_TABLE . "\r\n\t\t\t\tSET character_job_earned = character_job_earned + {$salary},\r\n\t\t\t\t\tcharacter_job_total_earned = character_job_total_earned + {$salary},\r\n\t\t\t\t\tcharacter_job_last_paid = {$current_time}\r\n\t\t\t\tWHERE character_id = {$character_id} ";
            if (!($result = $db->sql_query($sql))) {
                message_die(GENERAL_ERROR, 'Could not update character table', "", __LINE__, __FILE__, $csql);
            }
            // Send PM notification if enabled by user
            if ($character_job_pm != 0) {
                $subject = $lang['Adr_job_pm_paid'];
                $message = sprintf($lang['Adr_job_pm_paid_msg'], $job['job_salary'], $board_config['points_name'], $job['job_name']);
                adr_send_pm($character_id, $subject, $message);
            }
        } elseif ($current_time >= $character_job_end) {
            $job_slots = $job['job_slots_available'] + 1 > $job['job_slots_max'] ? $job['job_slots_max'] : $job['job_slots_available'] + 1;
            // Add job slot back again
            $sql = "UPDATE " . ADR_JOB_TABLE . "\r\n\t\t\t\tSET job_slots_available = {$job_slots}\r\n\t\t\t\tWHERE job_id = {$character_job_id} ";
            if (!($result = $db->sql_query($sql))) {
                message_die(GENERAL_ERROR, 'Error updating job slots', "", __LINE__, __FILE__, $csql);
            }
            // Job duration has ended
            $sql = "UPDATE " . ADR_CHARACTERS_TABLE . "\r\n\t\t\t\tSET character_job_id = 0,\r\n\t\t\t\t\tcharacter_job_start = 0,\r\n\t\t\t\t\tcharacter_job_end = 0,\r\n\t\t\t\t\tcharacter_job_last_paid = 0,\r\n\t\t\t\t\tcharacter_job_completed = character_job_completed + 1,\r\n\t\t\t\t\tcharacter_xp = character_xp + '" . $job['job_exp'] . "'\r\n\t\t\t\tWHERE character_id = {$character_id} ";
            if (!($result = $db->sql_query($sql))) {
                message_die(GENERAL_ERROR, $lang['Job_salary_update_error'], "", __LINE__, __FILE__, $csql);
            }
            // Check if there is an SP reward
            if ($sp_reward != 0) {
                adr_add_sp($character_id, $sp_reward);
            }
            // Check if there is a item reward
            if ($item_reward != 0) {
                // Grab item reward details
                $sql = "SELECT * FROM " . ADR_SHOPS_ITEMS_TABLE . "\r\n\t\t\t\t\tWHERE item_owner_id = 1\r\n\t\t\t\t\tAND item_id = {$item_reward} ";
                $result = $db->sql_query($sql);
                if (!$result) {
                    message_die(GENERAL_ERROR, 'Could not obtain shops items information', "", __LINE__, __FILE__, $sql);
                }
                $item_data = $db->sql_fetchrow($result);
                // V: item data was deleted
                // return here to avoid pm'ing
                // @todo should this pm an error to admin?
                if (!$item_data) {
                    return;
                }
                // Make the new id for the item
                $sql = "SELECT item_id FROM " . ADR_SHOPS_ITEMS_TABLE . "\r\n\t\t\t\t\tWHERE item_owner_id = {$character_id}\r\n\t\t\t\t\tORDER BY item_id \r\n\t\t\t\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['item_id'] + 1;
                $item_type_use = $item_data['item_type_use'];
                $item_name = addslashes($item_data['item_name']);
                $item_desc = addslashes($item_data['item_desc']);
                $item_icon = trim($item_data['item_icon']);
                $item_price = $item_data['item_price'];
                $item_quality = $item_data['item_quality'];
                $item_duration = $item_data['item_duration'];
                $item_duration_max = $item_data['item_duration_max'];
                $item_power = $item_data['item_power'];
                $item_add_power = $item_data['item_add_power'];
                $item_mp_use = $item_data['item_mp_use'];
                $item_element = $item_data['item_element'];
                $item_element_str_dmg = $item_data['item_element_str_dmg'];
                $item_element_same_dmg = $item_data['item_element_same_dmg'];
                $item_element_weak_dmg = $item_data['item_element_weak_dmg'];
                $item_weight = $item_data['item_weight'];
                $item_max_skill = $item_data['item_max_skill'];
                $item_sell_back_percentage = $item_data['item_sell_back_percentage'];
                $sql = "INSERT INTO " . ADR_SHOPS_ITEMS_TABLE . " \r\n\t\t\t\t\t( item_id , item_owner_id , item_type_use , item_name , item_desc , item_icon , item_price , item_quality , item_duration , item_duration_max , item_power , item_add_power , item_mp_use , item_weight , item_auth , item_element , item_element_str_dmg , item_element_same_dmg , item_element_weak_dmg , item_max_skill , item_sell_back_percentage )\r\n\t\t\t\t\tVALUES ( {$new_item_id} , {$character_id} , {$item_type_use} , '{$item_name}' , '{$item_desc}' , '" . str_replace("\\'", "''", $item_icon) . "' , {$item_price} , {$item_quality} , {$item_duration} , {$item_duration_max} , {$item_power} , {$item_add_power} , {$item_mp_use} , {$item_weight} , 0 , {$item_element} , {$item_element_str_dmg} , {$item_element_same_dmg} , {$item_element_weak_dmg} , {$item_max_skill} , {$item_sell_back_percentage} )";
                $result = $db->sql_query($sql);
                if (!$result) {
                    message_die(GENERAL_ERROR, "Couldn't insert reward new item", "", __LINE__, __FILE__, $sql);
                }
            }
            if ($character_job_pm != 0) {
                $subject = $lang['Adr_job_pm_finish'];
                $message = sprintf($lang['Adr_job_pm_finish_msg'], $job['job_name']);
                if ($job['job_exp'] != 0) {
                    $message .= sprintf($lang['Adr_job_pm_finish_msg1'], $job['job_exp']) . '<br /><br />';
                }
                if ($job['job_sp_reward'] != 0) {
                    $message .= sprintf($lang['Adr_job_pm_finish_msg3'], $job['job_sp_reward']) . '<br /><br />';
                }
                if ($job['job_item_reward_id'] != 0) {
                    // Grab item reward details
                    $sql = " SELECT item_name FROM " . ADR_SHOPS_ITEMS_TABLE . "\r\n\t\t\t\t\t\tWHERE item_owner_id = 1\r\n\t\t\t\t\t\tAND item_id = '" . $job['job_item_reward_id'] . "' ";
                    if (!($result = $db->sql_query($sql))) {
                        message_die(GENERAL_ERROR, 'Could not query user stats page', '', __LINE__, __FILE__, $sql);
                    }
                    $item = $db->sql_fetchrow($result);
                    $message .= sprintf($lang['Adr_job_pm_finish_msg2'], adr_get_lang($item['item_name'])) . '<br /><br />';
                }
                adr_send_pm($character_id, $subject, $message);
            }
        }
    }
}