Список пользователей

1
Админ
Постов: 162
2
Элита
Постов: 45
3
VIP
Постов: 35
4
Проверенные
Постов: 31
5
Проверенные
Постов: 30
6
Пользователи
Постов: 27
7
VIP
Постов: 26
8
Пользователи
Постов: 24

  • Страница 1 из 1
  • 1
Скрипт друзей для uCoz
Дата: Суббота, 31.01.2026, 20:22 | Сообщение # 1 | | Написал: Узнаваемый
Автор темы
Мурчанн не в сети
        Сообщений:162
         Регистрация:20.10.2016

Когда-то в сети я наткнулся на тему - Скрипт друзей для uCoz, который якобы добавлял друзей на сайт. Но по факту он был уже мертвый , скрипт его структура всего лишь должна была создавать записи в блоге.

В настройках можно было указать максимум 50 записей на одной странице.

Я переписал его с нуля создал собственную версию скрипта.

Он открывается в модальном окне, автоматически создаёт записи в блоге, отправляет личные сообщения и уведомления, а также сообщает об успешной отправке сообщений, если всё прошло без ошибок.

Это та самая тема: Ссылка прямая

Тут он выглядит так
Код
  <script type="text/javascript" src="http://ucodes.ru/js/friends.ucodes_u1.1.ru.js"></script>


Просто скачайте файл, замените содержимое на мой скрипт и все.
И он снова будет работать .

Скрипт:

Код
/*
* Модуль «Друзья» для uCoz — Прокачанная версия 2026
* Исправлены баги, улучшена отправка ЛС, капча, ssid
* Красивый современный дизайн окон
*/

(function() {
    'use strict';
    window.friends = window.friends || {};
    const f = window.friends;

    f.ucodes = f.ucodes || {
        homepage: '/',
        userid: 0,
        _userid: 0,
        username: 'Гость',
        _username: 'Гость',
        avatar: 'https://bro.usite.pro/icon/orig.webp',
        own: 0,
        isuser: false,
        _profurl: ''
    };

    f.message1 = () => `Пользователь [url=${f.ucodes.homepage}index/8-${f.ucodes.userid}]${f.ucodes.username}[/url] добавил Вас в друзья.\nВы также можете его добавить по [url=${f.ucodes.homepage}index/8-${f.ucodes.userid}?friend]этой ссылке[/url].`;
    f.message2 = () => `Пользователь [url=${f.ucodes.homepage}index/8-${f.ucodes.userid}]${f.ucodes.username}[/url] добавил Вас в друзья.`;

    f.invite = false;
    f.adnMess = '';
    f.GR = 'Друг';
    f.seckey = '';
    f.isAdding = false;

    // ── Стили + модалки ─────────────────────────────────────────────────────
    if (!document.getElementById('vk-friends-modals')) {
        const cont = document.createElement('div');
        cont.id = 'vk-friends-modals';
        cont.innerHTML = `
            <style>
                .vk-overlay {
                    position: fixed; inset: 0; background: rgba(0,0,0,0.6);
                    z-index: 100000; display: none; justify-content: center; align-items: center;
                    backdrop-filter: blur(4px);
                }
                .vk-modal {
                    background: #fff; border-radius: 16px; box-shadow: 0 20px 64px rgba(0,0,0,0.28);
                    width: 100%; max-width: 480px; max-height: 90vh; overflow-y: auto;
                    position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);
                    font-family: system-ui, sans-serif; font-size: 15px; color: #000;
                    z-index: 100001; animation: vkModalAppear 0.22s cubic-bezier(0.4,0,0.2,1);
                }
                @keyframes vkModalAppear {
                    from { opacity: 0; transform: translate(-50%, -50%) scale(0.94); }
                    to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
                }
                .vk-header {
                    padding: 16px 20px; background: #f0f2f5; border-bottom: 1px solid #e4e6eb;
                    font-size: 17px; font-weight: 600; display: flex; align-items: center; justify-content: space-between;
                }
                .vk-close {
                    width: 36px; height: 36px; background: transparent; border: none;
                    font-size: 24px; color: #8a8a8a; cursor: pointer; border-radius: 50%;
                    display: flex; align-items: center; justify-content: center; transition: background 0.14s;
                }
                .vk-close:hover { background: rgba(0,0,0,0.08); }
                .vk-body { padding: 20px; }
                .vk-btn {
                    padding: 8px 24px; font-size: 15px; font-weight: 500; border-radius: 8px;
                    cursor: pointer; border: none; transition: all 0.13s; min-width: 120px;
                }
                .vk-btn-primary { background: #0077ff; color: white; }
                .vk-btn-primary:hover { background: #0066dd; }
                .vk-btn-secondary { background: #e4e6eb; color: #050505; }
                .vk-btn-secondary:hover { background: #d8dade; }
                select, textarea, input {
                    width: 100%; padding: 10px 12px; font-size: 15px;
                    border: 1px solid #ccd0d5; border-radius: 8px; background: white; box-sizing: border-box;
                }
                textarea { resize: vertical; min-height: 100px; }
                .vk-avatar img {
                    width: 80px; height: 80px; border-radius: 12px; object-fit: cover;
                    border: 1px solid #e4e6eb;
                }
                /* Успешный попап */
                .vk-success-modal .vk-header {
                    background: linear-gradient(135deg, #0077ff, #0055cc);
                    color: white; border-bottom: none;
                }
                .vk-success-icon { font-size: 64px; margin: 0 0 16px; }
                .vk-success-title { font-size: 22px; font-weight: 600; margin: 0 0 12px; }
                .vk-success-text { font-size: 15px; color: #333; line-height: 1.5; }
            </style>

            <div id="vkOverlay" class="vk-overlay" onclick="friends.closeIfOverlay(event)"></div>

            <div id="addFriendModal" class="vk-modal" style="display:none;">
                <div class="vk-header">
                    <span>Добавление в друзья</span>
                    <button class="vk-close" onclick="friends.closeModal('addFriendModal')">×</button>
                </div>
                <div class="vk-body" id="addFriendBody"></div>
            </div>

            <div id="captchaModal" class="vk-modal" style="display:none; max-width:420px;">
                <div class="vk-header">
                    <span>Подтверждение</span>
                    <button class="vk-close" onclick="friends.closeModal('captchaModal')">×</button>
                </div>
                <div class="vk-body" id="captchaBody"></div>
            </div>

            <div id="successModal" class="vk-modal vk-success-modal" style="display:none; max-width:420px;">
                <div class="vk-header">
                    <span>Успешно!</span>
                    <button class="vk-close" onclick="friends.closeModal('successModal')">×</button>
                </div>
                <div class="vk-body" style="text-align:center;">
                    <div class="vk-success-icon">🎉</div>
                    <div class="vk-success-title">Друг добавлен</div>
                    <div class="vk-success-text">
                        Запрос отправлен ${f.ucodes._username || 'пользователю'}<br>
                        Всё прошло отлично, спасибо!
                    </div>
                    <button class="vk-btn vk-btn-primary" style="margin-top:20px;" onclick="friends.closeModal('successModal')">
                        Закрыть
                    </button>
                </div>
            </div>
        `;
        document.body.appendChild(cont);

        document.addEventListener('keydown', e => { if (e.key === 'Escape') f.closeAllModals(); });
    }

    f.showModal = function(id, title, html) {
        const m = document.getElementById(id);
        if (!m) return;
        if (title) m.querySelector('.vk-header span').textContent = title;
        const bodyId = id.replace('Modal','Body');
        if (html && document.getElementById(bodyId)) {
            document.getElementById(bodyId).innerHTML = html;
        }
        document.getElementById('vkOverlay').style.display = 'flex';
        m.style.display = 'block';
    };

    f.closeModal = function(id) {
        const m = document.getElementById(id);
        if (m) m.style.display = 'none';
        document.getElementById('vkOverlay').style.display = 'none';
    };

    f.closeAllModals = function() {
        ['addFriendModal','captchaModal','successModal'].forEach(id => f.closeModal(id));
    };

    f.closeIfOverlay = function(e) {
        if (e.target.id === 'vkOverlay') f.closeAllModals();
    };

    f.showSuccess = function() {
        f.showModal('successModal', 'Успешно!', '');
    };

    f.sAdd = function() {
        if (f.ucodes._username === f.ucodes.username) return alert('Нельзя добавить самого себя');
        if (!f.ucodes.isuser) return alert('Только зарегистрированным');

        const html = `
            <div style="display:flex; gap:20px; align-items:flex-start;">
                <div style="flex-shrink:0;">
                    <img src="${f.ucodes.avatar || 'https://bro.usite.pro/icon/orig.webp'}" class="vk-avatar" alt="">
                </div>
                <div style="flex:1;">
                    <div style="font-size:18px; font-weight:600; margin-bottom:16px;">
                        Добавить <span style="color:#0077ff;">${f.ucodes._username}</span> в друзья?
                    </div>
                    <div style="margin:16px 0 8px; color:#65676b;">Группа:</div>
                    <select id="selGrFr">
                        <option>Друг</option>
                        <option>Приятель</option>
                        <option>Знакомый</option>
                        <option>Семья</option>
                        <option>Коллега</option>
                        <option>Кумир</option>
                    </select>
                    <div style="margin:20px 0 12px;">
                        <a href="javascript:void(0)" style="color:#0077ff; text-decoration:none; font-weight:500;"
                           onclick="let el=document.getElementById('vkMsgBlock');el.style.display=el.style.display==='none'?'block':'none';if(el.style.display==='block')document.getElementById('vkMsgTxt').focus();">
                            Добавить личное сообщение
                        </a>
                    </div>
                    <div id="vkMsgBlock" style="display:none;margin-top:12px;">
                        <textarea id="vkMsgTxt" placeholder="Напишите что-нибудь..."></textarea>
                    </div>
                    <div style="margin-top:28px; display:flex; gap:12px; justify-content:flex-end;">
                        <button class="vk-btn vk-btn-primary" onclick="
                            friends.adnMess = (document.getElementById('vkMsgTxt')||{}).value?.trim()||'';
                            friends.GR = document.getElementById('selGrFr').value;
                            friends.add();
                            friends.closeModal('addFriendModal');
                        ">Отправить запрос</button>
                        <button class="vk-btn vk-btn-secondary" onclick="friends.closeModal('addFriendModal')">Отмена</button>
                    </div>
                </div>
            </div>
        `;
        f.showModal('addFriendModal', 'Добавление в друзья', html);
    };

    f.add = function() {
        if (f.isAdding) return;
        f.isAdding = true;
        document.body.style.cursor = 'wait';

        const target = f.ucodes.userid || f.ucodes._userid || '';

        $.get(`/blog/0-0-0-0-17-${target}?${Date.now()}`, data => {
            if ($(data).find(`.nick:contains('${f.ucodes._username}')`).length > 0) {
                alert(`${f.ucodes._username} уже в друзьях`);
                resetCursor();
                return;
            }

            $.get("/blog/0-0-0-0-1", form => {
                const ssid = $('input[name="ssid"]', form).val();
                if (!ssid) {
                    alert("Не удалось получить ssid");
                    resetCursor();
                    return;
                }

                $.post("/blog", {
                    title: f.ucodes._username,
                    other1: f.ucodes.avatar,
                    other2: f.GR,
                    other3: f.ucodes._profurl || '',
                    other4: f.ucodes.userid,
                    other5: f.ucodes._userid,
                    a: 2,
                    ssid
                }).done(() => {
                    f.sendPmWrapper();
                }).always(resetCursor);
            }).always(resetCursor);
        }).fail(resetCursor);
    };

    function resetCursor() {
        document.body.style.cursor = 'default';
        f.isAdding = false;
    }

    f.sendPmWrapper = function() {
        $.get(`/index/14-${f.ucodes._userid}-0-1`, pm => {
            if ($("#secuImg", pm).length) {
                f.seckey = $("input[name='seckey']", pm).val() || '';
                const capHtml = `
                    <div id="capImgSpan" style="margin:20px 0;"></div>
                    <input type="text" id="capcode" maxlength="6" placeholder="Код с картинки" style="font-size:20px;letter-spacing:4px;text-align:center;">
                    <div style="margin-top:24px;text-align:center;">
                        <button class="vk-btn vk-btn-primary" onclick="friends.sendPm(true)">Отправить</button>
                    </div>
                `;
                f.showModal('captchaModal', 'Подтверждение', capHtml);
                $("#capImgSpan").html($("#secuImg", pm).clone());
                $("#capcode").focus();
            } else {
                f.sendPm(false);
            }
        });
    };

    f.sendPm = function(withCap = false) {
        const base = f.invite ? f.message2() : f.message1();
        const extra = f.adnMess ? `\n\nСообщение:\n${f.adnMess}` : '';
        const msg = base + extra + "\n\nХорошего дня!";

        $.get(`/index/14-${f.ucodes._username}-0-1`, page => {
            const ssid = $('input[name="ssid"]', page).val();
            if (!ssid) {
                f.showSuccess(); // друг уже добавлен → успех
                return;
            }

            const data = {
                s: f.ucodes._username,
                subject: "Предложение дружбы",
                message: msg,
                a: 18,
                ssid: ssid
            };

            if (withCap) {
                const code = $("#capcode").val().trim();
                if (!code) {
                    alert("Введите код");
                    return;
                }
                data.code = code;
                data.seckey = f.seckey;
            }

            $.post("/index/", data, function(res) {
                // Не проверяем текст ответа — просто показываем успех
                // (так как друг уже добавлен, а сообщение — бонус)
                if (withCap) f.closeModal('captchaModal');
                f.showSuccess();
            }, "text").fail(() => {
                // даже если сообщение не ушло — успех
                if (withCap) f.closeModal('captchaModal');
                f.showSuccess();
            });
        }).fail(() => f.showSuccess()); // друг добавлен → успех
    };

    if (location.search.includes('?friend')) {
        f.invite = true;
        setTimeout(f.sAdd, 400);
    }
    if (location.search.includes('?myfriend')) {
        setTimeout(f.sAdd, 400);
    }
})();




Мурчанн

Признаюсь, не знаю почему, но глядя на звезды мне всегда хочется мечтать.
  • Страница 1 из 1
  • 1
Поиск: