Gagner un item en PVP

French
Post Reply
User avatar
shiva
Member
Posts: 121
Joined: Tue Sep 16, 2014 22:00
In-game: shiva35
Location: En Bretagne :-)
Contact:

Gagner un item en PVP

by shiva » Post

Slt à tous,

Existe t-il un mod qui permet de gagner certain item quand on tue un autre joueur ?
Si pas de mod comment faudrait t-il coder cela ?

merci

User avatar
fwhcat
Member
Posts: 26
Joined: Thu Aug 04, 2016 14:36
GitHub: fwhcat
IRC: fwhcat
In-game: fwhcat

Re: Gagner un item en PVP

by fwhcat » Post

Salut, il faudrait coder un mod pour cela.

Code: Select all

minetest.register_on_dieplayer(
  function(player)
    --1) retrouver le tueur
    --2) donner au tueur un item
  end
)
Meowww

User avatar
fwhcat
Member
Posts: 26
Joined: Thu Aug 04, 2016 14:36
GitHub: fwhcat
IRC: fwhcat
In-game: fwhcat

Re: Gagner un item en PVP

by fwhcat » Post

Pour retrouver le tueur, il faudrait stocker le dernier joueur qui l'a tapé,

en utilisant la méthode

Code: Select all

 minetest.register_on_punchplayer()
Tu peux trouver ça dans le mod pvpplus ici par exemple:

https://github.com/MT-Eurythmia/pvpplus ... p.lua#L130
Meowww

User avatar
shiva
Member
Posts: 121
Joined: Tue Sep 16, 2014 22:00
In-game: shiva35
Location: En Bretagne :-)
Contact:

Re: Gagner un item en PVP

by shiva » Post

Je viens de voir ta réponse et entre temps j'ai trouvé :)

Code: Select all

minetest.register_on_punchplayer(function(player, hitter, _, _, _, damage)
    if not (hitter and hitter:is_player()) then
        return
    end

    local hp = player:get_hp()
    if hp - damage > 0 or hp <= 0 then
        return
    end

    local hitter_name = hitter:get_player_name()
    local player_name = player:get_player_name()

    minetest.chat_send_all("==+> ["..hitter_name.."] viens de gagner 5 pièces de cuivres pour avoir tué ["..player_name.."]")
    minetest.chat_send_player(hitter_name, "==+> vous venez de gagner 5 pièces de cuivres")

    local itemstack = ItemStack("maptools:copper_coin 5")

    if not itemstack:is_empty() then
        local receiverref = minetest.get_player_by_name(hitter_name)
        if receiverref then
            receiverref:get_inventory():add_item("main", itemstack)
        end
    end
end)

User avatar
fwhcat
Member
Posts: 26
Joined: Thu Aug 04, 2016 14:36
GitHub: fwhcat
IRC: fwhcat
In-game: fwhcat

Re: Gagner un item en PVP

by fwhcat » Post

Question con
local receiverref = minetest.get_player_by_name(hitter_name)
if receiverref then
receiverref:get_inventory():add_item("main", itemstack)
end
ça n'aurait pas marché avec directement

Code: Select all

hitter:get_inventory():add_item("main", itemstack)
?
Meowww

User avatar
shiva
Member
Posts: 121
Joined: Tue Sep 16, 2014 22:00
In-game: shiva35
Location: En Bretagne :-)
Contact:

Re: Gagner un item en PVP

by shiva » Post

Et si, je modifie. Merci bien :)

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot] and 3 guests