Distinzione tra leave e disband | quando leader gruppo abbandona, ne viene designato un altro in automatico
This commit is contained in:
parent
4a8b2df837
commit
394da76abe
10
commands.lua
10
commands.lua
@ -10,6 +10,16 @@ ChatCmdBuilder.new("party", function(cmd)
|
||||
parties.join(sender)
|
||||
end)
|
||||
|
||||
-- abbandono
|
||||
cmd:sub("leave", function(sender)
|
||||
parties.leave(sender)
|
||||
end)
|
||||
|
||||
-- scioglimento
|
||||
cmd:sub("disband", function(sender)
|
||||
parties.disband(sender)
|
||||
end)
|
||||
|
||||
end,{})
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
# textdomain: parties
|
||||
|
||||
# party_manager.lua
|
||||
[!] Only the party leader can invite!=[!] Può invitare solo il capo gruppo!
|
||||
[!] Only the party leader can perform this action=[!] Solo il capo gruppo può eseguire quest'azione!
|
||||
[!] You can't invite yourself!=[!] Non ci si può invitare da soli!
|
||||
[!] This player is not online!=[!] Questo giocatore non è online!
|
||||
[!] You've already invited this player!=[!] Hai già invitato questo giocatore!
|
||||
@ -18,3 +18,5 @@ You've joined @1's party=Ti sei unito al gruppo di @1
|
||||
The party has been disbanded=Il gruppo è stato sciolto
|
||||
@1 has left the party=@1 è uscito dal gruppo
|
||||
You've left the party=Sei uscito dal gruppo
|
||||
@1 is the new party leader=@1 è il nuovo capo gruppo
|
||||
Party=Gruppo
|
||||
|
@ -4,7 +4,7 @@
|
||||
# textdomain: parties
|
||||
|
||||
# party_manager.lua
|
||||
[!] Only the party leader can invite!=
|
||||
[!] Only the party leader can perform this action!=
|
||||
[!] You can't invite yourself!=
|
||||
[!] This player is not online!=
|
||||
[!] You've already invited this player!=
|
||||
@ -18,3 +18,5 @@ You've joined @1's party=
|
||||
The party has been disbanded=
|
||||
@1 has left the group=
|
||||
You've left the party=
|
||||
@1 is the new party leader=
|
||||
Party=
|
||||
|
@ -11,9 +11,9 @@ local players_invited = {} -- KEY p_name; VALUE: inviter
|
||||
|
||||
function parties.invite(sender, p_name)
|
||||
|
||||
-- se si è in un party ma non si è il capo gruppo
|
||||
-- se si è in un gruppo ma non si è il capo gruppo
|
||||
if players_in_parties[sender] and not current_parties[sender] then
|
||||
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] Only the party leader can invite!")))
|
||||
minetest.chat_send_player(sender, minetest.colorize("#e6482e", S("[!] Only the party leader can perform this action!")))
|
||||
return end
|
||||
|
||||
-- se si invita se stessi
|
||||
@ -50,6 +50,7 @@ end
|
||||
|
||||
function parties.join(p_name)
|
||||
|
||||
-- se non ha nesssun invito
|
||||
if not players_invited[p_name] then
|
||||
minetest.chat_send_player(p_name, minetest.colorize("#e6482e", S("[!] You have no pending invites!")))
|
||||
return end
|
||||
@ -75,33 +76,57 @@ end
|
||||
|
||||
function parties.leave(p_name)
|
||||
|
||||
-- se non si è in un gruppo
|
||||
if not players_in_parties[p_name] then
|
||||
minetest.chat_send_player(p_name, minetest.colorize("#e6482e", S("[!] You must enter a party first!")))
|
||||
return end
|
||||
|
||||
local party_leader = players_in_parties[p_name]
|
||||
|
||||
if current_parties[p_name] then
|
||||
|
||||
for _, pl_name in pairs(current_parties[party_leader]) do
|
||||
players_in_parties[pl_name] = nil
|
||||
end
|
||||
|
||||
parties.chat_send_party(p_name, format_party_message(S("The party has been disbanded")), true)
|
||||
current_parties[party_leader] = nil
|
||||
|
||||
else
|
||||
|
||||
-- rimuovo dal gruppo
|
||||
for k, pl_name in pairs(current_parties[party_leader]) do
|
||||
if pl_name == p_name then
|
||||
current_parties[party_leader][k] = nil
|
||||
end
|
||||
end
|
||||
parties.chat_send_party(p_name, S("@1 has left the party", p_name), true)
|
||||
minetest.chat_send_player(p_name, format_party_message(S("You've left the party")))
|
||||
end
|
||||
|
||||
players_in_parties[p_name] = nil
|
||||
minetest.chat_send_player(p_name, format_party_message(S("You've left the party")), true)
|
||||
|
||||
-- se ad abbandonare è stato il capo gruppo, ne nomino un altro
|
||||
if p_name == party_leader then
|
||||
|
||||
local new_leader = current_parties[party_leader][next(current_parties[party_leader])]
|
||||
|
||||
parties.chat_send_party(new_leader, S("@1 has left the party", p_name), true)
|
||||
parties.change_party_leader(p_name, new_leader)
|
||||
|
||||
else
|
||||
parties.chat_send_party(party_leader, S("@1 has left the party", p_name), true)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
function parties.disband(p_name)
|
||||
|
||||
-- se non si è in un gruppo
|
||||
if not players_in_parties[p_name] then
|
||||
minetest.chat_send_player(p_name, minetest.colorize("#e6482e", S("[!] You must enter a party first!")))
|
||||
return end
|
||||
|
||||
-- se si è in un gruppo ma non si è il capo gruppo
|
||||
if players_in_parties[p_name] and not current_parties[p_name] then
|
||||
minetest.chat_send_player(p_name, minetest.colorize("#e6482e", S("[!] Only the party leader can perform this action!")))
|
||||
return end
|
||||
|
||||
for _, pl_name in pairs(current_parties[p_name]) do
|
||||
players_in_parties[pl_name] = nil
|
||||
end
|
||||
|
||||
parties.chat_send_party(p_name, format_party_message(S("The party has been disbanded")), true)
|
||||
current_parties[p_name] = nil
|
||||
|
||||
end
|
||||
|
||||
@ -120,7 +145,7 @@ end
|
||||
|
||||
|
||||
|
||||
function parties.is_players_party_leader(p_name)
|
||||
function parties.is_player_party_leader(p_name)
|
||||
if current_parties[p_name] then return true
|
||||
else return false end
|
||||
end
|
||||
@ -149,6 +174,22 @@ end
|
||||
|
||||
|
||||
|
||||
function parties.change_party_leader(old_leader, new_leader)
|
||||
|
||||
current_parties[new_leader] = {}
|
||||
|
||||
for k, v in pairs(current_parties[old_leader]) do
|
||||
current_parties[new_leader][k] = v
|
||||
players_in_parties[v] = new_leader
|
||||
end
|
||||
|
||||
current_parties[old_leader] = nil
|
||||
parties.chat_send_party(new_leader, S("@1 is the new party leader", new_leader), true)
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------
|
||||
@ -170,5 +211,5 @@ end
|
||||
----------------------------------------------
|
||||
|
||||
function format_party_message(msg)
|
||||
return minetest.colorize("#ddffdd", "[Party] " .. msg)
|
||||
return minetest.colorize("#ddffdd", "[" .. S("Party") .. "] " .. msg)
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user