enableSimulation Option? Damit fixierst du Gegenstände, bei einigen wird die Funktion eingeschränkt, aber nicht so weitreichend.
Beiträge von Stig
-
-
Etwas sehr spezielles oder könnt das für andere auch interessant sein?
-
Also ihr habt einen Upload von 5GB pro Sekunde durch arma3server.exe oder verstehe ich das falsch?
Kannst du mal den RPT und alle sonstigen Logs die erstellt werden zeigen?
-
extDB wirft dir immer ein String zurück, in dem ein Array steht.
Bei synchronen Abfragen entweder
[1,daten]
oder
[0,"fehlermeldung"].
Aber weil das ganze als String verpackt ist ("[1,daten]"), musst du es erst in ein Array umwandeln, um einfacher auf die Daten zugreifen zu können. Die Daten selbst sind meist auch irgendwie in weiteren Array verpackt.
Dafür gibt es verschiedene Methoden, aber BIS hat letztens eine neue eingeführt, die das wesentlich einfacher macht:
https://community.bistudio.com/wiki/parseSimpleArray
So bekommst du ein Array:
_array = parseSimpleArray _rohesErgebnisvonExtDB
_array select 0 gibt dir dann den Typ vom Ergebnis (0=error, 1=erfolg, ...) und in
_array select 1 stehen die ergebnisse (meist weitere arrays).
Aus denen kannst du dann die gewollte Zahl rausfischen.
-
Nur mal so aus Interesse, hast du mehr als 5 FPS?
Dein Log schreibt ca. 200mal String STR_xyz not found in den Log.
-
Du kannst verschiedene Protokolle benutzen in den extDB Calls, die dann jeweils eine eigene Datenbank nutzen.
Mehr dazu hier https://bitbucket.org/torndeco/extdb3/wiki/Contents und speziell hier https://bitbucket.org/torndeco/extdb…B3%20-%20System
Edit:
Dafür musst du aber diverse Scripte umschreiben, die in Life die Datenbankabfragen verwalten.
-
Die Tabelle heißt spieler und in dieser gibt es u.a. die Spalten pid und name.
INSERT INTO tabellenname (spalte1, spalte2, ...) VALUES ('wertfürspalte1','wertfürspalte2',...)
Das erstellt eine neue Reihe in tabellenname und füllt in dieser neuen Reihe spalte1 mit wertfürspalte1 und spalte2 mit wertfürspalte2.
So könntest du das abfragen:
SELECT spalte1 FROM tabellenname WHERE spalte2 = 'wert'
Das gibt dir den Inhalt von spalte1 in tabellenname wieder in der Reihe (oder den Reihen), wo spalte2 == wert ist.
Vor den Statements immer 0:SQL, also für 0=synchrone Abfrage und SQL=Protokoll mit Namen "SQL" benutzen
Beachte das extDB immer verschachtelte Ergebnisse zurückgibt.
Also nicht die rohen Ergebnisse, sondern z.B.:
[1,[ergebnisse]]
-
Ich hab mir das vor einer Weile auch mal angeguckt, hier ein paar grobe Basics, letztendlich musst du alle extDB Wiki Seiten durchlesen und dich durchquälen und probieren bis es geht.
Zudem brauchst du logischerweise ein ganz bisschen Grundlagen in SQL, damit du Queries schreiben kannst.
Aber zur Verwendung
Erstmal musst du extDB einrichten (MySQL Server, Datenbank in MySQL einrichten, extDB Mod + Abhängigkeiten, extDB Config machen).
Wenn der extDB eingerichtet ist, kannst du es mit "extDB3" callExtension "A:B:C(:D:...)" ansprechen.
"A:B:C(:D:...)" ist immer ein String, aus dem extDB Anweisungen (z.B. eine Datenbankabfrage) interpretiert.
Es werden immer verschiedene Anweisungen/Parameter mit einem Doppelpunkt getrennt.
Das grundsätzliche Format der Calls via callExtension zu extDB ist immer A:B:C(:D:...), wobei...
...A eine Zahl ist, die den Typ der Anweisung angibt.
...B ein Befehl ist.
... und alle weiteren Zonen nach den ":" eventuelle weitere Parameter darstellen.
Beispiel "extDB3" callExtension "9:ADD_DATABASE:Database" :
9 - 9 bedeuted Systemanweisung (im Prinzip eine Anweisung die an extDB direkt geht und nicht zur Datenbank soll)
ADD_DATABASE - Befehl für extDB um eine Verbindung zur Datenbank herzustellen.
Database - Parameter für ADD_DATABASE, sagt dass die Verbindung zu der Datenbank mit den Daten hergestellt werden soll, die in der Config bei [Database] stehen.
Genaueres hier:
https://bitbucket.org/torndeco/extdb…3%20-%20General
Um einfache SQL Statements zur Datenbank zu schicken und die Antwort zu bekommen, musst du eine Verbindung zur DB einrichten und ein Protokoll eröffnen (Protokoll sagt hauptsächlich aus welche Datenbankverbindung genutzt werden soll und wie).
Das geht z.B. so:
"extDB3" callExtension "9:ADD_DATABASE:Database"
"extDB3" callExtension "9:ADD_DATABASE_PROTOCOL:Database:SQL:SQL:TEXT"
Dann kann man schon einfache, synchrone SQL Statements ausführen:
Z.B.
"extDB3" callExtension ("0:SQL:" + format ["INSERT INTO spieler (pid,name) VALUES ('%1','%2')",_steamID,_name]);
Diese Seiten solltest du dir durchlesen und rumprobieren, testen und lernen: https://bitbucket.org/torndeco/extdb3/wiki/Contents
-
Es gab mal Stratis Life ? :o
Sogar noch vor Altis Life
-
Ich würde auf jedes Fahrzeug beim Ausparken/Kaufen mit setVariable [ , , true] eine Variable setzen die den Skin repräsentiert. Dann wenn wenn jemand dazujoint den obigen Code einmal auf alle bedtehenden Fahrzeuge anwenden und mit getVariable den Skin herausfinden der zum Fahrzeug gehört.
-
Threads sind kostenlos, du kannst dir einen eigenen holen und musst nicht diesen erobern.
-
Bin gerade am Handy und kann nichts genaues rauszusuchen, aber prinzipiell ist es doch:
_texture = If (modAktiv) then {mod\data\skin.paa} else {data\skin.paa};
x setObjectTexture _texture;
Dann muss man halt auf setObjectTextureGlobal verzichten.
-
https://community.bistudio.com/wiki/diag_activeScripts
https://community.bistudio.com/wiki/diag_activeSQFScripts
Behalte das einfach mal im Auge. Dann solltest du feststellen können ob irgendwo unnötige Threads gestartet und nie beendet werden.
-
Was genau heißt laggen? Stockende Synchronisation (Läuft abgehackt und sieht aus als würde er sich teleportieren)? Oder niedrige FPS?
-
Client Logs
-
Zu dem richtig nach Hilfe fragen gehören vorallem Logs. Niemand hier wird jetzt raten was da nicht richtig funktioniert. Auch: Was hast du geändert, wodurch das Problem aufgetreten ist?
-
Ich habe 6 Aufgaben für dich:
- Finde die Suchfunktion vom Forum
- Finde den "Wie frage ich richtig nach Hilfe"-Leitfaden
- Lese ihn
- Befolge den Leitfaden
- Schreibe deinen Beitrag dementsprechend neu
- Korrigiere vor dem Absenden deine Rechtschreib- und Grammatikfehler
-
-
Kommen Fehler wenn du den ganzen Code nimmst?
-
Füllt sich auch so die Liste nichtmehr?
Zitat- {
- _index = lbAdd [1002, name _x];
- } foreach allPlayers;