Ich muss sagen gute Arbeit! Kann man das irgendwie nur für Admins bzw bestimmte Player Ids useable machen?
Sperrzonensystem 2.1
-
- Altis Life
-
Stig -
23. Dezember 2016 um 18:33
-
-
Ja, das geht mit den Conditions.
Du kannst zB mit
bestimmen, dass Cop/NATO Spieler es nur verwenden dürfen, wenn sie die Steam-ID 1234 oder 9000 haben. Das müssten dann die IDs deiner Admins sein.
Alternativ auch mit
das ganze ans Adminlevel in der Datenbank knüpfen.
Aber aufpassen, das Sperrzonensystem darf dann erst geladen werden, nachdem die Spielerdaten von der Datenbank schon fertig geladen wurden.
-
Wenn ich
stig_sz_condition_WEST = {(getPlayerUID player) in ["1234","9000"]};was muss ich denn da noch alles löschen?
-
-
Okay, die
- stig_sz_condition_WEST = {(getPlayerUID player) in ["1234","9000"]};
Variante funktioniert bei mir nicht!
-
Wenn ich 2 Id´s nutze erscheint das System erst garnicht! Bei wenn ich nur eine benutze klappts, ich bekomme dann den reiter UI ein/ ausblenden rechts daneben Klicke hier um das Overay.... da klicke ich rauf und nichts passiert.
-
Ich hab jetzt nochmal etwas rumgetestet und im SP funktioniert das Script aber nicht im MP. bzw es öffnet sich nicht. Selbst in deiner test mission gehts nicht!
-
Ich hab jetzt nochmal etwas rumgetestet und im SP funktioniert das Script aber nicht im MP. bzw es öffnet sich nicht. Selbst in deiner test mission gehts nicht!
LIEBE GLASKUGEL... Kennst du den Rest? (Logs)
-
Er hat mir auch per PN geschrieben und was er mit "im MP" meint ist nicht wirklich in einer MP Session sondern im Editor als MP Mission geladen und dann im Editor getestet. Dann gibt ja getPlayerUID einen festen String zurück und nicht die SteamID. Vermutlich ist es das aber er hat noch nicht wieder geantwortet.
-
sry hatte leider keine Zeit gehabt, ich lade jz mal die das Missionfile auf meinen Server und teste es, ich habe das so eingestellt das nur civ´s (bei mir admin slots) das System nutzen können
-
Hey Stig,
erstmal vielen Dank dass du uns allen dieses Script zur Verfügung stellst.
Ich habe eine Frage / Problem:Ich habe alles ausgeführt, jedoch lässt sich als Cop, wenn ich M drücke, das Menü nicht starten.
Kann es daran liegen, dass die Funktionen in der RemoteExec falsch eingetragen worden sind, oder was sagst du?Falls du einen Log brauchen solltest, poste ich den natürlich dazu.
Danke soweit!
Liebe Grüße, David -
Hi
Ich habe alles ausgeführt, jedoch lässt sich als Cop, wenn ich M drücke, das Menü nicht starten.
Also der Eintrag in der Liste ist da, aber es passiert nichts wenn man drauf klickt?
Der RPT Log vom Client wäre gut, und alles was du in den Sperrzonensystem-Settings eingetragen hast.
Zudem, nutzt du Infistar oder andere AntiCheat Sachen?
-
Moin,
Zitat von StigAlso der Eintrag in der Liste ist da, aber es passiert nichts wenn man drauf klickt?
also wenn ich M drücke, öffnet sich ganz normal die Karte - aber das war's dann auch.
Außerdem habe ich in der ConfigRemoteExec die beiden Funktionen so eingetragen:
Ich habe es auch davor mal als CLIENT & SERVER eingetragen, um zu schauen ob es daran liegen könnte: bringt genau den gleichen Effekt
Ich fuchse mich erst in die ganze Sache mit SQF ein, deshalb bitte nicht wundern wenn ich gerade Experimente mache wie da oben. Ist mir halt wichtig selber vielleicht auf den Nenner zu kommen weil es mich dann auch weiterbringt - so in etwa
Ich habe den Log mal hochgeladen.
Arma3_x64_2020-04-17_11-21-02.rpt
Außerdem nutze ich kein Infistar oder andere Anti-Cheat-Erweiterungen.
Ich hoffe, du kannst mir weiterhelfen
Liebe Grüße,David
Edit: In den Sperrzonen Settings wurde nichts verändert -
Ist mir halt wichtig selber vielleicht auf den Nenner zu kommen weil es mich dann auch weiterbringt - so in etwa
Top
Ich habe eine Idee wo das Problem liegt, hier mal eine detailiertere Erklärung woher meine Vermutung kommt, vielleicht bringt es dich in Zukunft bei deinen eigenen Scripten weiter.
Im Log sieht man ab Zeile 802, dass das Sperrzonensystem geladen wird.
Die Meldungen im Log kommen, weil ich im Script main.sqf, was das ganze Sperrzonensystem und die Einstellungen lädt, manuell mit dem Befehl diag_log die Meldungen loggen lasse. Das hilft uns jetzt, denn wir sehen, dass das Script überhaupt ausgeführt wird.
Dabei werden aber mehrere Fehler gemeldet:
Code: Log11:25:58 Error in expression <stig_sz_enable_WEST> 11:25:58 Error position: <stig_sz_enable_WEST> 11:25:58 Error Nicht definierte Variable in Ausdruck: stig_sz_enable_west 11:25:58 Error in expression <stig_sz_condition_WEST> 11:25:58 Error position: <stig_sz_condition_WEST> 11:25:58 Error Nicht definierte Variable in Ausdruck: stig_sz_condition_west
Die Variablen werden eigentlich aus der settings.sqf geladen, die von der main.sqf aufgerufen wird. Die wurde aber anscheinend nicht ausgeführt oder hat nicht richtig funktioniert. Im nächsten Fehler sieht man schon mehr:
Code: Log11:25:58 Error in expression <_this = _this select 0; }; if (typeName _this != "STRING") exitWith { diag_log "> 11:25:58 Error position: <_this != "STRING") exitWith { diag_log "> 11:25:58 Error Nicht definierte Variable in Ausdruck: _this 11:25:58 File mpmissions\__CUR_MP.tanoa\core\sperrzonensystem\main.sqf..., line 16
Die Variable _this hat keinen Wert. In _this steht der Parameter, den man einem Script beim Aufruf mit call/spawn/execVM übergeben kann, aber anscheinend hast du es ohne Parameter aufgerufen. Ich habe das Script so geschrieben, dass man main.sqf aufruft und als Parameter den Pfad vom Sperrzonen-Verzeichnis übergibt, damit sich das Script dann selbst darum kümmern kann, den Rest zu laden.
Ohne den Pfad kann main.sqf die settings.sqf und den Rest nicht laden, was die ersten beiden Fehler erklären würde, aber die Reihenfolge der Fehler macht noch keinen Sinn. Außerdem ist eigentlich ein Check dagegen drin.
Daher: Rufst du die main.sqf richtig auf?
An beliebiger Stelle (zb initPlayerLocal.sqf) per execVM das Script starten. Dabei als Parameter den Pfad vom Sperrzonensystem angeben. Beispiel: "pfad\zum\sperrzonensystem" execVM "pfad\zum\sperrzonensystem\main.sqf";
Schick mal rein wie du es startest.
-
Hey, erstmal vielen Dank für die detaillierte Erklärung!
Daher: Rufst du die main.sqf richtig auf?
Schick mal rein wie du es startest.
Hier mal die ganze initPlayerLocal.sqf, unten habe ich den Aufruf per execVM drin:
Code
Alles anzeigen#include "script_macros.hpp" /* File: initPlayerLocal.sqf Author: Description: Starts the initialization of the player. */ if (!hasInterface && !isServer) exitWith { [] call compile preprocessFileLineNumbers "\life_hc\initHC.sqf"; }; CONST(BIS_fnc_endMission,BIS_fnc_endMission); if (LIFE_SETTINGS(getNumber,"spyGlass_toggle") isEqualTo 1) then {[] execVM "SpyGlass\fn_initSpy.sqf";}; [] execVM "core\init.sqf"; [] execVM "briefing.sqf"; [] execVM "core\sperrzonensystem\main.sqf";
Liebe Grüße
-
[] execVM "core\sperrzonensystem\main.sqf";
Da liegt das Problem.
Die Syntax vom execVM Befehl ist arguments execVM filename.
In deinem Fall ist das Argument [] (ein leeres Array) und der Filename "core\sperrzonensystem\main.sqf".
Wie aber vorher erklärt muss als Argument/Parameter der Pfad zum Verzeichnis mitgegeben werden, weil die im Script gebraucht werden, um den Rest zu laden.
Der richige Aufruf wäre:
"core\sperrzonensystem\" execVM "core\sperrzonensystem\main.sqf";
Dadurch wird in der main.sqf die Variable _this zum String "core\sperrzonensystem\" und das Script kann die anderen Scripte starten, weil es jetzt den richtigen Pfad kennt. Damit sollte es funktionieren.
-
Hey, danke - ich hab das jetzt so eingetragen und bei M wird Sperrzonensystem jetzt in der Liste angezeigt.
Da steht auch, dass man dann auf die Fläche klicken soll, um die UI zu aktivieren. Jetzt passiert da nichts.Hast du eventuell eine Ahnung woran das liegt?
-
Das weiß ich noch nicht, schick mal einen RPT Log von einer Session in der du raufgeklickt hast.
-
Hier der Log
-
Anscheinend wird der Code im execute tag von https://community.bistudio.com/wiki/createDiaryRecord nicht ausgeführt.
Code: sperrzonensystem/scripts/createGUI.sqfplayer createDiarySubject ["sperrzonensystem","Sperrzonensystem"]; player createDiaryRecord ["sperrzonensystem", ["UI ein-/ausblenden", "<br/><execute expression='call stig_sz_hideGUI'>Klicke hier, um das Overlay zur Sperrzonenverwaltung ein- oder auszublenden.</execute>" ]];
Ich weiß nicht warum, beim mir im Editor geht das. blackfisch vlt eine Idee dazu?
Du kannst ansonsten als Workaround call stig_sz_hideGUI; in sperrzonensystem/scripts/createGUI.sqf in Zeile 211 auskommentieren, dann sollte es permanent an sein.
-