Folgender code tut genau das was ich möchte:
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
- Code: Select all
minetest.register_on_punchplayer(
function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage)
if not player or not hitter then
print("[pvpdis] on_punchplayer called with nil objects")
end
local pos = player:getpos()
local playername = player:get_player_name()
local hittername = hitter:get_player_name()
local old_is_protected = minetest.is_protected
if(minetest.is_protected(pos, hittername)) then
print("[pvpdis] Area is owned by " .. playername .. ": PvP inactive")
return true
else
print("[pvpdis] Area is NOT owned by " .. playername .. ": PvP active")
return false
end
return old_is_protected(pos, hittername)
end)
Mein Problem ist, dass ich nicht verstehe warum! Außerdem sind die beiden Debugmeldungen nicht schlüssig für mich. Folgendes soll passieren:
Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
- Code: Select all
|Spieler1 |Spieler2
--------------------+--------------------+--------------------
Gebiet von Spieler1 |macht Schaden |macht keinen Schaden
Gebiet von Spieler2 |macht keinen Schaden|macht Schaden
gehört niemandem |macht Schaden |macht Schaden
gehört einem Fremden|macht keinen Schaden|macht keinen Schaden
Ein Spieler soll also immer nur genau dann Schaden an anderen Spielern verursachen können, wenn das Gebiet auf dem er steht entweder ihm gehört oder niemanden. Wie oben bereits geschrieben klappt das auch. ABER: Wenn das Gebiet von jemand anderem geschützt wurde und somit kein Schaden verursacht werden kann, zeigt mir meine Debugausgabe, dass das Gebiet dem player gehört und somit kein Schaden verursacht werden kann. Genau das stimmt aber nicht.
Was genau prüft denn minetest.is_protected(pos, playername)?
- nur ob pos geschützt ist?
- ob pos von playername geschützt ist?
- ob pos von demjenigen geschützt ist, der den code ausgelöst hat?
Ich habe keine Ahnung was hier geschieht. Wäre prima wenn mich wer erleuchten könnte ;-)
Liebe Grüße,
Hectic