Former JLU Member Speaks Out

by Alphaville Herald on 04/08/07 at 6:04 pm

anti-griefer Justice League Unlimited threatens privacy and act like griefers

by Nikola Shirakawa ex-JLU member

The creatures outside looked from pig to man, and from man to pig, and from pig to man again; but already it was impossible to say which was which – Animal Farm

Many people on SL have run into this group. The Justice League Unlimited – or JLU – has become one of the most well-known anti-griefer groups in the metaverse. Perception of the JLU differs depending on who you ask. Residents that have requested JLU help say they are every bit the superheroes they role play. The alleged goons and griefers such as the “Patriotic Nigras” – or PN – claim the JLU are sim-crashers that fire doomsday weapons at their enemies. Some land owners, such as Artemis Fate, say the JLU are a detriment to peace on the grid.

Before serious discussion about the JLU can be undertaken, it is important to know that not all of their actions are entirely public, and some of these shady choices could paint a very different picture indeed. To the public, they just swoop in to distress calls, talk down a griefer, or, in the most extreme cases, they call down the Lindens. Nothing wrong with that, right? But these are just the actions the public sees. What goes on when they retreat to their locked down sim, Asimov Park, the real story begins.


the JLU database never forgets

Let’s start by discussing the JLU Brainiac device. This little bot, attached to their avatars, connects to an external database that maintains a running record of avatars they have come in contact with. And I mean every avatar. Part of the script in their equipment automatically records the names of every Second Life resident, griefer, civilian, or even Linden. That’s right, if you’ve been next to them, they have your user name, and a unique key that acts on a similar level to that used by the Lindens to issue permabans.

An analysis of the script identifies the website, http://w-hat.com/name2key, where this key is obtained. That’s right, the JLU contacts the the W-Hat site to connect names with unique keys. Who gave them permission to collect screen names and keys like this? And what do they use this information for? Among other things, residents they have categorized as griefers, be they known PN alts, or just newbies who did not yet understand shooting people was against the rules, are scanned for at all times. If, by coincidence, one of these newbie shooters walks within range of a JLU member, the JLU member is immediately informed of this presence. Right to privacy? Not when the JLU is around.

Speaking of privacy, consider the JLU campaign against the PNs. Many feel the PN kids are a bad element, responsible for harassing users and crashing sims. With this as justification it seems the JLU sees no problem with its own sort of harassment, and more. On the external Brainiac database, there is a veritable treasure trove of personal information, especially when it comes to two of the PN leaders, N3X15 and mootykips. The JLU has currently on file for both of them, real life names, addresses, phone numbers, and ISP’s. For mootykips, they even have a photograph. This information is freely accessible to their group. As justification, the JLU says that one of their members, Kara Timtam, had her information spread on the PN boards. Talk about fighting griefing with griefing. It must be said that they have not personally contacted either of these people, but Kalel Venkman has confessed to harassing Verizon, N3X15′s service provider, in an attempt to shut him out of the Internet. Going beyond this to the PN as a whole, the JLU routinely listens to their IRC channels, and their Ventrilo and Skype channels, as well as every website they can find connected to the PN in the slightest way.

Of course, these kinds of wiretaps and information data mining without a warrant is more than reminiscent of the much derided Patriot Act. But there is one difference. The Patriot Act is used by sworn officers of the law, with a little thing called a badge. They have been granted the authority to do so by the an RL government. Who gave this authority to a bunch of roleplay superhero wannabes? When you have contact with a police officer, you have a right to get their badge number, and they can be reported to higher authorities. What does the JLU have? A bunch of comic book avatars, and self-appointed power. That’s right. They were given their power by themselves. When asked about the legality of these actions, Kalel Venkman said. “I’ve thought about that too, but I really want to get these guys, and I think you do too.”

It seems that Mootykips obtained information directly off of Venkman’s public web page, including, free to the world, an online resume, a photograph, and a contact number. This information was of course posted to the PN’s own wiki, and the Encyclopedia Dramatica for a short while. But as of recently, in an attempt to scare these children, Venkman has redirected the link to his online resume to the Department of Justice’s Computer Crimes reporting page. When it comes to dealing with the kiddies, Venkman is all for violating privacy, scanning the whois domain information. But when it comes to his public web page, obtaining documents he leaves open to the public is suddenly the most unforgivable crime. And that my friends, is the definition of hypocrisy. It seems Jor-El left one thing out of his teachings. “Do unto others as you would have them do unto you.”


young superman

Kalel Venkman signed up to Second Life midway through 2006. One of his earliest actions was to join a roleplaying group, the JLA, or Justice League of America. Right away, he wanted to be Superman, and set out to do just that. Shortly after, within a few weeks, according to Kalel’s own account, he and others were co-opted into being real superheroes, dealing with griefers. Most of this old JLA group obviously was not interested in such past times. What was the right action in this case? That’s right, kick them out, and hide the group, so no one could ever use it again for role playing, and create a new group just for anti-griefing. Several months later, some newbies who were not approved for Kalel’s standards to use the name of Justice League created their own JLU group. Once again Kalel began conniving the people into his group for the purposes of shutting the other down. This led to Kalel and a few of his flunkies singlehandedly creating every single possible Justice League Derivative and hiding them away, so no one else could be Justice League. Why? So no one hurts their good name. Never mind that not one of the JLU is a DC employee or affiliate. Sure, they are all flagrant copyright violators, but they have a duty to make sure no other comic book fans that they may dislike use their good name.


Green Lantern Core scorned

This hatred of competition has even spread to older more established groups such as the Green Lantern Core led by Cid Jacobs. Kalel has expressed designs on creating his own power rings to drive out the GLC. There is already a hidden group title in the JLU known as JLU Green Lantern. The JLU’s most recent development, the multi-tool known as Solaris, was explicitly mentioned as competition to the GLC power rings, with Kalel on record as saying “Keep in mind, this is more progress than the GLC’s rings have had in six months”. On the Brainiac wiki, there are dozens of archived GLC internal documents, including the groups parliamentary decisions and the operating manual for the power rings. It should come as little surprise, then, that the JLU is not on the GLC’s approved Green Lantern group list.


database-assisted shopping for Linden justice

Venkman clearly has desires for the JLU to become the Linden’s official police force. Brainiac’s functions as of May, 2007 have the ability to keep tabs on Lindens. At a glance, the JLU has the ability to see which Lindens are online, without even being connected to the grid. In addition, they actually rank the Lindens on said database, choosing to pester those they feel are most likely to respond to them. Basically, to the Lindens that chose to not recognize their self-appointed authority, they are not good Lindens, and as such must blackballed for “unreliability”.

This blackballing to those that don’t recognize the fictional authority of the Justice League has even spread to large landowners such as Artemis Fate. Artemis Fate, who is in charge of the popular destination Nexus Prime among others, took offense at the JLU dealing with griefers in her territory. After she told me she would not tolerate anti-griefer forces, I immediately told Kalel that we were not to go there. Kalel of course, could not accept this, and had to force his views onto Artemis, who of course, was not reciprocal. This policy of intruding onto sims where they have not been invited has led to such events as a mass banning of JLU members from a Gorean sim last April. One of he newest features of SL has been to allow forwarding of Abuse Reports to Estate Managers on private islands, in lieu of forwarding to the Lindens. Rather than respect the wishes of the Estate Managers that have this policy in place, Kalel has ordered all JLU to retreat to JLU territory to file Abuse Reports.

“The problem with anti-griefers,” says Artemis Fate. “is they always turn into griefers themselves.”

While it is true that the JLU has never fired an orbiter, or a doomsday weapon, that does not mean they have not carried out similar actions. Take the case of Loki Buaku. Loki Buaku quickly made himself an enemy of the JLU, and as such, made it his mission to take them out. He did not undertake this mission by grabbing a gun and shooting up any JLU he could find, but by creating groups and spreading propaganda against them. Not against the ToS in the slightest. But this did not stop the JLU from acting against him. Upon finding his RP character was supposedly 15 years old, Kalel led a charge of JLU members to fire off Abuse Report after Abuse Report against him for this unforgivable grievance.


JLU swarming Woodbury University

This vendetta behavior has even spread to sim owners. Take the case of Woodbury University. This sim, as you may know, was shut down by the Lindens for being a griefer base. What most people are not aware of, however is this was largely a charge lobbied by the JLU.

Within two days of learning of the site’s existence, the JLU was there in force to examine the site. Calls were made by Kalel to MichaelFrancis Linden, a Linden in personal contact with Venkman. Official JLU policies included swarming all places where their griefers were seen, and spying on their chat channels. Sometimes, they even went as far as dropping large invisible prims on the property to keep the greifers from entering their own builds. Keep in mind, this was not just in a sandbox that they happened to be, this was private property under the ownership of the so called greifers, and the JLU were the encroachers in this case. Not that private property holds much weight to Venkman and the JLU.


does the end justify the means?

After seeing the full extent of the executive decisions and behaviors of the JLU, can much of a difference between them and the griefers they oppose actually be found? Their eye for an eye, fire with fire tactics, end up bearing little distinction form greifing itself. In the end, does the end really justify the means. Is it worth throwing away and sense of constitutionality, legality, privacy, or free expression, just to stop the grefiers? The majority of SL citizens have never seen a PN face to face. They have no real need for the superheroes in their day to day lives. But I’m willing to bet that a large chunk of them might have an issue with being in a database without their permission. I’d be willing to bet there’s quite a few people out there who would love to roleplay as Superman, or Batman, or Wonder Woman. There are even people that disagree with the JLU’s actions on a political basis. But if the JLU had their say, all of these groups would be silenced, and stricken from the grid. Does the L in JLU stand for Lords?

257 Responses to “Former JLU Member Speaks Out”

  1. Newsflash

    Aug 9th, 2007

    It looks like LL can and will hand over rl information, if subpoenaed.

    http://secondlife.reuters.com/stories/2007/08/06/linden-hands-over-john-doe-information/

    With the internet slowly but surely becoming territory over which the courts will exercise jurisdiction, it’s just a matter of time before litigation begins…

  2. mootykips

    Aug 9th, 2007

    “mootykips, I haerd Fox 11 news has nice dosier on you. As well as the more prominent Chan members. Have fun with that. And please do go charge and attack them again.”

    Fox 11 news doesn’t have anything on me, because I never attacked them. There are no “prominent chan members”, except for maybe Moot, Snacks, Kirtaner, and such.

    I’d love for LL to try to hand over infoz on any of our members, because all accounts created are under fake names, IPs, and everything else.

  3. Witness X

    Aug 9th, 2007

    “Second, You have just proven that you are in the JLU with that statement. That page on thier information was not in the database when the pn got in and logged the information. This means you have access to thier wiki, and, aside from Cid Jacobs, no non-jlu has a password, to get in and see such documents.”

    Me? JLU? Oh how wrong you are on that one. Didn’t you help the PN get in again? Hmmm, looks like you sold out your former buddies. That was really honorable of you. Tsk tsk. So we should trust the word of a person that backstabs their friends then runs off and tries to make propaganda against them with pretty shaky information and flimsy arguments. Hmm, you have been proven wrong so many times in these comments. I’ll give you that you’ll admit when you are wrong, which seems to be majority of the time. BUT since you are wrong often what that say about the whole body of propaganda that you’ve put out?

    There is more than one Witness X floating around the interwebs. The Witnesses are a former Anonymous that have become sick of the vile that has become the Chans. We are sick of how far removed the Chans on this side of the pond have become when compared to the original 2chan from Japan is. While the Anonymous dopes just focus on one Alex Wuroi, the rest of us ran around trying to throw as many monkey wrenches into their internet raids and try to get them shut down. We are growing too.

    Protip- there are 4, count them, 4 Witness X in SL. None of them are JLU, or Green Lantern.

    Nice try but try again :)

  4. Nikola Shirakawa

    Aug 9th, 2007

    I have made a few errors, which I have admitted, which is far from the majority of the paper. I did give out an other password to the wiki, but I never gave the a username and secondary password, which meant that, while they could get to a page and see the wiki existed, there was no way for them to see the inner information. To do that, they needed a username and password, the only one of which that was given to non JLU was given to Cid Jacobs, and I know for a fact that you aren’t him.

  5. NobodyImportant

    Aug 9th, 2007

    The PN do not have access to the JLU’s wiki.
    WitnessX posting on this article is likely none other than Carigorp Matzerath, who tried to play spy and failed miserably – and now lies about his JLU membership to keep up appearances on this blog, despite knowing apparently new information that was not around when the PN got in the first time. Barring that, he’s Maldavius Figtree, who has been trying to DDOS N3X15′s site for the past I don’t know how long, and failing at that as well.

    Also, to my knowledge, the PN have not made threats to Kalel’s family; and the Kara Timtam thing never happened (it was an idea being thrown around at the time, but it was decided against being done).

    Lastly, the resume gathered from Kalel’s site impresses me to a degree. Pretty nice stuff he has there, and I respect him for being successful to that degree.

  6. Witness X

    Aug 10th, 2007

    I’m Carigorp? And/or Maldavious? Wow, that’s news to me. Thanks for letting me know that.

    Once again you Chan types show how dense and unimaginative you are. I’m surprised you didn’t call me Inblubber too. Oh wait, Inblubber employs alot of the PN now, so that’s why you didn’t call me Intlibber.

    Interesting that you say Kalel’s FAMILY when all I talked about was PROPERTY being threatened with vandalism, hmmm…odd slip there.

    You’re right though NobodyImportant. Caridope is a failure, that’s what happens when you send a kid to do a man’s job. Maldavious doesn’t know his own head from his ass and just does a lot of chest thumping. I’d like to know who you try to guess I am next, it ought to get a good chuckle out of me :)

    Maybe I’m a former head of the PN spy network who has an axe to grind for all the shit you PN fucktards said about a friend’s death. Maybe I’m Plasticduck :P

  7. Nikola's Conscience

    Aug 10th, 2007

    The login bug that Nexis mentions was exploited long before you posted the password publicly Nikola, and this was common knowledge within the JLU. You knew full well you were posting all the information necessary to access a private wiki. The last argument you are standing on-that you posted only a superficial url and password that had no useful purpose-holds no water. Still want to tell us this article is not complete and utter hypocracy?

    Not only that, but the PNs for all intents have public access to their forums. Because they insist on anonymity even among themselves all they can use to control access is what an individual knows about their memes and history, and that information is publicly accessible to anyone with a web browser. So you in fact posted private information that was far more confidential than anything the JLU divul…oh wait, DIDN’T divulge to the public. Oops. Want to hang your head a little lower, buddy?

  8. Nikola Shirakawa

    Aug 10th, 2007

    That login bug, after it was exploited, to the best of my knowledge at the time was corrected. The adding of a superficial outer password was just extra precautions. I did later learn that the bug had not been corrected, but at the time I believed that, immediately following that bug, the system was upgraded to prevent it working again. I did not learn otherwise until Kalel told me afterwards, when I called him for his bogus banlink filing against me.

    You want to pretend to be my conscience? My conscience is clear. It was clear the moment I took my actions, and the moment this article was posted. You will notice I have not hidden any of my comments behind some paranoid wordplay or personal attack. My name is on my replies, save for those that have no name as a result of typepad bugs. I do not have to hide my identity or my actions, or my thoughts, or my motivations. My conscience is bare and clear, and the fact that so many people have thanked me for this work only makes em feel better. The only people I have seen really come against me are you JLU members, and well the PN, but they go against pretty much everyone. All the normal sl people, and many of the members of competing anti-griefer groups have thanked me for this article, and even contributed thier own further evidence of wrongdoing.

    Do you know what a vigilante is? It is a person who feels the law does not matter when pursuing bad guys. You have repeatedly flaunted privacy laws, constitutional amendments, even terms of service, all in the pursuit of a few griefers. All are accountable for the law, and while the supers may get away with vigilantism in the comic books, out here in the real world, people don’t like it, don’t want it, and will see you punished for it. Perhaps you should look at your own consciences.

  9. Witness X

    Aug 10th, 2007

    ORLY?? You were in the JLU doing the same stuff you’re accusing them of, and even volunteering for it, for HOW LONG? Since last year?

    Translation: I’m a radical right-wingnut who has so much trouble getting along with anybody that they finally threw my ass out, and now I’m gonna gittem!

  10. DaveOner

    Aug 10th, 2007

    Wow, this makes the fight scenes in WestSide Story seem masculine!

  11. Anonymous

    Aug 10th, 2007

    >>You want to pretend to be my conscience? My conscience is clear. It was clear the moment I took my actions, and the moment this article was posted.

    O wow. So you betray a crapload of your friends and comrades and your conscience is clear. You kick them in the back and run off like a coward. Boy O boy, I’d hate to be your friend or comrade.

    Might as well get it over with and join us PN now. Your just like us. We’re the same us and you. No honor among thieves and all that stuff.

  12. Nikola Shirakawa

    Aug 10th, 2007

    Witness, you have no idea what you are talking about. I never took part in the illegal rl contact information harvesting, nor did I retrieve any pn photographs, nor did I act in any way against the privately owned Woodbury University sim. I did not have nay problem getting along with people. I was not thier ally. I was thier friend. The second I learned Kalel Venkman was engaging in illegal, unconstitutional searches, and violation of privacy rights to carry out his goals, I began to act against them. Furthermore, right-wing? What exactly in any of my posts came off as right-wing? Civil Rights, and unconstitutional search and seizure has tended to be a platform of the Democratic Party, not the Republicans. Please point out where, my right-wing radical policies have been shown.

  13. Anonymous

    Aug 10th, 2007

    Wow…you really need to stop talking out of your ass Nikola. All this is lulzworthy and all, but by George of the Jungle you contradict yourself so often. Sounds like you have no idea what you are talking about.

    You admit they were your friends, yet you always skirt around the fact that you betrayed all of them. Let me spell this out for you Y-O-U B-E-T-R-A-Y-E-D Y-O-U-R F-R-I-E-N-D-S. So why should anyone else trust you when you can turn on them at anytime too? So many times have your supposed “facts” been proven wrong here. It seems you have no idea what you’re talking about and you can’t make up your mind for five seconds.

  14. Anonymous

    Aug 10th, 2007

    Be an hero, Nikola!

  15. Ryozu Kojima

    Aug 10th, 2007

    lol drama

  16. Nikola Shirakawa

    Aug 11th, 2007

    I never skirted around the fact that I turned on them. But my betrayal was for a good reason. If your best friend shot the president, and you turned him in, that would be betraying him, wouldn’t it? But it does not mean you shouldn’t turn him in. Yes, i betrayed my former friends by revealing thier illegal practices. But that is far different from something like betraying them and selling thier technology. You’ll notice I never posted suer manuals for Solaris, or thier blindspheres. I could reveal every inner working of thier technology, but I won’t. There is no reason to that, and it would be purely spiteful and vindictive. Yes, I betrayed some of their secrets. But it was the right thing to do, and my conscience is clear. I would not betray secrets that are not illegal. If I wanted to right now, I could tell you a bit of real life information, as well as list the superhero identities of half the League. But what purpose would that serve other than to hurt them? I’ve seen Venkman’s resume, I know his real name and number, but you’ll notice I only refer to him by his SL name out of respect for his privacy. One paragraph and four sentences were rendered wrong, not the entirety, the majority, or even just half of the article. And where I’ve made mistakes, it was based on the JLU’s own intel. The fact that I don’t have to hide my name shows you just which one of us has the clearer conscience. I do not hide any of my words. There is nothing bad to hide. Can you say the same? Are you willing to put your name to your words, and stand behind them, or are you too afraid that people will recognize them as wrong, as bad, and come to you for it?

  17. Nikola Shirakawa

    Aug 11th, 2007

    Portraits of JLU Power Abuse: Tracy Laszlo:

    [21:25] Tracy Laszlo: (Saved Tue Aug 07 07:08:50 2007) What exactly are you referring to?
    [21:26] Jenifer Jacobus: What do you think?
    [21:26] Jenifer Jacobus: I’m talking abotu your attempts to have me expelled forma group you have no pwoer in
    [21:26] Jenifer Jacobus: Thank goodness, she saw reaosn, and didn’t expel me for practicing ym first amendment rights.
    [21:27] Jenifer Jacobus: Oh, right, you probably don’t recognize me
    [21:27] Jenifer Jacobus: type my anme into brainiac, and you’ll see who I am, old man
    [21:27] Tracy Laszlo: Say Nikola – quit harrassing me or I will use my JLY capabilities to have you lised in teh Linden database as a G
    [21:27] Tracy Laszlo: you got it????
    [21:27] Jenifer Jacobus: i didnt approach you
    [21:28] Jenifer Jacobus: you approached me.
    [21:28] Jenifer Jacobus: You threatened to have me expelled form the republican aprty fo sl, whcih you ahd no pwoer to do.
    [21:28] Jenifer Jacobus: And that statement there isn’t ehlping your case any.
    [21:28] Tracy Laszlo: Ge tout of my face now – or I will write up an incident on you and list you as G if you are not already
    [21:28] Jenifer Jacobus: Will you leave ma lone, and stop tryign to get me kciked otu of other groups?
    [21:29] Tracy Laszlo: You invaded my space -do it again and I will list you as a griefer – NIKOLA!!!!!!
    [21:29] Jenifer Jacobus: You invade dmy space first.
    [21:29] Jenifer Jacobus: Threatinging to have me expelled fromteh republican aprty fo sl for my article.
    [21:29] Tracy Laszlo: I am muting you NOW

  18. Why Bother

    Aug 11th, 2007

    Sigh…

    Nikola give it up. That doesn’t mean anything since it’s only a partial transcript and not the whole story…besides it looks like you were harassing him and flying off the handle about something the guy might not have anything to do with. Besides it looks like the classic use an alt to bait someone, seems like you pushed someone’s buttons and purpose so you could post something here. Really man, that little transcript doesn’t say much besides two idiots yelling at each other over something asinine.

  19. Mark

    Aug 11th, 2007

    “[21:27] Tracy Laszlo: Say Nikola – quit harrassing me or I will use my JLY capabilities to have you lised in teh Linden database as a G”

    This moron should be tossed out of SL.

  20. Nikola's Conscience

    Aug 11th, 2007

    Ahhhhhh. So you published login data to the jlu wiki because you thought it was worthless. That makes sense. If it means you can keep denying anything you have done wrong, and shrug off the hypocrisy of your actions, why not? By the way, there’s still that critical difference between what you have done and what anyone else-perhaps even including the PN-have done: the information you published was NOT available to the public before you published it. Nothing you have pointed out in the actions of others is in any way illegal, as it all came from perfectly public sources (including PN forums, which as noted previously are publicly accessible to anyone who knows enough about the PN and chans). Even your own actions are legal, BUT they are just as unethical as anything else you have pointed out, and-since you posted the information within SL-is also a violation of the Second Life terms of service, UNLIKE the actions of those you accuse.

    But go ahead. Keep denying you have ever done anything wrong. Even the stuff you did when you were new to SL is apparently excusable because you were new, and EVERYONE does bad stuff when they are new, right? Err…or not. Thank you for modeling the perfect behavior for us, in SL and out. ;)

  21. Why Bother

    Aug 11th, 2007

    Hmmm…

    Now that I look at that transcript again…it looks like a load of crap. Anyone can make one of those up.

    Notice how they both type like crap…hell they even make VERY similar typing errors.

    Looking at that makes me start to think typing properly is dying art…and it makes my eyes hurt reading it

  22. Nikola Shirakawa

    Aug 11th, 2007

    I have the entire transcript as well. But i was suffering from login problems today so i could not post the full thing. Basically, what happened was, after reading the article Tracy called me a little punk, and said he was going to get me kicked out of the Republican Party of SL. I had to sue my alt because it was the only way to ask him to stop. I am not seeking a fight with any JLU members. If you want the full transcript, I will post it.

  23. Nikola Shirakawa

    Aug 11th, 2007

    [21:32] Tracy Laszlo: (Saved Mon Aug 06 18:00:25 2007) I dont care to hear your groveling anymore you little punk – you will be muted. And I fully intend to contact Vyre Cohen recommending dropping you from the Republican Party of which I am also a member and embarrssed as hell you belong to it also – if you can do what you did to JLU as an organization you can do the same to any organization of people.

    Furthermore, i never contacted Tracy, this was just the first thing i saw when I logged on that day.

    Now lastly, I will no longer respond to comments left by spineless worms. That is, those of you without the gumption to sign your name to your posts. If you contact me in world, or sign your name, I will be more than happy to answer any of your questions and concerns, but I have better things to do than spend my time fending off personal attacks from anoynonmous internet trolls.

  24. NobodyImportant

    Aug 11th, 2007

    WitnessX said:
    “Interesting that you say Kalel’s FAMILY when all I talked about was PROPERTY being threatened with vandalism, hmmm…odd slip there.”

    Excuse me then, I forgot to check my post over and compare it to yours while I was typing. I thought it was claimed that Kalel’s family was threatened, not his property.

    At any rate, I still don’t know of any threats against Kalel – family or property-wise – made by PN members. Unless there were some dumbass “srs bsns” people making stupid threats, of course.

  25. Nikola Shirakawa

    Aug 11th, 2007

    Ok, to whoever thinks that conscience joke si cute, I’m going to make my last reply to you. I never posted any information inside SL other than the member list, which had no real life info, and was hence, not against the therms of service. the outer wiki password was posted on an external website. Furthermore, i have evidence in my hands, currently of JLU members confessing to violating the Terms of service by actual real life information, so don’t think you cna put your jlu comrades up above me. Ask DianaPrince Carter all about the disclosure clause before you come looking down on me.

  26. Nikola's Conscience

    Aug 11th, 2007

    Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience Nikola’s Conscience

    It IS cute! LAWL

  27. Nikola's Conscience

    Aug 11th, 2007

    Got it. Profiles are websites now. Check.

  28. Witness X

    Aug 11th, 2007

    So it’s against the terms of service for the JLU to have information in their WIKI outside of SL, but it’s not against the terms of service for you to do it, Niko?

    Hey, it’s Nikola Shirakawa: DOUBLE STANDARD MAN!!

    If you’ve got a confession from one of them posting real life information inside of Second Life, LET’S SEE IT.

    Some “journalist” you are.

  29. Witness X

    Aug 11th, 2007

    “Now lastly, I will no longer respond to comments left by spineless worms. That is, those of you without the gumption to sign your name to your posts. If you contact me in world, or sign your name, I will be more than happy to answer any of your questions and concerns, but I have better things to do than spend my time fending off personal attacks from anoynonmous internet trolls.”

    I’m sorry. Some of us care to keep our cover. Just because you demand it doesn’t mean we’re going to come out in the open. Most of us aren’t spineless either we do alot of work someone like you couldn’t handle.

    Besides Nikola you’re starting to sound like one Intlibber. Who very much helped buy land and handed it over to the Woodbury /b/tards and claimed what they did afterwards was not his responsibility, his responsibility ended when he handed over the land very well knowing what that the Woodbury /b/tards would push things too far. In the end this created a vile furry concentration camp. You make the same argument, claiming you only gave the outer password to the PN and you’re not responsible for them hacking the JLU wiki afterwards. You very well knew what was possible going to happen the same as Intlibber did.

  30. Nikola Shirakawa

    Aug 11th, 2007

    But I am not witless enow (to use an Asgardian turn of phrase) to think that this incident defines us, nor do I consider myself perfect and without stain; after all, Imma the one who broke the ToS with a group notice showing a picture of somebody who was supposed to have been Tizzykips, out favourite skank. I do learn from my mistakes, thank the Goddess and I know that we will too.

    An excerpt from the ntoecard “Stop the Insanity” written by DianaPrince Carter. I cannot prove on ehre the ntoecard is from ehre, but I can forward it to anyone whoa sks.

  31. Brainiac Script: Anthem

    Aug 11th, 2007

    integer curfile;
    integer totalfiles;
    float volume;
    integer digits;

    integer CMD_RESET = -1;
    integer CMD_ANTHEM = 16;

    string stringnum(integer number, integer digits)
    {
    string curstring = (string)number;

    while(llStringLength(curstring) < digits)
    {
    curstring = “0″ + curstring;
    }

    return curstring;
    }

    default
    {
    link_message(integer sender,integer num,string msg,key id)
    {
    if(num == CMD_ANTHEM)
    {
    //—————————-
    //You only need to setup these 7 variables

    //————
    //firstsongname is the text that comes before the file number and secondsongname is what comes after it
    //put “” if either of them need to be blank
    //REMEMBER to include .wav if its there
    //i.e.- in Gorillaz001.wav:
    //firstsongname is “Gorillaz” – secondsongname is “.wav”
    //————-
    string firstsongname = “fanfare”;
    string secondsongname = “”;

    //only change curfile if you want the song to start off on a specific file
    curfile = 1;

    //digits tells the script how many digit places the file numbering is
    //i.e.- Gorillaz001.wav : there are 3 digits
    digits = 1;

    totalfiles = 6;
    volume = 5.0;

    //—————————
    llSay(0,”Queueing Justice League Anthem. Playback begins in fifteen seconds.”);

    llSetSoundQueueing(TRUE);
    llPreloadSound(firstsongname + stringnum(1,digits) + secondsongname);
    llPreloadSound(firstsongname + stringnum(2,digits) + secondsongname);
    llPreloadSound(firstsongname + stringnum(3,digits) + secondsongname);
    llPreloadSound(firstsongname + stringnum(4,digits) + secondsongname);
    llPreloadSound(firstsongname + stringnum(5,digits) + secondsongname);
    llPreloadSound(firstsongname + stringnum(6,digits) + secondsongname);

    llSleep(15);
    llSay(0,”Commencing playback…”);

    while(curfile <= totalfiles)
    {
    llPlaySound(firstsongname + stringnum(curfile,digits) + secondsongname, volume);
    curfile += 1;
    llSleep(9.7);
    }
    llStopSound();
    } // if anthem
    if (num == CMD_RESET)
    llResetScript();

    } // linkmessage

    }

  32. Brainiac Script: brainiac core

    Aug 11th, 2007

    integer CMD_RESET = -1;
    integer CMD_NONE = 16;
    integer CMD_RECORD = 17;
    integer CMD_REMOVE = 18;
    integer CMD_ANTHEM = 16;
    integer CMD_LISTALLBYLEVEL = 19;
    integer CMD_IDENTIFY = 20;
    integer CMD_IS = 21;
    integer CMD_INCIDENT = 22;
    integer CMD_INCIDENTPHASE2 = 23;
    integer CMD_GET = 24;

    //Quick hack to find and display resident’s keys from the w-hat name2key database
    // Keknehv Psaltery, 5/5/06
    integer timeOffset =17;
    key requestid;
    key name;
    string resident;
    string serverName = “Brainiac”;
    string URL = “http://www.kryptonians.net/cgi-bin/brainiac/brainiac.pl?”;
    integer securityClearance = FALSE;
    string completeMessage;
    string lastRecipient;
    string firstName; // used in record bio
    string lastName; // used in record bio

    // variables for notecard reading
    string notecardName=”transmissionList”;
    integer lineCounter;
    key dataRequestID;

    // variables for command processing
    list commands=["Brainiac","'help'","'reset'","'scan'","'anthem'","'time'","'status'","'record'","'identify'","'list'","'remove'","'add'","'delete'","'id'","'is'","'incident'","'get'"];
    list commands_help=["All commands to Brainiac must be preceded by the word 'Brainiac' or the abbreviation, 'b'. You may add a comma after this, but use no other punctuation in your commands.\nSay 'Brainiac help' for help.",
    "Gives help with commands",
    "Executes cold restart",
    " - scans for avatars",
    "Plays Justice League anthem",
    "gives current SL time",
    "gives current Brainiac system status",
    " as records JLU security ID for the stated person\n\tbio for ",
    " - returns security clearance, if known to Brainiac. If person has a criminal record, incident reports are also listed." ,
    " - list persons matching given level",
    " - removes specified person from database, along with all associated records; ",
    " same as 'record'",
    " same as 'remove'",
    " same as 'identify'",
    " asks various yes/no conditions - 'is online/member/recruit/citizen/alpha/griefer/friend?'",
    "
    - record griefing incident committed by stated person.",
    "

    - retrieves and lists contents of recorded article or incident report."
    ];

    integer wait_for_conf = FALSE;

    integer scanning = FALSE;

    integer ownerHandle = 0;
    integer anyoneHandle = 0;
    integer activeCommand = CMD_NONE;

    clearance()
    {
    llSay(0,”That function may only be issued by Justice League Unlimited personnel.”);
    }

    string SLTime()
    {
    float TIMEZONE_ADJUSTMENT = 17.0;

    string ampm = “AM”;
    float seconds = llGetGMTclock();
    float hours = seconds/3600.0;
    seconds -= llFloor(hours)*3600.0;
    float minutes = llFloor(seconds)/60.0;
    seconds -= llFloor(minutes)*60;

    // timezone adjustment
    hours += TIMEZONE_ADJUSTMENT;
    if (hours>24.0) hours -= 24.0;

    if (hours>12) {
    hours -= 12;
    ampm = “PM”;
    }

    string sHours = (string)((integer)hours);
    string sMinutes = (string)((integer)minutes);
    string sSeconds = (string)((integer)seconds);

    // Padding with leading zeros as needed
    if (llStringLength(sHours) ==1) sHours = “0″+sHours;
    if (llStringLength(sMinutes)==1) sMinutes = “0″+sMinutes;
    if (llStringLength(sSeconds)==1) sSeconds = “0″+sSeconds;

    string result = sHours + “:” + sMinutes + “:” + sSeconds + ” ” + ampm + ” SLT”;
    return result;
    }

    string stringnum(integer number, integer digits)
    {
    string curstring = (string)number;

    while(llStringLength(curstring) < digits)
    {
    curstring = "0" + curstring;
    }

    return curstring;
    }

    status()
    {
    llSay(0,"* * * Brainiac status * * *");
    llSay(0,"Current ID is " + (string)llGetKey());
    if (scanning) {llSay(0,"Scanning on");} else {llSay(0,"Scanning off");}

    }

    //Help menu handler
    help()
    {
    llSay(0, "Brainiac help");
    integer a;
    for(a = 0; a < llGetListLength(commands_help); a++)
    {
    llSay(0, llList2String(commands, a) + " - " + llList2String(commands_help, a));
    }

    }

    default
    {
    state_entry()
    {
    anyoneHandle = llListen(0,"",NULL_KEY,"");
    llAllowInventoryDrop(TRUE);
    }
    changed(integer change)
    {
    if ((change & CHANGED_INVENTORY) || (change & CHANGED_ALLOWED_DROP))
    {
    llSay(0,"Contents changed.");
    }
    }
    listen( integer chan, string name, key id, string msg )
    {
    securityClearance =
    ( name == "Kalel Venkman" || name == "Kara Timtam" ||
    name == "Sen Pixie" || name == "Glitch Braess" ||
    name == "Flash Grelling" || name == "Carigorp Mazterath" || name == "Hewee Zetkin" || name == "Ryozu Kojima") ;

    if (llGetOwnerKey(id) != id)
    return; // This last bit ensures that the speaker is, in fact, an avatar
    // and not a device named the same as somebody with security clearance. Note that this will allow owners with proper
    // security clearances to speak through objects anyway.

    securityClearance = llSameGroup(id);

    list parameters = llParseString2List(llToLower(msg),[" ",",",".","?"],[]);
    string parm1 = llList2String(parameters,0); // The first parameter had better be "Brainiac"...

    if (parm1 == "brainiac" || parm1 == "b" || parm1 == "brainiac" || parm1 == "b," || parm1 == "granddad" || parm1 == "grandpa" || parm1 == "gramps" || parm1 == "grandad")
    {
    string parm2 = llList2String(parameters,1);
    string parm3 = llList2String(parameters,2);
    string parm4 = llList2String(parameters,3);
    string parm5 = llList2String(parameters,4);
    string parm6 = llList2String(parameters,5);

    if (parm2 == "reset")
    {
    if (securityClearance)
    {
    llMessageLinked(LINK_SET,CMD_RESET,"",NULL_KEY);
    llSay(0,"Authorization recognized. System is reset.");
    llResetScript();
    } else
    clearance();

    }
    if (parm2 == "help") help();
    if (parm2 == "is") {llMessageLinked(LINK_SET,CMD_IS,parm3 + " " + parm4 + " " + parm5 + " " + parm6,NULL_KEY);}
    if (parm2 == "identify" || parm2 == "id" ) {
    if (securityClearance)
    llMessageLinked(LINK_SET,CMD_IDENTIFY,parm3 + " " + parm4,NULL_KEY);
    else
    clearance();
    }
    if (parm2 == "list") { llMessageLinked(LINK_SET,CMD_LISTALLBYLEVEL,parm3,NULL_KEY);}

    if (parm2 == "anthem") { llMessageLinked(LINK_SET,CMD_ANTHEM,"ANTHEM",NULL_KEY);}
    if (parm2 == "status") status();
    if (parm2 == "thank") { if (parm3 == "you") { llSay(0,"You're welcome.");}}
    if (parm2 == "thanks") { llSay(0,"It's nothing.");}

    if (parm2 == "time") llSay(0,"It is now " + SLTime() + ".");
    // Pass agent name and security code to 'record' script
    if (parm2 == "record" || parm2 == "add")
    {
    // record basic ID record
    if (securityClearance)
    llMessageLinked(LINK_SET,CMD_RECORD, parm3 + " " + parm4 + " " + parm6, NULL_KEY);
    else clearance();
    }
    if (parm2 == "incident")
    {
    // We pass the id this time, because only the person who initiated this instruction can complete it.
    if (securityClearance)
    llMessageLinked(LINK_SET,CMD_INCIDENT, parm3 + " " + parm4, id);
    else
    clearance();
    }
    if (parm2 == "remove" | parm2 == "delete" | parm2 == "del")
    {
    if (securityClearance)
    llMessageLinked(LINK_SET,CMD_REMOVE, parm3 + " " + parm4 + " " + parm6, NULL_KEY);
    else clearance();

    }
    if (parm2 == "get")
    {
    if (securityClearance)
    {
    llMessageLinked(LINK_SET,CMD_GET, parm3,NULL_KEY);
    }
    else
    clearance();
    }

    if (parm2 == "scan")
    {
    if (securityClearance)
    {
    if (parm3 == "on")
    {
    if (!scanning)
    {
    scanning = TRUE;
    llSensorRepeat("",NULL_KEY,AGENT,512,TWO_PI,1.0);
    llSay(0,"Scanning for life forms.");
    }
    }
    if (parm3 == "off")
    {
    if (scanning)
    {
    scanning = FALSE;
    llSensorRemove();
    llSay(0,"Scanning stopped.");
    llSetText("",<0,0,0>,1);
    }
    }
    } else clearance();
    }

    }
    }

    http_response(key request_id, integer status, list metadata, string body)
    {
    integer i;
    if (request_id == requestid)
    {

    //Object-Name: ObjectllParseString2List
    //Region: Explorers Rangeland (251904, 270848)
    //Local-Position: (101, 202, 233)

    //ATTENTION JUSTICE LEAGUE: Kalel Venkman requests emergency assistance 9:07:11 SL time, in Explorers Rangeland
    //llSay(0, “Relayed **” + body);
    //llSay(0,”String extraction: region is ‘” + regionName +”‘”);
    llSay(0,body);
    }
    //else
    // llSay(0,(string)status+” error”);
    }
    sensor(integer total_number)
    {
    string text = “”;
    integer i;
    vector pos = llGetPos();
    for (i=0;i float diff = llVecDist(pos,llDetectedPos(i));
    integer dist = llRound(diff);
    string result = (llDetectedName(i)) + " " + ((string)dist) + "m";
    text = text + result + "\n";
    }
    text = text + "\n\n";
    llSetText(text,<0,1,1>,1);
    }
    timer()
    {
    // Check for email with any sender or subject
    llGetNextEmail(“”,”");
    }

    no_sensor()
    {
    llSetText(“Nothing in range.”,<0,1,1>,1);
    }

    }

    state readNotecard
    {
    state_entry()
    {
    lineCounter = 0;
    dataRequestID = llGetNotecardLine(notecardName, lineCounter);
    }
    dataserver(key queryid, string data)
    {
    //Check to make sure this is the request we are making.
    //Remember that when data comes back from the dataserver,
    //it goes to *all* scripts in your prim.
    //So you have to make sure this is the data you want, and
    //not data coming from some other script.
    if (dataRequestID)
    {
    //If we haven’t reached the end of the file
    //Display the incoming data, then request the next line #
    if (data != EOF)
    {
    dataRequestID = llGetNotecardLine(notecardName, lineCounter);
    lineCounter += 1;
    if (lastRecipient!=data)
    {
    llInstantMessage((key)data,completeMessage);
    lastRecipient=data;
    }
    }
    else
    {
    state default;
    }
    }
    }
    }

  33. Brainiac Script: DO NOT SIT

    Aug 11th, 2007

    // When an avatar sits on the object containing this script,
    // the object will say “Get off!” and then force the avatar to stand up.
    default {
    state_entry() {
    llSitTarget(<0, 0, 0.1>, ZERO_ROTATION); // needed for llAvatarOnSitTarget to work
    llUnSit(llAvatarOnSitTarget());
    }

    changed(integer change) { // something changed
    if (change & CHANGED_LINK) { // and it was a link change
    // llSleep(0.5); // llUnSit works better with this delay <<< This comment is probably incorrect now!
    if (llAvatarOnSitTarget() != NULL_KEY) { // somebody is sitting on me
    llSay(0, “Get off!”);
    llUnSit(llAvatarOnSitTarget()); // unsit avatar
    }
    }
    }
    }

  34. Brainiac Script: Identify

    Aug 11th, 2007

    integer CMD_RESET = -1;
    integer CMD_IDENTIFY = 20;

    string firstName;
    string lastName;
    string accessLevel;
    string fullName;

    key request;
    key request2;

    string cap(string param)
    {
    return llToUpper(llGetSubString(param,0,0)) +
    llToLower(llGetSubString(param,1,llStringLength(param) – 1));
    }

    default
    {
    link_message(integer sender,integer num,string msg,key id)
    {
    if(num == CMD_IDENTIFY)
    {
    // if identify, then msg is the parameter line for the
    // identify command
    list parameters = llParseString2List(llToLower(msg),[" ",",","."],[]);

    firstName = cap(llList2String(parameters,0));
    lastName = cap(llList2String(parameters,1));

    // Now we figure out what security rating
    // this person should have. The word ‘as’
    // in the phrase ‘record firstname lastname as rank’
    // has already been discard

    // Make the http request to get the user key
    // Assemble the Brainiac query
    llSay(0,”Processing…”);
    request = llHTTPRequest(“http://www.kryptonians.net/cgi-bin/brainiac/brainiac.pl?action=identify&first=” + llEscapeURL(firstName) + “&last=” + llEscapeURL(lastName), [], “”);
    }
    if(num == CMD_RESET)
    llResetScript();

    // }

    } // linkmessage

    http_response(key request_id, integer status, list metadata, string body)
    {
    if (request_id == request)
    llSay(0,body);

    }
    }

  35. Brainiac Script: Incident

    Aug 11th, 2007

    integer CMD_INCIDENT = 22;
    integer CMD_INCIDENTPHASETWO = 23;
    integer CMD_RESET = -1;

    string firstName;
    string lastName;
    string fullName;

    key speakerKey = NULL_KEY;
    key requestWHAT = NULL_KEY;
    key requestBRAINIAC = NULL_KEY;
    integer activeRequest = FALSE;
    integer resultCount = 0;
    integer requestFailures = 0;
    key associativeKey = NULL_KEY;

    reset()
    {
    speakerKey = NULL_KEY;
    requestWHAT = NULL_KEY;
    requestBRAINIAC = NULL_KEY;
    firstName = “”;
    lastName = “”;
    fullName = “”;
    activeRequest = FALSE;
    resultCount = 0;
    associativeKey = NULL_KEY;
    }

    string cap(string param)
    {
    return llToUpper(llGetSubString(param,0,0)) +
    llToLower(llGetSubString(param,1,llStringLength(param) – 1));
    }

    default
    {
    link_message(integer sender,integer num,string msg,key id)
    {
    if(num == CMD_INCIDENT)
    {
    // if identify, then msg is the parameter line for the
    // identify command
    list parameters = llParseString2List(llToLower(msg),[" ",",","."],[]);

    firstName = cap(llList2String(parameters,0));
    lastName = cap(llList2String(parameters,1));
    fullName = firstName + ” ” + lastName;

    speakerKey = id; // This is passed to the second stage so it can identify who to listen to to make the final record uploading.

    // Make the http request to get the user key
    // Assemble the Brainiac query

    requestWHAT = llHTTPRequest(“http://www.sldata.com/public/name2key/query.php?avname=” +
    llEscapeURL(fullName), [], “”);
    requestBRAINIAC = llHTTPRequest(“http://kryptonians.net/cgi-bin/brainiac/brainiac.pl?action=getkeybyname&first=” + firstName + “&last=” + lastName, [] ,”");
    activeRequest = TRUE;

    }
    if (num == CMD_RESET)
    reset();

    // }

    } // linkmessage

    http_response(key request_id, integer status, list metadata, string body)
    {
    if ((request_id == requestBRAINIAC || request_id == requestWHAT ) && activeRequest)
    {
    list temp = llCSV2List(body);
    if ( ((integer) llList2String(temp, 1) == -1) || llList2String(temp,0) == “noaccess”)
    requestFailures++;
    else
    {
    if (request_id == requestBRAINIAC)
    associativeKey = (key)llList2String(temp,0);
    else
    associativeKey = (key)llList2String(temp,1);

    llMessageLinked(LINK_SET,CMD_INCIDENTPHASETWO,firstName + ” ” + lastName + ” ” + (string)associativeKey,speakerKey);
    activeRequest = FALSE;
    requestFailures = 0;
    }
    if (requestFailures == 2)
    {
    llSay(0,firstName + ” ” + lastName + “‘s key does not appear in either the Brainiac or the external database.”);
    activeRequest = FALSE;
    requestFailures = 0;
    }
    }
    }
    }

  36. Brainiac Script: Incident Phase Two

    Aug 11th, 2007

    integer CMD_RESET = -1;
    integer CMD_INCIDENT = 22;
    integer CMD_INCIDENTPHASETWO = 23;
    integer OPSTATE_ACTIVE = TRUE;
    integer OPSTATE_INACTIVE = FALSE;
    integer COMMAND_TIMEOUT = 90;
    integer listenNum = -1;

    integer currentState = OPSTATE_INACTIVE;

    key request = NULL_KEY;
    key speakerKey = NULL_KEY;

    string firstName;
    string lastName;
    string fullName;
    string associativeKey;

    list parameters;

    string cap(string param)
    {
    return llToUpper(llGetSubString(param,0,0)) +
    llToLower(llGetSubString(param,1,llStringLength(param) – 1));
    }

    reset()
    {
    llSetTimerEvent(0);
    currentState = OPSTATE_INACTIVE;
    llListenRemove(listenNum);
    lastName = “”;
    firstName = “”;
    fullName = “”;
    associativeKey = “”;
    request = NULL_KEY;
    }

    default
    {
    link_message(integer sender, integer num, string msg, key id)
    {
    if (num == CMD_RESET)
    reset();

    if (num == CMD_INCIDENTPHASETWO)
    {
    // String will be the full name of the griefer.
    // id will be the speakerKey of the person currently operating
    // this module.

    // Pseudocode:
    // Set listen on.
    listenNum = llListen(0,”",id,”");
    currentState = OPSTATE_ACTIVE;
    parameters = llParseString2List(llToLower(msg),[" ",",","."],[]);

    firstName = cap(llList2String(parameters,0));
    lastName = cap(llList2String(parameters,1));
    associativeKey = llList2String(parameters,2);

    fullName = firstName + ” ” + lastName;

    llSay(0,”Enter one line of text as your incident report on ” + fullName + “, or say ‘cancel’ on a line by itself to cancel the report.”);
    llSetTimerEvent(COMMAND_TIMEOUT);
    speakerKey = id; // used later by listen event

    // Accept either line of text, or cancel command.
    // Set timeout for accept command.
    // If timer times out while opstate is active,
    // terminate opstate and announce.
    // If listen result is word ‘cancel’, then terminate opstate and announce.
    // otherwise, post new record to Brainiac and set opstate to inactive.
    }

    }
    timer()
    {
    llSay(0,”Incident report is cancelled due to command timeout (” + (string)COMMAND_TIMEOUT + ” seconds).”);
    currentState = OPSTATE_INACTIVE;
    llListenRemove(listenNum);
    llSetTimerEvent(0);
    }
    listen(integer channel, string name, key id, string message)
    {
    if (currentState != OPSTATE_ACTIVE)
    llSay(0,”Incident Phase Two: Invalid state”);
    else
    {
    if (id != speakerKey)
    llSay(0,”Incident Phase Two: Invalid speaker”);
    else
    {
    string firstWord = llToLower(llList2String(llParseString2List(message,[" "],[]),0));

    if (firstWord == “cancel”) {
    llSay(0,”Incident report on ” + fullName + ” is cancelled.”);
    reset();
    } else

    request = llHTTPRequest(“http://www.kryptonians.net/cgi-bin/brainiac/brainiac.pl?action=newrecord&agentkey=” + (string)speakerKey + “&associativekey=” + associativeKey + “&body=” + llEscapeURL(message), [], “”);

    }
    }
    }
    http_response(key request_id, integer status, list metadata, string body)
    {
    if (request_id == request)
    {
    llSay(0,body);
    reset();
    request == NULL_KEY;
    }
    }

    }

  37. Brainiac Script: Is

    Aug 11th, 2007

    integer CMD_IS = 21;
    integer CMD_RESET = -1;

    string firstName;
    string lastName;
    string parm2;
    string parm3;
    string trait;
    string answer;

    key request;
    key request2;
    key agentDataRequest;

    string str_replace(string from, string to, string str)
    {
    integer e = llStringLength(from) – 1;
    if(e > -1)
    {
    string b = str;
    integer c = -1;
    integer f = llStringLength(to) – 1;
    @loop;//instead of a while loop, saves 5 bytes (and run faster).
    integer d = llSubStringIndex(b, from) + 1;
    if(d)
    {
    // c+=d;
    // str = llInsertString(llDeleteSubString(str,c,c+e), c, to);
    // c += f;
    // b = llGetSubString(str, c + 1, 0×4000);
    b = llGetSubString(str = llInsertString(llDeleteSubString(str,c+=d,c+e), c, to), (c += f) + 1, 0×4000);
    jump loop;
    }

    }
    return str;
    }

    string cap(string param)
    {
    return llToUpper(llGetSubString(param,0,0)) +
    llToLower(llGetSubString(param,1,llStringLength(param) – 1));
    }

    default
    {
    link_message(integer sender,integer num,string msg,key id)
    {
    if (num == CMD_RESET)
    llResetScript();

    if(num == CMD_IS)
    {
    // strip out the word ” a ” and any punctuation by replacing with spaces before
    // attempting to parse.

    list parameters = llParseString2List(llToLower(msg),[" ",",",".","?"],[]);

    firstName = cap(llList2String(parameters,0));
    lastName = cap(llList2String(parameters,1));
    parm2 = cap(llList2String(parameters,2));
    parm2 = llGetSubString(parm2,0,0);
    parm3 = cap(llGetSubString(llList2String(parameters,3),0,0));
    if (parm3 == “A”)
    trait = parm3;

    if (parm2 == “A”)
    trait = parm3;
    else
    trait = parm2;

    // if the trait is whether they’re online at the moment, get the agent key and do the test.
    // Otherwise, get a truth statement.
    if (trait == “O”)
    {
    request = llHTTPRequest(“http://www.kryptonians.net/cgi-bin/brainiac/brainiac.pl?action=getkeybyname&first=” + llEscapeURL(firstName) + “&last=” + llEscapeURL(lastName), [], “”);
    }
    else
    {

    // Now we figure out what security rating
    // this person should have. The word ‘as’
    // in the phrase ‘record firstname lastname as rank’
    // has already been discard

    // Make the http request to get the user key
    // Assemble the Brainiac query
    llSay(0,”Processing…”);
    request = llHTTPRequest(“http://www.kryptonians.net/cgi-bin/brainiac/brainiac.pl?action=getlevelbyname&first=” + llEscapeURL(firstName) + “&last=” + llEscapeURL(lastName), [], “”);
    }
    }

    // }

    } // linkmessage

    http_response(key request_id, integer status, list metadata, string body)
    {
    integer listElement;
    integer listSize;
    if (request_id == request)
    {
    // The response may be quite lengthy. We need to chop it
    // into sections llSay() can handle.
    if (trait == “O”)
    {
    llSay(0,”Checking online status for ” + firstName + ” ” + lastName + “…”);
    list temp = llParseString2List(body,["\n"],[]);
    agentDataRequest = llRequestAgentData((key)llList2String(temp,0),DATA_ONLINE);

    } else {
    list temp = llParseString2List(body,["\n"],[]);
    listSize = llGetListLength(temp);
    for(listElement = 0; listElement < listSize; listElement++)
    {
    answer = llList2String(temp,listElement);
    trait = cap(trait);
    trait = llGetSubString(trait,0,0);
    if (trait != answer) {
    if (answer == “noaccess”)
    llSay(0,firstName + ” ” + lastName + ” is not in the database.”);
    else
    llSay(0,firstName + ” ” + lastName + ” is known but does not have that classification.”);
    }
    else
    llSay(0,”Yes.”);

    }
    }

    }
    }

    dataserver(key id, string data)
    {
    if (id == agentDataRequest)
    {
    answer = firstName + ” ” + lastName + ” is currently “;
    if (data == “1″)
    answer += “online.”;
    else
    answer += “offline.”;
    llSay(0,answer);
    }
    }
    }

  38. Brainiac Script: List All By Physical Level

    Aug 11th, 2007

    integer CMD_RESET = -1;
    integer CMD_LISTALLBYLEVEL = 19;
    integer MAX_MEMBERS_PER_QUERY = 48;
    integer firstResult = 0;
    integer maxResult = MAX_MEMBERS_PER_QUERY ;

    string firstName;
    string lastName;
    string accessLevel;
    string fullName;
    string ACCESS_QUERY_URL = “http://kryptonians.net/cgi-bin/brainiac/brainiac.pl?action=”;
    string query = “”;
    string outputRow = “”;

    key request;
    key request2;

    string cap(string param)
    {
    return llToUpper(llGetSubString(param,0,0)) +
    llToLower(llGetSubString(param,1,llStringLength(param) – 1));
    }

    default
    {
    link_message(integer sender,integer num,string msg,key id)
    {
    if (num == CMD_RESET)
    llResetScript();

    if(num == CMD_LISTALLBYLEVEL)
    {

    // if identify, then msg is the parameter line for the
    // identify command
    list parameters = llParseString2List(llToLower(msg),[" ",",","."],[]);

    accessLevel = cap(llList2String(parameters,0));
    accessLevel = llGetSubString(accessLevel,0,0);

    // Now we figure out what security rating
    // this person should have. The word ‘as’
    // in the phrase ‘record firstname lastname as rank’
    // has already been discard

    if (accessLevel != “F” && accessLevel != “R” &&
    accessLevel != “M” && accessLevel != “O” &&
    accessLevel != “S” && accessLevel != “C” &&
    accessLevel != “G” && accessLevel != “K” &&
    accessLevel != “A”)
    {

    llSay(0,”I don’t recognize that designation.”);
    llSay(0,”Acceptable choices are Griefer, Citizen, Friend, Recruit, Member, Officer, Applicant, Systems.”);
    llSay(0,”I can also list keys, which will list all communications keys for members and recruits (use the ‘keys’ command.)”);
    }
    else
    {
    // Make the http request to get the user key
    // Assemble the Brainiac query

    // Let’s get recursive!
    // This is me fighting my natural tendency to block and go do something else when
    // things get confusing. I know I can do this.

    // Step 1 – initial query, send query to Brainiac along with new flags for
    // firstresult and lastresult.
    // in the http_response section, test the number of rows – if what came
    // back is greater than the max rows allowed for this query per chunk,
    // move the sliding window forward by max rows +1 and call again.

    // Set up the initial response bracketing
    firstResult = 0;
    maxResult = MAX_MEMBERS_PER_QUERY;

    if (accessLevel != “K”) {
    llSay(0,”Retrieving data…”);

    query = ACCESS_QUERY_URL + “listallbylevel&accesslevel=” + accessLevel + “&firstresult=” +
    (string)firstResult + “&maxresults=” + (string)(maxResult + 1);

    request = llHTTPRequest(query, [], “”);
    } else {
    // list all keys
    llSay(0,”Retrieving keys…”);

    query = ACCESS_QUERY_URL + “getjlukeys&firstresult=” + (string)firstResult + “&maxresults=” + (string)(maxResult + 1);
    //
    request = llHTTPRequest(query, [], “”);

    }
    }
    }

    // }

    } // linkmessage

    http_response(key request_id, integer status, list metadata, string body)
    {
    integer listElement;
    integer listSize;

    integer httpStatusMajor = status/100;

    if (request_id != request)
    {

    return;
    }

    if (status != 200)
    {
    llSay(0,”Error retrieving data. HTTP status “+(string)status+”: “+body);
    return;
    }

    // How much did we get back?
    list temp = llParseString2List(body,["\n", "\r\n" ], []);
    listSize = llGetListLength(temp);
    integer namesPerRow;
    // If we got back less than max lines, just show them all and we’re done.
    // If there are more than max lines, show a chunk up to maxlines and make another request.
    if (listSize >= MAX_MEMBERS_PER_QUERY) {

    firstResult = firstResult + MAX_MEMBERS_PER_QUERY;
    listSize = MAX_MEMBERS_PER_QUERY;

    namesPerRow = 0;
    outputRow = “”;
    for(listElement = 0; listElement < listSize; listElement++) {
    if (namesPerRow == 0) {
    outputRow += llList2String(temp,listElement);
    namesPerRow++;
    }
    else if (namesPerRow < 5) {
    outputRow += “, ” + llList2String(temp,listElement);
    namesPerRow++;}
    else {
    namesPerRow = 0;
    outputRow += “, ” + llList2String(temp,listElement) + “\n”;

    }
    }

    llSay(0,outputRow);

    // And resend the query for another batch
    if (accessLevel != “K”) {

    // llSay(0,”Retrieving more data…”);

    query = ACCESS_QUERY_URL + “listallbylevel&accesslevel=” + accessLevel + “&firstresult=” +
    (string)firstResult + “&maxresults=” + (string)(maxResult + 1);

    request = llHTTPRequest(query, [], “”);
    } else {
    // list all keys
    // llSay(0,”Retrieving more keys…”);

    query = ACCESS_QUERY_URL + “getjlukeys&firstresult=” + (string)firstResult + “&maxresults=” + (string)(maxResult + 1);
    request = llHTTPRequest(llEscapeURL(query), [], “”);

    }

    } else {

    namesPerRow = 0;
    outputRow = “”;
    for(listElement = 0; listElement < listSize; listElement++) {
    if (namesPerRow == 0) {
    outputRow += llList2String(temp,listElement);
    namesPerRow++;
    }
    else if (namesPerRow < 5) {
    outputRow += “, ” + llList2String(temp,listElement);
    namesPerRow++;
    }
    else {
    namesPerRow = 0;
    outputRow += “, ” + llList2String(temp,listElement) + “\n”;

    }
    }
    llSay(0,outputRow);

    }

    }}

  39. Brainiac Script: Record

    Aug 11th, 2007

    integer CMD_RESET = -1;
    integer CMD_RECORD = 17;

    string firstName;
    string lastName;
    string securityCode;
    string fullName;
    string operation;

    key requestWHAT;
    key requestBRAINIAC;
    key requestWHAT2;
    key requestBRAINIAC2;
    integer activeRequest = FALSE;
    integer requestFailures = 0;
    reset()
    {
    requestWHAT = NULL_KEY;
    requestBRAINIAC = NULL_KEY;
    requestWHAT2 = NULL_KEY;
    requestBRAINIAC2 = NULL_KEY;
    activeRequest = FALSE;
    requestFailures = 0;
    }

    string cap(string param)
    {
    return llToUpper(llGetSubString(param,0,0)) +
    llToLower(llGetSubString(param,1,llStringLength(param) – 1));
    }

    default
    {
    link_message(integer sender,integer num,string msg,key id)
    {
    if (num == CMD_RESET)
    llResetScript();

    if(num == CMD_RECORD)
    {
    // if identify, then msg is the parameter line for the
    // identify command
    list parameters = llParseString2List(llToLower(msg),[" ",",","."],[]);

    firstName = cap(llList2String(parameters,0));
    lastName = cap(llList2String(parameters,1));

    securityCode = llToUpper(llGetSubString(llList2String(parameters,2),0,0));

    fullName = firstName + ” ” + lastName;

    // Now we figure out what security rating
    // this person should have. The word ‘as’
    // in the phrase ‘record firstname lastname as rank’
    // has already been discard

    if (securityCode != “F” && securityCode != “R” &&
    securityCode != “M” && securityCode != “O” &&
    securityCode != “A” && securityCode != “C” &&
    securityCode != “G” && securityCode != “S” &&
    securityCode != “L”)
    {
    llSay(0,”I don’t recognize the security designation ‘” + securityCode + “‘.”);
    llSay(0,”Acceptable choices are Griefer, Citizen, Friend,Applicant, Recruit, Member, Officer, Lantern, Systems.”);

    }
    else
    {
    // Make the http request to get the user key
    // Assemble the Brainiac query

    requestWHAT = llHTTPRequest(“http://www.sldata.com/public/name2key/query.php?avname=” +
    llEscapeURL(fullName), [], “”);
    requestBRAINIAC = llHTTPRequest(“http://www.kryptonians.net/cgi-bin/brainiac/brainiac.pl?action=getkeybyname&first=” + firstName + “&last=” + lastName, [], “”);
    activeRequest = TRUE;
    requestFailures = 0;

    }
    }

    // }

    } // linkmessage

    http_response(key request_id, integer status, list metadata, string body)
    {

    if ( (request_id == requestBRAINIAC || request_id == requestWHAT ) && activeRequest)
    {
    list temp = llCSV2List(body);

    if ( ((integer) llList2String(temp, 1) == -1) || llList2String(temp,0) == “noaccess”)
    requestFailures++;
    else
    {

    requestBRAINIAC2 = llHTTPRequest(“http://kryptonians.net/cgi-bin/brainiac/brainiac.pl?action=addjlu&first=” + firstName + “&last=” + lastName + “&key=” + llList2String(temp,1) + “&accesslevel=” + securityCode, [], “”);
    llMessageLinked(LINK_SET,65535,”RECORDPHASETWO”,requestBRAINIAC2);
    activeRequest = FALSE;
    requestFailures = 0;
    }
    if (requestFailures == 2)
    {
    llSay(0,firstName + ” ” + lastName + “‘s key does not appear in either the Brainiac or the external database.”);
    activeRequest = FALSE;
    requestFailures = 0;
    }

    }

    }
    }

  40. Brainiac Script: Record Phase Two

    Aug 11th, 2007

    integer CMD_RESET = -1;

    key request = NULL_KEY;

    default
    {
    link_message(integer sender, integer num, string msg, key id)
    {
    if (num == CMD_RESET)
    llResetScript();

    if (msg == “RECORDPHASETWO”)
    {
    request = id;
    }
    }
    http_response(key request_id, integer status, list metadata, string body)
    {
    if (request_id == request)
    {
    llSay(0,body);
    request == NULL_KEY;
    }
    }

    }

  41. Brainiac Script: Remove

    Aug 11th, 2007

    integer CMD_RESET = -1;
    integer CMD_REMOVE = 18;

    string firstName;
    string lastName;
    string securityCode;
    string fullName;

    key request;
    key request2;

    string cap(string param)
    {
    return llToUpper(llGetSubString(param,0,0)) +
    llToLower(llGetSubString(param,1,llStringLength(param) – 1));
    }

    default
    {
    link_message(integer sender,integer num,string msg,key id)
    {
    if (num == CMD_RESET)
    llResetScript();

    if(num == CMD_REMOVE)
    {
    // if identify, then msg is the parameter line for the
    // identify command
    list parameters = llParseString2List(llToLower(msg),[" ",",","."],[]);

    firstName = cap(llList2String(parameters,0));
    lastName = cap(llList2String(parameters,1));

    fullName = firstName + ” ” + lastName;

    // Make the http request to get the user key
    // Assemble the Brainiac query

    request = llHTTPRequest(“http://www.kryptonians.net/cgi-bin/brainiac/brainiac.pl?action=remjlu&first=” + llEscapeURL(firstName) + “&last=” + llEscapeURL(lastName),[],”");

    }

    // }

    } // linkmessage

    http_response(key request_id, integer status, list metadata, string body)
    {
    if (request_id == request)
    {
    llSay(0,body);
    }
    }
    }

  42. Brainiac Script: SPIN

    Aug 11th, 2007

    default
    {
    state_entry()
    {
    llTargetOmega(<0,.0,2.5>, 1, 3);
    }
    }

  43. DianaPrince Carter

    Aug 12th, 2007

    I am DianaPrince Carter, JLU persona: Wonder Woman.

    The scripts above are posted in the interests of openness and transparency. For obvious reasons there are security protocols implemented. Use the scripts at your own risk. The JLU accepts no responsibility for any damage or loss that may occur should you choose to use the scripts.

    Compliments of the JLU

  44. Nikola Shirakawa

    Aug 12th, 2007

    Diana, you are a liar. I posted those. And I will continue to post JLU scripts so long as your group carries out thier harassing and slanderous campaign against me.

  45. Nikola Shirakawa

    Aug 12th, 2007

    Case in point, who here is going to admit to you that the unit is an older model, I believe the 2.0 core, and which of us will tell you that this time tomorrow the scripts for the commlink will be posted?

  46. Anon

    Aug 12th, 2007

    Wow. Thanks for the scripts, but what exactly are you trying to prove? Crack open the wiki itself. That’ll really impress me.

  47. Kalel Venkman

    Aug 12th, 2007

    She didn’t lie – they were posted in the interests of transparency and openness. She didn’t say we posted them. IT was an attempt to draw out the identity of the code thief, and it worked. The code was proprietary, and not yours to give away. Your betrayal is complete. I’m very sad to see exactly how low you sank.

    At this point it is now very clear to everyone that your sole interest in becoming a writer for the Herald was to publicly humiliate the Justice League. You’re doing a far better job at humiliating yourself.

  48. Reality

    Aug 12th, 2007

    Who. The. Fuck. Cares.

    want to collect Avatar Keys and Information on Griefers? Do so. Cease collecting keys and information on each and every person you meet.

    far as I am concerned however – you’re nothing but Griefers and having your code stolen and or posted is what you deserve: End of Story.

    Come back when you’ve disbanded your little Griefer Group.

  49. Nikola Shirakawa

    Aug 12th, 2007

    My goal was not to humiliate you guys. I never thought about posting the code until I received theaters from Tracy Laszlo to have me expelled from the Republican Party of SL, thank goodness that group’s leader recognized the squabble as petty. Besides, who else do you think would have had the code to give away like that? And furthermore, didn’t lie?

    “Compliments of the JLU”

    They were compliments of me, and hence, not the JLU. Now, I perfectly understand why you posted it. I thought it was a cute way of doing it. But don’t try to say it wasn’t a lie. I will grant you that it could be a white lie, a lie told for a good reason, but that still does not make it truth.

    One more thing – I’m not a writer for the Herald. I don’t, as of yet, have the skills, I don’t think, to contribute on a regular basis, this was more of a one-shot deal. And everything posted here was spread in-world first, including the brainiac scripts.

    I will continue to post your scripts unless you respond to ym request to condemn your groups personal attack war against me. I did not post this in the interest of transparency and openness. I will be honest about that right now. I posted this as a warning. Brainiac does not work in world unless an avatar’s key is in the external database as a member. But Carigorp’s Containment unit, that’s a whole different story.

    I have the entire contents of Solaris as well as commlinks and signals that I will spread around, if I must, until I see that you have at least told your group not to stoop to the personal attacks and harassment they have currently stooped to. And if it should continue after that, well, thier webmaster will have a lawsuit to deal with.

  50. Artemis Fate

    Aug 12th, 2007

    Kalel>> “She didn’t lie – they were posted in the interests of transparency and openness.”

    DianaPrince>> “The scripts above are posted in the interests of openness and transparency. For obvious reasons there are security protocols implemented. Use the scripts at your own risk. The JLU accepts no responsibility for any damage or loss that may occur should you choose to use the scripts.”

    Okay, so if you posted the Brainiac scripts in the sake of Transparency and Openness, how about opening up the Wiki to public viewing or atleast making the Kryptonian.net server accept non-JLU protocols from the Brainiac scripts that you claim to have posted.

    Clearly, if the JLU wiki is simply just a database of griefer attacks, and how griefer’s work, and so on. It’s information becoming public will not hurt the JLU, but infact help the JLU’s cause as it will empower land owners with the information on how to combat and be preemptive about griefers.

    So if you’re really a public service organization, and interested in helping the needs of others, you’ll open the wiki up to public viewing or at the very least set up the server Brainiac is linked to so that it accepts Identify requests without validation. Otherwise, as I said before, i’d be forced to believe that the JLU wiki contains a wealth of secrets and dirty laundry about the JLU that would otherwise confirm the points put out by Nikola and others, which is why the JLU would refuse to open them up.

Leave a Reply