Bad serial number given in setup как исправить


6 Jun, 2013 @ 9:30am

bad serial number given in setup как исправить?!

От имени админестратора запускал! Кэш проверял, но ничего не помогло… только сегодня купил игру и очень хочу поиграть, но ни одна игра (Arma 2, Arma 2 Oa, Arma 2 Day Z) не запускается и выдает ошибку: “bad serial number given in setup”

Date Posted: 6 Jun, 2013 @ 9:30am

Posts: 7

С основами по использованию Wine можно ознакомиться здесь: https://noostyche.ru/blog/2020/04/30/ispolzovanie-wine-dlya-zapuska-windows-programm-v-linux/

На Wine и Proton проблема характерна для Arma: Cold War Assault (Operation Flashpoint), Arma 1 и 2, кроме Arma 2: Operation Arrowhead (с ней всё в порядке). Она заключается в том, что установочный скрипт (xxxxx_install.vdf) не может сгенерировать специальный код в шестнадцатеричной системе счисления из ключа (серийного номера) игры и подставить его в реестр Windows, то есть в файл реестра в префиксе. Решение заключается в генерации кода из лицензионного ключа и добавлении его в реестр вручную.

Генератор кода из ключа можно подсмотреть здесь: https://github.com/ValveSoftware/Proton/issues/767#issuecomment-508957522

Альтернативный вариант решения проблемы: https://github.com/ValveSoftware/Proton/issues/1308

Генератор кода представлен скриптом на языке perl:

echo 1234-56789-ABCDE-FGHIJ-KLMNO | perl -ne 's/-//g; tr/IO/10/; for $i (0..2) { $res = 0; for $j (0..7) { $res += index("0123456789ABCDEFGHJKLMNPRSTVWXYZ", substr($_, $i * 8 + $j, 1)) << (5 * $j); }; printf("%010x", $res); }; print("n");'

Примечание: Интерпретатор perl всё ещё присутствует во многих дистрибутивах Linux, поэтому команду можно выполнить в терминале и сразу получить результат. Альтернативным вариантом является возможность воспользоваться онлайн-сервисом.

В первом фрагменте команды можно увидеть буквенно-цифровую строку из 24 символов — здесь должен быть ваш лицензионный ключ игры, который можно посмотреть в Steam: ПКМ на игре в «Библиотеке» / Управление / Цифровые ключи.

После выполнения команды в выводе терминала окажется код подобный этому: 41cc520c4183dcd62d4905ab49c831

Это 15 пар символов в шестнадцатеричной системе счисления. Именно этот код необходимо добавить в реестр префикса игры.

Чтобы префикс был создан, нужно запустить игру один раз, полюбоваться на ошибку и закрыть её.

Для Arma: Cold War Assault префикс и файл реестра по умолчанию располагаются здесь:

/home/$USER/.local/share/Steam/steamapps/compatdata/65790/pfx/system.reg

Для обычной Arma 2:

/home/$USER/.local/share/Steam/steamapps/compatdata/33910/pfx/system.reg

Примечание: Номером префикса является ID игры в Steam.

Отредактировать файл реестра можно двумя способами: через графическую Wine-программу regedit и через редактирование обычным текстовым редактором (nano, gedit, kate и подобными).

Примечание по Arma 2.

С этой игрой есть довольно неприятная особенность. Установочно-конфигурационный скрипт 33910_install.vdf, который находится в корневом каталоге игры, при запуске игры каждый раз стирает(!) запись ключа (шестнадцатеричное значение) из реестра, что приводит к той самой «Bad serial given in setup». Чтобы он не осуществлял эту диверсию, необходимо лишить пользователя прав его выполнять и читать. Пример:

sudo chmod 000 "/home/$USER/.local/share/Steam/steamapps/common/Arma 2/33910_install.vdf"

Или через графический интерфейс:

Всё, диверсионная деятельность скрипта пресечена. Теперь можно приступить к редактированию реестра.

Wine. Редактирование файла реестра с помощью regedit.

Начнём с Arma 2.

WINEPREFIX="/home/$USER/.local/share/Steam/steamapps/compatdata/33910/pfx" wine regedit

Примечание: Если будет предложено установить в префикс Mono и Gecko — отказываемся, для префикса игры это ни к чему.

  1. Перейти в HKEY_LOCAL_MACHINESoftwareWow6432Nodebohemia interactive studioarma 2
  2. Выбрать строку key.
  3. ПКМ / Изменить…
  4. В появившемся окне в текстовое поле переписать сгенерированный код. В данном примере это 41cc520c4183dcd62d4905ab49c831.
  5. Подтвердить изменения.
  6. Закрыть окно «Редактора реестра».

Теперь можно запустить игру и ошибки «Bad serial given in setup» более не будет.

Для Arma: Cold War Assault алгоритм действий тот же. Разница только в пути до префикса и до записи в реестре.

WINEPREFIX="/home/$USER/.local/share/Steam/steamapps/compatdata/65790/pfx" wine regedit

Путь до записи в реестре: HKEY_LOCAL_MACHINESoftwareWow6432Nodebohemia interactive studiocoldwarassault

Редактирование реестра текстовым редактором.

Для Arma 2.

Открываем файл реестра, как текстовый документ:

/home/$USER/.local/share/Steam/steamapps/compatdata/33910/pfx/system.reg

Необходимо найти строку:

[Software\Wow6432Node\bohemia interactive studio\arma 2]

Ниже будет строка:

«key»=hex:

Это то самое место, куда нужно скопировать сгенерированный код. Пример записи:

«key»=hex:41,cc,52,0c,41,83,dc,d6,2d,49,05,ab,49,c8,31

Важно обратить внимание, что код разбит на пары символов, которые отделены запятой без пробела.

Сохранить изменения в файле.

Теперь проблема с «Bad serial given in setup» решена.

Для Arma: Cold War Assault.

/home/$USER/.local/share/Steam/steamapps/compatdata/65790/pfx/system.reg

Искомый блок в реестре:

[Software\Wow6432Node\bohemia interactive studio\coldwarassault]

В строку «KEY»=hex: прописать сгенерированный код:

«KEY»=hex:41,cc,52,0c,41,83,dc,d6,2d,49,05,ab,49,c8,31

Сохранить изменения в файле.

Готово.

Теперь можно без проблем наслаждаться играми серии Arma на Linux.

  1. Home
  2. Arma 2: British Armed Forces
  3. Steam


Arma 2: British Armed Forces

Steam

There are several possible fixes for this issue.

First, run Arma 2 once. Then try to run Arma BAF(without beta or DayZ).  If that won’t help you can try to verify game cache of the Arma 2 and Arma OA.

1.) If that will not help, follow this guide:

  1. RUN STEAM AS ADMINISTRATOR
  2. Exit Steam.
  3. Right-click on Steam icon.
  4. Left-click on “Run As Administrator”.
  5. If the problem persists, reboot your computer and try the procedure again.

2.) DELETE ARMA 2 BAF REGISTRY ENTRIES

  1. Exit Steam, open Start menu and type this directly into the menu (in Windows XP, you will have to click on “Run” first) regedit
  2. Press Enter.
  3. In regedit window, click on HKEY_LOCAL_MACHINE.
  4. Press CTRL+F to bring up search.
  5. Look for “ArmA” (without the quotes).
  6. Delete all the “ArmA” entries you find from the registry.
  7. Run Steam as Administrator.
  8. Right-click on the game in Steam Library.
  9. Click on “Properties”.
  10. Select “Local files” tab and click on “Verify integrity of game cache files” button.
  11. Please wait, the process can take several minutes.

3) REINSTALL STEAM

  1. Go to Steam’s installation folder.
  2. Delete everything there except “steam.exe” and “steamapps” folder.
  3. Run “steam.exe” – Steam will reinstall itself automatically.

gagarin126rus



Ученик

(172),
закрыт



10 лет назад

У меня лецензия arma 2 Oa и arma2 пробовал заходить и выдаёт ошибку.

Лучший ответ

Владимир Шеховцов

Ученик

(119)


10 лет назад

Неправильно установлен мод или данный ключ игры уже используется. Попробуйте отключить интернет и запустить игру если выдаст эту ошибку то
1. Необходимо выйти из Steam,
2. Запустить его заново с правами администратора.
3. Все можно запускать.

Остальные ответы

Похожие вопросы

using System;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;

public class KeyConverter {
    private static readonly String szTemplate = "0123456789ABCDEFGHJKLMNPRSTVWXYZ";

    public String getHexKey(String arma2key) {
        var upperkey = arma2key.Trim().ToUpper().Replace('O', '0').Replace('I', '1').Replace("-", "");
        var bResult = new Byte[15];
        if (upperkey.Length != 24)
            throw new Exception("Invalid key length");

        for (var i = 0; i < 3; ++i) {
            UInt64 qwResult = 0;
            for (var j = 0; j < 8; ++j) {
                var cChar = upperkey[i * 8 + j];
                var szPos = szTemplate.IndexOf(cChar);
                qwResult |= (UInt64)szPos << (j * 5);
            }
            for (var j = 0; j < 5; ++j) {
                bResult[i * 5 + 5 - 1 - j] = (Byte)(qwResult & 0xFF);
                qwResult >>= 8;
            }
        }

        return BitConverter.ToString(bResult); ;
    }

Добавить комментарий