Вопрос в следующем:
есть скрипт логирования передачи денег в сейф, но в нём не отображается id сейфа в который кладут или из которого берут валюту (валюта sc 3.0)
вот код отвечающий за изъятие денег
BankDialogWithdrawAmount = { private ["_amount","_bank","_wealth"]; _amount = parseNumber (_this select 0); _bank = ZSC_CurrentStorage getVariable ["bankMoney", 0]; _wealth = player getVariable["cashMoney",0]; _vehicleType = typeOf ZSC_CurrentStorage; _displayName = getText (configFile >> "CfgVehicles" >> _vehicleType >> "displayName"); if (!isNull ZSC_CurrentStorage) then { if (_amount < 1 or _amount > _bank) exitWith { cutText [format["Вы не можете снять больше, чем %1.",_displayName], "PLAIN DOWN"]; }; player setVariable["cashMoney",(_wealth + _amount),true]; ZSC_CurrentStorage setVariable["bankMoney",(_bank - _amount),true]; // логи передачи PVDZE_atp = format["[Лог передачи денег]:%1 забрал %2 %3 в %4(Тип:%5 ID:%9) Координаты объекта:[%6,%7] GPS:(%8)", name player, [_amount] call BIS_fnc_numberText, CurrencyName, _displayName, _vehicleType, getDir ZSC_CurrentStorage, getPosATL ZSC_CurrentStorage, mapGridPosition (getPosATL ZSC_CurrentStorage)]; publicVariableServer 'PVDZE_atp'; PVDZE_plr_Save = [player,(magazines player),true,true] ; publicVariableServer "PVDZE_plr_Save"; PVDZE_veh_Update = [ZSC_CurrentStorage,"gear"]; publicVariableServer "PVDZE_veh_Update"; cutText [format["Вы взяли %1 %2 из %3", [_amount] call BIS_fnc_numberText, CurrencyName,_displayName], "PLAIN DOWN"]; }else{ cutText ["Не удается получить доступ к храненилищу денег. Пожалуйста, попробуйте еще раз.", "PLAIN DOWN"]; }; };пытался добавить _objectID
private ["_objectID","_amount","_bank","_wealth"]; PVDZE_atp = format["[Лог передачи денег]:%1 забрал %2 %3 в %4(Тип:%5 ID:%9) Координаты объекта:[%6,%7] GPS:(%8)", name player, [_amount] call BIS_fnc_numberText, CurrencyName, _displayName, _vehicleType, getDir ZSC_CurrentStorage, getPosATL ZSC_CurrentStorage, mapGridPosition (getPosATL ZSC_CurrentStorage), _objectID];но выдаёт ID:any в rpt
что не так?
И сразу второй вопрос
Что значит _obj = _this select 1; в коде что ниже.
Как я понимаю _obj = "это выбор 1" из private, т.е. выбрать _player
а при условии _obj нулевое, тогда _player выбрать значение 0 из private, т.е. выбрать _obj, что означает выбрать этот же _player (в чём логика?)
и соответственно у меня возник вопрос по данному выражению
_objectID = _obj getVariable['ObjectID', '0'];
я не могу понять его значение.
server_logUnlockLockEvent = { private['_obj','_player','_objectID','_objectUID','_pos','_worldspace','_log','_codeEntered','_doorCode','_status','_statusText']; _obj = _this select 1; if (!isNull _obj) then { _player = _this select 0; _objectID = _obj getVariable['ObjectID', '0']; _objectUID = _obj getVariable['ObjectUID', '0']; _log = ''; if (count _this > 3) then { _codeEntered = _this select 3; if (_codeEntered == 'NOTHING ENTERED') then {_player setDamage 5;_codeEntered = '-HACKER KILLED-';}; if (_codeEntered == '') then {_codeEntered = '000';}; _doorCode = _this select 4; if (_codeEntered==_doorCode) then { _log = format['ДВЕРЬ ОТКРЫТА: ID:%1 UID:%2 ИГРОК: %3(%4) @%5 Код введен: %6',_objectID,_objectUID,(name _player),(getPlayerUID _player),(mapGridPosition _obj),_codeEntered]; } else { _log = format['ПОПЫТКА ОТКРЫТЬ ДВЕРЬ: ID:%1 UID:%2 ИГРОК: %3(%4) @%5 Код введен: %6 | Правильный код: %7',_objectID,_objectUID,(name _player),(getPlayerUID _player),(mapGridPosition _obj),_codeEntered,_doorCode]; }; } else { _status = _this select 2; _statusText = 'ОТКРЫТ'; if (_status) then { [_obj, 'gear'] call server_updateObject; _statusText = 'ЗАКРЫТ'; }; _log = format['СЕЙФ %6: ID:%1 UID:%2 ИГРОК: %3(%4) @%5', _objectID, _objectUID, (name _player), (getPlayerUID _player), (mapGridPosition _obj), _statusText]; }; diag_log ('[АнтиХак] - [Открытие/Закрытие]: '+_log); 'logUnlockLock' callExtension (format['%1%2',_log,DAYZ_INSTANCE_LOGGING]); }; };
Спасибо за хорошие ответы, если таковы будут.