OpenSimulator und MoneyServer - Manfred Aabye - 05.11.2024
Dieses Batch-Skript automatisiert den Aufbau und die Vorbereitung einer OpenSimulator-Umgebung.
Hier ist eine schrittweise Erklärung, was jedes Segment des Skripts macht:
1. **Echo-Aktivität für Benutzerfreundlichkeit**:
```batch
@echo off
echo _______________________________________________________________________________________________________________________
echo Starte die OpenSim Setup...
```
- Das `@echo off` schaltet die Anzeige der Batch-Befehle aus, um die Ausgabe zu bereinigen.
- Die `echo`-Befehle zeigen Informationen und Fortschritt an.
2. **Prüfen und Herunterladen des OpenSim-Quellcodes**:
```batch
if not exist "opensimsource" (
echo Lade OpenSim herunter...
git clone https://github.com/opensim/opensim.git opensimsource
) else (
echo Loesche altes Verzeichnis...
rmdir /s opensimsource
echo Lade OpenSim herunter...
git clone https://github.com/opensim/opensim.git opensimsource
)
```
- Überprüft, ob das Verzeichnis `opensimsource` existiert.
- Falls es nicht existiert, wird das Repository über `git clone` von GitHub heruntergeladen.
- Wenn es jedoch vorhanden ist, wird das alte Verzeichnis gelöscht und das Repository neu geklont.
3. **Herunterladen eines zusätzlichen Moduls (Money-Modul)**:
```batch
if not exist "opensimsource\opensimcurrencyserver" (
echo Lade Money-Modul herunter...
git clone https://github.com/ManfredAabye/opensimcurrencyserver-dotnet.git opensimsource\opensimcurrencyserver
) else (
echo Money-Modul bereits vorhanden, ueberspringe den Download...
)
```
- Überprüft, ob das Money-Modul in `opensimsource\opensimcurrencyserver` vorhanden ist.
- Falls es nicht existiert, wird das Repository von GitHub heruntergeladen. Andernfalls wird der Download übersprungen.
4. **Kopieren von Dateien aus dem Money-Modul in das Hauptprojekt**:
```batch
xcopy /s /y "opensimsource\opensimcurrencyserver\addon-modules\*.*" "opensimsource\addon-modules\"
xcopy /s /y "opensimsource\opensimcurrencyserver\bin\*.*" "opensimsource\bin\"
```
- Kopiert die Dateien des Money-Moduls in die entsprechenden Unterverzeichnisse von `opensimsource`, um die Integration zu erleichtern.
5. **Wechsel in das `opensimsource`-Verzeichnis**:
```batch
cd opensimsource
```
- Wechselt in das `opensimsource`-Verzeichnis, um dort weitere Befehle auszuführen.
6. **Entfernen der `.example`-Endung**:
```batch
for /r %%f in (*.example) do (
set "newname=%%~dpnf"
>nul 2>&1 ren "%%f" "%%~nf"
)
```
- Durchsucht rekursiv alle `.example`-Dateien und entfernt die `.example`-Endung.
- Diese Dateien werden dann umbenannt, was oft erforderlich ist, um Konfigurationsdateien funktionsfähig zu machen.
7. **Kopieren einer DLL-Datei**:
```batch
copy bin\System.Drawing.Common.dll.win bin\System.Drawing.Common.dll
```
- Kopiert eine DLL-Datei (`System.Drawing.Common.dll.win`) nach `System.Drawing.Common.dll` im `bin`-Verzeichnis.
- Diese Datei ist möglicherweise erforderlich, um die Funktionalität des Projekts sicherzustellen.
8. **Vorbereitung der Prebuild-Dateien**:
```batch
dotnet bin\prebuild.dll /target vs2022 /targetframework net8_0 /excludedir = "obj | bin" /file prebuild.xml
```
- Führt das Prebuild-Skript mit bestimmten Parametern aus, um Visual Studio 2022 als Ziel zu definieren.
- `prebuild.xml` wird verwendet, um Abhängigkeiten und Projektdateien zu erstellen, die für das Projekt benötigt werden.
9. **Erstellen eines `compile.bat`-Skripts**:
```batch
@echo dotnet build --configuration Release OpenSim.sln > compile.bat
```
- Erstellt eine neue Datei namens `compile.bat`, die die Kompilierung von OpenSimulator steuert.
10. **Optionales Kompilieren des OpenSimulator-Projekts**:
```batch
set /p compileChoice="Moechten Sie den OpenSimulator jetzt kompilieren? (J/N): "
if /i "%compileChoice%"=="J" (
echo Starte die Kompilierung von OpenSimulator...
dotnet build --configuration Release OpenSim.sln
) else (
echo Kompilierung uebersprungen.
)
```
- Fragt den Benutzer, ob das Projekt kompiliert werden soll.
- Falls der Benutzer `J` (für „Ja“) eingibt, wird das Projekt in der Release-Konfiguration kompiliert.
11. **Zurück zum Hauptverzeichnis und Abschluss**:
```batch
cd ..
echo Setup abgeschlossen.
pause
```
- Kehrt zum Hauptverzeichnis zurück und pausiert, sodass der Benutzer die Ausgabe lesen kann, bevor das Fenster geschlossen wird.
---
**Zusammenfassung**: Dieses Skript lädt und konfiguriert den OpenSimulator und ein zusätzliches Money-Modul, bereitet alle Dateien vor, und bietet die Option, das Projekt zu kompilieren. Es ist besonders hilfreich, um die Setup-Schritte zu automatisieren und eine lauffähige Umgebung zu erstellen.
Ich habe das eigentlich gemacht, um mir die Arbeit am MoneyServer zu erleichtern.
Skript opensim_source.bat komplett:
PHP-Code: @echo off
echo _______________________________________________________________________________________________________________________ echo Starte die OpenSim Setup... echo _______________________________________________________________________________________________________________________ echo Ueberpruefen, ob das opensimsource-Verzeichnis existiert echo _______________________________________________________________________________________________________________________
if not exist "opensimsource" ( echo Lade OpenSim herunter... git clone https://github.com/opensim/opensim.git opensimsource ) else ( echo Loesche altes Verzeichniss... rmdir /s opensimsource echo Lade OpenSim herunter... git clone https://github.com/opensim/opensim.git opensimsource )
echo _______________________________________________________________________________________________________________________ echo Money Repository in ein Unterverzeichnis von opensimsource klonen echo _______________________________________________________________________________________________________________________
if not exist "opensimsource\opensimcurrencyserver" ( echo Lade Money-Modul herunter... git clone https://github.com/ManfredAabye/opensimcurrencyserver-dotnet.git opensimsource\opensimcurrencyserver ) else ( echo Money-Modul bereits vorhanden, ueberspringe den Download... )
echo _______________________________________________________________________________________________________________________ echo Kopiere Dateien von opensimcurrencyserver nach opensimsource... echo _______________________________________________________________________________________________________________________
xcopy /s /y "opensimsource\opensimcurrencyserver\addon-modules\*.*" "opensimsource\addon-modules\" xcopy /s /y "opensimsource\opensimcurrencyserver\bin\*.*" "opensimsource\bin\"
echo _______________________________________________________________________________________________________________________ echo Wechsle in das Verzeichnis opensimsource... echo _______________________________________________________________________________________________________________________
cd opensimsource
echo _______________________________________________________________________________________________________________________ echo Entferne .example Endungen in allen Dateien... echo _______________________________________________________________________________________________________________________
for /r %%f in (*.example) do ( set "newname=%%~dpnf" >nul 2>&1 ren "%%f" "%%~nf" )
echo _______________________________________________________________________________________________________________________ echo Kopiere System.Drawing.Common.dll.win in bin... echo _______________________________________________________________________________________________________________________
copy bin\System.Drawing.Common.dll.win bin\System.Drawing.Common.dll
echo _______________________________________________________________________________________________________________________ echo Erstelle die Prebuild Dateien... echo _______________________________________________________________________________________________________________________
dotnet bin\prebuild.dll /target vs2022 /targetframework net8_0 /excludedir = "obj | bin" /file prebuild.xml
echo _______________________________________________________________________________________________________________________ echo Erstelle die compile.bat... echo _______________________________________________________________________________________________________________________
@echo Creating compile.bat @echo dotnet build --configuration Release OpenSim.sln > compile.bat
echo _______________________________________________________________________________________________________________________ set /p compileChoice="Moechten Sie den OpenSimulator jetzt kompilieren? (J/N): " echo _______________________________________________________________________________________________________________________ if /i "%compileChoice%"=="J" ( echo Starte die Kompilierung von OpenSimulator... dotnet build --configuration Release OpenSim.sln ) else ( echo Kompilierung uebersprungen. )
echo _______________________________________________________________________________________________________________________ echo Zurueck ins Hauptverzeichnis... cd ..
echo _______________________________________________________________________________________________________________________
echo Setup abgeschlossen. pause
RE: OpenSimulator und MoneyServer - Manfred Aabye - 12.11.2024
MoneyServer Plugin stand der Dinge.
Es gelingt mir in C# die currency.php und landtool.php abzufangen und auszuwerten.
Aber mir gelingt es nicht dem Viewer die Antwort so zu übergeben, dass dieser dies versteht.
Also ich habe Probleme bei der currency.php XMLRPC Rückmeldung Betrag in Ordnung Geldkauf abschließen.
Und ich habe Probleme bei der landtool.php XMLRPC Rückmeldung Landkauf abschließen.
XMLRPC Eingang Beispiel Landkauf:
PHP-Code: <?xml version="1.0"?> <methodCall> <methodName>preflightBuyLandPrep</methodName> <params> <param> <value> <struct> <member> <name>agentId</name> <value> <string>134e495d-0b1e-48b5-b40b-b009a600c1ca</string> </value> </member> <member> <name>billableArea</name> <value> <int>0</int> </value> </member> <member> <name>currencyBuy</name> <value> <int>0</int> </value> </member> <member> <name>language</name> <value> <string>de</string> </value> </member> <member> <name>secureSessionId</name> <value> <string>d4dde134-cf17-4e8a-46f6-05e5b7fe1125</string> </value> </member> </struct> </value> </param> </params> </methodCall>
Fehlermeldungen:
[MONEY XMLRPC]: genericCurrencyXMLRPCRequest: to http://174.212.235.104:8008
[MONEY NSL XMLRPC]: XmlRpcResponse certSend: connect to http://174.212.235.104:8008
[MONEY XMLRPC MODULE]: Error processing currency purchase.
[MONEY XMLRPC MODULE]: Error Response Request output: OpenSim.Framework.Servers.HttpServer.OSHttpResponseOSHttpRequest: POST /currency.php
remote_addr: 93.134.147.242
remote_port: 52824
accept-encoding: deflate, gzip
keep-alive: 300
content-type: text/xml
user-agent: Firestorm-Releasex64 7.1.11 (76496)
IP: 93.134.147.242:52824
RE: OpenSimulator und MoneyServer - Manfred Aabye - 16.11.2024
OpenSimCurrencyServer-DOTNET
Der Kauf von Land ohne landtool.php ist jetzt möglich.
OpenSim Currency Server für OpenSim 0.9.3.x Dev
Windows, Linux, Mac X64 DotNet6.x & X64 DotNet8.x
Alles funktioniert außer currency.php es wird zwar behandelt als würde es gehen, aber ohne Auszahlung.
Es muss noch der BankerAvatar eingefügt werden und die Berechnung, was aber eine knifflige Sache ist.
In der Robust.ini unter [GridInfoService] den MoneyServer als helper verwenden.
economy = ${Const|BaseURL}:8008/
(eventuell anpassen)
Eventuell müsst ihr euren Viewer unter Eigenschaften etwas Pimpen mit:
-loginuri http://DeinServer.de:8008/ -helperuri http://DeinServer.de:8008/
Ubuntu 18 = DOTNET 6.0 – Ubuntu 20+ DOTNET 8.0
opensim.currency – geändert
Vom Original DTL/NSL Money Server für X64/Unix/DotNet und Windows 10/11 64bit mit XAMPP/MariaDB, X64 DotNet6 & X64 DotNet8
von Fumi.Iseki und NSL http://www.nsl.tuis.ac.jp , hier ist eine Testrevision für DotNet6 & DotNet8.
TODO:
Jetzt currency.php funktionsfähig machen.
Github https://github.com/ManfredAabye/opensimcurrencyserver-dotnet/tree/main?tab=readme-ov-file
RE: OpenSimulator und MoneyServer - Sero - 11.03.2025
Ich wollte einmal fragen wie lange die Opensim_source.bat laufen sollte one dass man sich gedanken machen sollte.
Bei mir sieht es so aus als würde sie sich bei :
@echo dotnet build --configuration Release OpenSim.sln > compile.bat
aufgehängt haben.
Seit etwa 20 Minuten tut sich in der Console einfach nichts mehr.
RE: OpenSimulator und MoneyServer - Manfred Aabye - 17.03.2025
Keine 20 Minuten dauert das eigentlich.
Bei mir hängt sich das auch auf, bei den Dev´s anscheinend nicht, deshalb mache ich das anders siehe OpenSim Windows Tool.
PHP-Code: @echo off echo _______________________________________________________________________________________________________________________ echo OpenSim Windows Tool Version 17032025 V10 echo Systemvorraussetzung zum erstellen vom OpenSimulator: echo DOTNET 8.0.x https://dotnet.microsoft.com/en-us/download/dotnet/8.0 echo Visual Tudio 22 Community https://visualstudio.microsoft.com/de/vs/community/ echo Git https://git-scm.com/downloads/win echo _______________________________________________________________________________________________________________________ set /p setupChoice="Moechten Sie das Setup starten? ([J]/N): "
:: Standardwert "J" setzen, wenn keine Eingabe gemacht wurde if "%setupChoice%"=="" set setupChoice=J
if /i "%setupChoice%" NEQ "J" ( echo Setup abgebrochen. exit /b )
echo _______________________________________________________________________________________________________________________ echo Starte die OpenSim Setup... echo _______________________________________________________________________________________________________________________ echo Ueberpruefen, ob das opensimsource Verzeichnis existiert echo _______________________________________________________________________________________________________________________
if not exist "opensimsource" ( echo opensimsource Verzeichnis existiert nicht, lade OpenSim herunter... git clone https://github.com/opensim/opensim.git opensimsource ) else ( echo opensimsource uebersprungen. )
echo _______________________________________________________________________________________________________________________ echo OpenSimSearch Repository echo _______________________________________________________________________________________________________________________ set /p OpenSimSearchChoice="Moechten Sie das OpenSimSearch Repository herunterladen? ([N]/J): "
:: Standardwert "N" setzen, wenn keine Eingabe gemacht wurde if "%OpenSimSearchChoice%"=="" set OpenSimSearchChoice=N
if /i "%OpenSimSearchChoice%"=="J" ( git clone https://github.com/ManfredAabye/OpenSimSearch.git opensimsearch xcopy /s /y "opensimsearch\OpenSimSearch\*.*" "addon-modules\" ) else ( echo OpenSimSearch Repository uebersprungen. )
echo _______________________________________________________________________________________________________________________ echo Money Repository echo _______________________________________________________________________________________________________________________ set /p moneyChoice="Moechten Sie das Money Repository herunterladen? ([N]/J): "
:: Standardwert "N" setzen, wenn keine Eingabe gemacht wurde if "%moneyChoice%"=="" set moneyChoice=N
if /i "%moneyChoice%"=="J" ( echo _______________________________________________________________________________________________________________________ echo Money Repository in ein Unterverzeichnis von opensimsource klonen echo _______________________________________________________________________________________________________________________
if not exist "opensimsource\opensimcurrencyserver" ( echo Lade Money-Modul herunter... git clone https://github.com/ManfredAabye/opensimcurrencyserver-dotnet.git opensimsource\opensimcurrencyserver ) else ( echo Money-Modul bereits vorhanden, ueberspringe den Download... )
echo _______________________________________________________________________________________________________________________ echo Kopiere Dateien von opensimcurrencyserver nach opensimsource... echo _______________________________________________________________________________________________________________________
xcopy /s /y "opensimsource\opensimcurrencyserver\addon-modules\*.*" "opensimsource\addon-modules\" xcopy /s /y "opensimsource\opensimcurrencyserver\bin\*.*" "opensimsource\bin\" ) else ( echo Money Repository uebersprungen. )
echo _______________________________________________________________________________________________________________________ echo PayPal Repository echo _______________________________________________________________________________________________________________________ set /p paypalChoice="Moechten Sie das PayPal Repository herunterladen? ([N]/J): "
:: Standardwert "N" setzen, wenn keine Eingabe gemacht wurde if "%paypalChoice%"=="" set paypalChoice=N
if /i "%paypalChoice%"=="J" ( git clone https://github.com/AdamFrisby/DTL-PayPal.git DTL-PayPal ) else ( echo Money Repository uebersprungen. )
:: Inventar herunterladen echo _______________________________________________________________________________________________________________________ echo Inventar Repository echo _______________________________________________________________________________________________________________________ set /p InventarChoice="Moechten Sie das Inventar Repository herunterladen? ([J]/N): "
:: Standardwert "J" setzen, wenn keine Eingabe gemacht wurde if "%InventarChoice%"=="" set InventarChoice=J
if /i "%InventarChoice%"=="J" (
:: Skripte herunterladen if not exist "opensimsource\opensim-ossl-example-scripts" ( echo Lade Skripte herunter... cd opensimsource git clone https://github.com/ManfredAabye/opensim-ossl-example-scripts.git opensim-ossl-example-scripts cd .. ) else ( echo opensim-ossl-example-scripts bereits vorhanden, ueberspringe den Download... ) xcopy /s /y "opensimsource\opensim-ossl-example-scripts\ScriptsAssetSet\*.*" "opensimsource\bin\assets\ScriptsLibrary\" xcopy /s /y "opensimsource\opensim-ossl-example-scripts\inventory\ScriptsLibrary\*.*" "opensimsource\bin\inventory\ScriptsLibrary\"
:: Inventar Ruth2 if not exist "opensimsource\Ruth2" ( echo Lade Ruth2 herunter... cd opensimsource git clone https://github.com/ManfredAabye/Ruth2.git Ruth2 cd .. ) else ( echo Ruth2 bereits vorhanden, ueberspringe den Download... ) xcopy /s /y "opensimsource\Ruth2\Artifacts\IAR\*.iar" "opensimsource\bin\Library"
:: Inventar Roth2 if not exist "opensimsource\Roth2" ( echo Lade Roth2 herunter... cd opensimsource git clone https://github.com/ManfredAabye/Roth2.git Roth2 cd .. ) else ( echo Roth2 bereits vorhanden, ueberspringe den Download... ) xcopy /s /y "opensimsource\Roth2\Artifacts\IAR\*.iar" "opensimsource\bin\Library" ) else ( echo Inventar Repository uebersprungen. )
echo _______________________________________________________________________________________________________________________ echo Wechsle in das Verzeichnis opensimsource... echo _______________________________________________________________________________________________________________________
cd opensimsource
echo _______________________________________________________________________________________________________________________ echo example Endungen entfernen echo _______________________________________________________________________________________________________________________ set /p exampleChoice="Moechten Sie .example Endungen in allen Dateien entfernen? ([J]/N): "
:: Standardwert "J" setzen, wenn keine Eingabe gemacht wurde if "%exampleChoice%"=="" set exampleChoice=J
if /i "%exampleChoice%"=="J" ( for /r %%f in (*.example) do ( set "newname=%%~dpnf" >nul 2>&1 ren "%%f" "%%~nf") )
echo _______________________________________________________________________________________________________________________ echo Test Region erstellen echo _______________________________________________________________________________________________________________________ set /p RegionChoice="Moechten Sie eine Test Region erstellen? ([J]/N): "
:: Standardwert "J" setzen, wenn keine Eingabe gemacht wurde if "%RegionChoice%"=="" set RegionChoice=J
if /i "%RegionChoice%"=="J" ( :: Zielpfad zur Datei cd opensimsource git clone https://github.com/ManfredAabye/OpenSim-Terrain.git OpenSim-Terrain cd .. xcopy /s /y "opensimsource\OpenSim-Terrain\*.raw" "opensimsource\bin" xcopy /s /y "opensimsource\OpenSim-Terrain\*.png" "opensimsource\bin" xcopy /s /y "opensimsource\OpenSim-Terrain\*.oar" "opensimsource\bin" xcopy /s /y "opensimsource\OpenSim-Terrain\*.ini" "opensimsource\bin\Regions"
:: Erfolgsmeldung ausgeben echo Die Datei Regionsdaten wurden aktualisiert. )
echo _______________________________________________________________________________________________________________________ echo Kopiere System.Drawing.Common.dll.win in bin... echo _______________________________________________________________________________________________________________________ cd opensimsource copy bin\System.Drawing.Common.dll.win bin\System.Drawing.Common.dll cd .. echo _______________________________________________________________________________________________________________________ echo Erstelle die Prebuild Dateien... echo _______________________________________________________________________________________________________________________ :: Voher cleanen sonst doppelte eintragungen von dotnet 8.0 :: Wenn die Datei OpenSim.sln vorhanden ist kann ein clean nicht schaden oder? cd opensimsource if exist "OpenSim.sln" ( dotnet bin\prebuild.dll /file prebuild.xml /clean )
dotnet bin\prebuild.dll /target vs2022 /targetframework net8_0 /excludedir = "obj | bin" /file prebuild.xml
echo _______________________________________________________________________________________________________________________ echo Erstelle die compile.bat... echo _______________________________________________________________________________________________________________________
@echo Creating compile.bat @echo dotnet build --configuration Release OpenSim.sln > compile.bat
echo _______________________________________________________________________________________________________________________ set /p compileChoice="Moechten Sie den OpenSimulator jetzt kompilieren? ([J]/N): "
:: Standardwert "J" setzen, wenn keine Eingabe gemacht wurde if "%compileChoice%"=="" set compileChoice=J
echo _______________________________________________________________________________________________________________________ if /i "%compileChoice%"=="J" ( echo Starte die Kompilierung von OpenSimulator... dotnet build --configuration Release OpenSim.sln ) else ( echo Kompilierung uebersprungen. ) cd ..
echo _______________________________________________________________________________________________________________________ echo Zurueck ins Hauptverzeichnis... cd ..
echo _______________________________________________________________________________________________________________________ echo Setup abgeschlossen. echo _______________________________________________________________________________________________________________________ echo Sie benoetigen noch einen OpenSim faehigen Viewer den bekommen sie hier: "https://wiki.firestormviewer.org/downloads" echo Starten sie nun den OpenSimulator mit dem Befehl "dotnet opensim.dll" dieser befindet sich im Verzeichnis opensimsource/bin echo Im folgenden Fenster geben sie "create user" ein und erstellen einen neuen User mit dem Namen "opensim avatar". echo Wenn das Land unterwasser ist, geben sie ein: "terrain fill 20.5" dann ist ihr Land 50cm ueber der Wassergrenze. echo Wenn sie ein forgefertigtes Land haben moechten dann geben sie in der Konsole "load oar terrain.oar" ein. echo Starten sie ihren Firestorm Viewer und waehlen sie unter - Einstellungen - OpenSim - neues Grid hinzufuegen - aus echo und fuegen dort "http://127.0.0.1:9000" ein.
pause
|