Also sehen wir, es liegt nicht am Script, sondern am Server selbst.
Also dann installier mal Arma neu und sende die Ausgabe von ldd arma3server.
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.
Also sehen wir, es liegt nicht am Script, sondern am Server selbst.
Also dann installier mal Arma neu und sende die Ausgabe von ldd arma3server.
kannst du uns helfen das über script laufen zu lassen die markierer
Im Prinzip hast du es selber schon fast geschrieben.
private _illegalMarkers = [
// ["markerName", "markerText", [X,Y]]
["marker1", "Erster Marker", [4,2]],
["markerN", "Ein Marker", [08,15]],
["jokeMarker", "Witzmarker", [101,010]]
];
if !(playerSide isEqualTo west) then {
private "_marker";
{
_marker = createMarkerLocal [_x#0, _x#2];
_marker setMarkerText _x#1
} forEach _illegalMarkers;
}
Alles anzeigen
Das lässt sich natürlich um Farbe und Icon erweitern.
Genauso würde ich die Marker lieber in eine Config schreiben.
Der Fehler ist wieder witzig.
Der zeigt auch sehr gut, dass es unbedingt notwendig ist, immer den vollen Code zu senden.
Du machst dies hier:
Ich erkläre dir mal den Ablauf des Scripts:
Du prüfst _vehicle.
Du schaust nach den Farben für die Lichter.
Du schaust nach den Positionen für die Lichter.
Du erstellst die Lichter nacheinander.
Du startest die 1. Schleife als Scheduled Code.
Du startest die 2. Schleife als Scheduled Code.
Du löscht die Lichter.
Die 1. Schleife fängt an zu arbeiten und setzt die Farben für die Lichter.
Die 2. Schleife fängt an zu arbeiten und setzt die Farben für die Lichter.
(so mehr oder weniger)
Ich denke dir fällt auf was Sache ist.
Wenn du die Lichter löschen willst, dann muss du das natürlich machen, nachdem die Schleife fertig ist.
Also die Lichter auch nach der Schleife entfernen.
Richtig. Entferne sie im Editor und lasse sie per Script setzen.
Somit kannst du bestimmen wer sie sieht und wer nicht.
Ist dir wirklich nicht bekannt, wie Scripte innerhalb der Konsole gestartet werden?
Wie hast du dann dein bisheriges Startscript gestartet?
Kurz um, mit <[PATH]|[.]>/<SCRIPT> [PARAMS] werden Scripte ausgeführt.
z.B. so wie du es anscheinend schon gemacht hast: ./start-server.sh
Meine Frage ist, ob der Server überhaupt gestartet werden kann.
Also teste es doch mal mit: ./arma3server bzw. ./arma3server <DEINE WUNSCH PARAMETER>
vServer unter Ubuntu und Desktop Umgebung?
Tatsache ich wirklich definiert.
Sage ja, ohne Codeblocks ist es schwer zu lesen.
Bitte nutze doch den Codeblock. Ansonsten kann man kaum etwas erkennen und es macht keinen Spaß da durchzuschauen.
Jetzt bekomme ich zwar keine Fehlermeldungen mehr (Variablen), aber das Licht erscheint dennoch nichtmehr. Es passiert einfach garnichts, keine Fehlerausgabe, kein garnichts.
Henne hast du eine Idee woran es liegen könnte?
Mich wundert es sehr, dass du angeblich keine Fehlermeldung erhälst.
Schauen wir uns doch mal an, was du im Code machst:
_right setLightBrightness 0;
Ist doch klar, dass danach das Licht mehr zu erkennen ist.
Ahh, moment.
Meine Variablen sind ja fast alle so definiert: private _extra2 = "#lightpoint" createVehicleLocal (getPos _vehicle);
Muss ich da dann nicht noch den Parameter definieren?
Keine Ahnung was du mir damit sagen willst.
Ist grundsätzlich aber kein Fehler/Problem.
Nachdem du das Licht mit: _right setLightBrightness _brightness;
Vermutlich wieder sichtbar machen willst, ich aber nirgends einen Parameter _brightness erkennen kann, würde ich mal sagen. Ja du musst noch einen Parameter definieren.
Du musst übrigens nicht bei beiden spawns, alle Parameter definieren. Es reichen die, die du innerhalb deiner Schleife benötigst.
Eine andere Möglichkeit wäre, die Marker nur dann zu setzen, wenn der Spieler nicht bei der Polizei ist.
Also den Spieß einfach umdrehen. Sollte besser klappen.
Mal versucht einfach direkt in der Konsole den Server zu starten?
Ich starte die Server ebenfalls mit dem Parameter: ./$SERVERFILE $PARAM
Das funktioniert ohne Probleme.
Was für Rechte sind denn arma3server gesetzt?
Wem gehört arma3server (user und gruppe)?
Mit welchem Nutzer bist du angemeldet?
Mal versucht einfach direkt in der Konsole den Server zu starten?
Die Doku hast du aber schon gelesen?
Syntax: params [element1, element2,...elementN] -> params ["_var1", "_var2", "_varN"]
Bei spawn ist es möglich Parameter anzugeben.
z.B. [_var1, _var2, _varN] spawn {}
Bei der 1. Schleife ist es schonmal fast richtig.
Bei der 2. Schleife musst es halt auch angeben.
Der richtige Syntax von params ist: params ["_varname"]
Deshalb habe ich auch die Doku geschickt, damit du dort nachlesen kannst.
Außerdem solltest du deine Lichter (_left, _right und _extra1, _extra2) nicht vergessen.
Mit dem Syntax-Highlightning ist gut zu erkennen, dass du bei servermods="@extDB3;@life_server ein " am Ende vergessen hast.
Außerdem lädst du jetzt extDB2 und extDB3. Sowieso den life_server zweimal.
Es sind nunmal private Variablen.
Die sind nur innerhalb eines Scopes gültig.
Du musst also nun die Variable übergeben.
Also wie jetzt unten umgeändert?
Grundsätzlich ja.
Nun frage ich aber, woher kommen die lokalen Variablen?
Wird einige Variable undefined Fehler werfen.
Um dein ursprüngliches Problem zu lösen, solltest du mal (wie Alice bereits geschrieben hat) den Arma-Server neu installieren.
Normal kenne ich so ein Problem nur, wenn die Config fehlerhaft ist, allerdings kann das natürlich auch auftreten, wenn Arma fehlerhaft ist.
Ansonsten installier dir einen neuen Server und teste ob der Server im Grundsystem einwandfrei funktioniert.
Wenn ja, ziehe nach und nach die Daten rüber und prüfe erneut.
Naja ersten das sind beides die gleichen While Schleifen
Naja, eben nicht ganz.
_right setLightBrightness 0;
_left setLightBrightness _brightness;
_left setLightBrightness 0;
_left setLightBrightness _brightness;
_left setLightBrightness 0;
_right setLightBrightness _brightness;
_right setLightBrightness 0;
_right setLightBrightness _brightness;
_extra1 setLightBrightness 0;
_extra2 setLightBrightness _brightness;
_extra2 setLightBrightness 0;
_extra2 setLightBrightness _brightness;
_extra2 setLightBrightness 0;
_extra1 setLightBrightness _brightness;
_extra1 setLightBrightness 0;
_extra1 setLightBrightness _brightness;
Aber ja, sowas lässt sich auch anders, schöner schreiben.
Außerdem werden die Schleifen nicht Ewigkeiten wiederholt. Denn beide haben eine Bedingung.
Die dummerweiße identisch ist. Also kurzum, es werden beide Schleifen "ausgeführt".
Der aktuelle Ablauf ist folgender:
Um nun die total einfache Lösung zu präsentieren:
Du möchtest, dass beide Schleife zeitgleich ausgeführt werden (das geht aus deinem Text nur indirekt hervor).
Also benötigst du spawn, damit Code gleichzeitig ausgeführt werden kann.
Somit werden die beiden Schleifen (fast) zeitgleich aufgerufen und die Bedingung ist bei beiden noch gegeben, somit werden beide ausgeführt.
Oh weh, du nutzt noch nicht lange Linux oder?
Fangen wir mal mit einigen Grundlagen an:
Machen wir bei dem Script weiter:
Gab es zu dem Script keine Anleitung? Wenn schon, ist es empfehlenswert diese auch zu lesen.
Denn die Parameter sind absolut falsch angegeben (dabei kenne ich das Script nichtmal).
logPath= /home/luca/Steam/logs/Arma3logs.txt
serverConfigDir= /home/luca/Steam/steamapps/common/Arma_3_Server/config/server.cfg
homePath= /home/luca/Steam/steamapps/common/Arma_3_Server
missionPath= /home/luca/Steam/steamapps/common/Arma_3_Server/mpmissions/Altis_Life.Altis.pbo
lifePath= /home/luca/Steam/steamapps/common/Arma_3_Server/@life_server/addons/life_server.pbo
safeMissionPath= /home/luca/Steam/SafeMission/mission/mission.sqf
safeLifePath= /home/luca/Steam/SafeMission/life/Arma3life.sql
safeConfigPath= /home/luca/Steam/SafeMission/config/Arma3config.cfg
uploadPath=/home /luca/Steam/steamapps/common/Arma_3_Server/mpmissions
# networkConfig=$serverConfigDir/basic.cfg
serverConfig=$serverConfigDir/server.cfg
profileName=life
DIR=/home/Steam/steamapps/Arma 3 Server/mpmissions/Altis_Life.Altis
servermods=@marma
mods=@extDB2\;@life_server
BE=$DIR/battleye
DAEMON= Arma3Server
NAME=arma3lifeserver
PARAMS="-cfg=$networkConfig -config=$serverConfig -name=$profileName -servermod=$servermods -mod=$mods -bepath=$BE -world=empty -port=2302 -noSound -loadMissionToMemory -enableHT -autoinit"
DESC="ArmA 3 Lifeserver"
Alles anzeigen
Nehmen wir mal die Parameter auseinander:
Fassen wir nun diese Parameter zusammen und verbessern das Script noch gleich ein wenig:
DIR=/home/luca/Steam/steamapps/common/Arma_3_Server
homePath=$DIR
serverConfigDir=$DIR/config
missionPath=$DIR/mpmissions
lifePath=$DIR/@life_server/addons
logPath=$DIR/logs
safeMissionPath=/home/luca/Steam/SafeMission/mission
safeLifePath=/home/luca/Steam/SafeMission/life
safeConfigPath=/home/luca/Steam/SafeMission/config
uploadPath=/home/luca/Steam/steamapps/common/Arma_3_Server/mpmissions
DAEMON=arma3server
serverConfig=$serverConfigDir/server.cfg
profilePath=$DIR/profiles
profileName=life
servermods="@extDB2;@life_server;@marma"
mods=""
PARAMS="-config=$serverConfig -profiles=$profilePath -name=$profileName -servermod=$servermods -mod=$mods -port=2302 -loadMissionToMemory -enableHT -autoinit"
NAME=arma3lifeserver
DESC="ArmA 3 Lifeserver"
Alles anzeigen
Es wird gleich ersichtlich, dass die Parameter besser lesbar sind und vorallem in einer sinnvolleren Reihenfolge aufgeführt sind.
Ich verstehe den Sinn von diesem Abschnitt noch nicht ganz:
echo "Wechsle Missionsdatei und starte: $DESC"
cd $missionPath
mv Altis_Life.Altis.pbo $safeMissionPath
cd $safeMissionPath
mv Altis_Life.Altis.pbo ${DATE}-Altis_Life.Altis.pbo
cd $lifePath
mv life_server.pbo $safeLifePath
cd $safeLifePath
mv life_server.pbo ${DATE}-life_server.pbo
cd $homePath
mv serverconfig $safeConfigPath
cd $safeConfigPath
mv serverconfig ${DATE}-serverconfig
cd $uploadPath
cp Altis_Life.Altis.pbo $missionPath
cp life_server.pbo $lifePath
cp -r serverconfig $homePath
Alles anzeigen
Mir ist klar, dass dadurch die Mission, life_server und Config kopiert wird. Allerdings wird die ja bei jedem neustart kopiert.
Das ist nur unnötiger Datenmüll, der schlussendlich auch noch schwer zu überblicken ist.
Hier wird auch ersichtlich, warum es sinnbefreit ist, den uploadPath und den missionPath identisch gesetzt zu haben.
Denn die Mission wird aus uploadPath, nach missionPath kopiert. Da dies das selbe Verzeichniss ist, passiert also nichts.
Vorallem wird bei einem upload, immer gleich die neue Mission "gesichert".
Wenn das Script eine möglichkeit hat, es für die Fahrzeuge zu sperren, dann nutze diese.
Ansonsten, wenn die Simulation für die Fahrzeuge deaktiviert ist, dann kann man damit nicht wegfahren.