Moin,
wenn ich es getestet habe mit den PlayerTags mache ich das TuT fertig. Das mit dem Menü haben wir schon länger im gebrauch. Wir wahrscheinlich nächste Woche da ich erstmal unterwegs bin.
Gruß,
moeck
Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.
Moin,
wenn ich es getestet habe mit den PlayerTags mache ich das TuT fertig. Das mit dem Menü haben wir schon länger im gebrauch. Wir wahrscheinlich nächste Woche da ich erstmal unterwegs bin.
Gruß,
moeck
Hi,
ich wollte hier erstmal die Frage stellen ob jemand an einem Script interesse mit dem Playertags und Z-Menü über einen Ausweis gesteuert werden.
Also das Script bewirkt folgendes. Solange man den Ausweis eines Spielers nicht gesehen hat kann man ihm weder Geld, Items oder Schlüssel zustecken. Des Weiteren ist auch kein Playertag über dem Kopf sichtbar. Hat dem Gegenüber den Ausweis gezeigt, kann man die gewünschte Aktion durchführen und der Playertag wird sichtbar. Natürlich werden bei Gangmitgliedern immer die Namen angezeigt ohne dass man sich den Ausweis zeigen muss.
Sollte Interesse bestehen würde ich ein entsprechendes TUT demnächst erstellen.
Gruß,
moeck
Haben wir ebenfalls so gelöst.
Dann hätte theoretisch die andere Lösung auch schon funktionieren müssen. Leider ist Arma da manchmal ziemlich zickig . Aber falls es so schon funktioniert wäre es für alle Versionen eine brauchbare Lösung und Brizi Jaeger würde sich freuen
Moin Shinji ,
mal schauen ob das so klappt oder ob man das per life_fnc_MP machen muss. Habe es aktuell zwar schon eingebaut nur heute nacht um 2 Uhr habe ich keinen Tester mehr gefunden ^^. Eine andere Idee wäre es mit in den Eventhandler des Fahrzeugs einzubauen. Ich werde das vielleicht heute Abend testen, falls ich es schaffe. Andernfalls muss es bis Ende nächster Woche warten. Irgendwie habe ich bisher immer eine Lösung gefunden, hoffentlich auch diesmal.
Sobald das sauber arbeitet mache ich ein TUT fertig für die 3.1.4.8 und eventuell auch für die anderen Versionen ;-).
Gruß,
moeck
Moin,
ich habe mal etwas weitergeforscht und bin noch über einen anderen Befehl gestolpert. Leider konnte ich ihn bisher noch nicht testen, daher poste ich das mal hier vielleicht hat ja wer Lust und Zeit das auszuprobieren
/*
File: fn_vehicleDead.sqf
Description:
Tells the database that this vehicle has died and can't be recovered.
*/
private["_vehicle","_plate","_uid","_query","_sql","_dbInfo","_thread"];
_vehicle = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
hint str _vehicle;
if(isNull _vehicle) exitWith {}; //NULL
_dbInfo = _vehicle getVariable["dbInfo",[]];
if(count _dbInfo == 0) exitWith {};
_uid = _dbInfo select 0;
_plate = _dbInfo select 1;
_query = format["UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'",_uid,_plate];
waitUntil {!DB_Async_Active};
_thread = [_query,1] call DB_fnc_asyncCall;
sleep (1.3 * 60);
if(!isNil "_vehicle" && {!isNull _vehicle}) then {
_dudes = crew _vehicle;
{
if !(alive _x) then
{
moveOut _x;
uisleep 3;
};
} forEach _dudes;
sleep 10;
deleteVehicle _vehicle;
};
Alles anzeigen
Brizi Jaeger : kann ich gern machen, wenn es fehlerfrei und ohne Lobbyjump funktioniert
Im Prinzip einfach im life_server/Functions/Systems/fn_vehicleDead.sqf austauschen ;-).
Gruß,
moeck
Leider funktioniert der ganze Spass nur manchmal bzw. wenn man reconnectet sieht man die leichen. Falls wer noch eine Idee hat immer her damit
so ich habe jetzt mal noch ein wenig geschaut und ich denke das sleep braucht man nicht.
/*
File: fn_vehicleDead.sqf
Description:
Tells the database that this vehicle has died and can't be recovered.
*/
private["_vehicle","_plate","_uid","_query","_sql","_dbInfo","_thread"];
_vehicle = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
hint str _vehicle;
if(isNull _vehicle) exitWith {}; //NULL
_dbInfo = _vehicle getVariable["dbInfo",[]];
if(count _dbInfo == 0) exitWith {};
_uid = _dbInfo select 0;
_plate = _dbInfo select 1;
_query = format["UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'",_uid,_plate];
waitUntil {!DB_Async_Active};
_thread = [_query,1] call DB_fnc_asyncCall;
sleep (1.3 * 60);
if(!isNil "_vehicle" && {!isNull _vehicle}) then {
_dudes = crew _vehicle;
{
if !(alive _x) then
{
_newPos = (getPos _vehicle) findEmptyPosition [(random 5), 10];
_handle = [[_x,_newPos],"TON_fnc_relocateDead",true,false] spawn life_fnc_MP;
waitUntil { scriptDone _handle };
};
} forEach _dudes;
//sleep 10;
deleteVehicle _vehicle;
};
Alles anzeigen
wenn man es mit dem _handle löst. Wie gesagt ich kann es gerade nicht testen und mache hier trocken übungen. Aber mit dem Konstrukt macht er erst weiter wenn das andere Script durch ist
Mh... habe da noch was anderes gefunden in der fn_cleanup. Die Boote werden nicht gelöscht da sie nicht leer sind . Ich werde mal testen ob ich die dann nicht auch einfach rausschmeisse ;-). Dann verschwinden wahrscheinlich auch die Boot
muss ich mal schauen ob ich die finde nehm auch gern tipps entgegen
bei zerstörung bleiben die trotzdem liegen und man bekommt die leichen nicht raus ;-). Ich werde wahrscheinlich auch nch die pullout action bei den Medics ändern, dass sie auch tote aus den fahrzeugen ziehen können
Moin,
tolle Fehlerbeschreibung mit der man rein gar nix anfangen kann. Bitte hänge doch im ersten Schritt mal deine Logs an. Am besten die Client und Server rpts sowie das extDB Log. Vielleicht bekommt man dann einen besseren Eindruck von Deinem Problem.
Eventuell kannst Du Dir auch das mal zu Herzen nehmen.
Gruß,
moeck
Naja vielleicht kannst Du Dich an den Gang Hideouts orientieren, dort müsste so was in der Art drin sein, wenn ich mich nicht irre.
Moin,
du hast vergessen die extDB und den life_server zu laden.
bash: Zeile 1: 24506 Speicherzugriffsfehler (Speicherabzug geschrieben) ./arma3server -netlog -ip=149.202.219.32 -port=2302 -cfg=/home/arma3server/serverfiles/cfg/arma3-server.network.cfg -config=/home/arma3server/serverfiles/cfg/arma3-server.server.cfg -mod=@skylocal -servermod=@infiSTAR_A3
bash: @extDB2: Kommando nicht gefunden.
bash: @life_server: Kommando nicht gefunden.
Versuche es mal bitte mit dem folgendem Startbefehl
./arma3server -netlog -ip=149.202.219.32 -port=2302 -cfg=/home/arma3server/serverfiles/cfg/arma3-server.network.cfg -config=/home/arma3server/serverfiles/cfg/arma3-server.server.cfg -mod=@skylocal -servermod="@infiSTAR_A3\;@extDB2\;@life_server"
Gruß,
moeck
Moin,
dazu musst Du mehr oder weniger das komplett Housing umschreiben. Wahrscheinlich würde ich weitere Felder in die DB einfügen um die Werte entsprechende zu sichern. Ich denke das ist ein größeres Projekt
Gruß,
moeck
Achso wo wir gerade dabei sind. Momentan despawnen bei uns Boote nicht und ich habe leider noch nicht die Stelle gefunden warum das so ist.
Gut dann werde ich es mal mit dem sleep bzw. uisleep testen ;-). Ich melde mich dann heute abend dazu wieder.
Ok würde also bedeuten
ich baue hier noch einen sleep timer ein?
/*
File: fn_vehicleDead.sqf
Description:
Tells the database that this vehicle has died and can't be recovered.
*/
private["_vehicle","_plate","_uid","_query","_sql","_dbInfo","_thread"];
_vehicle = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
hint str _vehicle;
if(isNull _vehicle) exitWith {}; //NULL
_dbInfo = _vehicle getVariable["dbInfo",[]];
if(count _dbInfo == 0) exitWith {};
_uid = _dbInfo select 0;
_plate = _dbInfo select 1;
_query = format["UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'",_uid,_plate];
waitUntil {!DB_Async_Active};
_thread = [_query,1] call DB_fnc_asyncCall;
sleep (1.3 * 60);
if(!isNil "_vehicle" && {!isNull _vehicle}) then {
_dudes = crew _vehicle;
{
if !(alive _x) then
{
_newPos = (getPos _vehicle) findEmptyPosition [(random 5), 10];
[[_x,_newPos],"TON_fnc_relocateDead",true,false] spawn life_fnc_MP;
};
} forEach _dudes;
sleep 10;
deleteVehicle _vehicle;
};
Alles anzeigen
Mit dem eject kann ich gerade nix anfangen, da müsstest Du mir kurz auf die Sprünge helfen ;-).
Gruß,
moeck
Moin,
soll ich mal raten . Deine extDB Logs werden Fehler schmeissen. Könnte in etwa so aussehen
extDB3: https://bitbucket.org/torndeco/extdb3/wiki/Home
extDB3: Version: 1.026
extDB3: Windows Version
Message: All development for extDB3 is done on a Linux Dedicated Server
Message: If you would like to Donate to extDB3 Development
Message: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2SUEFTGABTAM2
Message: Also leave a message if there is any particular feature you would like to see added.
Message: Thanks for all the people that have donated.
Message: Torndeco: 18/05/15
extDB3: Found extdb3-conf.ini
extDB3: Detected 4 Cores, Setting up 4 Worker Threads
extDB3: ...
extDB3: ...
extDB3: ...
extDB3: ...
[09:42:53:592817 +01:00] [Thread 7236] extDB3: SQL: Initialized: Add Quotes around TEXT Datatypes mode: 2
[09:42:53:593146 +01:00] [Thread 7236] extDB3: SQL: Initialized: NULL = ""
[09:42:53:593205 +01:00] [Thread 7236] extDB3: Locked
[09:42:53:668282 +01:00] [Thread 6416] extDB3: SQL: Error MariaDBQueryException: The user specified as a definer ('arma3'@'localhost') does not exist
[09:42:53:668290 +01:00] [Thread 2480] extDB3: SQL: Error MariaDBQueryException: The user specified as a definer ('arma3'@'localhost') does not exist
[09:42:53:668356 +01:00] [Thread 6416] extDB3: SQL: Error MariaDBQueryException: Input: CALL deleteDeadVehicles
[09:42:53:668373 +01:00] [Thread 2480] extDB3: SQL: Error MariaDBQueryException: Input: CALL resetLifeVehicles
[09:42:53:668542 +01:00] [Thread 6212] extDB3: SQL: Error MariaDBQueryException: The user specified as a definer ('arma3'@'localhost') does not exist
[09:42:53:668549 +01:00] [Thread 5752] extDB3: SQL: Error MariaDBQueryException: The user specified as a definer ('arma3'@'localhost') does not exist
[09:42:53:668567 +01:00] [Thread 6212] extDB3: SQL: Error MariaDBQueryException: Input: CALL deleteOldGangs
[09:42:53:668593 +01:00] [Thread 5752] extDB3: SQL: Error MariaDBQueryException: Input: CALL deleteOldHouses
Alles anzeigen
Falls das der Fall ist bitte das folgende tun
1. ersetze im Code unten `USER` durch deinen DB User unter dem die DB läuft
2. führe den kompletten Inhalt in NaviCat, PHPmyadmin oder einem anderem DB Programm aus
DELIMITER $$
--
-- Procedures
-- Edit USER to match a user in MySQL
-- For external databases: Edit localhost to match USERserver IP
--
CREATE DEFINER=`USER`@`localhost` PROCEDURE `resetLifeVehicles`()
BEGIN
UPDATE `vehicles` SET `active`= 0;
END$$
CREATE DEFINER=`USER`@`localhost` PROCEDURE `deleteDeadVehicles`()
BEGIN
DELETE FROM `vehicles` WHERE `alive` = 0;
END$$
CREATE DEFINER=`USER`@`localhost` PROCEDURE `deleteOldHouses`()
BEGIN
DELETE FROM `houses` WHERE `owned` = 0;
END$$
CREATE DEFINER=`USER`@`localhost` PROCEDURE `deleteOldGangs`()
BEGIN
DELETE FROM `gangs` WHERE `active` = 0;
END$$
CREATE DEFINER=`USER`@`localhost` PROCEDURE `deleteOldContainers`()
BEGIN
DELETE FROM `containers` WHERE `owned` = 0;
END$$
CREATE DEFINER=`USER`@`localhost` PROCEDURE `deleteOldWanted`()
BEGIN
DELETE FROM `wanted` WHERE `active` = 0;
END$$
DELIMITER ;
Alles anzeigen
Danach sollte es laufen, wenn die Fehler mit den Prozeduren auftreten.
Gruß,
moeck
Moin,
ich habe da mal eine Frage. Ich habe die Herausforderung, dass zum Beispiel alle Passagiere bei einem Heliabsturz aktuell nicht wiederbelebt werden können, da die Leichen mit dem Fahrzeug despawnen. Ich habe gestern ein wenig rum gespielt und versucht beim löschen des Fahrzeugs die Insassen herausfallen zu lassen leider nur mit bedingtem Erfolg. Es ist jetzt so, dass die Leichen zwar umpositioniert werden aber man sie erst nach einem Lobbyjump sieht. Hat jemand eine Idee wie man die Leichen so positioniert, dass alle anderen Spieler sie sehen?
Ich habe folgendes in die Funktion deadVehicle eingetragen.
_dudes = crew _vehicle;
{
if !(alive _x) then
{
_newPos = (getPos _vehicle) findEmptyPosition [(random 5), 10];
[[_x,_newPos],"TON_fnc_relocateDead",true,false] spawn life_fnc_MP;
};
} forEach _dudes;
in der relocateDead.sqf befindet sich folgender Code
private ["_dude","_position"];
_dude = _this select 0;
_position = _this select 1;
_dude setPos _position;
Grundsätzlich scheint das ja auch zu funktionieren aber die Medics sehen die Leichen halt erst nach einem Lobbyjump. Hat wer eine Idee?
Gruß,
moeck