Нужна помощь?
Создайте тему в соответствующем разделе
Не нужно писать всё в чат!Загляните на торговую площадку
Там вы можете купить
всё что касается игровых серверовНе хотите бан?
Пожалуйста, ознакомьтесь с нашими правилами
Не нарушайте порядок!Продаёте или покупаете?
Пользуйтесь услугами гаранта
Мы сделаем вашу сделку безопасной
-
Похожие публикации
-
Автор: BorizzK
Вот предположим мы создали где-то экземпляр класса;
ref Class newClass = new Class();
1 Он удалится сам? При каких условиях?
2 Как его удалить принудительно если он больше не нужен?
-
Автор: BorizzK
Вобщем в процессе работы сервера происходят рандомные динамические события и вместе с ними на карте спавнятся некоторые обьекты
Если время их жизни истекает и настает время нового события и в радиусе видимости нет игроков обьекты удаляются с карты
Но
Если выключение корректно (запланированный рестарт например), вызов функции удаления происходит из деструктора класса
Все отрабатывает
Ошибок нет
Но после рестарта некоторые обьекты на месте
Тогда я замутил функцию-задержку с проверкой
float TimeWait(Object object, float timeW) { float cTick = GetGame().GetTickTime() + timeW; while(object || GetGame().GetTickTime() < cTick ) { if ( GetGame().GetTickTime() >= cTick ) break; } return GetGame().GetTickTime(); } и вызываю ее
if (object) tW = TimeWait(object, timeW); задержка реально происходит - делал ее 60 секунда да же
НО! обьекты эти после рестарта опять на месте
Пока придумал костыль - сохраняю в профиль сервера при каждом спавне координаты и тайпнеймы заспавленных обьектов и при запуске в конструкторе проверяю это место и грохаю обьекты по тайпнеймам - места безлюдные и открытые, лагерей и тп там быть не может - потому в принципе ничего лишнего туда попасть не может
к тому же это полезно в случае крашей
и все же
почему обьекты не удаляются при завершении работы сервера?
-
Автор: FiQ
Здравствуйте.
Создал необходимые конфиги для источника звука.
Суть исполнения такова:
При вызове функции: Создается источник звука ( изначально определенный ), который крепится к игроку и соответственно воспроизводится звук.
При повторном вызове функции ( в идеале с мощью другой функции ) : удаляется ранее прикрепленный источник звука к игроку, соответственно прекращается воспроизведение звука .
Мои неудачные попытки реализации:
test_sound1 = { private["_sound1","_sound1Flag"]; _sound1Flag = false; if(_sound1Flag) then{ deleteVehicle _sound1; _sound1Flag = false; }else{ _sound1 = createSoundSource ["2000_baksov_mp3", [0,0,0], [], 0]; _sound1 attachTo [player,[0,0,1]]; _sound1Flag = true; }; }; test_sound1 = { private["_sound1","_sound1Flag"]; if(_sound1Flag) then{ _sound1 = createSoundSource ["2000_baksov_mp3", [0,0,0], [], 0]; _sound1 attachTo [player,[0,0,1]]; _sound1Flag = false; }else{ deleteVehicle _sound1; _sound1Flag = true; }; }; test_sound1 = { private["_sound1",]; if(sound1Flag) then{ _sound1 = createSoundSource ["2000_baksov_mp3", [0,0,0], [], 0]; _sound1 attachTo [player,[0,0,1]]; sound1Flag = false; }else{ deleteVehicle _sound1; sound1Flag = true; }; }; В последнем варианте создана глобальная переменная, значение которой указано по дефолту "Истина" в initPlayerLocal.sqf
Источник звука при первом вызове прикрепляется к игроку, т.е. функция срабатывает правильно. При втором вызове - звук не атачится, но и не удаляется первый источник звука. При третьем вызове так же прикрепляется еще один источник звука и получается каша из двух звуков.
Задумка:
Что-то типа плеера, у которого есть несколько кнопок, каждая из которых вызывает функцию с воспроизведением музыки ( аттачит источник звука ) и одна доп. кнопка которая бы удаляля все источники звука приаттаченные на игроке с помощью все тех же функций упомянутых ранее. Ну или же при повторном вызове одной и той же функции при первом вызове: аттачился звук, при повторном вызове функции: удалялся ранее приаттаченный источник звука.
Наведите на правильный путь в исполнении данной задумки.
-
Автор: Sovest2
Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
Подготовка
Для начала нам понадобится подключить кастомный player_death.sqf в compiles.sqf
Делается это следующим образом:
В compiles.sqf заменить строку
player_death = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_death.sqf"; на
player_death = compile preprocessFileLineNumbers "*ВАШ ПУТЬ*\player_death.sqf";
Если у вас стоит инфистар,то необходимо заменить строку в AH.sqf
_death = compile preprocessFileLineNumbers '\z\addons\dayz_code\compile\player_death.sqf'; на
_death = compile preprocessFileLineNumbers '*ВАШ ПУТЬ*\player_death.sqf';
В вашем кастомном player_death.sqf необходимо заменить
_array = _this; if (count _array > 0) then { _source = _array select 0; _method = _array select 1; if ((!isNull _source) && (_source != player)) then { _canHitFree = player getVariable ["freeTarget",false]; _isBandit = (player getVariable["humanity",0]) <= -2000; _punishment = _canHitFree || _isBandit; //if u are bandit || start first - player will not recieve humanity drop _humanityHit = 0; if (!_punishment) then { //i'm "not guilty" - kill me && be punished _myKills = ((player getVariable ["humanKills",0]) / 30) * 1000; _humanityHit = -(2000 - _myKills); _kills = _source getVariable ["humanKills",0]; _source setVariable ["humanKills",(_kills + 1),true]; PVDZE_send = [_source,"Humanity",[_source,_humanityHit,300]]; publicVariableServer "PVDZE_send"; } else { //i'm "guilty" - kill me as bandit _killsV = _source getVariable ["banditKills",0]; _source setVariable ["banditKills",(_killsV + 1),true]; }; }; _body setVariable ["deathType",_method,true]; }; на
_array = _this; if (count _array > 0) then { _source = _array select 0; _method = _array select 1; if ((!isNull _source) && (_source != player)) then { [player,_source]execVM "*ВАШ ПУТЬ*\humanityChange.sqf"; [player,_source]execVM "*ВАШ ПУТЬ*\kill_msg_send.sqf"; }; _body setVariable ["deathType",_method,true]; }; Отображение ника убийцы(Kill message)
Создаем файл и закидываем в миссию файл kill_msg_send.sqf
С содержанием
private ["_victim","_killer","_vehicle","_weapon","_pic"]; _victim = _this select 0; _killer = _this select 1; _killerName = name _killer; _victimName = name _victim; _vehicle = typeOf (vehicle _killer); _weapon = currentWeapon _killer; if ((getText (configFile >> "CfgVehicles" >> _vehicle >> "vehicleClass")) in ["CarW","Car","CarD","Armored","Ship","Support","Air","ArmouredW","ArmouredD","SupportWoodland_ACR","AllVehicles"]) then { _pic = gettext(configFile >> 'CfgVehicles' >> _vehicle >> 'picture'); } else { _pic = gettext(configFile >> 'cfgWeapons' >> _weapon >> 'picture'); }; _kill_txt = format ["<t align='left' size='0.5'>%1 </t>",_victimName]; _kill_txt = _kill_txt + format ["<img size='1.0' align='left' image='%1'/>",_pic]; _kill_txt = _kill_txt + format ["<t align='left' size='0.5'> %1 </t>",_killerName]; PVDZE_send = [player,"kill_message",[_kill_txt]]; publicVariableServer "PVDZE_send";
Далее,нам необходимо отредактировать файл server_sendToClient.sqf ,которой находится в директории сервера
И добавить после
case "tagFriendly": { PVDZE_plr_FriendRQ = _arraytosend; _owner publicVariableClient "PVDZE_plr_FriendRQ"; }; Это
case "kill_message": { custom_kill_message_show = _arraytosend; publicVariable "custom_kill_message_show"; }; Теперь необходимо создать файл kill_msg_show.sqf в папке с вашей миссией
с содержимым
private ["_pos","_i"]; arr_kill = ["","","","","",""]; fnc_kill_message = { private ["_finaltxt"]; _finaltxt = _this select 0; for[{_i = 0},{(_i<6)},{_i = _i +1}] do { if((arr_kill select _i) == "") then { arr_kill set [_i,_finaltxt]; [_i] execVM "*ВАШ ПУТЬ*\kill_msg_delete.sqf"; _i = count(arr_kill); }; }; }; "custom_kill_message_show" addPublicVariableEventHandler {(_this select 1) call fnc_kill_message;}; while {true} do { _pos = 0.01; _layout = 1001; { [_x,[safezoneX + 0.01 * safezoneW,2.0],[safezoneY + _pos * safezoneH,0.3],5,0.5,0,_layout] spawn BIS_fnc_dynamicText; _pos = _pos + 0.021; _layout = _layout + 1; } ForEach arr_kill; sleep 1; }; Создать файл kill_msg_delete.sqf с
private["_pos"]; _pos = _this select 0; sleep 10; arr_kill set [_pos,""];
И вставить в init.sqf после строки
_playerMonitor = [] execVM "custom\player_monitor.sqf"; строку
execVM "*ВАШ ПУТЬ*\kill_msg_show.sqf"; Осталось только добавить
custom_kill_message_show В первую строку файла publicvariable.txt
Все,отображение ника убийцы готово!
Изменение человечности за убийство Бандита\Героя
создать файл humanityChange.sqf с содержимым
private ["_victim","_killer","_myKills","_humanity","_killerHumanity","_isKillerBandit","_isBandit","_humanityHit","_kills","_killerGunner"]; _victim = _this select 0; _killer = _this select 1; _humanity = _victim getVariable["humanity",0]; _killerHumanity = _killer getVariable["humanity",0]; _isKillerBandit = (_killerHumanity) < 0 ; _isBandit = (_humanity) < 0; _humanityHit = 0; _myKills = 0; _killerVehicle = vehicle _killer; if(((!_isBandit) && _isKillerBandit) || (_isBandit && (!_isKillerBandit))) then { _myKills = round((_humanity) / 10); }; if(!_isBandit) then { _myKills = (_myKills + 200); _kills = _killer getVariable ["humanKills",0]; _killer setVariable ["humanKills",(_kills + 1),true]; } else { _myKills = (_myKills - 200); _kills = _killer getVariable ["banditKills",0]; _killer setVariable ["banditKills",(_kills + 1),true]; }; _killerGunner = gunner _killerVehicle; if(!isNil"_sourceGunner") then { _killer = _killerGunner; }; _humanityHit = _myKills * (-1); PVDZE_send = [_killer,"Humanity",[_killer,_humanityHit,300]]; publicVariableServer "PVDZE_send"; Изменение Человечности готово!
Плюсы Всего этого:
Отображение ника убийцы теперь работает всегда и корректно.(Если убивают с техники или с одного выстрела).
-
Автор: krovn
Доброго времени суток,
Допиливая сборку столкнулся с проблемой что постройки из Alchemical crafting не получают урона и их невозможно уничтожить.
Проблему частично решил - добавлением HandleDamage, но вот до БД это не доходит и даже уничтоженные объекты после рестарта появляются снова...
есть идеи?
-
-
Наш выбор
-
Создаем свой серверный мод. [DayZ 1.4 to Discontined]
123new опубликовал тему в Версия 1.0 и выше,
-
Увеличение карты х2
vitacite опубликовал тему в Картостроение,
Мне нужно убрать всех торговцев с намальска. (На карте отметки и модели торговцев) И как добавлять торговцев и разделы вещей к ним?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах