Перейти к содержимому


Фотография

Перенос информации в следующую миссию кампании


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 OFFLINE   andrew64

andrew64

    Рядовой

  • Пользователи
  • 23 сообщений

Отправлено 30 April 2023 - 22:21

Добрый день! Не нашел такой темы на форуме.

В общем для примера, есть кампания из 2-х миссий, 2-х солдат (игрок и бот) и автомобиль с оружием в багажнике.

Можете подсказать какими командами выполнить сохранение состояния бота жив или мертв в первой миссии, а также состояние автомобиля (оружия в багажнике)?

А потом выполнить загрузку этого сохранения в начале второй миссии, если бот умер, то убрать его (if bot not alive then delete vehicle "bot")?

 

Пробовал: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

saveStatus "playerstate";

А в следующей: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

loadStatus "playerstate";

Это работает только с оружием у солдат, а состояние здоровья не переносится.

 

И что такое weaponPool? Может по оружию в багаже автомобиля сюда копать?


  • 0

#2 OFFLINE   andrew64

andrew64

    Рядовой

  • Пользователи
  • 23 сообщений

Отправлено 30 April 2023 - 23:00

Если в первой миссии сохраняю состояние автомобиля (повреждения) car saveStatus "carState";

А во второй миссии загружаю состояние командой car loadStatus "carState";

То игра вылетает и выдает ошибку:

0xC0000005 - ACCESS_VIOLATION

Can also be STATUS_ACCESS_VIOLATION.

This error is very generic. It may be caused by many issues, such as a hardware malfunction, a virus in the computer, but also an error in the game itself. Possible solutions:

  • Try changing the 

    Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

     you are using (default: "tbb4malloc_bi" - try "system" on Windows 7 and later)
  • Try joining another server, then rejoin the previous one.
  • Update the graphics card drivers to a newer version.
  • Rollback the graphics card drivers to an older version.
  • Check the temperature of your GPUs and CPUs.
  • Verify the integrity of the game cache using 

    Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

    .
  • Re-install 

    Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

    .
  • Uninstall the Visual C++ 2013 Redistributable package (both x86 and x64 version), restart your computer and install the package again using 

    Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

     (do not use the Repair function).
  • Run a 

    Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

     to repair corrupted system files.

  • 0

#3 OFFLINE   11Varan11

11Varan11

    Ефрейтор

  • Пользователи
  • 64 сообщений
  • Откуда:Kostroma

Отправлено 30 April 2023 - 23:16

Добрый день! Не нашел такой темы на форуме.

В общем для примера, есть кампания из 2-х миссий, 2-х солдат (игрок и бот) и автомобиль с оружием в багажнике.

Можете подсказать какими командами выполнить сохранение состояния бота жив или мертв в первой миссии, а также состояние автомобиля (оружия в багажнике)?

А потом выполнить загрузку этого сохранения в начале второй миссии, если бот умер, то убрать его (if bot not alive then delete vehicle "bot")?

 

Пробовал: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

saveStatus "playerstate";

А в следующей: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

loadStatus "playerstate";

Это работает только с оружием у солдат, а состояние здоровья не переносится.

 

И что такое weaponPool? Может по оружию в багаже автомобиля сюда копать?

Не знаю,но нашёл вот такую инфу.Может будет полезно.

 

Для сохранения состояния бота и автомобиля в Arma 3 поступайте следующим образом:

Сохранять состояние бота и автомобиля в переменные или в файл используя функции getVariable, setVariable, saveVar, loadVar и т.д. Вот примерный код для сохранения состояний бота и автомобиля в локальном файле:

// Сохранение состояния бота
if (!isNil "bot") then { // проверка на существование бота
botStatus = [bot, bot getVariable ["isAlive", false]] call BIS_fnc_packData; // запаковка данных состояния бота
saveVar ["botStatus.sqf", botStatus]; // сохранение в файл
};

// Сохранение состояния автомобиля
carStatus = [car, car getVariable ["isWeaponInTrunk", false]] call BIS_fnc_packData; // запаковка данных состояния автомобиля
saveVar ["carStatus.sqf", carStatus]; // сохранение в файл

Загрузка сохранения и проверка состояния бота и автомобиля:

// Загрузка состояния бота и автомобиля
botStatus = [] call compile preprocessFileLineNumbers "botStatus.sqf"; // загрузка файла состояния бота
if (!isNull botStatus) then { // проверка на успешную загрузку
[botStatus, bot] call BIS_fnc_unpackData; // распаковка данных состояния бота
bot setVariable ["isAlive", botStatus select 1]; // установка состояния бота
} else { // если файл не был найден
deleteVehicle bot; // удаление бота из игры
};

carStatus = [] call compile preprocessFileLineNumbers "carStatus.sqf"; // загрузка файла состояния автомобиля
if (!isNull carStatus) then { // проверка на успешную загрузку
[carStatus, car] call BIS_fnc_unpackData; // распаковка данных состояния автомобиля
car setVariable ["isWeaponInTrunk", carStatus select 1]; // установка состояния автомобиля
} else { // если файл не был найден
car removeWeaponFromTrunk; // удаление оружия из багажника
};

Обратите внимание, что код для сохранения и загрузки состояния бота предполагает, что вы используете переменную "bot" для хранения сущности бота в первой миссии, и передаете ее во вторую миссию. Кроме того, в этом примере используется функция BIS_fnc_packData для упаковки данных состояния в массив, который может быть сохранен в файл. Функция BIS_fnc_unpackData используется для распаковки данных при загрузке сохранения. Дополнительно, обратите внимание на способ обработки случая, когда бот не был найден при загрузке состояния.


  • 0

#4 OFFLINE   andrew64

andrew64

    Рядовой

  • Пользователи
  • 23 сообщений

Отправлено 01 May 2023 - 00:22

Ок ща попробую, а  файл botStatus.sqf нужно создавать вручную пустым вначале?

Попробовал без создания файл в botStatus.sqf, во второй миссии ругается, когда пытаюсь выполнить код:

// Загрузка состояния бота и автомобиля
botStatus = [] call compile preprocessFileLineNumbers "botStatus.sqf"; // загрузка файла состояния бота
if (!isNull botStatus) then { // проверка на успешную загрузку
[botStatus, bot] call BIS_fnc_unpackData; // распаковка данных состояния бота
bot setVariable ["isAlive", botStatus select 1]; // установка состояния бота
} else { // если файл не был найден
deleteVehicle bot; // удаление бота из игры
};

carStatus = [] call compile preprocessFileLineNumbers "carStatus.sqf"; // загрузка файла состояния автомобиля
if (!isNull carStatus) then { // проверка на успешную загрузку
[carStatus, car] call BIS_fnc_unpackData; // распаковка данных состояния автомобиля
car setVariable ["isWeaponInTrunk", carStatus select 1]; // установка состояния автомобиля
} else { // если файл не был найден
car removeWeaponFromTrunk; // удаление оружия из багажника


  • 0

#5 OFFLINE   11Varan11

11Varan11

    Ефрейтор

  • Пользователи
  • 64 сообщений
  • Откуда:Kostroma

Отправлено 01 May 2023 - 19:31

Ок ща попробую, а  файл botStatus.sqf нужно создавать вручную пустым вначале?

Попробовал без создания файл в botStatus.sqf, во второй миссии ругается, когда пытаюсь выполнить код:

// Загрузка состояния бота и автомобиля
botStatus = [] call compile preprocessFileLineNumbers "botStatus.sqf"; // загрузка файла состояния бота
if (!isNull botStatus) then { // проверка на успешную загрузку
[botStatus, bot] call BIS_fnc_unpackData; // распаковка данных состояния бота
bot setVariable ["isAlive", botStatus select 1]; // установка состояния бота
} else { // если файл не был найден
deleteVehicle bot; // удаление бота из игры
};

carStatus = [] call compile preprocessFileLineNumbers "carStatus.sqf"; // загрузка файла состояния автомобиля
if (!isNull carStatus) then { // проверка на успешную загрузку
[carStatus, car] call BIS_fnc_unpackData; // распаковка данных состояния автомобиля
car setVariable ["isWeaponInTrunk", carStatus select 1]; // установка состояния автомобиля
} else { // если файл не был найден
car removeWeaponFromTrunk; // удаление оружия из багажника

Чел я честно не знаю работает это или нет.Я просто увидел инфу похожую на то что ты искал и скинул.А на деле не разбирался с этим


  • 0

#6 OFFLINE   andrew64

andrew64

    Рядовой

  • Пользователи
  • 23 сообщений

Отправлено 01 May 2023 - 22:44

А можешь дать источник? ссылку на сайт..


  • 0

#7 OFFLINE   Dobrynya

Dobrynya

    Рядовой

  • Пользователи
  • 12 сообщений

Отправлено 02 May 2023 - 11:39

Я думаю передача через profileNamespace сработает: 

 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

["playerstate", _someone];

 

_someone

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

["playerstate", 0];


  • 0

#8 OFFLINE   andrew64

andrew64

    Рядовой

  • Пользователи
  • 23 сообщений

Отправлено 02 May 2023 - 17:31

Я думаю передача через profileNamespace сработает: 

 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

["playerstate", _someone];

 

_someone

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

["playerstate", 0];

Не совсем понимаю как это будет работать.

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 ["playerstate"_someone]; - эта команда будет сохранять в пространстве имен переменную "playerstate" со значением _someone.

А дальше не понимаю что это:

_someone 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 ["playerstate"0];


  • 0

#9 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 02 May 2023 - 20:54

И что такое weaponPool? Может по оружию в багаже автомобиля сюда копать?

Верно, подробнее здесь: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


 

А дальше не понимаю что это: _someone = profileNamespace getVariable ["playerstate", 0];

Ссылки же даны на документацию.


  • 0




Яндекс.Метрика