Versuch Neuer Server um livestats zu testen

Antworten
Benutzeravatar
RonXTCdaBass
Site Admin
Site Admin
Beiträge: 78
Registriert: 11.01.2025, 05:57
Wohnort: Berlin
Has thanked: 1 time
Geschlecht:
Kontaktdaten:
Germany

Versuch Neuer Server um livestats zu testen

Beitrag von RonXTCdaBass »

hab so viel korrigiert was als Fehler und Warnung angezeigt wurde, aber das Ding hier bekomm ich nicht weg :

Code: Alles auswählen

-------------
  Separator
-------------

2025-12-09 08:22:28: WARNING[Main]: Requested content info has type "unknown" (at E:\Portable\Game_Downloads\LUANTI_MineTest\textures\base-old\)
2025-12-09 08:22:28: WARNING[Main]: Requested content info has type "unknown" (at E:\Portable\Game_Downloads\LUANTI_MineTest\textures\hell\)
2025-12-09 08:25:16: WARNING[ServerStart]: Mod registry at E:\Portable\Game_Downloads\LUANTI_MineTest\mods\statspack\registry:
2025-12-09 08:25:16: WARNING[ServerStart]: 	depends.txt is deprecated, please use mod.conf instead.
2025-12-09 08:25:16: WARNING[ServerStart]: Mod livestats at E:\Portable\Game_Downloads\LUANTI_MineTest\mods\statspack\livestats:
2025-12-09 08:25:16: WARNING[ServerStart]: 	depends.txt is deprecated, please use mod.conf instead.
2025-12-09 08:25:16: ACTION[ServerStart]: World at [E:\Portable\Game_Downloads\LUANTI_MineTest\bin\..\worlds\minimumtest]
2025-12-09 08:25:16: ACTION[ServerStart]: Server for gameid="minetest" listening on [::]:30000.
2025-12-09 08:25:16: ERROR[Main]: ServerError: AsyncErr: Lua: Runtime error from mod 'livestats' in callback environment_Step(): ...nloads\LUANTI_MineTest\mods\statspack\livestats\init.lua:73: bad argument #2 to 'max' (number expected, got nil)
2025-12-09 08:25:16: ERROR[Main]: stack traceback:
2025-12-09 08:25:16: ERROR[Main]: 	[C]: in function 'max'
2025-12-09 08:25:16: ERROR[Main]: 	...nloads\LUANTI_MineTest\mods\statspack\livestats\init.lua:73: in function <...nloads\LUANTI_MineTest\mods\statspack\livestats\init.lua:29>
2025-12-09 08:25:16: ERROR[Main]: 	...loads\LUANTI_MineTest\bin\..\builtin\common\register.lua:27: in function <...loads\LUANTI_MineTest\bin\..\builtin\common\register.lua:13>
2025-12-09 08:25:17: ACTION[ServerStop]: Server: Shutting down

und hier die "livestats\init.lua":

Code: Alles auswählen

--------------------------------------------------------
-- Minetest :: LiveStats Mod v1.1 (livestats)
--
-- See README.txt for licensing and other information.
-- Copyright (c) 2018-2019, Leslie Ellen Krause
--
-- ./games/minetest_game/mods/livestats/init.lua
--   minetest.mkdir(livestats.basepath .. "/js")
--------------------------------------------------------
local MP = minetest.get_modpath("livestats")

livestats = {
  basepath = minetest.get_worldpath() .. "/livestats"
  }
  
local export_timer = 0 local export_filespec = (livestats.basepath .. "/minetest.js") local export_player_bounds = { x_min = -400, x_max = 400, z_min = -400, z_max = 400, y_min = -55 } local server_uptime = 0.0 local server_max_lag = 0.0 local server_avg_lag = 0.0 local rtime = 1 local xtime = 20 minetest.register_globalstep( function( dtime ) rtime = rtime + dtime xtime = xtime + dtime -- every 20 seconds export server and player stats if export_filespec and xtime >= 20 then local file, err = io.open( export_filespec, "w" ) local ctime = os.time( ) local env_time = minetest.get_timeofday( ) * 24 * 60 local env_date = minetest.get_day_count( ) if err then return end file:write( string.format( 'mt_server_stats = { uptime: %d, max_lag: %0.2f, avg_lag: %0.2f };\n', server_uptime, server_max_lag, server_avg_lag ) ) file:write( string.format( 'mt_locale_stats = { env_date: %d, env_time: %d };\n', env_date, env_time ) ) file:write( 'mt_player_stats = [\n' ) for i, p in ipairs( registry.player_list ) do local pos = p.obj:getpos( ) local hp = p.obj:get_hp( ) local bounds = export_player_bounds if pos.x >= bounds.x_min and pos.x <= bounds.x_max and pos.z >= bounds.z_min and pos.z <= bounds.z_max and pos.y >= bounds.y_min then file:write( string.format( '\t{ name: "%s", rank: %d, time: %d, skin: "%s", life: %d, horz: %d, vert: %d },\n', p.name, p.rank - 1, ctime - p.newtime, skins.skins[ p.name ], hp, pos.x, pos.z ) ) else file:write( string.format( '\t{ name: "%s", rank: %d, time: %d, skin: "%s", life: %d, horz: null, vert: null },\n', p.name, p.rank - 1, ctime - p.newtime, skins.skins[ p.name ], hp ) ) end end file:write( '];\n' ) file:close( ) xtime = 0 end -- every second record server max_lag and avg_lag if rtime >= 1 then local s = minetest.get_server_status( ) server_uptime, server_avg_lag = string.match( s, "uptime=([0-9.]+), max_lag=([0-9.]+)" ) server_uptime = tonumber( server_uptime ) server_avg_lag = tonumber( server_avg_lag ) server_max_lag = math.max( server_max_lag, server_avg_lag ) rtime = 0 end end ) minetest.register_on_shutdown( function( ) if not export_filespec then return end local file, err = io.open( export_filespec, "w" ) if err then return end file:write( 'mt_server_stats = null;\n' ) file:close( ) end ) minetest.register_chatcommand( "top", { description = "Show realtime information about the server", privs = "privs", func = function( name, param ) local page_size = 10 local page_idx = 1 local get_formspec = function( ) local server_addr = minetest.setting_get( "server_address" ) local server_port = minetest.setting_get( "port" ) local formspec = "size[10.5,8.5]" .. default.gui_bg .. default.gui_bg_img .. string.format( "label[0.1,0.0;%s]label[0.1,0.5;%s]", minetest.colorize( "#888888", "localtime:" ), os.date( "%X" ) ) .. string.format( "label[4.0,0.0;%s]label[4.0,0.5.0;%dm %02ds]", minetest.colorize( "#888888", "uptime:" ), server_uptime / 60, server_uptime % 60 ) .. string.format( "label[6.0,0.0;%s]label[6.0,0.5;%0.2fs]", minetest.colorize( "#888888", "avg_lag:" ), server_avg_lag ) .. string.format( "label[7.5,0.0;%s]label[7.5,0.5.0;%0.2fs]", minetest.colorize( "#888888", "max_lag:" ), server_max_lag ) .. string.format( "label[9.0,0.0;%s]label[9.0,0.5;%d of %d]", minetest.colorize( "#888888", "cur_users:" ), #registry.player_list, minetest.setting_get( "max_users" ) ) .. string.format( "label[0.1,7.5;%s]label[0.1,8.0;%s]", minetest.colorize( "#888888", "address:" ), server_addr ~= "" and server_addr or "localhost" ) .. string.format( "label[4,7.5.0;%s]label[4.0,8.0;%d]", minetest.colorize( "#888888", "port:" ), server_port ) .. string.format( "label[0.1,1.5;%s]label[1.0,1.5;%s]label[4.0,1.5;%s]label[6.5,1.5;%s]label[9.0,1.5;%s]", minetest.colorize( "#888888", "uid:" ), minetest.colorize( "#888888", "name:" ), minetest.colorize( "#888888", "rank:" ), minetest.colorize( "#888888", "address:" ), minetest.colorize( "#888888", "lifetime:" ) ) .. "button[7.5,7.5;1,1;prev;<<]" .. string.format( "label[8.5,7.8;%d of %d]", page_idx, math.max( math.ceil( #registry.player_list / page_size ) ) ) .. "button[9.5,7.5;1,1;next;>>]" .. "box[0.0,1.2;10.3,0.1;#111111]" .. "box[0.0,7.2;10.3,0.1;#111111]" local num = 0 local ctime = os.time( ) for idx = ( page_idx - 1 ) * page_size + 1, math.min( page_idx * page_size, #registry.player_list ) do local p = registry.player_list[ idx ] local address = minetest.get_player_information( p.name ).address local lifetime = ctime - p.newtime local vert = 2.0 + num * 0.5 formspec = formspec .. string.format( "label[0.1,%0.1f;%03d]", vert, p.pid ) .. string.format( "image[1.0,%0.1f;0.3,0.6;%s_preview.png]", vert, skins.skins[ p.name ] ) .. string.format( "label[1.5,%0.1f;%s]", vert, minetest.colorize( registry.rank_colors[ p.rank ], p.name ) ) .. string.format( "label[4.0,%0.1f;%s]", vert, registry.rank_titles[ p.rank ] ) .. string.format( "label[6.5,%0.1f;%s]", vert, address ) .. string.format( "label[9.0,%0.1f;%dm %02ds]", vert, math.floor( lifetime / 60 ), lifetime % 60 ) num = num + 1 end return formspec end minetest.create_form( nil, name, get_formspec( ), function ( meta, player, fields ) if fields.quit == minetest.FORMSPEC_SIGTIME then minetest.update_form( player, get_formspec( meta.page ) ) elseif fields.prev and page_idx > 1 then page_idx = page_idx - 1 minetest.update_form( player, get_formspec( ) ) elseif fields.next and page_idx < #registry.player_list / page_size then page_idx = page_idx + 1 minetest.update_form( player, get_formspec( ) ) end end ) minetest.get_form_timer( name ).start( 2.5 ) return true end, })

Ordner und Dateien:

e:\Portable\Game_Downloads\LUANTI_MineTest\mods\statspack\livestats\init.lua
e:\Portable\Game_Downloads\LUANTI_MineTest\mods\statspack\livestats\depends.txt
e:\Portable\Game_Downloads\LUANTI_MineTest\mods\statspack\livestats\mod.conf
e:\Portable\Game_Downloads\LUANTI_MineTest\mods\statspack\livestats\README.txt

1.Es zählt nicht wie lang man lebt, sondern wie intensiv. 2.Euer Mond ist meine Sonne, Euer Montag - mein Sonntag.
:star:Psy:notes:Love:hearts:IsMy:notes:Love:star:

Bild Bild

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast