Todd Mitchell wrote: > > So when you want a new channel you add it and it is added with your name > attached - if you leave the game the chanel is removed. If a Dm sets a > channel or it is hardwritten into the channel file in var then it is not > assigned to any player and is persistant. You'd probably want to have some functionality like 'reassign channel' which lets you give the channel to someone else. Eg, suppose there is a group of people talking (shouting), but the person that created the channel needs to leave. For convenience, it'd be nice to give someone else ownership of that channel so that it sticks around and people can continue to chat on the same channel. > > An entry is added into new_draw_info that checks if the message is a > channel shout (by using the listen level for channel shouts - something > we set up) and if so if you are subscribed to a particular channel - if > you are you get the message. That's not the right place to code it. Instead, it should be coded wherever the channel shout function is used (eg, have that code iterate through the players to see if the channel the player is shouting matches any each player is subscribed to). Trying to change new_draw_info is just making things much more complicated than it needs to be. I'd also put in code where the player can only shout at the channel if they are subscribed to it. > > So to recap - anyone can make a channel but only DM or admins can set up > permanent chanels that stay around. If you leave your channel is closed. > > Then if you want to shout - it's still ok but really if you are shouting > all the time the DM will shut you up. > > Sound reasonable? Any other thought on this? I guess finding out what > are the different listening levels would have to be done but as far as I > can tell 0 is system, 1 is shout and 5 is used for stuff like players > joining or leaving the game so maybe 2 or 3 would be a good one to use > since you will only get messages if you join a channel and I can see > folks turning off other messaging but keeping this on for stuff they > signed on for. <end of quote> > > - so any thoughts? Probably better to do it with dynamic sizing and not hardcoded sizes. this wouldn't be that much harder to do, and prevents the otherwise forseeable problem of running out of channel. You probably want to limit the number of channels any player can create. Eg, you don't want some abuser to log in and create 500 channels - even if the number of allowed channels is dynamic, a listing that long would just be unmanageable. For the player side of things, you could just easily have a pointer like 'char *subscribed_channels', and just have that be a comma seperated list of channnels the player is subscribed to, eg, 'newbie,town,dm'. Then for that string, it's just a matter of alloc, copy, etc. If you take that approach, things are much more interesting - I could do something like 'cshout asdf some random message', and it then just checks all the players to see if anyone has 'asdf' listed in that string, and if so, they get that message. By doing so, you no longer need a list of channels. Players can basically create their own channels by creating them, eg, 'subscribe blahblahblah', and if someone does a 'cshout blahblahblah ....', you get it. Official channel listing is only really needed then so players have an idea of what channels are available. Note that this method also means there is no worry about some player creating 500 channels. Sure, they can subscribe to 500 channels, but if no one else knows about them, who cares. _______________________________________________ crossfire-devel mailing list crossfire-devel at lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel