in der functions.hpp schon aber in der CfgRemoteExec nicht? was muss dort rein?
Beiträge von Jon1
-
-
initPlayerLocal.sqf
player addEventHandler["Killed", {_this call life_fnc_Killed}];
fn_Killed
[] remoteExec ["life_fnc_kill", _this select 1];
Und es es funktioniert nicht
-
Hi,
suche folgendes : wenn ich jemanden kill soll ein script execVM't werden, über die eventhandler habe ich nur hinbekommen das wenn jemand ein anderen kill das script global ausgeführt wird :
Code( addMissionEventHandler ["EntityKilled", { params ["_killed", "_killer", "_killerID"]; if ((isPlayer _killer) && (alive _killer)) then {execVM "shop\kill.sqf"}; }];
bräuchte das ganze aber in der localen version so das es nur beim 'killer' ausgeführt wird und nicht bei jedem!
Vielen dank schonmal! MfG Jon!
-
Erstelle eine Liste mit einem Eintrag für jedes Fahrzeuges.
Nun prüfst du in einer Schleife alle X Sekunden alle Einträge.
Wenn das Fahrzeug leer ist, setzt du einen Counter um X nach oben.
Ist das Fahrzeug besetzt, wird der Counter auf 0 gesetzt.
Hat der Counter die gewünschten Sekunden erreicht, entfernst du das Fahrzeug.
Das ist eine Schleife. Um so genauer (kürzeres sleep), um so mehr Leistung benötigt das Script.
Mit wievielen Fahrzeugen rechnest du eigentlich so ungefähr?
Achja, Alice Kingsleigh -> http://if-schleife.de/
also so max. 20 spieler, jeder so 2fahrzeuge pro minute, da jetzt aber jedes direkt gelöscht wird passt das!
-
hier mal ein Beispiel wie ich mir das vorstelle, zwar nicht getestet, aber so sollte es gehen.
Code
Alles anzeigen//call script from the player who owns the vehicle params ["_vehicle", objNull, [objNull], "_dir", 360, [0], "_pos", [0,0,0], [[]] ]; _vehicle setVariable ["BIS_enableRandomization", false]; _vehicle setPos _pos; _vehicle setDir _dir; clearWeaponCargoGlobal _vehicle; clearMagazineCargoGlobal _vehicle; clearItemCargoGlobal _vehicle; _vehicle setVariable ["last_time_used", time, true]; player moveInDriver _vehicle; [_vehicle, { params ["_vehicle", objNull, [objNull]]; _vehicle addEventHandler ["GetIn", { params ["_vehicle", "_role", "_unit", "_turret"]; _vehicle setVariable ["last_time_used", time]; }]; }] remoteExec ["BIS_fnc_call", 2]; [_vehicle, { params ["_vehicle", objNull, [objNull]]; _vehicle addEventHandler ["GetOut", { params ["_vehicle", "_role", "_unit", "_turret"]; _vehicle setVariable ["last_time_used", time]; }]; }] remoteExec ["BIS_fnc_call", 2]; [_vehicle, { params ["_vehicle", objNull, [objNull]]; Spawned_Vehicles pushBack _vehicle; }] remoteExec ["BIS_fnc_call", 2]; //this one needs to be started on mission begin on the server side #define TIMEOUT 60 #define MAX_TIME_UNUSED 60 * 120 //the vehicle must be 2h empty before removal Spawned_Vehicles = []; while {true} do { private _vehicles = Spawned_Vehicles; //copying a global array to local is much faster than using the global array { if(!isNull _x) then { if(({alive _x } count (crew _x)) < 1 && {(_vehicle getVariable["last_time_used", time] + MAX_TIME_UNUSED) < time}) then { deleteVehicle _x; Spawned_Vehicles deleteAt _forEachIndex; }; } else { Spawned_Vehicles deleteAt _forEachIndex; //cleanup array from wrecks }; } forEach Spawned_Vehicles; Spawned_Vehicles = _vehicles; //copy back possible changes to the global array sleep TIMEOUT; };
Edit: Es ist Schwachsinn 3 remoteExec calls zu machen. Pack alles in eines, das reduziert den Networktraffic noch mal.
Wenn du den Networktraffic noch mehr reduzieren willst, BEFilter und RemoteExec Filter verwendest, solltest was im remoteExec Teil steht in eine eigene Funktion packen.
Edit Edit: Mir ist grade eingefallen, dass das hier ja ein Life-Server ist. Dann solltest du noch im selben Schritt, wo das Fahrzeug vernichtet wird, es beim Eigentümer in der Datenbank zurücksetzen. Sonst kann er es nicht wieder ausparken und es geht verloren.
Jo hat funktioniert! vielen Dank!
-
Hi,
habe ein Server auf dem man sich Fahrzeuge ausparken kann,... auf jeden fall sollen die fahrzeuge auch wieder automatisch despawnen, aktuell benutze ich dazu folgendes script : [infobox]_veh = "B_T_LSV_01_unarmed_olive_F" createVehicle position player; [/infobox]
[infobox]_veh setVariable ["BIS_enableRandomization", false]; [/infobox]
[infobox]_veh setDir _direction; [/infobox]
[infobox]_veh setPos _position; [/infobox]
[infobox]clearWeaponCargoGlobal _veh; [/infobox]
[infobox]clearMagazineCargoGlobal _veh; [/infobox]
[infobox]clearItemCargoGlobal _veh; [/infobox]
[infobox]player moveInDriver _veh; [/infobox]
[infobox]execVM "close.sqf"; [/infobox]
[infobox]while {true} do { [/infobox]
[infobox][_veh] spawn { [/infobox]
[infobox] private _vehicle = param [0, objNull, [objNull]]; [/infobox]
[infobox]waitUntil { [/infobox]
[infobox]if (count ((crew vehicle _vehicle) select {alive _x}) isEqualTo 0) then { [/infobox]
[infobox]_time = diag_tickTime + 40; [/infobox]
[infobox]waitUntil { [/infobox]
[infobox]diag_tickTime > _time count (crew vehicle _vehicle select {alive _x}) > 0 [/infobox]
[infobox]}; [/infobox]
[infobox]if (diag_tickTime > _time && {count (crew vehicle _vehicle select {alive _x}) isEqualTo 0}) exitWith { [/infobox]
[infobox]deleteVehicle _vehicle; [/infobox]
[infobox]}; [/infobox]
[infobox]}; [/infobox]
[infobox]!isNull _vehicle [/infobox]
[infobox]}; [/infobox]
[infobox]}; [/infobox]
[infobox]sleep 30; [/infobox]
[infobox]};[/infobox] Es spawnt einen Fahrzeug, teleportiert die Person rein, löscht alles aus dem i inventar vom fahrzeug. wenn das Fahrzeug dann 40sekunden leer steht (keine person drinne sitzt) wird es despawnt, das script verursacht aber lags wenn man z.B. 7 Fahrzeuge draußen hat dar 7 While schleifen laufen, vom sleep kann ich net weiter hoch gehen weil die Fahrzeuge sonst zu lange stehen bleiben. Deshalb suche ich ein neues, unzwar soll einfach das fahrzeug dann gelöscht werden wenn man ein neues ausparkt, so das jeder spieler nur 1 Fahrzeug gleichzeitig draußen haben kann...
Vielen dank für eure Hilfe!
-
Hallo,
Habe es hinbekommen... das problem war das ich die beserver.cfgin denn battleye ordner gemacht habe.. habe sie dann in battleye\launcherstellt und es funktioniert!
Trotzdem vielen dank!
-
Hi,
habe mir vor kurzem ein Gameserver für arma 3 gemietet... möchte darauf das Admin Tool Rcon installieren. Habe schon viel im internet dazu gefunden aber nichts das mir in meinem fall weiterhilft!. In FileZilla habe ich keine BEserver.cfg... habe schon alles abgesucht, es gibt keine.Im ordner battleye ist nur die Datei beserver.sound der ordner launch in dem sich die gleiche datei (beserver.so) mit dem gleichen inhalt befindet. in ihr stehen nur unlesbare zeichencodes. wenn ich im battleye Server einfach die BEserver.cfgmit IP,Port,Password erstelle passiert garnichts... auch nach serverneustaten nicht. in der server.cfg ist BattleEye = 1. Habe auch kein BEC installiert da ich nirgendwo gelesen habe das man es für Rcon brauch. Habe davor über einen anderen Anbieter denn Arma 3 Server gehostet und dort war es auch so?.
Danke für die Hilfe!
MfG Jon