mtasa-resources icon indicating copy to clipboard operation
mtasa-resources copied to clipboard

admin2: Add GUI panel for mute

Open omar-o22 opened this issue 3 months ago • 12 comments

Summary

  • This PR adds a proper mute system with a new GUI and fixes #108.
  • Previously, mutes were just a toggle and expired on reconnect.
  • Now, admins can set a duration, and the mute duration only counts while the player is connected (it pauses if the player disconnects).

Preview:

image

Edited

I did a mention for issue 106 by mistake

omar-o22 avatar Sep 18 '25 11:09 omar-o22

Also it's not very user friendly if you want to set a custom time, say 1 month, right now you'd have to open calculator to see how many seconds are in a month. Nobody wants to mute someone for less than 1 minute anyway, so at least the box should be minutes not seconds, and or have different boxes, so you can put amount of seconds, minutes, hours, or days.

ArranTuna avatar Sep 18 '25 14:09 ArranTuna

I agree mute duration should be minutes by default, but also allow other units of measurement for custom needs (seconds, hours..)

Fernando-A-Rocha avatar Sep 18 '25 14:09 Fernando-A-Rocha

Alright, I’ll start working on the fix tonight.

omar-o22 avatar Sep 18 '25 14:09 omar-o22

If you close admin panel while the mute GUI is open, it doesn't close, and then after that I clicked close (with console) and GUI won't close.

It works correctly for me. can u explain more what u did?

omar-o22 avatar Sep 18 '25 15:09 omar-o22

You're right, what you have to do is, press mute twice, then close the panel and you're stuck with a second panel. So basically when you click mute, don't make another GUI if one already exists.

ArranTuna avatar Sep 18 '25 17:09 ArranTuna

I don't think this quite resolves #108, as it mutes are not able to persist if the server or resource restarts. There will also need to be a new tab to view, modify, and delete existing mutes.

I don't know where to save the data because admin2 saves some data in conf/***.xml and some in admin.db too So should I save data in admin.db or create a new xml file?

omar-o22 avatar Sep 19 '25 09:09 omar-o22

You're right, what you have to do is, press mute twice, then close the panel and you're stuck with a second panel. So basically when you click mute, don't make another GUI if one already exists.

I don't know where to save the data because admin2 saves some data in conf/***.xml and some in admin.db too So should I save data in admin.db or create a new xml file?

Use this existing connection to admin.db:

connection = dbConnect("sqlite", "admin.db"),

And use the dbExec and dbQuery functions and use dbQuery call back function feature.

ArranTuna avatar Sep 19 '25 09:09 ArranTuna

Thanks for the review. I've included everything in the last commit, I implemented mute duration in seconds, same as bans, since I reused the ban code as a base, I'll create another PR to update ban dialog (adds radio boxes seconds, minutes, etc...) And update mute/ban details style soon

omar-o22 avatar Sep 22 '25 07:09 omar-o22

I added a mute on myself and don't see it in mutes tab and refresh button is disabled?

ArranTuna avatar Sep 22 '25 09:09 ArranTuna

I added a mute on myself and don't see it in mutes tab and refresh button is disabled?

You need to update your acl.xml because I added some new access

<right name="general.tab_mutes" access="true"></right>
<right name="command.listmute" access="true"></right>

omar-o22 avatar Sep 22 '25 09:09 omar-o22

I added a mute on myself and don't see it in mutes tab and refresh button is disabled?

You need to update your acl.xml because I added some new access

<right name="general.tab_mutes" access="true"></right>
<right name="command.listmute" access="true"></right>

New ACL rights need to be added to ACL.xml, otherwise the admin2 resource won’t add them with the rest of the rights on start.

xLive avatar Sep 22 '25 09:09 xLive

I added a mute on myself and don't see it in mutes tab and refresh button is disabled?

You need to update your acl.xml because I added some new access

<right name="general.tab_mutes" access="true"></right>
<right name="command.listmute" access="true"></right>

New ACL rights need to be added to ACL.xml, otherwise the admin2 resource won’t add them with the rest of the rights on start.

Ty, I thought I should make a PR in mtasa-blue to update the ACL, but I didn’t see this file.

omar-o22 avatar Sep 22 '25 09:09 omar-o22