implemented utils 'is_player_invited', 'cancel_invite' and getter 'get_inviter'

master
Zughy 2020-07-19 16:08:44 +02:00
parent 2fff4fa55a
commit 8d9a3281be
3 changed files with 38 additions and 5 deletions

View File

@ -6,13 +6,16 @@ Because it's always good to understand the API without surfing the code, init? :
### 1.1 Utils
* `parties.is_player_invited(p_name)`: (bool) checks whether a player has a pending invite
* `parties.is_player_in_party(p_name)`: (bool) checks whether a player is in any party
* `parties.is_player_party_leader(p_name)`: (bool) checks whether a player is the party leader of any party
* `parties.chat_send_party(p_name, msg, as_broadcast)`: (nil) sends a message to every player inside the party where `p_name` is (`p_name` doesn't necessarily have to be the party leader). If `as_broadcast` is true, it'll be sent without following Minetest chat format. If false, `p_name` will be pointed as the sender when formatting the message
* `parties.change_party_leader(old_leader, new_leader)`: (nil) changes the party leader
* `parties.cancel_invite(p_name)`: (nil) cancels a pending invite
### 1.2 Getters
* `parties.get_inviter(p_name)`: (string) returns the name of the player who invited `p_name`, if an event is pending
* `parties.get_party_leader(p_name)`: (string) returns the party leader of the party where `p_name` is in
* `parties.get_party_members(party_leader)`: (table) returns a list of every player inside the party where `party_leader` is in

32
api.lua
View File

@ -28,7 +28,7 @@ function parties.invite(sender, p_name)
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] This player is not online!")))
return end
-- se è già stato invitato
-- se è già stato invitato dalla stessa persona
if players_invited[p_name] and players_invited[p_name] == sender then
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] You've already invited this player!")))
return end
@ -56,9 +56,11 @@ function parties.invite(sender, p_name)
-- se non ha accettato dopo 15 secondi, annullo l'invito
minetest.after(15, function()
if minetest.get_player_by_name(sender) and minetest.get_player_by_name(p_name) and players_invited[p_name] and players_invited[p_name] == sender then
if players_invited[p_name] and players_invited[p_name] == sender then
players_invited[p_name] = nil
minetest.chat_send_player(sender, format_party_message(minetest.colorize("#ededed", S("No answer from @1...", p_name))))
if minetest.get_player_by_name(sender) then
minetest.chat_send_player(sender, format_party_message(minetest.colorize("#ededed", S("No answer from @1...", p_name))))
end
end
end)
end
@ -114,6 +116,8 @@ function parties.leave(p_name)
minetest.chat_send_player(p_name, minetest.colorize("#e6482e", S("[!] You must enter a party first!")))
return end
-- se si aveva invitato qualcuno
local party_leader = players_in_parties[p_name]
-- rimuovo dal gruppo
@ -191,6 +195,13 @@ end
--------------------UTILS---------------------
----------------------------------------------
function parties.is_player_invited(p_name)
if players_invited[p_name] then return true
else return false end
end
function parties.is_player_in_party(p_name)
if players_in_parties[p_name] then return true
else return false end
@ -246,12 +257,23 @@ end
function parties.cancel_invite(p_name)
players_invited[p_name] = nil
end
----------------------------------------------
-----------------GETTERS----------------------
----------------------------------------------
function parties.get_inviter(p_name)
return players_invited[p_name]
end
function parties.get_party_leader(p_name)
return players_in_parties[p_name]
end
@ -262,6 +284,10 @@ function parties.get_party_members(party_leader)
return current_parties[party_leader]
end
----------------------------------------------
---------------FUNZIONI LOCALI----------------
----------------------------------------------

View File

@ -2,7 +2,11 @@ minetest.register_on_leaveplayer(function(player)
local p_name = player:get_player_name()
if not parties.is_player_in_party(p_name) then return end
if parties.is_player_in_party(p_name) then
parties.leave(p_name)
end
parties.leave(p_name)
if parties.is_player_invited(p_name) then
parties.cancel_invite(p_name)
end
end)