[closed][Server 5.5.0] Wunderschiff MineClone2 Server

German
User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by debiankaios » Post

Keine ahnung, dann brauchst du meine Hilfe nicht!

User avatar
Festus1965
Member
Posts: 4181
Joined: Sun Jan 03, 2016 11:58
GitHub: Festus1965
In-game: Festus1965 Thomas Thailand Explorer
Location: Thailand ChiangMai
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by Festus1965 » Post

jjk1 wrote:
Thu Aug 26, 2021 05:21
Das liegt denke ich an den GPIOs, die ich seit ein paar Monaten stärker verwende. Ich werde mich da vorher nochmal genauer informieren, wie und wo ich was anschließen muss. Ich denke da lag der Fehler. Kurzschluss oder so.
Dass zu unterlassen meine ich !
Wenn 3 Monate kein Fehler geschieht ... lag es daran,
und wenn die die MT Welt und Server - und funktionierende RPis wichtig sind, kaufe lieber noch einen und probiere an dem herum.
Human has no future (climate change)
If urgend, you find me in Roblox (as CNXThomas)

User avatar
jjk1
Member
Posts: 385
Joined: Sun Mar 10, 2019 17:00
GitHub: jjk4
IRC: jjk1
In-game: jjk1
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by jjk1 » Post

jjk1 wrote:
Sat Aug 28, 2021 14:56
Solange ich nicht weiß, wie ich das Zeug anschließen muss, lasse ich erstmal die Finger von den GPIOs.
Habe ich doch geschrieben. Ich hab mich jetzt für die Arduino-Variante entschieden.

User avatar
jjk1
Member
Posts: 385
Joined: Sun Mar 10, 2019 17:00
GitHub: jjk4
IRC: jjk1
In-game: jjk1
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by jjk1 » Post

Hallo zusammen,

Ich habe mich nun dazu Entschieden, aufgrund der Crashes abzuschalten und mit einem neuen zu starten. Der neue Server soll aber besser vorbereitet sein, der alte wird während der Vorbereitungsphase noch weiterhin bestehen bleiben. Zur muss vor der Eröffnung:

• Ein Spawn zum Großteil fertig werden. Hierzu habe ich schon einen Seed und jeder ist dazu eingeladen, daran mitzubauen. Genaueres weiter unten.
• Ein Regelwerk, sowohl für die Spieler, als auch für Teammitglieder erstellt werden.
• Ein Wiki, sowohl online, als auch ingame erstellt werden, welches alle wichtigen Systeme auf dem Server erklärt ( Mods und Grundmechaniken von MineClone )
• Über Mods diskutiert und abgestimmt werden.

Als Game soll weiterhin MineClone2 verwendet werden, auch wenn der Server dann früher oder später wieder zurückgesetzt werden muss. Wenn man ein WIP Projekt spielt, muss man eben damit rechnen. Folgende Dinge sollen verhindern, dass das Problem nochmal auftritt:

• Die Map des vorherigen Servers war auf 3 unterschiedlichen Datenträgern. Durch das Hin- und Herkopieren könnten Fehler in der Map entstanden sein (nur eine Vermutung). Jetzt bleibt die Map auf der SSD.
• Es sollen häufiger und automatisch Backups gemacht werde.
• Vielleicht hat sich an MineClone2 in der Zwischenzeit etwas geändert.
• Ganz, ganz viel Hoffnung

Nun noch einmal zum Spawn: Der Spawnbuild Server läuft auf Port 30002 auf derselben IP, wie auch der andere Server. Er läuft mit Kreativmodus, sodass sich die Ressourcen nicht erst erfarmt werden müssen, dazu ist der Server auch nicht da, der Spawn ist von einer Mauer aus Barriereblöcken umgeben.
Jeder, der joint, hat fly, fast, spawn und shout, kann also nichts bauen, sich aber umschauen. Wer gerne bauen möchte, erstellt sich einen Account und gibt ir Bescheid. Ich werde dann entscheiden, ob ich demjenigen interact Rechte geben möchte oder nicht. Regeln für diesen Spawnbuild-Server sind:

• Höflich bleiben
• Die Barrieremauer darf nicht durchbrochen bzw. überschritten werden. Das gilt sowohl für Builder, als auch für Zuschauer.
• Portale dürfen gebaut, aber nicht entzündet werden

Mods sind aktuell folgende:

• areas (viewtopic.php?t=7239)
• drawers (viewtopic.php?t=17134)
• email (viewtopic.php?t=13754)
• ess (viewtopic.php?t=23624)
• invhack (viewtopic.php?t=12440)
• mapserver (https://github.com/minetest-mapserver/mapserver_mod)
• protector redo (viewtopic.php?t=9376)
• money (https://github.com/ChaosWormz/minetest-money)
• random_messages (viewtopic.php?t=6306)
• ranks (viewtopic.php?t=17640)
• rename (viewtopic.php?t=21658)
• replacer (viewtopic.php?t=4676)
• smartshop (viewtopic.php?t=14304)
• stats (viewtopic.php?t=8127)
• tps_teleport (viewtopic.php?t=14629)
• travelnet (viewtopic.php?t=4877)
• woodcutting (viewtopic.php?t=18023)
• worldedit (viewtopic.php?t=572)
• xban2 (viewtopic.php?t=9315)
• mcl_copper (https://content.minetest.net/packages/NO11/mcl_copper/)
• mcl_more_ore_variants (https://content.minetest.net/packages/N ... _variants/)
• mcl_nether_gold (https://content.minetest.net/packages/N ... ther_gold/)
• mcl_deepslate (https://content.minetest.net/packages/N ... deepslate/)
• mcl_raw_ores (https://content.minetest.net/packages/N ... _raw_ores/)
• mcl_spyglass (https://content.minetest.net/packages/N ... _spyglass/)
• mcl_blackstone (https://github.com/debian044/mcl_blackstone)

Wer noch weitere Ideen hat oder ein Argument hat, warum Mod xy nicht auf dem Server sein soll, kann sich bei mir melden.

Zu den Teammitgliedern: Ich bedanke mich bei allen Teammitgliedern, die mir im letzten Jahr geholfen haben. Ich würde mich auch freuen, einige von euch wiederzusehen.

Webseite: Es soll eine Webseite entstehen, die, wie schon erwähnt, ein Wiki und ein Regelwerk enthalten soll. Außerdem wird man dadurch auf den Mapserver zugreifen können und es wird die statistics Oberfläche von activivan wieder verwendet. Die Seite würde ich gerne programmieren. Es sei denn, es findet sich zufälligerweise ein PHP Experte, der das besser macht als ich.

Das war jetzt einiges an Info und ich hab wahrscheinlich wieder was vergessen…

soeren06
Member
Posts: 657
Joined: Fri Jan 03, 2020 15:17
In-game: soeren

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by soeren06 » Post

jjk1 wrote:
Mon Sep 13, 2021 15:59
Hallo zusammen,

Ich habe mich nun dazu Entschieden, aufgrund der Crashes abzuschalten und mit einem neuen zu starten. Der neue Server soll aber besser vorbereitet sein, der alte wird während der Vorbereitungsphase noch weiterhin bestehen bleiben. Zur muss vor der Eröffnung:

• Ein Spawn zum Großteil fertig werden. Hierzu habe ich schon einen Seed und jeder ist dazu eingeladen, daran mitzubauen. Genaueres weiter unten.
• Ein Regelwerk, sowohl für die Spieler, als auch für Teammitglieder erstellt werden.
• Ein Wiki, sowohl online, als auch ingame erstellt werden, welches alle wichtigen Systeme auf dem Server erklärt ( Mods und Grundmechaniken von MineClone )
• Über Mods diskutiert und abgestimmt werden.

Als Game soll weiterhin MineClone2 verwendet werden, auch wenn der Server dann früher oder später wieder zurückgesetzt werden muss. Wenn man ein WIP Projekt spielt, muss man eben damit rechnen. Folgende Dinge sollen verhindern, dass das Problem nochmal auftritt:

• Die Map des vorherigen Servers war auf 3 unterschiedlichen Datenträgern. Durch das Hin- und Herkopieren könnten Fehler in der Map entstanden sein (nur eine Vermutung). Jetzt bleibt die Map auf der SSD.
• Es sollen häufiger und automatisch Backups gemacht werde.
• Vielleicht hat sich an MineClone2 in der Zwischenzeit etwas geändert.
• Ganz, ganz viel Hoffnung

Nun noch einmal zum Spawn: Der Spawnbuild Server läuft auf Port 30002 auf derselben IP, wie auch der andere Server. Er läuft mit Kreativmodus, sodass sich die Ressourcen nicht erst erfarmt werden müssen, dazu ist der Server auch nicht da, der Spawn ist von einer Mauer aus Barriereblöcken umgeben.
Jeder, der joint, hat fly, fast, spawn und shout, kann also nichts bauen, sich aber umschauen. Wer gerne bauen möchte, erstellt sich einen Account und gibt ir Bescheid. Ich werde dann entscheiden, ob ich demjenigen interact Rechte geben möchte oder nicht. Regeln für diesen Spawnbuild-Server sind:

• Höflich bleiben
• Die Barrieremauer darf nicht durchbrochen bzw. überschritten werden. Das gilt sowohl für Builder, als auch für Zuschauer.
• Portale dürfen gebaut, aber nicht entzündet werden

Mods sind aktuell folgende:

• areas (viewtopic.php?t=7239)
• drawers (viewtopic.php?t=17134)
• email (viewtopic.php?t=13754)
• ess (viewtopic.php?t=23624)
• invhack (viewtopic.php?t=12440)
• mapserver (https://github.com/minetest-mapserver/mapserver_mod)
• protector redo (viewtopic.php?t=9376)
• money (https://github.com/ChaosWormz/minetest-money)
• random_messages (viewtopic.php?t=6306)
• ranks (viewtopic.php?t=17640)
• rename (viewtopic.php?t=21658)
• replacer (viewtopic.php?t=4676)
• smartshop (viewtopic.php?t=14304)
• stats (viewtopic.php?t=8127)
• tps_teleport (viewtopic.php?t=14629)
• travelnet (viewtopic.php?t=4877)
• woodcutting (viewtopic.php?t=18023)
• worldedit (viewtopic.php?t=572)
• xban2 (viewtopic.php?t=9315)
• mcl_copper (https://content.minetest.net/packages/NO11/mcl_copper/)
• mcl_more_ore_variants (https://content.minetest.net/packages/N ... _variants/)
• mcl_nether_gold (https://content.minetest.net/packages/N ... ther_gold/)
• mcl_deepslate (https://content.minetest.net/packages/N ... deepslate/)
• mcl_raw_ores (https://content.minetest.net/packages/N ... _raw_ores/)
• mcl_spyglass (https://content.minetest.net/packages/N ... _spyglass/)
• mcl_blackstone (https://github.com/debian044/mcl_blackstone)

Wer noch weitere Ideen hat oder ein Argument hat, warum Mod xy nicht auf dem Server sein soll, kann sich bei mir melden.

Zu den Teammitgliedern: Ich bedanke mich bei allen Teammitgliedern, die mir im letzten Jahr geholfen haben. Ich würde mich auch freuen, einige von euch wiederzusehen.

Webseite: Es soll eine Webseite entstehen, die, wie schon erwähnt, ein Wiki und ein Regelwerk enthalten soll. Außerdem wird man dadurch auf den Mapserver zugreifen können und es wird die statistics Oberfläche von activivan wieder verwendet. Die Seite würde ich gerne programmieren. Es sei denn, es findet sich zufälligerweise ein PHP Experte, der das besser macht als ich.

Das war jetzt einiges an Info und ich hab wahrscheinlich wieder was vergessen…
hi jjk1 ! ich würde liebend gerne mit bauen . wenns geht so von montag bis donnerstag habe ich schule also nur mittags zeiten ab 15 uhr oder so . sonst freitag etwas früher ab 13 uhr 30 und samstag bis sonntag ist volle zeit so von 8 uhr früh bis was weis ich vlt 22 uhr maimum

soeren06
Member
Posts: 657
Joined: Fri Jan 03, 2020 15:17
In-game: soeren

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by soeren06 » Post

und vlt meine whitestone mod für mineclone ? wenn ja dann bitte warten bis neue update also raus ist mit neue txt habe ein fehler bei der ersten gemacht zuviel pixel und größe bzw nicht 16x16
aber jetzt gibts bald kene fehler mehr beim 2 update meiner mod 0.0.2 sozusagen gehts wieder und für notfalls habe ich die generier scribt raus gemacht .

Toadie
Member
Posts: 34
Joined: Tue Dec 03, 2019 08:07
In-game: Toadie

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by Toadie » Post

Moins,
Bug bei dem "Marker"
Marker werden mit
/
@
/
Stock / Apfel / Stock gecraftet. Auf dem Server fehlen aber Äpfel.
Gibt es ein InGame Mail ?

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by debiankaios » Post

/mail username nachricht

User avatar
jjk1
Member
Posts: 385
Joined: Sun Mar 10, 2019 17:00
GitHub: jjk4
IRC: jjk1
In-game: jjk1
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by jjk1 » Post

Toadie wrote:
Tue Sep 14, 2021 05:51
Moins,
Bug bei dem "Marker"
Marker werden mit
/
@
/
Stock / Apfel / Stock gecraftet. Auf dem Server fehlen aber Äpfel.
Gibt es ein InGame Mail ?
Das prüfe ich, wenn ich mal Zeit hab. So eilig ist das nicht. Die Markers Mod wird nicht gerade oft genutzt.

debian044
Member
Posts: 68
Joined: Sun Jan 31, 2021 13:01
GitHub: debian044
In-game: debian44 debian42
Location: Somewhere inside a Wall

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by debian044 » Post

Gibt es schon spezielle Pläne für den Spawn?
Oder ist das Ziel einfach, dass er schön aussehen soll?
Und gibt es vorgaben für den Baustil?
My mods: Blackstone
cdb_45f029b53618

User avatar
jjk1
Member
Posts: 385
Joined: Sun Mar 10, 2019 17:00
GitHub: jjk4
IRC: jjk1
In-game: jjk1
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by jjk1 » Post

Spezielle Pläne gibt es nicht. Soll einfach schön aussehen. Vielleicht gibt es ja auch noch das ein oder andere Informative, das man einbauen kann.Der Baustil sollte eben zusammenpassen. Also keine Betonbunker, sonder eher Häuser aus Holz und Stein.

soeren06
Member
Posts: 657
Joined: Fri Jan 03, 2020 15:17
In-game: soeren

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by soeren06 » Post

jjk1 wrote:
Tue Oct 12, 2021 16:48
Spezielle Pläne gibt es nicht. Soll einfach schön aussehen. Vielleicht gibt es ja auch noch das ein oder andere Informative, das man einbauen kann.Der Baustil sollte eben zusammenpassen. Also keine Betonbunker, sonder eher Häuser aus Holz und Stein.
wie/was /wo zu häuser so deko häuser oder ?
weill sonst könnte ich es mal machen ?
oder was gibts spiziele häuser noch fürs spawn was ich bauen könnte

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: [Server 5.3.0] jjk1's Mineclone2 Server

by debiankaios » Post

jjk1 wrote:
Mon Jan 04, 2021 07:45
Zwischen dem letzte und dem Vorherigen Stand liegen ja auch fast schon zwei Wochen. Also so oft mach ich das nun auch wieder nicht. Aber irgendwie hast du Recht. Da verwende ich meine Zeit lieber zum Bauen. (Oder um ein Skript zu schreiben, dass die stats automatisch auswertet :).)
Hast du das schon, ich würde es gerne auch für meinen Server nutzen :)

User avatar
jjk1
Member
Posts: 385
Joined: Sun Mar 10, 2019 17:00
GitHub: jjk4
IRC: jjk1
In-game: jjk1
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by jjk1 » Post

soeren06 wrote:
Tue Oct 19, 2021 04:39
jjk1 wrote:
Tue Oct 12, 2021 16:48
Spezielle Pläne gibt es nicht. Soll einfach schön aussehen. Vielleicht gibt es ja auch noch das ein oder andere Informative, das man einbauen kann.Der Baustil sollte eben zusammenpassen. Also keine Betonbunker, sonder eher Häuser aus Holz und Stein.
wie/was /wo zu häuser so deko häuser oder ?
weill sonst könnte ich es mal machen ?
oder was gibts spiziele häuser noch fürs spawn was ich bauen könnte
Die Häuser sollten hauptsächlich zur Deko sein, ja.
debiankaios wrote:
Wed Oct 20, 2021 13:17
jjk1 wrote:
Mon Jan 04, 2021 07:45
Zwischen dem letzte und dem Vorherigen Stand liegen ja auch fast schon zwei Wochen. Also so oft mach ich das nun auch wieder nicht. Aber irgendwie hast du Recht. Da verwende ich meine Zeit lieber zum Bauen. (Oder um ein Skript zu schreiben, dass die stats automatisch auswertet :).)
Hast du das schon, ich würde es gerne auch für meinen Server nutzen :)
Ich glaube, das ist das aktuelle:

Code: Select all

from configparser import ConfigParser
from datetime import datetime
import sqlite3
from sqlite3 import Error
import json
import os
import ast
import subprocess
import re

# CONFIGURATION
configFile = '/home/pi/minetest_server/02mineclone_server/scripts/statsconfig.ini'
config = ConfigParser()
config.read(configFile)

statsTxtPath = config['config']['statsTxtPath']
accountsFilePath = config['config']['accountsFilePath']
profilehomesPath = config['config']['profilehomesPath']
outputJsonPath = config['config']['outputJsonPath']
authSqlitePath = config['config']['authSqlitePath']
admin = config['config']['admin']
# -------------

# Connect to auth.sqlite database
def connectDatabase():
    conn = None

    try:
        conn = sqlite3.connect(authSqlitePath)
    except Error as e:
        print(e)

    return conn

# Get last_login from database function
def getLastLogin(pname):
    conn = connectDatabase()

    sql = 'SELECT last_login FROM auth WHERE name = "' + pname + '"'

    cur = conn.cursor()
    cur.execute(sql)

    unix = cur.fetchall()

    if len(unix) == 0:
        return None
    else:
        return datetime.fromtimestamp(unix[0][0]).replace(microsecond=0).isoformat()

# Delete stats.json if it exists
if os.path.exists(outputJsonPath):
    os.remove(outputJsonPath)

# Replacements for stats.txt and accounts file to dictionary
replacements = {
                    '=': ':',
                    '[': '',
                    ']': '',
                    'return ': ''
                }

# Declares stats empty
stats = {}

# Imports stats.txt file as string
with open(statsTxtPath, 'r') as  statsTxt:
    statsTxtString = statsTxt.readline()

# Imports accounts file as string
with open(accountsFilePath, 'r') as accountsFile:
    accountsFileString = accountsFile.readline()

# Import profile homes file as string
with open(profilehomesPath, 'r') as profilehomesFile:
    profilehomesFileString = profilehomesFile.readline()

# Replaces stats.txt, accounts and profilehomes String with replacements
for search_for in replacements:
    replace_with = replacements[search_for]

    statsTxtString = statsTxtString.replace(search_for, replace_with)
    accountsFileString = accountsFileString.replace(search_for, replace_with)
    profilehomesFileString = profilehomesFileString.replace(search_for, replace_with)

# Converts Stats String to Dictionary
stats['players'] = ast.literal_eval(statsTxtString)

# Converts Accounts String to Dictionary
accountsFileDict = ast.literal_eval(accountsFileString)

# Converts profilehomes string to Dictionary
profilehomesFileDict = ast.literal_eval(profilehomesFileString)

# Statistics Categories
categories = [
        'digged_nodes',
        'placed_nodes',
        'money',
        'died',
        'played_time',
        'crafted'
]

# Delete Players with category as name
for toDelete in categories:
    if toDelete in stats['players']:
        del stats['players'][toDelete]

# Sets total key in stats
stats['total'] = {}

# Conversions
for name in stats['players']:
    # Converts played_time to hours
    stats['players'][name]['played_time'] = round((stats['players'][name]['played_time']/60)/60, 2)

    # Adds money amount to player
    if name in accountsFileDict:
        stats['players'][name]['money'] = accountsFileDict[name]['money']

    # Adds profile home pos to player
    if name in profilehomesFileDict:
        stats['players'][name]['profilehome'] = str(profilehomesFileDict[name]['profilehome']['x']) + '/' + str(profilehomesFileDict[name]['profilehome']['z'])

    for category in list(stats['players'][name]):
        if category != 'profilehome':
            # Rounds all values
            stats['players'][name][category] = round(stats['players'][name][category], 2)
            
            # Adds value to total of category
            if category in stats['total']:
                stats['total'][category] = stats['total'][category] + stats['players'][name][category]
            else:
                stats['total'][category] = 0
            
            # Removes entries with zero as value
            if stats['players'][name][category] == 0:
                del stats['players'][name][category]

    # Add last login
    stats['players'][name]['last_login'] = getLastLogin(name)
       
# Removes admins money entry
stats['total']['money'] - stats['players'][admin]['money']
del stats['players'][admin]['money']

# Adds account count
stats['playercount'] = len(stats['players'])

# Round totals of categories
for category in categories:
    stats['total'][category] = round(stats['total'][category], 2)

# Calculates and adds Server Size in GB
sub1 = subprocess.check_output("/usr/bin/du -sh /home/pi/minetest_server/02mineclone_server/worlds/", shell=True)
sizestring = sub1.decode("utf-8")
sizestring2 = sizestring.replace(",", ".")
sizestring3 = re.findall(r"[-+]?\d*\.\d+|\d+", sizestring2)
stats['size'] = str(sizestring3[0])

# Adds current time in ISO format
stats['stand'] = datetime.now().replace(microsecond=0).isoformat()

# Creates stats.json File
with open(outputJsonPath, 'w') as statsjson:
    statsjson.write(json.dumps(stats, indent=2))

print('Minetest Playerstats successfully saved to JSON file')
ist von activivan

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by debiankaios » Post

danke

soeren06
Member
Posts: 657
Joined: Fri Jan 03, 2020 15:17
In-game: soeren

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by soeren06 » Post

jjk1 wrote:
Wed Oct 20, 2021 15:23
soeren06 wrote:
Tue Oct 19, 2021 04:39
jjk1 wrote:
Tue Oct 12, 2021 16:48
Spezielle Pläne gibt es nicht. Soll einfach schön aussehen. Vielleicht gibt es ja auch noch das ein oder andere Informative, das man einbauen kann.Der Baustil sollte eben zusammenpassen. Also keine Betonbunker, sonder eher Häuser aus Holz und Stein.
wie/was /wo zu häuser so deko häuser oder ?
weill sonst könnte ich es mal machen ?
oder was gibts spiziele häuser noch fürs spawn was ich bauen könnte
Die Häuser sollten hauptsächlich zur Deko sein, ja.
debiankaios wrote:
Wed Oct 20, 2021 13:17
jjk1 wrote:
Mon Jan 04, 2021 07:45
Zwischen dem letzte und dem Vorherigen Stand liegen ja auch fast schon zwei Wochen. Also so oft mach ich das nun auch wieder nicht. Aber irgendwie hast du Recht. Da verwende ich meine Zeit lieber zum Bauen. (Oder um ein Skript zu schreiben, dass die stats automatisch auswertet :).)
Hast du das schon, ich würde es gerne auch für meinen Server nutzen :)
Ich glaube, das ist das aktuelle:

Code: Select all

from configparser import ConfigParser
from datetime import datetime
import sqlite3
from sqlite3 import Error
import json
import os
import ast
import subprocess
import re

# CONFIGURATION
configFile = '/home/pi/minetest_server/02mineclone_server/scripts/statsconfig.ini'
config = ConfigParser()
config.read(configFile)

statsTxtPath = config['config']['statsTxtPath']
accountsFilePath = config['config']['accountsFilePath']
profilehomesPath = config['config']['profilehomesPath']
outputJsonPath = config['config']['outputJsonPath']
authSqlitePath = config['config']['authSqlitePath']
admin = config['config']['admin']
# -------------

# Connect to auth.sqlite database
def connectDatabase():
    conn = None

    try:
        conn = sqlite3.connect(authSqlitePath)
    except Error as e:
        print(e)

    return conn

# Get last_login from database function
def getLastLogin(pname):
    conn = connectDatabase()

    sql = 'SELECT last_login FROM auth WHERE name = "' + pname + '"'

    cur = conn.cursor()
    cur.execute(sql)

    unix = cur.fetchall()

    if len(unix) == 0:
        return None
    else:
        return datetime.fromtimestamp(unix[0][0]).replace(microsecond=0).isoformat()

# Delete stats.json if it exists
if os.path.exists(outputJsonPath):
    os.remove(outputJsonPath)

# Replacements for stats.txt and accounts file to dictionary
replacements = {
                    '=': ':',
                    '[': '',
                    ']': '',
                    'return ': ''
                }

# Declares stats empty
stats = {}

# Imports stats.txt file as string
with open(statsTxtPath, 'r') as  statsTxt:
    statsTxtString = statsTxt.readline()

# Imports accounts file as string
with open(accountsFilePath, 'r') as accountsFile:
    accountsFileString = accountsFile.readline()

# Import profile homes file as string
with open(profilehomesPath, 'r') as profilehomesFile:
    profilehomesFileString = profilehomesFile.readline()

# Replaces stats.txt, accounts and profilehomes String with replacements
for search_for in replacements:
    replace_with = replacements[search_for]

    statsTxtString = statsTxtString.replace(search_for, replace_with)
    accountsFileString = accountsFileString.replace(search_for, replace_with)
    profilehomesFileString = profilehomesFileString.replace(search_for, replace_with)

# Converts Stats String to Dictionary
stats['players'] = ast.literal_eval(statsTxtString)

# Converts Accounts String to Dictionary
accountsFileDict = ast.literal_eval(accountsFileString)

# Converts profilehomes string to Dictionary
profilehomesFileDict = ast.literal_eval(profilehomesFileString)

# Statistics Categories
categories = [
        'digged_nodes',
        'placed_nodes',
        'money',
        'died',
        'played_time',
        'crafted'
]

# Delete Players with category as name
for toDelete in categories:
    if toDelete in stats['players']:
        del stats['players'][toDelete]

# Sets total key in stats
stats['total'] = {}

# Conversions
for name in stats['players']:
    # Converts played_time to hours
    stats['players'][name]['played_time'] = round((stats['players'][name]['played_time']/60)/60, 2)

    # Adds money amount to player
    if name in accountsFileDict:
        stats['players'][name]['money'] = accountsFileDict[name]['money']

    # Adds profile home pos to player
    if name in profilehomesFileDict:
        stats['players'][name]['profilehome'] = str(profilehomesFileDict[name]['profilehome']['x']) + '/' + str(profilehomesFileDict[name]['profilehome']['z'])

    for category in list(stats['players'][name]):
        if category != 'profilehome':
            # Rounds all values
            stats['players'][name][category] = round(stats['players'][name][category], 2)
            
            # Adds value to total of category
            if category in stats['total']:
                stats['total'][category] = stats['total'][category] + stats['players'][name][category]
            else:
                stats['total'][category] = 0
            
            # Removes entries with zero as value
            if stats['players'][name][category] == 0:
                del stats['players'][name][category]

    # Add last login
    stats['players'][name]['last_login'] = getLastLogin(name)
       
# Removes admins money entry
stats['total']['money'] - stats['players'][admin]['money']
del stats['players'][admin]['money']

# Adds account count
stats['playercount'] = len(stats['players'])

# Round totals of categories
for category in categories:
    stats['total'][category] = round(stats['total'][category], 2)

# Calculates and adds Server Size in GB
sub1 = subprocess.check_output("/usr/bin/du -sh /home/pi/minetest_server/02mineclone_server/worlds/", shell=True)
sizestring = sub1.decode("utf-8")
sizestring2 = sizestring.replace(",", ".")
sizestring3 = re.findall(r"[-+]?\d*\.\d+|\d+", sizestring2)
stats['size'] = str(sizestring3[0])

# Adds current time in ISO format
stats['stand'] = datetime.now().replace(microsecond=0).isoformat()

# Creates stats.json File
with open(outputJsonPath, 'w') as statsjson:
    statsjson.write(json.dumps(stats, indent=2))

print('Minetest Playerstats successfully saved to JSON file')
ist von activivan
Ok dann bau ich bei nächster Gelegenheit Häuser

chmod 000 -R /
Member
Posts: 42
Joined: Tue Jan 05, 2021 17:57
GitHub: chmodsayshello
IRC: chmodsayshello HalloWarNiemalsHier
In-game: hallo chmodsayshello

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by chmod 000 -R / » Post

Ich hätte eine Idee für den Spawn auf dem Testserver, könnte man nicht anstelle eines Hebels einen Tageslichtsensor auf den Laternen platzieren, welchen man rechtsklickt, um ihm umzukehren, somit gehen die Lampen von alleine bei Nacht an und bei Tag wieder aus, sofern sie unter freiem Himmel stehen.

User avatar
jjk1
Member
Posts: 385
Joined: Sun Mar 10, 2019 17:00
GitHub: jjk4
IRC: jjk1
In-game: jjk1
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by jjk1 » Post

Ein alter Mineclone Bug... Das funktioniert so leider nicht.

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by debiankaios » Post

Dann nehme doch den Tageslichtsensor (ohne rechtsklick) und plaziere darunter eine fackel.

chmod 000 -R /
Member
Posts: 42
Joined: Tue Jan 05, 2021 17:57
GitHub: chmodsayshello
IRC: chmodsayshello HalloWarNiemalsHier
In-game: hallo chmodsayshello

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by chmod 000 -R / » Post

Ich habe einen Weg gefunden, mit dem die Tageslichtsensoren wieder funktionieren, wie genau hab ich in der mineclone2 topic beschrieben

User avatar
jjk1
Member
Posts: 385
Joined: Sun Mar 10, 2019 17:00
GitHub: jjk4
IRC: jjk1
In-game: jjk1
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by jjk1 » Post

Okay, ich denke mal, dass das bald gefixt wird...

chmod 000 -R /
Member
Posts: 42
Joined: Tue Jan 05, 2021 17:57
GitHub: chmodsayshello
IRC: chmodsayshello HalloWarNiemalsHier
In-game: hallo chmodsayshello

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by chmod 000 -R / » Post

jjk1 wrote:
Mon Nov 29, 2021 15:44
Okay, ich denke mal, dass das bald gefixt wird...
Mein Fix für die Sensoren ist in der neusten Mineclone 2 Version vorhanden (https://git.minetest.land/MineClone2/Mi ... pulls/1928) bzw. in der Github-Repo im master branch.
Man könnte also das mit den automatischen Laternen am neuem Spawn in betracht ziehen.

User avatar
debiankaios
Member
Posts: 910
Joined: Thu Dec 03, 2020 12:48
IRC: debiankaios
In-game: debiankaios Nowe
Location: germany
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by debiankaios » Post

Super!! Ich habe mein Passwort vergessen, gerade wo ich inruhe am Abend spielen wollte!

User avatar
jjk1
Member
Posts: 385
Joined: Sun Mar 10, 2019 17:00
GitHub: jjk4
IRC: jjk1
In-game: jjk1
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by jjk1 » Post

Sag mir, ob ichs ändern soll, dann schick ich dir ein neues per PM.

User avatar
jjk1
Member
Posts: 385
Joined: Sun Mar 10, 2019 17:00
GitHub: jjk4
IRC: jjk1
In-game: jjk1
Contact:

Re: [Server 5.4.1] jjk1's Mineclone2 Server

by jjk1 » Post

chmod 000 -R / wrote:
Fri Dec 10, 2021 19:18
jjk1 wrote:
Mon Nov 29, 2021 15:44
Okay, ich denke mal, dass das bald gefixt wird...
Mein Fix für die Sensoren ist in der neusten Mineclone 2 Version vorhanden (https://git.minetest.land/MineClone2/Mi ... pulls/1928) bzw. in der Github-Repo im master branch.
Man könnte also das mit den automatischen Laternen am neuem Spawn in betracht ziehen.
Hab mal auf die neuste Version geupdatet

Post Reply

Who is online

Users browsing this forum: No registered users and 7 guests