Причин может быть несколько:
- На Вашем аккаунте не работают обмены.
- Предмета нет на ТМе — все предметы закупаются на площадке market.csgo.com и отправляются напрямую Вам от продавцов!
- Если предмет на торговой площадке имеется, но на него завышенная цена, то в таком случае Вам нужно будет подождать.
Это мошенник. Не добавляйте его в друзья, он может украсть ваши предметы. Администрация сайта CSHAPPY никогда не добавится к вам в друзья
Перейдите по ссылке, чтобы найти Вашу ссылку на обмен
Промокоды выкладываются каждый день в нашем сообществе VK
Обычно не более 5 минут. Но бывают случаи, когда продавец не отправляет предмет, и тогда он возвращается на сайт
Предмет находится в вашем профиле неограниченное количество времени. Да, он будет там, пока вы его не продадите, не заберете и т.д.
Оставляйте отзыв в нашем сообществе VK, каждый день мы выдаем пользователям баланс до 250 рублей за отзывы
На проекте запрещено использовать более 1 аккаунта на 1 пользователя. Если вы нарушили это правило — обмен может быть заблокирован НАВСЕГДА
Каждый исход на сайте определяется броском — числом от 0 до 999 999, которое вычисляется из трёх известных вам величин: секрета сервера (раскрывается после ротации), вашего клиентского зерна и номера ролла (nonce). Пересчитать его можно без нашего сайта:
- Соберите сообщение:
client_seed:nonce:cursor(cursor начинается с 0, разделители — двоеточия, числа — обычной десятичной записью). - Посчитайте
HMAC-SHA256, где ключ — секрет сервера (как строка), сообщение — из шага 1. Получится 32 байта. - Читайте байты четвёрками как целые big-endian (старший байт первым): байты 0–3, затем 4–7 и так далее.
- Если четвёрка ≥ 4 294 000 000 — отбросьте её и возьмите следующую (это rejection sampling: без него остаток от деления был бы чуть смещён, и это была бы уже не честная монета).
- Первая принятая четвёрка по модулю 1 000 000 — это и есть бросок. Если отброшены все восемь (вероятность ~10⁻²⁶) — увеличьте cursor на 1 и повторите с шага 1.
Дальше механики читают бросок по-разному: в кейсе он попадает в интервал предмета (roll_from ≤ roll < roll_to из таблицы шансов), в апгрейде сравнивается с показанным шансом (roll < shown_chance_ppm — победа), в контракте выбирает ячейку таблицы ценности (floor(roll × 1000 / 1 000 000)).
Готовый код для консоли браузера (все данные — из кнопки «Копировать все данные» на странице проверки):
async function roll(serverSeed, clientSeed, nonce) {
const enc = new TextEncoder();
const key = await crypto.subtle.importKey(
"raw", enc.encode(serverSeed), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
for (let cursor = 0; ; cursor++) {
const digest = new DataView(await crypto.subtle.sign(
"HMAC", key, enc.encode(`${clientSeed}:${nonce}:${cursor}`)));
for (let i = 0; i + 4 <= digest.byteLength; i += 4) {
const quad = digest.getUint32(i); // big-endian
if (quad < 4_294_000_000) return quad % 1_000_000;
}
}
}
// roll("секрет сервера", "ваше зерно", номер_ролла).then(console.log)Напишите в техническую поддержку в сообщество VK или на почту support@cshappy.com
Powered by Steam, a registered trademark of Valve Corporation. Valve, the Valve logo, the Steam logo, Counter-Strike and the Counter-Strike logo are trademarks and/or registered trademarks of Valve Corporation. All other trademarks are property of their respective owners
Copyright © 2015–2026 CSHAPPY