Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
Sign in to follow this  

Сохранение инвентаря в Virtual Garage

Нашел скрипт виртуального гаража. Он не сохраняет инвентарь машины. Мучался 2 дня, но в итоге теперь в таблицу виртуального гаража вписывается лут в транспорте, а вот при спавне его уже нет. Ниже выкладываю модифицированные файлики. Может есть у кого идеи почему нету лута в машине при спавне?


Сервер аддон Virtual Garage:

ExileServer_VirtualGarage_network_RetrieveVehicleRequest.sqf -


    Name: ExileServer_VirtualGarage_network_RetrieveVehicleRequest.sqf
     Author(s): Shix
    Copyright © 2016 Shix
    This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
    To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
     Description: handles retrieve vehicle requests
private ["_sessionID","_vehicleDBID","_player","_VehicleInfo","_vehClass","_vehFuel","_vehDamage","_vehHitPoints","_vehPinCode","_vehCargo_items","_vehCargo_magazines","_vehCargo_weapons","_vehCargo_container"];
_sessionID = _this select 0;
_vehicleDBID = (_this select 1) select 0;
  _player = _sessionID call ExileServer_system_session_getPlayerObject;
  if (isNull _player) then
    throw "No player was found from the session ID";
  _VehicleInfo = format ["RetrieveVehicle:%1", _vehicleDBID] call ExileServer_system_database_query_selectFull;
  _vehClass = (_VehicleInfo select 0) select 1;
  _vehFuel = (_VehicleInfo select 0) select 3;
  _vehDamage = (_VehicleInfo select 0) select 4;
  _vehHitPoints = (_VehicleInfo select 0) select 5;
  _vehPinCode = (_VehicleInfo select 0) select 6;
  _vehPosX = (_VehicleInfo select 0) select 7;
  _vehPosY = (_VehicleInfo select 0) select 8;
  _vehPosZ = (_VehicleInfo select 0) select 9;
  _vehVectorDirX = (_VehicleInfo select 0) select 10;
  _vehVectorDirY = (_VehicleInfo select 0) select 11;
  _vehVectorDirZ = (_VehicleInfo select 0) select 12;
  _vehVectorUpX = (_VehicleInfo select 0) select 13;
  _vehVectorUpY = (_VehicleInfo select 0) select 14;
  _vehVectorUpZ = (_VehicleInfo select 0) select 15;
  _vehCargo_items = (_VehicleInfo select 0) select 16;
  _vehCargo_magazines = (_VehicleInfo select 0) select 17;
  _vehCargo_weapons = (_VehicleInfo select 0) select 18;
  _vehCargo_container = (_VehicleInfo select 0) select 19;
  _texture = (_VehicleInfo select 0) select 20;
  [_sessionID,[_vehClass,_vehPinCode,_vehFuel,_vehDamage,_vehHitPoints,_vehicleDBID,_vehPosX,_vehPosY,_vehPosZ,_vehVectorDirX,_vehVectorDirY,_vehVectorDirZ,_vehVectorUpX,_vehVectorUpY,_vehVectorUpZ,_vehCargo_items,_vehCargo_magazines,_vehCargo_weapons,_vehCargo_container,_texture]] call ExileServer_VirtualGarage_network_SpawnRequestedVehicle;
} catch {
  [_exception,"Virtual Garage Retrieve Vehicle Error"] call ExileServer_VirtualGarage_utils_diagLog;




ExileServer_VirtualGarage_network_SpawnRequestedVehicle.sqf -


     Name: ExileServer_VirtualGarage_network_SpawnRequestedVehicle.sqf
     Author(s): Shix
      Copyright © 2016 Shix
      This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
      To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
     Description: handles spawn Vehicle Requests
_sessionID = _this select 0;
_parameters = _this select 1;
_vehicleClass = _parameters select 0;
_pinCode = _parameters select 1;
_vehicleFuel = _parameters select 2;
_vehicleDamage = _parameters select 3;
_vehicleHitPoints = _parameters select 4;
_vehicleDatabaseID = _parameters select 5;
_vehiclePosX = _parameters select 6;
_vehiclePosY = _parameters select 7;
_vehiclePosZ = _parameters select 8;
_vehicleVectorDirX = _parameters select 9;
_vehicleVectorDirY = _parameters select 10;
_vehicleVectorDirZ = _parameters select 11;
_vehicleVectorUpX = _parameters select 12;
_vehicleVectorUpY = _parameters select 13;
_vehicleVectorUpZ = _parameters select 14;
_vehicleCargo_items = _parameters select 15;
_vehicleCargo_magazines = _parameters select 16;
_vehicleCargo_weapons = _parameters select 17;
_vehicleCargo_container = _parameters select 18;
_textures = _parameters select 19;
    _playerObject = _sessionID call ExileServer_system_session_getPlayerObject;
    if (isNull _playerObject) then
        throw "The is no player";
    if !(alive _playerObject) then
        throw "The player is dead";
    if !((count _pinCode) isEqualTo 4) then
        throw "The pin code is does not equal 4 chars";
    _position = (getPos _playerObject) findEmptyPosition [20, 175, _vehicleClass];
    _direction = (random 360);
    _SpawnPos = getNumber (missionconfigfile >> "VirtualGarageSettings" >> "VirtualGarage_VehicleSpawnPos");
    if (_SpawnPos == 1) then {
        _position = [_vehiclePosX,_vehiclePosY,_vehiclePosZ];
        _direction = [[_vehicleVectorDirX,_vehicleVectorDirY,_vehicleVectorDirZ],[_vehicleVectorUpX,_vehicleVectorUpY,_vehicleVectorUpZ]];
    if (_position isEqualTo []) then
            throw "Position is not defined";
    _vehicleObject = [_vehicleClass, _position, _direction, true, _pinCode] call ExileServer_object_vehicle_createPersistentVehicle;
    _vehicleObject setVariable ["ExileOwnerUID", (getPlayerUID _playerObject)];
    for '_i' from 0 to (count _textures)-1 do {
        _tex = _textures select _i;
        _vehicleObject setObjectTextureGlobal [_i, _tex];
    _vehSpawnState = getNumber (missionconfigfile >> "VirtualGarageSettings" >> "VirtualGarage_VehicleSpawnState");
    if (_vehSpawnState == 1) then
        _vehicleObject setVariable ["ExileIsLocked",1,true];
        _vehicleObject lock 2;
    _vehicleObject setFuel _vehicleFuel;
    _vehicleObject setDamage _vehicleDamage;
    _vehicleObject addItemCargoGlobal _vehicleCargo_items;
    _vehicleObject addMagazineCargoGlobal _vehicleCargo_magazines;
    _vehicleObject addWeaponCargoGlobal _vehicleCargo_weapons;
    _vehicleObject addBackpackCargoGlobal _vehicleCargo_container;
    _reapplyDamage = getNumber (missionconfigfile >> "VirtualGarageSettings" >> "VirtualGarage_ReapplyDamage");
    if (_reapplyDamage == 1) then
        if ((typeName _vehicleHitPoints) isEqualTo "ARRAY") then
                _vehicleObject setHitPointDamage [_x select 0, _x select 1];
            }forEach _vehicleHitPoints;
    _GivePlayerPinCode = getNumber (missionconfigfile >> "VirtualGarageSettings" >> "VirtualGarage_GivePlayerPinCode");
    if (_GivePlayerPinCode == 1) then {
        _msg = Format["Vehicle Successfully Retrieved PIN Code:%1",_pinCode];
        [_sessionID, "notificationRequest", ["Success", [_msg]]] call ExileServer_system_network_send_to;
        _msg = Format["Vehicle Successfully Retrieved"];
        [_sessionID, "notificationRequest", ["Success", [_msg]]] call ExileServer_system_network_send_to;
    _vehicleObject call ExileServer_object_vehicle_database_insertGarage;
    _vehicleObject call ExileServer_object_vehicle_database_update;
    [_sessionID, "RetrieveVehicleResponse", ["true",netId _vehicleObject]] call ExileServer_system_network_send_to;
    format ["deleteVehicleFromVG:%1", _vehicleDatabaseID] call ExileServer_system_database_query_fireAndForget;
    _vehicleDBID = _vehicleObject getVariable ["ExileDatabaseID",0];
    _skinTextures = getObjectTextures _vehicleObject;
    format["updateVehicleSkin:%1:%2", _skinTextures, _vehicleDBID] call ExileServer_system_database_query_fireAndForget;
    [_exception,"Virtual Garage Spawn Vehicle Error"] call ExileServer_VirtualGarage_utils_diagLog;
      [_sessionID, "RetrieveVehicleResponse", ["false",_vehicleObject]] call ExileServer_system_network_send_to;




Серверный аддон Exile Server:

ExileServer_object_vehicle_database_insertGarage.sqf -


 * ExileServer_object_vehicle_database_insertGarage
 * Exile Mod
 * www.exilemod.com
 * © 2015 Exile Mod Team
 * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. 
 * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
_vehicleObject = _this;
_position = getPosATL _vehicleObject;
_vectorDirection = vectorDir _vehicleObject;
_vectorUp = vectorUp _vehicleObject;
_ItemCargo = _vehicle call ExileServer_util_getItemCargo;
_MagazinesCargo = magazinesAmmoCargo _vehicle;
_WeaponsCargo = weaponsItemsCargo _vehicle;
_ContainerCargo = _vehicle call ExileServer_util_getObjectContainerCargo;
_data =
    typeOf _vehicleObject,
    _vehicleObject getVariable ["ExileOwnerUID", ""],
    locked _vehicleObject,
    _position select 0,
    _position select 1,
    _position select 2,
    _vectorDirection select 0, 
    _vectorDirection select 1,
    _vectorDirection select 2,
    _vectorUp select 0,
    _vectorUp select 1,
    _vectorUp select 2,
    _vehicleObject getVariable ["ExileAccessCode",""]
_extDB2Message = ["insertVehicleFromGarage", _data] call ExileServer_util_extDB2_createMessage;
_vehicleID = _extDB2Message call ExileServer_system_database_query_insertSingle;
_vehicleObject setVariable["ExileDatabaseID", _vehicleID];
_vehicleObject setVariable["ExileIsPersistent", true];




Изменённый код extDB:

exile.ini -


SQL1_1 = INSERT INTO vehicle SET 
SQL1_2 = class = ?, 
SQL1_3 = account_uid = ?,
SQL1_4 = is_locked = ?,
SQL1_5 = position_x = ?,
SQL1_6 = position_y = ?,
SQL1_7 = position_z = ?,
SQL1_8 = direction_x = ?,
SQL1_9 = direction_y = ?,
SQL1_10 = direction_z = ?,
SQL1_11 = up_x = ?,
SQL1_12 = up_y = ?,
SQL1_13 = up_z = ?,
SQL1_14 = cargo_items = ?,
SQL1_15 = cargo_magazines = ?,
SQL1_16 = cargo_weapons = ?,
SQL1_17 = cargo_container = ?,
SQL1_18 = pin_code = ?
Number of Inputs = 13
SQL1_INPUTS = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17

Return InsertID = true





SQL1_1 = SELECT id, class FROM virtual_garage WHERE account_uid = ?
Number Of Inputs = 1
SQL1_1 = INSERT INTO virtual_garage SET
SQL1_2 = class = ?,
SQL1_3 = account_uid = ?,
SQL1_4 = fuel = ?,
SQL1_5 = damage = ?,
SQL1_6 = hitpoints = ?,
SQL1_7 = pin_code = ?,
SQL1_8 = position_x = ?,
SQL1_9 = position_y = ?,
SQL1_10 = position_z = ?,
SQL1_11 = direction_x = ?,
SQL1_12 = direction_y = ?,
SQL1_13 = direction_z = ?,
SQL1_14 = up_x = ?,
SQL1_15 = up_y = ?,
SQL1_16 = up_z = ?,
SQL1_17 = cargo_items = ?,
SQL1_18 = cargo_magazines = ?,
SQL1_19 = cargo_weapons = ?,
SQL1_20 = cargo_container = ?,
SQL1_21 = vehicle_texture = ?
Number of Inputs = 20
SQL1_INPUTS = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
Return InsertID = true
SQL1_1 = SELECT id,class,account_uid,fuel,damage,hitpoints,pin_code,position_x,position_y,position_z,direction_x,direction_y,direction_z,up_x,up_y,up_z,vehicle_texture FROM virtual_garage WHERE id = ?
Number Of Inputs = 1
OUTPUT = 1,2-STRING,3-STRING,4,5,6,7-STRING,8,9,10,11,12,13,14,15,16,17,18,19,20,21
SQL1_1 = DELETE FROM virtual_garage WHERE id = ?
Number Of Inputs = 1



Share this post

Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By ZigoFrend
      Нашёл одну статью на форуме ТЫК вот вам перевод. От себя скажу что у меня сервере постройки стоят уже 2-ую неделю.
      Здесь много постов с жалобами на нарушение настойчивости. На самом деле, он работает как задумано. Я знаю, что вы, вероятно, готовитесь разжечь меня прямо сейчас за это, но выслушайте меня. Я не говорю, что это хороший дизайн, на самом деле это ужасный дизайн, но технически он работает правильно. Я думаю, что часть проблемы здесь в том, что люди не понимают, как часто серверы выходят из строя. Именно сбои сервера и являются настоящей проблемой - они являются виновниками потери постоянства, а не самой системы сохранения.
      Позвольте мне показать вам, что я имею в виду. Я использовал свой собственный сервер, чтобы разместить палатку на острове Скалисты. Затем я выполнил команду taskkill / F / IM DayZServer_x64.exe, которая имитирует сбой сервера, поскольку ключ / F заставляет exe немедленно закрыться. Результат был такой:

      с последующим...

      ЭТО КЛЮЧЕВАЯ ТОЧКА ЗДЕСЬ. Я не могу сказать вам, сколько стримеров я смотрел, играя в DayZ, которые думают, что это был запланированный перезапуск.  Каждый раз, когда вы получаете красное сообщение об ошибке «Нет сообщений ...» в центре экрана, это сбой сервера, а не перезапуск, и в этот момент это означает, что сервер «потерял постоянство» состояние, потому что, если сервер возвращается без двоичных файлов (которые теперь повреждены) в папке (ях) хранения, заменяемой некоторыми файлами резервных копий, результат будет следующим:

      Я залогинился и, конечно же, палатка исчезла. Зачем? Поскольку двоичные файлы были повреждены, поэтому система загружает свежий Чернарус из файлов XML и создает новый набор файлов сохраняемости хранилища.
      Теперь давайте попробуем еще раз, на этот раз ожидаем перезапуска запланированного сервера. На моем сервере он перезапускается каждые 2 часа, поэтому я размещаю другую палатку примерно в том же месте ...

      ... а затем, когда сервер перезагружается , я получаю это сообщение:

      Это ключевой момент, как хорошо. Это сообщение приводит вас к мысли, что это был сбой сервера, хотя на самом деле это не так.  Это был запланированный перезапуск моего сервера. Я подожду минуту, пока сервер снова включится, нажмите «Play», чтобы снова войти в систему, и ...

      ... палатка все еще там, потому что перезапуск корректно завершил работу exe, что означает отсутствие повреждения двоичных файлов (ПРИМЕЧАНИЕ: мой сервер работает в режиме реального времени, поэтому солнце установило немного, поэтому изображение выглядит несколько иначе) ,
      Смысл, который я пытаюсь здесь подчеркнуть, заключается в том, что Богемия не будет простым решением этой проблемы. Это было бы серьезным изменением того, как обрабатывается постоянство. Бинарная файловая система должна быть полностью уничтожена для чего-то другого. Вопрос в том, действительно ли Bohemia сделает это, чтобы исправить эту проблему, теперь, когда игра официально выпущена?
      Независимо от того, делают они это или нет, все вы, владельцы серверов, должны знать, что вам абсолютно необходимо регулярно создавать файлы резервных копий и восстанавливать последнюю резервную копию перед перезапуском, если вы получили сбой сервера, в противном случае вы наверняка потеряете постоянство. на вашем сервере. Если ваш GSP не позволяет вам этого делать, рассмотрите возможность переноса вашего сервера кому-то, кто разрешает игровые серверы на виртуальном сервере, что даст вам полный доступ к серверу, чтобы вы могли делать все, что вам угодно. На моем сервере у меня есть пакетный файл, выполняющий резервное копирование каждый час, поэтому наихудший случай для меня, мы должны были бы откатить 59 минут постоянства, если бы произошел сбой сервера на 59-й минуте часа перед следующей запланировано резервное копирование.
      Итак, настойчивость нарушена? Технически, нет, это не так. Он делает то, что должен делать - сохранять состояние мира на сервере и в результате коррупции загружать новый мир. Так "когда ты собираешься исправить настойчивость?" это не тот вопрос, который мы должны задавать. Реальный вопрос, который мы должны задать: почему сервер так часто падает? Выяснение сбоев сервера будет иметь большое значение для обеспечения стабильности постоянства.

    • By voralex
      Доброго времени суток!)
      Вот вам первый фикс на предложенную мною версию сервера DayZ Standalone 0.60.133913
      И так начнем :
      1.Берем файлы ниже.
      2.Все папки из архив-->>v0.60 закинуть в корень сервера с заменой.
      3.Открываем в корне сервера папку voralex-->>server.cfg
      4.В нем вставляем строки :
      5.В корне сервера-->>storage_-1\ChernarusPlus\000 в данной папке все удаляем!
      Теперь у вас сохраняется транспорт\персонаж\палатки и т.д.
      Жду <3
      Файлы сохранения : Яндекс.диск
      ЛИБО НИЖЕ(прикреплено).

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By DrTauren
      Собственно, интересует не сделал ли кто ещё сохранения персонажа для официальной оффлайн версии стресс теста? А то надоело заново спавниться вечно 
      Доброго времени суток камрады, опять столкнулся с вопросом на тему автосохранения! 
      Тема такая дошли до того что уже запустили 3 по счету сервер, первый второй все хорошо!
      На третьем сервере возникла потребность в сохранении миссии а конкретно речь идёт про Liberation. Очень геморный как оказалось .... нужно время от времени перезагружать сервер, но после перезагрузки все слетает на 0! нужно по новому захватывать территории. Кто сталкивался или может подскажет как решить вопрос ? 
    • By namemake
      как убрать сохранение виртуальных нелегальных ресурсов в машине, Аутистлайф ес что
  • Our picks

  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.