Kick command proposal

Discussions About CyanWorlds.com Engine Client & Plugin
User avatar
D'Lanor
Member
Posts: 142
Joined: Tue Dec 23, 2008 11:23 pm

Kick command proposal

Post by D'Lanor »

And if anyone thought my latest fixes were controversial... ;) here is something that is bound to cause an even greater stir: A /kick command proposal.

For the code see: https://bitbucket.org/D_Lanor/moulscrip ... 4d0915623e

How to use:
Select the player to be kicked in the AGE PLAYERS list (left side of KI) and type: /kick

You can add an optional PM chat message after the command to inform the kicked player.
  • Example 1: /kick I regret to inform you that your presence is no longer required
  • Example 2: /kick Eat this, you filthy scumbag!!!
Due to technical limitations players will not be kicked to their Reltos but to the Nexus! But each disadvantage has an advantage. At least people won't confuse a kick with an accidental panic link.

General rules:
You can only kick players from personal ages you own. You cannot kick players from public ages or city book ages (child ages).

Neighborhoods exception:
The command does not allow kicking from Neighborhoods even if you are an owner.

Sub ages:
The hard part was to make this work with sub ages, which is needed to allow kicking from the Er'cana City Silo/D'ni-Ashem'en (a sub age of Er'cana) and Ahnonay (which is in fact a sub age of the Ahnonay Cathedral). A sub age never has an owner, so the command checks if you are the owner of the main age before letting you kick anyone.
Delin and Tsogal are also sub ages. However, since they are sub ages of a neighborhood kicking is not allowed here, unless you happen to be the sole owner of the neighborhood in question.

Visitor revocation:
As an additional feature this command also revokes all the existing age visitor invitations of the kicked player. This part does not require age ownership so do not fool around with the kick command lightly!
Unfortunately visitor revocation is not effective in MOULa because private links do not disappear until the banned visitor has logged out. That means kicked players will be able to return from the Nexus immediately and you may have to kick them repeatedly.

Technical notes:
- With the exception of Neighborhood this was coded in a generalized way without using hard coded age names.
- This commit comes with a re-usable function for sub age checking (InSubAge).
- Development testing has been done on the Windring shard.

And remember... With great power comes great responsibility.


Let the fighting... I mean... discussions begin! ;)
User avatar
JWPlatt
Member
Posts: 1137
Joined: Sun Dec 07, 2008 7:32 pm
Location: Everywhere, all at once

Re: Kick command proposal

Post by JWPlatt »

Without making any moral judgments on this, I think I'd prefer "/kick <user> <msg>" over an age list click for <user>. During lag because of high population, an age list click gets squirrely. And the mixed mode between graphical click and textual command to complete a single action seems disjointed/counter-intuitive. Maybe clicking age list <user> could at least insert <user> into the text stream (if there is a command ('/') pending) to help complete the command.

<msg> might be optional.
Perfect speed is being there.
Deledrius
Member
Posts: 99
Joined: Sun Dec 28, 2008 6:29 pm

Re: Kick command proposal

Post by Deledrius »

It's late for me, so I haven't looked too hard at the code yet or thought too much about the intricacies, but I like this in theory. I'm not really the target audience, but I've seen people asking for this and it looks like what you've got here satisfies those requests and is fairly surgical in concept while doing so. :)


Edit: I agree with JW's suggestion regarding the command. Something not to be taken lightly should always require specificity. ;)

One question: Why can a non-Age-owner revoke invites? I'm tired so perhaps I'm missing it, but that seems a bit scary.
User avatar
D'Lanor
Member
Posts: 142
Joined: Tue Dec 23, 2008 11:23 pm

Re: Kick command proposal

Post by D'Lanor »

JWPlatt wrote:Without making any moral judgments on this, I think I'd prefer "/kick <user> <msg>" over an age list click for <user>. During lag because of high population, an age list click gets squirrely. And the mixed mode between graphical click and textual command to complete a single action seems disjointed/counter-intuitive. Maybe clicking age list <user> could at least insert <user> into the text stream (if there is a command ('/') pending) to help complete the command.

<msg> might be optional.
The player selection avoids typo errors, plus it is a short and easy way to implement the PM feature. Ditch the age list selection and the PM goes with it (I don't feel like doing that the long and hard way).
It may seem counter intuitive to you because you are not used to this innovation. The extra steps (select, type, send) in fact provide a good double check to make sure you are addressing the right player before you send away the kick command.

Regarding your alternate suggestion, I have no idea how to do that.
Deledrius wrote:One question: Why can a non-Age-owner revoke invites? I'm tired so perhaps I'm missing it, but that seems a bit scary.
Perhaps I should have made clear that you always revoke your own invites, not those from the age owner. The idea is that even if you cannot kick a greifer from the current age due to insufficient privileges you can at least ban him/her from your own ages.
If this is not desired I can easily move this part of the code so that only a player with kicking rights executes it.
User avatar
janaba
Member
Posts: 197
Joined: Tue Jan 10, 2012 4:48 pm
Location: Berlin, Germany

Re: Kick command proposal

Post by janaba »

I was already happy that there was no talk about the subject anymore for such a long time and
I thought that we got already over this and have left it behind as there was anyway only a handful
of people requesting such a feature on the MOUL forums back then, which are even not around
anymore or atm ... :P

Yeah, at least as it sounds this will remain and being handled in the 'private domain' and thus
not affect and interfere with the public and overall gameplay and atmosphere ... :D
Christian Walther
Member
Posts: 317
Joined: Sat Dec 13, 2008 10:54 am

Re: Kick command proposal

Post by Christian Walther »

I have no big opinion on whether such a command is needed – I have never had a desire to use one myself, but I currently can’t think of any big problems with it either, so if there’s demand for it, let the people have it.

I would prefer /kick <playername> [<message>] too, for consistency with other commands such as /addbuddy or /p. (Unless those commands work with the selected player too and I just never noticed it.)

I wonder if it is a good thing to allow kicks with no message. The kicked player has a right to know who kicked them, and while they could infer that it must have been the age owner (once they realize that it was a kick in the first place and not some random linking glitch or even an intended gameplay feature), a default message like “D'Lanor kicked you out of the age” would make it clearer. (Maybe something like that should be included even when the kicker specifies a custom message, so that they can’t hide their kicking behind an innocuous-sounding message.)

I feel uncomfortable about the invite revoking for non-age-owners because it's a hidden, non-obvious, surprising action. We already have enough of those in the Uru user interface. I would prefer doing nothing and printing a plain error message along the lines of “only the age owner can kick”. It could be moved to a separate explicit command. Even for the age owner, it being silent and unnoticeable seems problematic – maybe it should at least print out which invites it revoked (if any), so that the fact that kicking revokes invites enters the collective consciousness of the player community.
User avatar
JWPlatt
Member
Posts: 1137
Joined: Sun Dec 07, 2008 7:32 pm
Location: Everywhere, all at once

Re: Kick command proposal

Post by JWPlatt »

There's not much point to a required <msg> when you can just avoid it with "/kick <user> ." (using a period for your message). Requiring some minimum number of characters in a message is not the answer either. I like Christian's automated message identifying the kicker better. The kicker can send a /p if they wish. Presumably, this is meant to avoid an abusive user. Do you really want to require the victim to communicate with the offender?

Using the age list click to send a /p can be considered a special case convenience. To have two special cases muddies expectations for all things to work like that, as Christian mentions. If clicking the age list can insert <user> into the text stream, there will still be no typo. But again, expect users to ask you to spend more time on feature creep on other applicable commands.

"/uninvite [* | <agename>] <user>" would be such an explicit command.
Perfect speed is being there.
Ehren
Member
Posts: 36
Joined: Sun Feb 05, 2012 7:20 am

Re: Kick command proposal

Post by Ehren »

I think more detail is needed on the visitor revocation thing. Wouldn't that give anyone the power to just wipe out all of your private links to anyone else's ages?

Then in a different post you say it takes away your own invites. Would that mean the person using /kick loses all their invites that they may have? But, that would be banning yourself, not them.
Last edited by Ehren on Sun Jun 10, 2012 9:20 pm, edited 3 times in total.
User avatar
Hoikas
Member
Posts: 344
Joined: Fri Jun 03, 2011 8:38 pm

Re: Kick command proposal

Post by Hoikas »

Better put on your steel assplate just before this one lands. Aside from that, I agree with CW (et al) that the format should be /kick player [message]

On an unrelated note, I dislike the fiddly-ness of the linking code here. If you are amendable, D'Lanor, I can fix ptVault.amOwnerOfCurrentAge() in the engine to correctly handle the case where the AgeOwners folder is empty (sub ages and child ages). Furthermore, I can add a PtKickClient function that will make it obvious that the player has been kicked from the age (no linking sound, just fade and appear in Relto). The actual engine code will look similar to what you have in python, except it won't be nearly as explicit.
Image
User avatar
D'Lanor
Member
Posts: 142
Joined: Tue Dec 23, 2008 11:23 pm

Re: Kick command proposal

Post by D'Lanor »

OK, so no new sophisticated command input and back to the old typing method. Got it.
Hoikas wrote: On an unrelated note, I dislike the fiddly-ness of the linking code here. If you are amendable, D'Lanor, I can fix ptVault.amOwnerOfCurrentAge() in the engine to correctly handle the case where the AgeOwners folder is empty (sub ages and child ages).
Hmm, I'm afraid that could break the game in many other places. I know you don't mind taking risks like that with Gehn but I think we are aiming for something stable here. Fiddly or not, I can assure you that my current sub age checking function works flawlessly. Edit 3: Plus I need it to recognize a sub age from a child age. We don't want neighbors kicking each other from child ages.
Hoikas wrote:Furthermore, I can add a PtKickClient function that will make it obvious that the player has been kicked from the age (no linking sound, just fade and appear in Relto). The actual engine code will look similar to what you have in python, except it won't be nearly as explicit.
That would be great. But if by explicit you mean exploitable then a short function like PtKickClient only makes that easier.
Edit: And if this could also handle the message somehow it would be perfect. Because I don't see a way to send a message which only shows itself to the kicked player, unless it is a PM. Or I would have to abuse the AFK message. Now that would be really fiddly...
Edit 2: Oh, and I was hoping to avoid localization with just that optional message. You guys aren't going to make this easy, huh? :mrgreen:
Post Reply

Return to “CyanWorlds.com Engine - Client & Plugin”