Esempio n. 1
0
function db_changeset_apply($db_changeset)
{
    return classSupernova::db_changeset_apply($db_changeset);
}
Esempio n. 2
0
function qst_reward(&$user, &$rewards, &$quest_list)
{
    if (empty($rewards)) {
        return;
    }
    global $lang;
    $db_changeset = array();
    $total_rewards = array();
    $comment_dm = '';
    foreach ($rewards as $quest_id => $user_data) {
        foreach ($user_data as $user_id => $planet_data) {
            foreach ($planet_data as $planet_id => $reward_list) {
                $comment = sprintf($lang['qst_msg_complete_body'], $quest_list[$quest_id]['quest_name']);
                $comment_dm .= isset($reward_list[RES_DARK_MATTER]) ? $comment : '';
                $comment_reward = array();
                foreach ($reward_list as $unit_id => $unit_amount) {
                    $comment_reward[] = $unit_amount . ' ' . $lang['tech'][$unit_id];
                    $total_rewards[$user_id][$planet_id][$unit_id] += $unit_amount;
                }
                $comment .= " {$lang['qst_msg_your_reward']} " . implode(',', $comment_reward);
                msg_send_simple_message($user['id'], 0, SN_TIME_NOW, MSG_TYPE_ADMIN, $lang['msg_from_admin'], $lang['qst_msg_complete_subject'], $comment);
                sn_db_perform('{{quest_status}}', array('quest_status_quest_id' => $quest_id, 'quest_status_user_id' => $user_id, 'quest_status_status' => QUEST_STATUS_COMPLETE));
            }
        }
    }
    $group_resources = sn_get_groups('resources_loot');
    $quest_rewards_allowed = sn_get_groups('quest_rewards');
    if (!empty($total_rewards)) {
        foreach ($total_rewards as $user_id => $planet_data) {
            $user_row = classSupernova::db_get_record_by_id(LOC_USER, $user_id);
            foreach ($planet_data as $planet_id => $unit_data) {
                $local_changeset = array();
                foreach ($unit_data as $unit_id => $unit_amount) {
                    if (!isset($quest_rewards_allowed[$unit_id])) {
                        continue;
                    }
                    if ($unit_id == RES_DARK_MATTER) {
                        rpg_points_change($user['id'], RPG_QUEST, $unit_amount, $comment_dm);
                    } elseif (isset($group_resources[$unit_id])) {
                        $local_changeset[pname_resource_name($unit_id)] = array('delta' => $unit_amount);
                    } else {
                        $db_changeset['unit'][] = sn_db_unit_changeset_prepare($unit_id, $unit_amount, $user_row, $planet_id);
                    }
                    // unit
                }
                if (!empty($local_changeset)) {
                    $planet_id = $planet_id == 0 && isset($user_row['id_planet']) ? $user_row['id_planet'] : $planet_id;
                    $db_changeset[$planet_id ? 'planets' : 'users'][] = array('action' => SQL_OP_UPDATE, P_VERSION => 1, 'where' => array("id" => $planet_id ? $planet_id : $user_id), 'fields' => $local_changeset);
                }
            }
        }
        classSupernova::db_changeset_apply($db_changeset);
    }
}