Spróbowałem więc w taki sposób
Kod: Zaznacz cały
if (!isServer) exitWith {};
diag_log "destroyer test";
// zmienne
_pozycja = [];
_buildings = [];
_safedist = 50;
_treeshold = 0.005;
_obszar = 25;
_core = {
waitUntil {count (nearestObjects [_pozycja, ["Man"], _safedist]) < 1};
_buildings = _pozycja nearObjects ["house", _obszar];
{_x setdamage 1} foreach _buildings;
sleep _treeshold;
};
// Elektro - Kamieniczki
_pozycja = [10042.5,1914.28,0];
_obszar = 25;
call _core;
// Elektro - Metalowa Wiata
_pozycja = [10011.2,1841.01,0];
_obszar = 25;
call _core;
// Elektro - Rusztowania
_pozycja = [10189.9,1933.96,0];
_obszar = 25;
call _core;
// i tak dalej...
Nawet byłoby i fajnie gdyby nie to, że skrypt odpala każdy klient. Budynki się 'odbudowują' i niszczą jeszcze raz.
Skrypt na potrzeby serwera dayz.
uruchamiam go przez init.sqf w mission.pbo
Kod: Zaznacz cały
if (isServer) then {
mbnqdestroyers=[] execVM "scripts\mbnqdestroyer.sqf";
};
Chciałbym żeby skrypt uruchamiał się tylko raz, np w chwili podłączenia się pierwszego klienta po restarcie.
Myślałem nad użyciem prostej zmiennej np. wykonany = 1 i publicVariable na końcu, a na początku if wykonany == 1 exitWith {}, ale czy to by zadziałało ? przypuszczam, że jest jakiś prostszy sposób na wykonanie skryptu tylko raz ?
edit:
Problem rozwiązany. Wystarczyło
Kod: Zaznacz cały
[]execVM "\z\addons\dayz_server\system\mbnqdestroyer.sqf";
dodać w
W 1.7.6.1 działało, ale nigdy nie wykorzystałem bo obawiałem się, że gracze będą rozkładać w ruinach namioty , a skrypt by je niszczył. Wprawdzie w 1.7.7.1 już nie da się rozkładać namiotów w budynkach, więc powinien działać, ale leń we mnie wstąpił
