Beiträge von Henne
-
-
Wie du siehst, wird dort die Variable _veh gesetzt und daher funktioniert es auch.
private _veh = vehicle player;
-
Hast du die Datenbank-Abfragen richtig eingefügt?
Hört sich so an, als ob das Geld (bzw. alles) nicht richtig aus der Datenbank gelesen werden.
-
In der fn_keyHandler.sqf sieht der Codeabschnitt aber ein wenig anders aus. Wäre sinnvoll gewesen dies mitzuteilen.
Diese Zeile ergibt keinen Sinn: private _veh in ["C_SUV_01_F"];
Du versuchst anscheinend eine Variable zu setzen, allerdings hast du keinen Variablennamen.
So sieht die Zeile besser aus:
private _varname = _veh in ["C_SUV_01_F"];
Normal hätte dir dies aber bei der Ausführung einen Fehler werfen müssen.
Du setzt die Variable _veh nirgends. Diese muss gesetzt sein um sie auch nutzen zu können. Dadurch sind deine if-Abfragen natürlich immer false.
Zum Code:
Du kannst dir einige _handled = true; sparen (Zeilen: 218, 232), da du kurz danach die Variable ein zweites mal setzt.
Einige if-Abfragen gehen performanter: https://community.bistudio.com/wiki/Code_Opti…condition_check
Ansonsten so mal als Tipp.
Füge mal direkt nach des cases einfach ein diag_log oder besser ein systemchat ein. Dadurch merkst du bereits, ob die cases überhaupt ausgeführt werden.
-
Das ist ja auch richtig. Da der von dir genannte Fehler sich auf deine fehlerhafte fn_queryRequest.sqf bezieht. Aus diesem Grund hat dir auch PeterMayer die Lösung geschrieben.
Hast du diese denn schon eingefügt und getestet?
Wenn weiterhin fehler auftauchen sollten, sind es andere Fehler als zuvor. Ich gehe aber davon aus, dass die Fehler danach weg sind.
Sollten aber weiterhin Fehler auftauchen, dann wäre es auch sinnvoll, uns diese Meldungen zu senden.
-
Das Wiki ist für sowas die erste Anlaufstelle.
https://community.bistudio.com/wiki/Category:…Commands_Arma_3
Da gibt es dann drei nette Commands:
-
Genaues lesen und das gelesene auch verstehen, ist für ordentliche Kommunikation entscheidend.
Guten Tag,
Ich wolte fragen wie man das ändern kann das man nichtmehr einfach z.B BANK = BANK + 100000 (life_bank = life_bank + 1000
, CASH = CASH + 1000 (life_cash + life_cash = 10000
machen kann um sich über ein script executor geld zu geben.
MfG - Joshua
Wie die Lösung aussehen kann, habe ich oben kurz angeschnitten.
Hier mal eine kleine Aufzählung von Lösungen:
- Geldverwaltung auf dem Server
Der Spieler teilt dem Server mit, dass er eine Geld-Interaktion tätigen möchte. Der Server prüft und berechnet diese Geld-Interaktion und sendet dem Spieler die neuen Geldwerte. Der Client zeigt diese dann an. Der Client kann den Wert der ihm angezeigt wird verändern, aber erhält dadurch nicht mehr Geld. Bei der nächsten Geld-Interkation wird wieder der Wert vom Server angezeigt.
Pro:
+ Hohe Sicherheit
+ Spart (minimal) Clientleistung
Contra:
- Benötigt mehr Serverleistung - Geldverwaltung mit zweiter Variable
Es wird eine zweite Variable erstellt, in der das Geld ein zweites mal gespeichert wird. Bei jeder Geld-Interaktion werden die beiden Geldvariablen auf gleichheit geprüft. Sollten diese nicht identisch sein, hat jemand manipuliert.
Pro:
+ Es muss nicht viel am Code verändert werden
Contra:
- Benötigt mehr Clientleistung
- Wenn der Name der zweiten Variable bekannt ist, können beide Werte manipuliert werden - Geldverwaltung auf Client und Server
Dies funktioniert ähnlich wie die zweite Variante. Diesmal ist die Variable zum gegenprüfen auf dem Server gespeichert und wird bei jeder Geld-Interaktion geprüft. Bei einer Diskrepanz wurde ebenfalls manipuliert.
Pro:
+ Hohe Sicherheit
Contra:
- Benötigt mehr Clientleistung
- Benötigt mehr Serverleistung
Mit Sicherheit gibt es noch andere Lösungswege, die mehr oder weniger Sinnvoll sind.
Aber mal so zum Nachdenken:
Was bringt es dir, wenn das Geld nicht mehr bearbeitet werden kann, wenn weiterhin Code ausgeführt werden kann?
Dann setzt sich der Spieler halt kein Geld direkt, sondern Items und verkauft diese bei einem Händler. Dadurch hat er ebenfalls mehr Geld.
Nun müsste die Item-Verwaltung ebenfalls geändert werden.
Zudem gibt es noch viele andere Varianten, wie er mit bisschen mehr Aufwand ein ähnliches Ziel erreichen kann.
- Geldverwaltung auf dem Server
-
Schiebe jede Geld-Interaktion auf den Server und lasse dort alles berechnen und sende den Wert dem Spieler um diesen dort anzuzeigen.
-
. . .
Zu 2. Habe in meinem Letzten Post doch gar nicht geschrieben das es eine Fehlermeldung ist?
. . .
. . .Alles anzeigenwenn ich beide Dateien wieder in den extdb order tue und ihn @extDB3 nenne statt @extdb3 gibt er mir folgende Fehler aus:
1. Fehlermeldung
15:36:43 "---------------------------------------------------------------------"
15:36:43 "---------------------------------------------------------------------"
sh: 1: objdump: not found
15:36:43 CallExtension loaded: extDB3 (/home/arma3/steamcmd/arma3/@extDB3/extDB3.so) [▒▒_▒S▒]
15:36:43 "extDB3 Loaded"
15:36:43 "---------------------------------------------------------------------"
15:36:43 "---------------------------------------------------------------------"
War zwar nicht der letzte Post, aber einige zuvor.
. . .
mit ldd extDB3.so hab ich herausgefunden das ihm libz.so.1 fehlt.
. . .
werde es mal installieren
. . .
Daher die Nachfrage ob du es zu dem Zeitpunkt schon installiert hast.
So habe herausgefunden, dass sich der Benutzer nicht über localhost sondern nur über Remote verbinden kann.
Habe jetzt mal etwas gemacht das zwar nicht besonders sicher ist aber hoffentlich die Lösung ist. Die Verbindung mit dem Nutzer Root zu probieren. Und es hat geklappt.
Ich bedanke mich daher für Eure/Deine Hilfe, jetzt muss ich nur noch schauen warum sich der eigentliche Nutzer nicht über localhost verbinden kann und dies ändern.
Weiß zwar nicht was du da eingestellt hast, aber vielleicht hast du localhost für den Nutzer auf der Blacklist?
Der root Nutzer ist nicht dafür gedacht, diesen Standardmäßig zu nutzen.
Wenn sich aber der root verbinden kann, liegt es weniger an der Verbindung an sich, sondern eher an mangelnden Rechten.
Daher stelle doch die Rechte ein und nutze einen anderen Nutzer.
-
Also fangen wir mal an.
1. Linux achtet auf Groß- und Kleinschreibung und dichtet sich nicht irgendwas hin so wie Windows. Daher ist es wichtig die Dateien entsprechend zu benennen, oder den Namen der Dateien einfach zu lassen. Denn normal sind die Dateien so benannt, dass es funktioniert.
2. Du schreibst: gibt er mir folgende Fehler aus
Code15:36:43 "---------------------------------------------------------------------" 15:36:43 "---------------------------------------------------------------------" sh: 1: objdump: not found 15:36:43 CallExtension loaded: extDB3 (/home/arma3/steamcmd/arma3/@extDB3/extDB3.so) [▒▒_▒S▒] 15:36:43 "extDB3 Loaded" 15:36:43 "---------------------------------------------------------------------" 15:36:43 "---------------------------------------------------------------------"
Da steht ja aber: CallExtension loaded: extDB3
Also ist es kein Fehler, sondern eine Erfolgsmeldung. Denn so soll es sein.
3. Die Meldung: sh: 1: objdump: not found stammt von dem Script den du nutzt um den Server zu verwalten. Diese Meldung sieht man hier öfters. Da ich das Script nicht nutze und mir dafür eigene Scripts geschrieben habe weiß ich jetzt nicht auswendig warum die Meldung geworfen wird.
Solltest du aber soweit ignorieren können. Denn der Server läuft ja.
4. Je nach der Einstellung der Datenbank und der Firewall, musst du den Datenverkehr innerhalb des Servers erst freigeben. Ansonsten kann der Server natürlich nicht auf die Datenbank zugreifen.
5. Das fehlende Paket hast du inzwischen installiert?
6. Die Version 1.031 von extDB3 funktioniert einwandfrei. Habe bisher keinerlei Probleme damit gehabt und wir nutzen diese schon sehr lange.
-
Ich sehe gerade, du hast versucht die Datei umzubenennen.
Die Datei muss extDB3.so heißen und befindet sich am besten im extDB3 Verzeichniss.
Die Config muss extdb3-conf.ini heißen und sich ebenfalls im extDB3 Verzeichniss befinden.
Im addons Verzeichniss im extDB3 Verzeichniss muss sich die extdb3.pbo befinden.
Also so wie es auch ist, wenn man extDB3 downloadet.
Hast du vielleicht Version 1.032 von extDB3 installiert?
Nutze Version 1.031.
Ansonsten mache eine neue frische saubere Installation vom ganzem Arma Server.
-
Was für Rechte sind der Datei gesetzt und wem gehört diese?
-
Die extDB3.so ist eine Datei für die der Nutzer des Arma Servers Ausführungsrechte besitzen muss.
Daher die Frage ob die Rechte gesetzt sind.
-
Rechte sind richtig gesetzt?
Config für extDB3 ist erstellt und Werte sind richtig?
-
Ubuntu basiert auf Debian, so wie andere Distributionen wieder auf Ubuntu basieren.
Kurzum, was für Debian zählt, lässt sich fast vollständig auch auf Ubuntu anwenden (andersrum sieht es nicht so aus).
Du darfst aber natürlich auch hier suchen: https://packages.ubuntu.com/
-
Ich les mir deinen Text so durch und mir kommen viele Fragen.
Fangen wir mal an.
1. Die Datei libtbbmalloc.so.2 soll sich nicht im Pfad /lib32 befinden, sondern im Pfad /lib/i386-linux-gnu. Dafür ist wie du schon richtig bemerkt hast, das Paket libtbb2 "zuständig".
2. Was dir vermutlich fehlt, ist die Datei libz.so.1 im Pfad /lib32. Diese kommt mit dem Paket zlib1g.
Das einfachste ist, wenn du einfach mal diesen Befehl ausführst: ldd extDB3.so
Dadurch werden dir die Abhänigkeiten der Datei angezeigt. Somit ist auch sofort erkennbar, wenn eine Abhänigkeit fehlt.
Fehlende Abhänigkeiten können dann einfach hier gesucht werden: https://www.debian.org/distrib/packages#search_contents
Wenn alles richtig ist, sollte es so aussehen:
Code
Alles anzeigenldd extDB3.so linux-gate.so.1 (0xf7fb0000) libtbbmalloc.so.2 => /lib/i386-linux-gnu/libtbbmalloc.so.2 (0xf7a2a000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7a24000) libz.so.1 => /lib32/libz.so.1 (0xf7a05000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf78ff000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf78de000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7700000) /lib/ld-linux.so.2 (0xf7fb2000) librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf76f5000) libatomic.so.1 => /lib/i386-linux-gnu/libatomic.so.1 (0xf76eb000)
-
Es hört sich komisch an, dass vah_loaded eine Function sein soll. Denn als Functionname wäre diese sehr unpassend gewählt. Auch müssten Functions aufgerufen werden. Was aber nicht getan wird.
Wie ich mich nun abermals wiederhole.
Die Variable vah_loaded muss an der entsprechenden Stelle definiert sein. Ob und wie dies normal geschehen soll, ist mir und vermutlich auch anderen nicht bekannt. Da musst du dir den Code schon selbst anschauen.
Ich weiß nicht von welchem "Inventar Fehler" du redest.
Oben ist zwar von dir ein Fehler zitiert, der etwas mit einem Inventar zu tun hat. Allerdings meintest du ja bereits, dass du diesen Fehler schon behoben hast.
Zumindest habe ich dir die Lösung dafür bereits mitgeteilt.
-
Wie ich bereits geschrieben habe, muss die Variable definiert werden, dann ist der Fehler behoben.
Da ich jetzt mal Zeit habe, habe ich mir den Fehler genauer angeschaut.
Wenn du über Zeile 392 (in der PlayerInitLocal.sqf) dies schreibst, behebt dies deinen Fehler:
vah_loaded = false;
Allerdings werden dann die Scripts nicht funktionieren. Wenn du folgendes schreibst, dann ist die Wahrscheinlichkeit höher, dass es funktioniert. Allerdings ist es mit Sicherheit nicht Sinn der Sache und es kann zu weiteren Fehlern kommen:
vah_loaded = true;
-
bei dem Garagen problem konnte hier auch keiner helfen trotz Logs
Dann solltest du entweder die Lösungsvorschläge umsetzen, oder mitteilen, dass die Lösungen dein Problem nicht gelöst haben.
Die Logs haben viele Fehler gezeigt, die du ja gelöst, oder Lösungswege bekommen hast. Also haben sie sehr wohl geholfen.
In anderen Themen sich zu "beschweren", hilft aber nicht die Probleme zu lösen.
-
Professor bin ich aktuell noch nicht, arbeite aber vielleicht dran.
Verstehe die unfreundlichkeit jetzt leider nicht ganz.
Nur weil die Logs bei Problem 1 nicht geholfen haben. Heißt es nicht, dass die Logs nicht bei Problem 2 helfen können.
Da ich mich nicht mit Tonic-Life beschäftige, da wir uns auf ein besseres System stützen, kann ich mit dem Config Auszug nichts anfangen. Aber vielleicht können andere helfen.
Es gibt viele Projekte die interessierte Scripter suchen. Daher ist es nur ein Vorschlag sich einem anderen Projekt anschließen. Wenn man weiß wie man selbstständig Fehler sucht lassen sich ein Großteil der Themen hier im Forum vermeiden.