Ygor reports: The respawn screen should didp ... #642

Open
opened 2021-06-10 15:56:57 +00:00 by yourland-report · 8 comments

Ygor reports a bug:

The respawn screen should didplay the coordinates of my death.

Player position:

{
	y = -2067.2990722656,
	x = 1351.8210449219,
	z = 1325.8000488281
}

Player look:

{
	y = -0.99852722883224,
	x = -0.0030379672534764,
	z = -0.054167982190847
}

Player information:

{
	min_rtt = 0.01799999922514,
	max_rtt = 2.1700000762939,
	connection_uptime = 344,
	max_jitter = 0.98400002717972,
	minor = 4,
	major = 5,
	ip_version = 6,
	formspec_version = 4,
	patch = 1,
	protocol_version = 39,
	serialization_version = 28,
	lang_code = "",
	version_string = "5.4.1",
	avg_rtt = 0.020999999716878,
	state = "Active",
	avg_jitter = 0.057000003755093,
	min_jitter = 0,
	address = "::ffff:176.199.209.66"
}

Player meta:

{
	fields = {
		["3d_armor_inventory"] = "return {\"\", \"\", \"\", \"\", \"\", \"\"}",
		played_time = "284303",
		jointime = "1621808949",
		yl_commons_player_joined = "1623340311",
		["signslib:pos"] = "(1352,-1538,1327)",
		digged_nodes = "28747",
		bitten = "0",
		yl_church = "return {[\"last_death\"] = {[\"y\"] = -1481, [\"x\"] = 1343, [\"z\"] = 1322}, [\"last_death_portal\"] = 1623025736}",
		["stamina:level"] = "15",
		xp = "25094",
		arenalib_infobox_arenaID = "0",
		crafted = "177",
		died = "21",
		punch_count = "654",
		placed_nodes = "3203",
		hud_state = "on",
		repellant = "0",
		yl_commons_player_created = "1621808949"
	}
}

Log identifier


[MOD] yl_report log identifier = RJ59Wuy6riVXCuAAzsZxP3ymBFo07cXw

Profiler save:

profile-20210610T175657.json_pretty

Status:

# Server: version=5.4.1-yl, uptime=86553, max_lag=2.79944, clients={Ygor, cole, alexandre2005, mindfrost, gamer15, Annalysa, Boot, MilesPacis, Bingo, whosit, DeepDweller, debian44, Oakenshield, AliasAlreadyTaken, Bailiff}
Ygor reports a bug: > The respawn screen should didplay the coordinates of my death. Player position: ``` { y = -2067.2990722656, x = 1351.8210449219, z = 1325.8000488281 } ``` Player look: ``` { y = -0.99852722883224, x = -0.0030379672534764, z = -0.054167982190847 } ``` Player information: ``` { min_rtt = 0.01799999922514, max_rtt = 2.1700000762939, connection_uptime = 344, max_jitter = 0.98400002717972, minor = 4, major = 5, ip_version = 6, formspec_version = 4, patch = 1, protocol_version = 39, serialization_version = 28, lang_code = "", version_string = "5.4.1", avg_rtt = 0.020999999716878, state = "Active", avg_jitter = 0.057000003755093, min_jitter = 0, address = "::ffff:176.199.209.66" } ``` Player meta: ``` { fields = { ["3d_armor_inventory"] = "return {\"\", \"\", \"\", \"\", \"\", \"\"}", played_time = "284303", jointime = "1621808949", yl_commons_player_joined = "1623340311", ["signslib:pos"] = "(1352,-1538,1327)", digged_nodes = "28747", bitten = "0", yl_church = "return {[\"last_death\"] = {[\"y\"] = -1481, [\"x\"] = 1343, [\"z\"] = 1322}, [\"last_death_portal\"] = 1623025736}", ["stamina:level"] = "15", xp = "25094", arenalib_infobox_arenaID = "0", crafted = "177", died = "21", punch_count = "654", placed_nodes = "3203", hud_state = "on", repellant = "0", yl_commons_player_created = "1621808949" } } ``` Log identifier ``` [MOD] yl_report log identifier = RJ59Wuy6riVXCuAAzsZxP3ymBFo07cXw ``` Profiler save: ``` profile-20210610T175657.json_pretty ``` Status: ``` # Server: version=5.4.1-yl, uptime=86553, max_lag=2.79944, clients={Ygor, cole, alexandre2005, mindfrost, gamer15, Annalysa, Boot, MilesPacis, Bingo, whosit, DeepDweller, debian44, Oakenshield, AliasAlreadyTaken, Bailiff} ```
AliasAlreadyTaken was assigned by yourland-report 2021-06-10 15:56:57 +00:00
whosit added the
1. kind/enhancement
label 2021-06-10 23:28:07 +00:00
Owner

I'm under the impression this would cut into the priest/portal mechanics (at least their balance), therefore a no fix.

But what if someone wants to teleport to their bones and a different player rushes in and uses the portal directly after them and closes the first portal, then the first player is forced to spend another gold to open the "right" portal again... yeah, that's bad behavior by the speeding player, but I don't think that would justify something like this.

Still no fix.

I'm under the impression this would cut into the priest/portal mechanics (at least their balance), therefore a no fix. But what if someone wants to teleport to their bones and a different player rushes in and uses the portal directly after them and closes the first portal, then the first player is forced to spend another gold to open the "right" portal again... yeah, that's bad behavior by the speeding player, but I don't think that would justify something like this. Still no fix.
Styxcolor added the
5. result/wontfix
4. step/question
labels 2021-10-31 00:44:26 +00:00
Styxcolor removed the
5. result/wontfix
label 2021-11-03 03:19:35 +00:00
Styxcolor self-assigned this 2021-11-03 03:19:39 +00:00
Owner

Talked with Alias, actually I'm wrong here, Alias does want to give you the coordinates but also change the death screen itself to a Your Land specific one. We're talking something that needs C++ though, so unfortunately it can take a while until we get this fixed.

Talked with Alias, actually I'm wrong here, Alias does want to give you the coordinates but also change the death screen itself to a Your Land specific one. We're talking something that needs C++ though, so unfortunately it can take a while until we get this fixed.
Styxcolor removed the
4. step/question
label 2021-11-06 19:23:23 +00:00

Temporarily you are shown your death coords.

Temporarily you are shown your death coords.
Member

The death screen is hard-coded on the client side.

There's a moribund PR to change this:

https://github.com/minetest/minetest/pull/8014

The death screen is hard-coded on the client side. There's a moribund PR to change this: https://github.com/minetest/minetest/pull/8014

Looks like they want to close this feature and it requires not only a server change, but also a client one. That's something we can't roll out ourselves I'm afraid.

Looks like they want to close this feature and it requires not only a server change, but also a client one. That's something we can't roll out ourselves I'm afraid.
flux added the
3. source/engine
label 2022-06-30 20:18:41 +00:00

playing around with the mt api a bit I stumbled across an idea for this...
It feels very hacky, but it works well on my singleplayerworld...

local death_formspec = "size[11,5.5]"..
		"label[4.85,1.35;You died but this is a custom formspec]"..
		"button_exit[4,3;3,0.5;respawn;Respawn]"

minetest.register_on_dieplayer(function(player, reason)
    minetest.after(0, function() 		  -- make sure this loads after the engine death spec is shown
        if not player then return end
        local playername = player:get_player_name()
        minetest.show_formspec(playername, "death:respawn", death_formspec)
    end)
end)

minetest.register_on_player_receive_fields(function(player, formname, fields) 
    if formname == "death:respawn" then   -- needs much more checks to prevent exploitation
                                          -- or can we leave it like this since respawn == /spawn?
      player:respawn()
    end
end)

A minetest.close_formspec(playername, "") could be added to close the engine death formspec before, but show_formspec removes it relieable too. (Note that this would require to move the show_formspec into a minetest.after again)

It still needs some checks to make sure the player who wants to respawn is actually dead...
And a camera repositioning. Atm it's in the bones block in my singleplayer testworld.

Another point are players who leave while beeing dead... They would be redirected to the default death formspec when rejoining. But YL seems to have it's own system to deal with dead joining players (at least I logged off dead but after relog I was alive on spawn)

Not sure if this is fixed on YL already, but I am able to send a dead player any formspec. So if there is no respawn option in this fs, the player will exist in some sort of undead state until relog. I remember beeing in that state twice when a guy attacked popular mt-servers and created terrible lag on YL. You can take stuff from bones, walk around and create log entries like that... ACTION[Server]: Server: singleplayer tried to interact while dead; ignoring. (Alias saw that, that's why I found out I'm undead...)
But beeing dead without a respawn option is another issue than this one.

playing around with the mt api a bit I stumbled across an idea for this... It feels very hacky, but it works well on my singleplayerworld... ```lua local death_formspec = "size[11,5.5]".. "label[4.85,1.35;You died but this is a custom formspec]".. "button_exit[4,3;3,0.5;respawn;Respawn]" minetest.register_on_dieplayer(function(player, reason) minetest.after(0, function() -- make sure this loads after the engine death spec is shown if not player then return end local playername = player:get_player_name() minetest.show_formspec(playername, "death:respawn", death_formspec) end) end) minetest.register_on_player_receive_fields(function(player, formname, fields) if formname == "death:respawn" then -- needs much more checks to prevent exploitation -- or can we leave it like this since respawn == /spawn? player:respawn() end end) ``` A `minetest.close_formspec(playername, "")` could be added to close the engine death formspec before, but `show_formspec` removes it relieable too. (Note that this would require to move the `show_formspec` into a `minetest.after` again) It still needs some checks to make sure the player who wants to respawn is actually dead... And a camera repositioning. Atm it's in the bones block in my singleplayer testworld. Another point are players who leave while beeing dead... They would be redirected to the default death formspec when rejoining. But YL seems to have it's own system to deal with dead joining players (at least I logged off dead but after relog I was alive on spawn) Not sure if this is fixed on YL already, but I am able to send a dead player any formspec. So if there is no respawn option in this fs, the player will exist in some sort of undead state until relog. I remember beeing in that state twice when a guy attacked popular mt-servers and created terrible lag on YL. You can take stuff from bones, walk around and create log entries like that... `ACTION[Server]: Server: singleplayer tried to interact while dead; ignoring.` (Alias saw that, that's why I found out I'm undead...) But beeing dead without a respawn option is another issue than this one.
Member

Might work. But then the player closes the screen - and forgets about the coordinates.

IIRC there was a book planned that the priests could sell(?) with death coordinates. Guess the priests could use more income...

Might work. But then the player closes the screen - and forgets about the coordinates. IIRC there was a book planned that the priests could sell(?) with death coordinates. Guess the priests could use more income...
Member

close the engine death formspec before

only one formspec can be shown at a time, showing another automatically closes what's already open (which is honestly a big flaw, as anyone who's ever had the game reset the password they were typing when the server list loads. there's an engine issue for that somewhere).

YL seems to have it's own system to deal with dead joining players

yeah this is to avoid a bug, where the death message is over-ridden on join by the server news message, and the player then cannot respawn.

... priests could sell(?) with death coordinates

#1099 (cf. #2478, #3097, #4634)


this is a decent proposal actually, i'm embarrassed i never considered it. it does inherently create a race condition whereby the player may see two death messages if they dismiss the client-generated one quickly enough. however, other than momentary confusion, there's no real downside to that.

> close the engine death formspec before only one formspec can be shown at a time, showing another automatically closes what's already open (which is honestly a big flaw, as anyone who's ever had the game reset the password they were typing when the server list loads. there's an engine issue for that somewhere). > YL seems to have it's own system to deal with dead joining players yeah this is to avoid a bug, where the death message is over-ridden on join by the server news message, and the player then cannot respawn. > ... priests could sell(?) with death coordinates #1099 (cf. #2478, #3097, #4634) --------- this is a decent proposal actually, i'm embarrassed i never considered it. it does inherently create a race condition whereby the player may see *two* death messages if they dismiss the client-generated one quickly enough. however, other than momentary confusion, there's no real downside to that.
Sign in to join this conversation.
No Milestone
No project
6 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: your-land/bugtracker#642
No description provided.