Sokomine reports: attacking a whale might lead t ... #2684

Open
opened 2022-09-15 00:29:14 +00:00 by yourland-report · 12 comments

Sokomine reports a bug:

attacking a whale might lead to the player beeing swallowed by one - and ending up in a bulit whales' belly, having to get out :-)

Player position:

{
	z = 1154.3530273438,
	x = 1999.9069824219,
	y = 14.5
}

Player look:

{
	z = -0.35873439908028,
	x = -0.93016576766968,
	y = -0.078111104667187
}

Player information:

{
	min_rtt = 0.01799999922514,
	max_rtt = 5.3289999961853,
	avg_rtt = 0.019999999552965,
	min_jitter = 0,
	max_jitter = 5.1859998703003,
	avg_jitter = 0,
	connection_uptime = 9276,
	serialization_version = 29,
	minor = 7,
	version_string = "5.7.0-dev-debug-464043b8a-dirty",
	lang_code = "",
	formspec_version = 6,
	state = "Active",
	patch = 0,
	ip_version = 6,
	major = 5,
	protocol_version = 40
}

Player meta:

{
	fields = {
		partychat = "main",
		arenalib_infobox_arenaID = "0",
		["unified_inventory:bags"] = "return {\"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"water_life:croc_bag\"}",
		["stamina:exhaustion"] = "3",
		["ocean_build.ocean_built"] = "5",
		hud_state = "on",
		xp = "1408905",
		repellant = "0",
		punch_count = "126042",
		["stamina:level"] = "8",
		["3d_armor_inventory"] = "return {\"\", \"3d_armor:helmet_crystal\", \"shields:shield_rainbow\", \"3d_armor:chestplate_crystal\", \"3d_armor:boots_crystal\", \"3d_armor:leggings_crystal\"}",
		jointime = "1617905120",
		placed_nodes = "235979",
		died = "27",
		crafted = "389479",
		digged_nodes = "1272366",
		bitten = "0",
		yl_commons_thankyou = "176",
		["ethereal:fly_timer"] = "-99",
		["ocean_build.last_warning"] = "1.65032e+09",
		inflicted_damage = "2503094",
		played_time = "8860705",
		["signslib:pos"] = "(-5,4,22399)",
		yl_commons_player_created = "1617905120",
		yl_commons_player_joined = "1663192672",
		yl_church = "return {[\"last_death_portal\"] = 1662938623, [\"last_heal\"] = 1651158714, [\"last_death\"] = {[\"x\"] = 300, [\"y\"] = 28970, [\"z\"] = 21472}}",
		["stamina:poisoned"] = "no"
	}
}

Log identifier


[MOD] yl_report log identifier = m0nEBJ8yxBUPemeICxTtIH8Fkja1AKsB

Profiler save:

profile-20220915T002914.json_prettyEE

Status:

# Server: version: 5.5.1-yl | game: Minetest Game | uptime: 1d 2h 36min 23s | max lag: 1.93s | clients: Lupercus, Aislinn123, mrminer, dragon014, the_chosen_one, Bailiff, AliasAlreadyTaken, tur, LeetPeet, niceride, Sokomine, Oakenshield, Xonon, AspireMint, Mielle, Therottenpotato, flux, daydream, Service

Teleport command:

/teleport xyz 2000 15 1154

Compass command:

/give_compass Construction m0nEBJ8yxBUPemeICxTtIH8Fkja1AKsB D2691E 2000 15 1154
Sokomine reports a bug: > attacking a whale might lead to the player beeing swallowed by one - and ending up in a bulit whales' belly, having to get out :-) Player position: ``` { z = 1154.3530273438, x = 1999.9069824219, y = 14.5 } ``` Player look: ``` { z = -0.35873439908028, x = -0.93016576766968, y = -0.078111104667187 } ``` Player information: ``` { min_rtt = 0.01799999922514, max_rtt = 5.3289999961853, avg_rtt = 0.019999999552965, min_jitter = 0, max_jitter = 5.1859998703003, avg_jitter = 0, connection_uptime = 9276, serialization_version = 29, minor = 7, version_string = "5.7.0-dev-debug-464043b8a-dirty", lang_code = "", formspec_version = 6, state = "Active", patch = 0, ip_version = 6, major = 5, protocol_version = 40 } ``` Player meta: ``` { fields = { partychat = "main", arenalib_infobox_arenaID = "0", ["unified_inventory:bags"] = "return {\"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"water_life:croc_bag\"}", ["stamina:exhaustion"] = "3", ["ocean_build.ocean_built"] = "5", hud_state = "on", xp = "1408905", repellant = "0", punch_count = "126042", ["stamina:level"] = "8", ["3d_armor_inventory"] = "return {\"\", \"3d_armor:helmet_crystal\", \"shields:shield_rainbow\", \"3d_armor:chestplate_crystal\", \"3d_armor:boots_crystal\", \"3d_armor:leggings_crystal\"}", jointime = "1617905120", placed_nodes = "235979", died = "27", crafted = "389479", digged_nodes = "1272366", bitten = "0", yl_commons_thankyou = "176", ["ethereal:fly_timer"] = "-99", ["ocean_build.last_warning"] = "1.65032e+09", inflicted_damage = "2503094", played_time = "8860705", ["signslib:pos"] = "(-5,4,22399)", yl_commons_player_created = "1617905120", yl_commons_player_joined = "1663192672", yl_church = "return {[\"last_death_portal\"] = 1662938623, [\"last_heal\"] = 1651158714, [\"last_death\"] = {[\"x\"] = 300, [\"y\"] = 28970, [\"z\"] = 21472}}", ["stamina:poisoned"] = "no" } } ``` Log identifier ``` [MOD] yl_report log identifier = m0nEBJ8yxBUPemeICxTtIH8Fkja1AKsB ``` Profiler save: ``` profile-20220915T002914.json_prettyEE ``` Status: ``` # Server: version: 5.5.1-yl | game: Minetest Game | uptime: 1d 2h 36min 23s | max lag: 1.93s | clients: Lupercus, Aislinn123, mrminer, dragon014, the_chosen_one, Bailiff, AliasAlreadyTaken, tur, LeetPeet, niceride, Sokomine, Oakenshield, Xonon, AspireMint, Mielle, Therottenpotato, flux, daydream, Service ``` Teleport command: ``` /teleport xyz 2000 15 1154 ``` Compass command: ``` /give_compass Construction m0nEBJ8yxBUPemeICxTtIH8Fkja1AKsB D2691E 2000 15 1154 ```
AliasAlreadyTaken was assigned by yourland-report 2022-09-15 00:29:14 +00:00
AliasAlreadyTaken added the
1. kind/enhancement
label 2022-09-15 02:02:01 +00:00
Member
https://www.youtube.com/watch?v=D1KCsOT1VaM
Member

cf. #2017

cf. #2017

Or we could make the whale slap the player with its tail, causing a random movement in some direction?

Later, with yl_statuseffects, we could also make it that the whale stuns the player for a bit.

Or we could make the whale slap the player with its tail, causing a random movement in some direction? Later, with yl_statuseffects, we could also make it that the whale stuns the player for a bit.
Member

Later, with yl_statuseffects, we could also make it that the whale stuns the player for a bit.

"stun" is difficult. you can certainly take away the player's ability to move forwards/sideways, but there's currently no way stop players from swimming up or down.

https://github.com/minetest/minetest/issues/6123

> Later, with yl_statuseffects, we could also make it that the whale stuns the player for a bit. "stun" is difficult. you can certainly take away the player's ability to move forwards/sideways, but there's currently no way stop players from swimming up or down. https://github.com/minetest/minetest/issues/6123
flux added a new dependency 2022-11-05 21:42:42 +00:00

Could we not grab the controls and invalidate whatever movement a player requests?

Could we not grab the controls and invalidate whatever movement a player requests?
Member

Maybe attach the player to the whale? But then the player would drown...else we have to build an artificial whale belly elsewhere and teleport the player there.

Maybe attach the player to the whale? But then the player would drown...else we have to build an artificial whale belly elsewhere and teleport the player there.
Member

Could we not grab the controls and invalidate whatever movement a player requests?

for the most-part, no. when SSCSM is developed well, perhaps.

Maybe attach the player to the whale? But then the player would drown...else we have to build an artificial whale belly elsewhere and teleport the player there.

turning a layer of the map into "the belly of the whale" would be awesome. i don't mean a single layer that's the belly of a single whale,but a layer in which whale bellies could be generated as needed.

> Could we not grab the controls and invalidate whatever movement a player requests? for the most-part, no. when SSCSM is developed well, perhaps. > Maybe attach the player to the whale? But then the player would drown...else we have to build an artificial whale belly elsewhere and teleport the player there. turning a layer of the map into "the belly of the whale" would be awesome. i don't mean a single layer that's the belly of a single whale,but a layer in which whale bellies could be generated as needed.

Reading https://github.com/minetest/minetest/blob/master/doc/lua_api.txt#L7223 gives the impression we can grab a player position as soon as we start a stun effect. Then each step get_player_control and . What prevents us? I assume lag?

* `get_player_control()`: returns table with player pressed keys
    * The table consists of fields with the following boolean values
      representing the pressed keys: `up`, `down`, `left`, `right`, `jump`,
      `aux1`, `sneak`, `dig`, `place`, `LMB`, `RMB`, and `zoom`.
    * The fields `LMB` and `RMB` are equal to `dig` and `place` respectively,
      and exist only to preserve backwards compatibility.
    * Returns an empty table `{}` if the object is not a player.

The alternative is to display a fullscreen formspec which returns even if the player presses Esc, until the stun effect runs out.

To make sure, we can remove interact and set_physics_override speed and jump to 0 ?

Reading https://github.com/minetest/minetest/blob/master/doc/lua_api.txt#L7223 gives the impression we can grab a player position as soon as we start a stun effect. Then each step get_player_control and . What prevents us? I assume lag? ``` * `get_player_control()`: returns table with player pressed keys * The table consists of fields with the following boolean values representing the pressed keys: `up`, `down`, `left`, `right`, `jump`, `aux1`, `sneak`, `dig`, `place`, `LMB`, `RMB`, and `zoom`. * The fields `LMB` and `RMB` are equal to `dig` and `place` respectively, and exist only to preserve backwards compatibility. * Returns an empty table `{}` if the object is not a player. ``` The alternative is to display a fullscreen formspec which returns even if the player presses Esc, until the stun effect runs out. To make sure, we can remove interact and set_physics_override speed and jump to 0 ?
Member

Then each step get_player_control and . What prevents us? I assume lag?

player:get_player_control() exists, but

  1. that allows us to see what buttons the player is pressing, not prevent them from pressing buttons, or simulate pressing buttons for them.
  2. get_player_control doesn't provide any info about which buttons a player has pressed - just whether they were holding the button at a particular moment (and bear in mind that the "clock" on the server is only roughly related to the "clock" on the client). if a player is spamming "LMB", the server might never hear about it.

display a fullscreen formspec which returns even if the player presses Esc, until the stun effect runs out.

that might work.

To make sure, we can remove interact and set_physics_override speed and jump to 0 ?

those also work.

let me see what i can whip up.

> Then each step get_player_control and . What prevents us? I assume lag? `player:get_player_control()` exists, but 1. that allows us to see what buttons the player is pressing, not prevent them from pressing buttons, or simulate pressing buttons for them. 2. get_player_control doesn't provide any info about which buttons a player has pressed - just whether they were holding the button at a particular moment (and bear in mind that the "clock" on the server is only roughly related to the "clock" on the client). if a player is spamming "LMB", the server might never hear about it. > display a fullscreen formspec which returns even if the player presses Esc, until the stun effect runs out. that might work. > To make sure, we can remove interact and set_physics_override speed and jump to 0 ? those also work. let me see what i can whip up.
Member

i've created a "stun" effect that we can use if we want: 1aae2633c4

  • when stunned, the player loses movement and jump
  • when stunned, the player loses interact priv
  • when stunned, the player's HUD is covered w/ black
  • when stunned, the player gets a formspec on top of their screen which they can't close for more than a moment.
i've created a "stun" effect that we can use if we want: https://gitea.your-land.de/your-land/yl_statuseffects/commit/1aae2633c40a6880e8ea14f317f649c4e1a6baf2 * when stunned, the player loses movement and jump * when stunned, the player loses interact priv * when stunned, the player's HUD is covered w/ black * when stunned, the player gets a formspec on top of their screen which they can't close for more than a moment.

Let's test this ... "Boris? Could you please attend for a moment?" :D

Let's test this ... "Boris? Could you please attend for a moment?" :D
Member

Let's test this ... "Boris? Could you please attend for a moment?" :D

there's a /stun <player> [<seconds>] command for testing purposes, which requires the "staff" priv.

> Let's test this ... "Boris? Could you please attend for a moment?" :D there's a `/stun <player> [<seconds>]` command for testing purposes, which requires the "staff" priv.
Sign in to join this conversation.
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Depends on
You do not have permission to read 1 dependency
Reference: your-land/bugtracker#2684
No description provided.