MU Soapbox

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Muxify
    • Mustard
    1. Home
    2. Sponge
    • Profile
    • Following 0
    • Followers 0
    • Topics 7
    • Posts 94
    • Best 19
    • Controversial 1
    • Groups 0

    Sponge

    @Sponge

    46
    Reputation
    337
    Profile views
    94
    Posts
    0
    Followers
    0
    Following
    Joined Last Online
    Website http://www.newprospectmush.com/

    Sponge Unfollow Follow

    Best posts made by Sponge

    • MUSH Workshop: Fundamentals 1 - Attributes, Flags, and Objects

      Sunday, May 17, 3PM PST on New Prospect MUSH I'll be hosting a class on fundamentals of interacting with a MUSH.

      In this session I'll be covering attributes, flags, and objects. For some players, interacting with these things involves mysterious incantations (&something something=something). I'd like to dispel the mystery and have everyone leave with a working knowledge.

      The primary audience are players who know how to get on a MUSH and RP but aren't so confident with any of these three topics. More experienced players may pick up a thing or two and can certainly help translate from Sponge Robot Speech(tm) to human.

      I plan to turn this into a series on MUSH fundamentals. The second session should be "Commands, Substitutions, and Help". Sometime later, "Permissions, Powers, and Locks". I'd like the series to work toward classes on soft-coding built on a clear progression from pure basis to advanced topics. We'll see how it goes.

      I'd like to see workshops about all aspects of contributing, especially how to plan and execute stories. I'm trying to sucker some of my own people into putting these together. It's something that benefits from lots of different viewpoints and sets of experiences so I think the community would be well-served by lots of people doing these.

      If anyone wants to run a workshop on MUSHing, I'm happy to provide space, from a clean TinyMUX install to a "fully-formed" game.

      posted in MU Questions & Requests
      Sponge
      Sponge
    • RE: Crafts & Things

      3D printing is dope.

      A sad amount of the printable models on the Internet are things for your 3D printer but it makes sense in the context of RepRap. There are also a lot of available models that aren't feasible on consumer printers unless you've spent the big bucks for an STL (e.g. Form1) printer. The bulk of the rest of the models are toys. Not having a kid this is of limited use.

      It's currently really fiddly as a hobby. This is definitely not a turnkey technology. The pipeline from 3D model to physical object is entirely in one direction. Software converts a 3D model into instructions for the printer on how to move. "Move left 0.06mm, extrude 0.013mm of filament, move forward 0.02mm..." There's no feedback to indicate that everything is going according to plan. The part can become dislodged from the bed and the printer will continue merrily along, extruding molten plastic into free space. Or, you can run out of filament and the printer will keep going, oblivious.

      However, pretty much any problem I can measure with calipers I can solve with the 3D printer, regardless of whether or not it's a good idea. I've made replacement parts for things, upgrades for things, and customized gifts for people.

      Here's a project I've almost completed: https://plus.google.com/u/0/+JasonMansfield/posts/jAbDh3zhYub

      posted in Tastes Less Game'y
      Sponge
      Sponge
    • RE: New Prospect MUSH

      The intention is what I'd describe as "compromise-based" rather than "consent-based". That said, I'm about to just state my vision of how consent works.

      A situation begins where chance can be a factor. The players briefly discuss what kind of risks they see to their characters in the scene, then hash out what outcomes they're willing to consent to. The storyteller may indicate that certain risks are critical to the story. If one character isn't willing to accept those risks and the group can't work out the kind of compromises that @Orange and @Bobotron indicated it may not make sense for that player to participate. Once everyone can accept the worst case scenario, the dice decide outcome.

      I like to believe that players are less risk-averse when they know they can set a limit on how much control they give up. When players indicate that they are unwilling to lose at all they self-identify as being limited to purely soft RP. When they fail to self-identify it can be disruptive for a scene or PRP but they probably won't be/shouldn't invited back for that kind of RP.

      They key to it working is participants communicating expectations. I'm not aware of any problems so far but to be frank I don't feel like we've done well to establish this as a cultural norm.

      posted in Adver-tis-ments
      Sponge
      Sponge
    • RE: Crafts & Things

      @Luna said:

      I just want to 3D print tiny unicorns. I want one so bad.

      http://printrbot.com/shop/assembled-simple-metal/
      $600. Filament's about $25/kg and falling. Don't get a kit to assemble yourself to save money if it's your first printer: they calibrate them after assembly which minimizes the chances of having to tear your hair out when it's not working properly.

      For some people these things can go net profit really quickly. As big as cosplay has gotten (and to a lesser extent furry) the ability to make custom, one-of-a-kind costume parts can make for better product and demand higher prices.

      posted in Tastes Less Game'y
      Sponge
      Sponge
    • RE: Map Maker, Map Maker, make me a map...

      There's stuff like this.

      posted in A Shout in the Dark
      Sponge
      Sponge
    • Hell-Ban MU

      I'm in the midst of a whack-a-mole game with banned player so the slight annoyance has my mind wandering. I've been thinking about this for a while and I don't think implementing this is worth the effort but I'll share the idea because it tickles me.

      I believe the idea of the Hell Ban originates from forums. The user isn't prevented from using the site, however, they are the only person who sees any of the content they generate. They post, their posts go up, if they leave and come back their posts are still there. Nobody else sees them though.

      With a few pieces you could do the same thing on MU. You would need to hack or hook the hard functions that determine "onlineness" for players like lwho(), hasflag(), etc, so that it shows people as being online. You'd have to hook page so that pages seem to go through to players that should appear to be online... or you could just have an emit to say that the person is page locked. You would need a robot to relay channel messages and onlineness updates from the real game to the hell game. Or you could just have scripted/logged events replayed. Finally, you'd need an iptables rules to DNAT hell banned players to the hell ban game; this is actually trivial.

      The result should be a game that makes all the noises of a live game and is difficult to distinguish from the actual game.

      posted in MU Code
      Sponge
      Sponge
    • RE: A Platform For Experiments

      It would need some hacking. The ?col() functions are just for coloration. The hasauthority() function needs to be replaced with a function to check if someone should be able to siteban. You'd also need to provide a means of running @restart after modifying the list.

      @create Site Banninator=5
      &META_AUTHOR Site Banninator=Sponge/#4
      &META_PURPOSE Site Banninator=Enable people other than #1 to add/remove sitebans
      &META_UPDATED_BY Site Banninator=Sponge/#4
      &META_NEEDS_FLAGS Site Banninator=inherit
      &META_NEEDS_OBJS Site Banninator=#10 #3 #1774
      &DATA_DB Site Banninator=#1774
      &CMND_SITEBANS_LIST Site Banninator=$+sitebans/list:@switch [hasauthority(%#,SITEBAN)]=0*,@pemit %#=You do not have the proper authority to manage sitebans.,1,@pemit
      %#=u(UFUN_LIST_SITEBANS)
      &UFUN_FMT_RECORD Site Banninator=[setq(I,extract(%0,1,1,|))][setq(U,extract(%0,2,1,|))][setq(T,extract(%0,3,1,|))][setq(C,extract(%0,4,50,|,|))][ljust(IP: %qI, 24)][ljust(By:
      %qU,25)][ljust(On: [mid(convsecs(%qT),0,11)][mid(convsecs(%qT),20,4)],24)]%rWhy: %qC
      &UFUN_LIST_SITEBANS Site Banninator=[header(Sitebans)]%r[iter(lattr(v(DATA_DB)/DATA_BAN_*),u(UFUN_FMT_RECORD,get(v(DATA_DB)/##)),\ ,%r)]%r[footer()]
      &CMND_SITEBANS_REMOVE Site Banninator=$+sitebans/remove *:@switch [hasauthority(%#,SITEBAN)][hasattr(v(DATA_DB),DATA_BAN_[u(UFUN_IP_TO_LABEL,%0)])]
      &UFUN_IP_TO_LABEL Site Banninator=edit(before(%0,/),.,_)
      &UFUN_VALIDATE_IP_CHARS Site Banninator=not(strip(%0,0123456789./))
      &UFUN_FOLD_OCTET Site Banninator=add(shl(%0,8),%1)
      &UFUN_VALIDATE_IP_RANGE Site Banninator=[setq(I,u(UFUN_IP_TO_INT,before(%0,/)))]and(gte(%qI,u(UFUN_IP_TO_INT,1.0.0.0)),lt(%qI,u(UFUN_IP_TO_INT,224.0.0.0)))
      &UFUN_IP_TO_INT Site Banninator=fold(UFUN_FOLD_OCTET,edit(%0,.,%b))
      &UFUN_VALIDATE_IP_OCTETS Site Banninator=not(edit(iter(%0,gt(##,255),.),%b,))
      &UFUN_IP_VALIDATE Site Banninator=not(strmatch(iter(lattr(me/UFUN_VALIDATE_*),u(##,%0)),*0*))
      &UFUN_LIST_BANIPS Site Banninator=iter(lattr(v(DATA_DB)/DATA_BAN_*),before(get(v(DATA_DB)/##),|))
      &CMND_SITEBANS_DELETE Site Banninator=$+sitebans/delete *:@switch [hasauthority(%#,SITEBAN)][u(UFUN_IP_BANNED,%0)]=0*,@pemit %#=scol(You do not have the proper authority to manage
      sitebans.),10*,@pemit %#=scol(No such IP ban found. Try +sitebans/list.),11,{&DATA_BAN_[u(UFUN_IP_TO_LABEL,%0)] [v(DATA_DB)]=;@pemit %#=pcol(Ban for %0 cleared. You'll have to
      @restart for the changes to take effect.)}
      &UFUN_IP_BANNED Site Banninator=hasattr(v(DATA_DB),DATA_BAN_[u(UFUN_IP_TO_LABEL,%0)])
      &CMND_SITEBANS_ADD Site Banninator=$+sitebans/add *=*:@switch [hasauthority(%#,SITEBAN)][u(UFUN_IP_VALIDATE,%0)]=0*,@pemit %#=scol(You do not have the proper authority to manage
      sitebans.),10*,@pemit %#=scol('%0' does not appear to be an acceptable IP to ban.),11,{&DATA_BAN_[u(UFUN_IP_TO_LABEL,%0)]
      [v(DATA_DB)]=[if(strmatch(%0,*/*),%0,%0/32)]|%N/%#|[secs()]|%1;@pemit %#=pcol(Added '%0' to sitebans list. Remember to @restart for changes to take effect.)}
      &CMND_SITEBANS_ADDPLAYER Site Banninator=$+sitebans/player *=*:@switch [hasauthority(%#,SITEBAN)][t(setr(P,pmatch(%0)))]=0*,@pemit %#=scol(You do not have the proper authority to
      manage sitebans.),10*,@pemit %#=scol(Couldn't find player '%0'.),11,{@fo %#[setq(I,get(%qP/LASTIP))]=+sitebans/add %qI=%1}
      @set Site Banninator=INHERIT
      @set Site Banninator=SAFE
      

      and

      @Startup Wizard=@dolist u(#1773/UFUN_LIST_BANIPS)=@admin forbid_site=##
      

      On NPM/CoH, #1773 is the Site Banninator and #1774 is an arbitrary THING to hold the siteban data.

      Crazy spongecode aside, maybe ZONES could help here? I've never played with them.

      posted in Adver-tis-ments
      Sponge
      Sponge
    • RE: Random links

      https://lh3.googleusercontent.com/-s_xjs87-q2w/VU89EoEVBGI/AAAAAAAAB8U/2kqlZ13lhgI/w506-h557/Orc%2BCaress.jpg

      posted in Tastes Less Game'y
      Sponge
      Sponge
    • RE: Shell help request: +weather text file writing

      @Thenomain said:

      @Melpomene, Try it sometime. Manually change 'sunny' to 'partially cloudy' then type 'weather conditions' and it should cut off part of it.

      Any time you change a server-side help or news file, you must re-run @readcache. N.b., TinyMUX or TinyMUSH. I don't know how Penn or Rhost deal with it.

      No. Check it, yo:

      @readcache goes through the textfiles and associates all & keywords with the byte location of the next line that doesn't begin with &. When the help file changes and the length of one article changes, the offsets of all the following articles will be off. If you have exactly one article in the text file this will never be a problem. It's also never a problem if you change the size of the last article in the file as there are no following articles.

      posted in MU Code
      Sponge
      Sponge
    • RE: Staffing Philosophy: Action vs Procedure

      @GentlemanJack

      I keep thinking of useful things to say in the discussion and then shortly after I see you say it, phrasing it 10 times better.
      ...

      Somewhat tangentally, I used to have problems dealing with the egregious offenders.

      One of my chief mistakes running City of Hope was being too hesitant with "discipline". I was so afraid of appearing to be a tyrant that I was super gun-shy about handing out a 72-hour ban. Not everyone wants to be a good player and no amount of OOC consequences are going to change their attitude. However, a taste of the stick will often make the ne'erdowells at least not do bad.

      When I did have the sack to hand out discipline it generally worked well doing standard boundary-setting:

      • Doing X is inappropriate.
      • If you continue to X, I'm going to remove you from the game.
        ...some time later
      • You've continued to X when I told you not to. I'm going to remove you from the game for 72 hours. If you're not Xing after that, we're cool.

      Usually, one of my 72-hour bans would go one of two ways. 1) The player would come back and no longer X. 2) They would immediately have a complete meltdown and earn a permaban.

      I don't feel like taking away characters or IC things is productive. I feel it's more like sending a child to their room where all their video games and comic books are.
      ...

      Doxxing people is a double-edge sword. Sure, you might be justified in publishing proof of particularly egregious offenses. Doing so might help serve as a warning to potential future offenders and to other game operators. However, as it has been mentioned above, sometimes uninvolved players will wonder if they're at risk for being shamed publicly. Doxxing people invokes fear and it's really hard to point that fear precisely.

      posted in MU Questions & Requests
      Sponge
      Sponge

    Latest posts made by Sponge

    • RE: +repose

      @Thenomain said:

      @Sponge said:

      Packet Capture

      I still had to look this up to understand what point you were trying to get at. (tl;dr: I still don't know.)

      It makes more sense with the 😉 winky face. Every byte that the Internet passes in and out of the game is saved. If a packet gets lost and retransmitted, I've (probably) saved both the lost packet and the retransmitted copy. I get the empty ACK packets generated by the KEEPALIVE flag. I get all the communication to and from the client before the user logs in.

      Anyway, it was a silly comment. I have complete logs of everything but not at the right level to be useful for this problem.

      After doing the scant research about it, I don't see how that changes my response. You don't need to scrape anything; it can be done (and by your comments, done better) by using in-game resources. You can also scrape the logfile that you can convince Mu* to make to begin with, where everything typed is logged, but it also doesn't have the context to make a good poselogger.

      You know what does? Master room, &log_everything <object>=$*:<log it>, done. The default TinyMUX install passes through commands instead of absorbing them when matched, though you may not get the "Huh?" message because the server sees it getting matched. Compare to @Chime's "@whence" output and if fails, report the Help Text.

      Anyway, yeah, your correction didn't make much sense to me.

      A secondary point there is: It doesn't require hardcode fiddling, and really isn't that hard on the softcode side, to log everything outputted to every room or object on the game. This was to the people concerned with such things being abused, a point that @WTFE made as well. @TNP's solution wouldn't work in this case.

      As I mentioned, I don't like @hook for this and if I implement something it will be akin to what @Bobotron describes: a system to create a Monitor object that does the logging work and is conspicuous about what it's doing.

      posted in MU Code
      Sponge
      Sponge
    • RE: +repose

      Packet Capture. I capture all the traffic that goes in and out of the game.

      This runs before ./Startmux:

      /usr/sbin/tcpdump -pns0 -C 8 -w newprospect -W 64 'tcp port 7777 and not (net 127.0.0.0/8 or net $home_ip/32)'

      posted in MU Code
      Sponge
      Sponge
    • RE: +repose

      @Thenomain said:

      @Sponge said:

      @Thenomain said:

      Why not simply log the entire game? We're over halfway there as it is.

      I do, but I'm hesitant to try and build a mechanism to scrape the pcaps and push them into the game on demand. 😉

      Why? That's what people are asking for. If you mean for security reasons, then build better security, security considerations that would need to be made regardless of the system you would end up using.

      Without parsing the streams the most granular filtering I have in the pcap data is remote IP + remote port. Without a really sophisticated stateful parser (that I'd have to write) there's no differentiation between MU output that's destined just for the user and MU output that's for the "room". Even the concept of a "room" or a list of other players in the same location as the recipient are really hard to infer.

      You wouldn't even need to scrape. @ahear on the master room and boom, game-wide listening. I'm not a fan of soft-code extensions to hard-coded functions, but what could possibly go wrong using a system that can retrieve poses in a room you weren't in when they were being made, like Pose Order Tracker? A system that will have to be always-running to be effective as this kind of tool?

      This reads like you missed the word "pcaps".

      posted in MU Code
      Sponge
      Sponge
    • RE: +repose

      @Thenomain said:

      Why not simply log the entire game? We're over halfway there as it is.

      I do, but I'm hesitant to try and build a mechanism to scrape the pcaps and push them into the game on demand. 😉

      posted in MU Code
      Sponge
      Sponge
    • RE: +repose

      @Arkandel said:

      For instance I walk in your room. I type something like "+poselog 10" or whatever to see what's been going on and you and @Coin both get a message asking if that's okay. You say yes. @Coin says no. What happens then? Is one person vetoing it enough for the log to remain undisclosed? What if a third person's in the room but idlying? If I can't get the poses right at first they're probably nearly useless to me later on.

      And who can clear a scene? Imagine a five-person scene where one of them clears it because they need to go, but others want it there so they can log it, or for newcomers to see. What happens then?

      The system could record who was present to witness each emit. In that case, anyone who was there to witness can permit to repose whatever they witnessed. This is no different than the ability for players to copy-paste what they have witnessed.

      posted in MU Code
      Sponge
      Sponge
    • RE: +repose

      @Bobotron
      This should be adaptable though I'm somewhat @hook-averse. It will catch poses via say/pose/emit but not anything soft-coded that doesn't @force players to say/pose/emit.

      Man, I wish MUX had lambdas. Having to set up a distinct soft function for things like filter() and sortby() has always felt clumsy.

      posted in MU Code
      Sponge
      Sponge
    • RE: +repose

      @Glitch

      If my desire to have an implementation was unclear, I apologize for the ambiguity.

      Do you have an implementation of either?

      posted in MU Code
      Sponge
      Sponge
    • RE: +repose

      @Coin

      I agree that server-side repose is more useful. I assert that client-side is more useful than nothing because copy-paste is tedious and error prone.

      Do you have an implementation of either?

      posted in MU Code
      Sponge
      Sponge
    • RE: +repose

      @Coin

      It wouldn't be pointless. It would be a convenient way for others to repose to you as a courtesy.

      posted in MU Code
      Sponge
      Sponge
    • RE: Rewards in WoD

      I like the idea of games with codified (if not coded) Influence action systems. You get a regular allowance of action points based on some stats and time or whatever. The ability to hand out more is cool, especially if they can be scoped to the domain of the plot (Underworld, Occult, Law, etc). Your actions can then be to use that influence to get a gun or a bag of money or a jar of newt blood or a speeding ticket waived later. Perhaps picking up the gun and getting rid of it earns you a favor represented as influence.

      As for tangible things, giving people things they could reasonably get on their own seems sensible out of the gate. What supers don't really have a means of either breaking into a house/store/whatever and stealing a gun or "talking" someone out of the gun they have? A Ma Deuce? No. A Beretta? Sure, why not? A grand claive? Keep dreaming.

      On CoH I created an object that would give whoever carried it a small stat bonus. Being ICly cursed (unbeknownst to the characters) it would randomly @pemit crazy things to the player only or to the others in the room only.

      A good reward is itself a plot vehicle.

      posted in Mildly Constructive
      Sponge
      Sponge