• home
  • about Babelswarm
  • images
  • moving image
  • essay
  • scripts
  • reviews/news
  • contact

Sample Babelswarm Scripts

Babeller Geyser

key requestid;
list letterList = [];
float offset = 1.5;
float upset = 0.6;
float yset = 0.6;
float dilation;
string currentBody = “”;
integer letterPos = 0;
integer letter;
integer rezParam;
integer MASK1 = 0xFF;
integer MASK2 = 0xFF00;
default {
state_entry() {
llShout(0,”Babel Hose Initialising!”);
state pause;
}
on_rez(integer rezno) {
llResetScript();
}
}
//end default
state check {
state_entry() {
llSetTimerEvent(0);
dilation = llGetRegionTimeDilation();
if(dilation<0.91) {
llOwnerSay(“Time dilation is
“+(string) dilation+”, waiting.”);
state wait;
}
requestid =
llHTTPRequest(“http://www.waystowave.com
/adam/secondlife/babelswarm/word
s_retrievedata_random.php”,
[HTTP_METHOD, “POST”,
HTTP_MIMETYPE, “application/xwww-
form-urlencoded”],
“caller=secondlife&words=babelswarm”);
}
http_response(key request_id, integer status, list metadata, string
body) {
if (request_id == requestid) {
currentBody = body;
llShout(0, body);
state babble;
}
}
//end http_request
touch_start(integer num) {
state pause;
}
}
//end state check
state babble {
state_entry(){
letterList=[];
letterPos = 0;
upset*= -1;
yset*= -1;
string newstring = llToLower(currentBody);
integer length = llStringLength(newstring);
integer i;
for(i=0;i<length;i++) {
offset+=0.75;
if(offset>9.75) {
offset = 1.5;
}
string nextLetter =
llGetSubString(newstring,i,i);
letterList = (letterList=[]) +
letterList + [nextLetter];
string thisLetter =
llList2String(letterList,i);
if(thisLetter != “ “) {
letterPos++;
if(thisLetter==”a”){letter=1;} if(thisLetter==”b”){letter=2;}
if(thisLetter==”c”){letter=3;} if(thisLetter==”d”){letter=4;}
if(thisLetter==”e”){letter=5;} if(thisLetter==”f”){letter=6;}
if(thisLetter==”g”){letter=7;} if(thisLetter==”h”){letter=8;}
if(thisLetter==”i”){letter=9;} if(thisLetter==”j”){letter=10;}
if(thisLetter==”k”){letter=11;} if(thisLetter==”l”){letter=12;}
if(thisLetter==”m”){letter=13;} if(thisLetter==”n”){letter=14;}
if(thisLetter==”o”){letter=15;} if(thisLetter==”p”){letter=16;}
if(thisLetter==”q”){letter=17;} if(thisLetter==”r”){letter=18;}
if(thisLetter==”s”){letter=19;} if(thisLetter==”t”){letter=20;}
if(thisLetter==”u”){letter=21;} if(thisLetter==”v”){letter=22;}
if(thisLetter==”w”){letter=23;} if(thisLetter==”x”){letter=24;}
if(thisLetter==”y”){letter=25;} if(thisLetter==”z”){letter=26;}
if(thisLetter==”0”){letter=27;} if(thisLetter==”1”){letter=28;}
if(thisLetter==”2”){letter=29;} if(thisLetter==”3”){letter=30;}
if(thisLetter==”4”){letter=31;} if(thisLetter==”5”){letter=32;}
if(thisLetter==”6”){letter=33;} if(thisLetter==”7”){letter=34;}
if(thisLetter==”8”){letter=35;} if(thisLetter==”9”){letter=36;}
if(thisLetter==”‘”){letter=37;} if(thisLetter==”,”){letter=38;}
if(thisLetter==”!”){letter=39;} if(thisLetter==”.”){letter=40;
}
if(thisLetter==”?”){
letter=41;
}
rezParam = (MASK1 &
letter) + (MASK2 & (letterPos << 8));
llRezObject(“letterPrim_geyser”,llGetPos
()+<offset,yset,upset>,ZERO_VECTO
R,ZERO_ROTATION,rezParam);
}
else {
letterPos = 0;
llRezObject(“space”,llGetPos()+<2,0,0>,
ZERO_VECTOR,ZERO_ROTATION,0);
}
}
//end for loop
letterList=[];
state check;
}
//end state_entry
on_rez(integer rezno) {
llResetScript();
}
touch_start(integer num) {
state pause;
}
}
//end state babble
state pause {
state_entry(){
llSetTimerEvent(0);
llShout(0,”Babel Geyser Off!”);
}
on_rez(integer rezno) {
llResetScript();
}
touch_start(integer num){
llShout(0,”Babel Geyser On!”);
state check;
}
}
state wait {
state_entry() {
llSetTimerEvent(10);
}
timer() {
state check;
}
on_rez(integer rezno) {
llResetScript();
}
touch_start(integer num) {
state pause;
}
}

Chat Listener

list letterList = [];
list users = [];
float offset = 1.5;
float upset = 0.6;
float yset = 0.6;
float dilation;
string currentBody = “”;
string userName;
string chat;
integer letterPos = 0;
integer letter;
integer letterColour;
integer tempColour;
integer rezParam;
integer MASK1 = 0xFF;
integer MASK2 = 0xFF00;
integer MASK3 = 0xFF0000;
integer count=0;
integer findUser;
integer colourSearch;
key user;
key requestid;
default {
state_entry() {
llShout(0, “Chat Listener Off”);
users=[];
}
touch_start(integer total_number) {
state listening;
}
on_rez(integer rezno) {
llResetScript();
}
}
state listening {
state_entry() {
//llShout(0, “Chat Listener On”);
//users=[];
llListen(-99,”chat_relay”,
NULL_KEY,”“);}
listen(integer chan,string name,key id,string msg) {
user = (key) llGetSubString(msg,0,35);
userName = llKey2Name((user));
findUser = llListFindList( users,
[user] );
if(findUser<0) {
users = (users=[]) + users + [user];
//this is ‘voodoo magic’ from wiki to
improve memory usage
@tryAgain;
tempColour=llFloor(llFrand(10));
colourSearch =
llListFindList(users,[tempColour]);
if(colourSearch<0) {
users =
(users=[])+users+[tempColour];
letterColour=tempColour;
}
else {
jump tryAgain;
}
}
else {
integer userColour =
llList2Integer(users,findUser+1);
letterColour = userColour;
}
//llShout(0, “Users: “+llDumpList2String(users,”,”));
chat = llGetSubString(msg,36,llStringLength
(msg));
//llShout(0, userName+” said: “+chat);
requestid =
llHTTPRequest(“http://www.waystowave
.com/adam/secondlife/babelswarm/inwo
rld_chat_data.php”,
[HTTP_METHOD, “POST”,
HTTP_MIMETYPE, “application/xwww-
form-urlencoded”],
“username=”+userName+”&message=”
+chat);
currentBody = chat;
state babble;
}
touch_start(integer total_number) {
llResetScript();
}
on_rez(integer rezno) {
llResetScript();
}
}
state babble {
state_entry(){
letterList = [];
dilation = llGetRegionTimeDilation();
if(dilation<0.91) {
state wait;
}
//llShout(0,currentBody);
letterPos = 0;
upset*= -1;
yset*= -1;
string newstring = llToLower(currentBody);
integer length = llStringLength(newstring);
integer i;
for(i=0;i<length;i++) {
offset+=1.25;
if(offset>10) {
offset = 1.5;
}
string nextLetter =
llGetSubString(newstring,i,i);
letterList = (letterList=[]) +
letterList + [nextLetter];
string thisLetter =
llList2String(letterList,i);
if(thisLetter != “ “) {
letterPos++;
if(thisLetter==”a”){letter=1;} if(thisLetter==”b”){letter=2;}
if(thisLetter==”c”){letter=3;} if(thisLetter==”d”){letter=4;}
if(thisLetter==”e”){letter=5;} if(thisLetter==”f”){letter=6;}
if(thisLetter==”g”){letter=7;} if(thisLetter==”h”){letter=8;}
if(thisLetter==”i”){letter=9;} if(thisLetter==”j”){letter=10;}
if(thisLetter==”k”){letter=11;} if(thisLetter==”l”){letter=12;}
if(thisLetter==”m”){letter=13;} if(thisLetter==”n”){letter=14;}
if(thisLetter==”o”){letter=15;} if(thisLetter==”p”){letter=16;}
if(thisLetter==”q”){letter=17;} if(thisLetter==”r”){letter=18;}
if(thisLetter==”s”){letter=19;} if(thisLetter==”t”){letter=20;}
if(thisLetter==”u”){letter=21;} if(thisLetter==”v”){letter=22;}
if(thisLetter==”w”){letter=23;} if(thisLetter==”x”){letter=24;}
if(thisLetter==”y”){letter=25;} if(thisLetter==”z”){letter=26;}
if(thisLetter==”0”){letter=27;} if(thisLetter==”1”){letter=28;}
if(thisLetter==”2”){letter=29;} if(thisLetter==”3”){letter=30;}
if(thisLetter==”4”){letter=31;} if(thisLetter==”5”){letter=32;}
if(thisLetter==”6”){letter=33;} if(thisLetter==”7”){letter=34;}
if(thisLetter==”8”){letter=35;} if(thisLetter==”9”){letter=36;}
if(thisLetter==”‘”){letter=37;} if(thisLetter==”,”){letter=38;}
if(thisLetter==”!”){letter=39;} if(thisLetter==”.”){letter=40;
}
if(thisLetter==”?”){
letter=41;
}
rezParam = (MASK1 &
letter) + (MASK2 & (letterPos <<
8)) + (MASK3 & (letterColour <<
16));
llRezObject(“letterPrim_chat”,
llGetPos()-<offset,yset,upset>,
ZERO_VECTOR, ZERO_ROTATION,
rezParam);
}
else {
letterPos = 0;
llRezObject(“space”,llGetPos()-
<offset,yset,upset>,ZERO_VECTOR,
ZERO_
ROTATION,0);
}
}
//end for loop
letterList=[];
state listening;
}
//end state_entry
on_rez(integer rezno) {
llResetScript();
}
touch_start(integer touchno) {
llResetScript();
}
}
//end state babble
state wait {
state_entry() {
llSetTimerEvent(10);
}
timer() {
state babble;
}
}

Translate Spawn

integer langChoice;
integer letterPos;
integer inc;
float upset;
float yset;
float offset;
integer letter;
integer rezParam;
integer MASK1 = 0xFF;
integer MASK2 = 0xFF00;
key requestid;
list letterList;
string currentBody;
string lang;
string text;
default {
state_entry() {
llListen(0,”“,NULL_KEY,”“);
letterList=[];
}
listen(integer chan,string name,key
id,string msg) {
if(llGetOwnerKey(id)==id)
//detect if speaker is agent, see
<http://forums.secondlife.com/
showthread.php?t=238069&page=1&pp=15>
{
text=msg;
langChoice=llFloor(llFrand(6));
if(langChoice==0){lang=”nl”;}if
(langChoice==1){lang=”fr”;}if
(langChoice==2){lang=”de”;}if
(langChoice==3)
{lang=”it”;}if(langChoice==4)
{lang=”pt”;}if(
langChoice==5){lang=”es”;}if
(langChoice==6){lang=”zh”;}if
(langChoice==7
){lang=”zt”;}if(langChoice==8)
{lang=”el”;}if(langChoice==9)
{lang=”ja”;}if(la
ngChoice==10){lang=”ko”;
}
if(langChoice==11){
lang=”ru”;
}
//if(langChoice==6){lang=”ar”;}
altavista doesn’t do arabic
requestid =
llHTTPRequest(“http://www.waystowave
.com/adam/secondlife/babelswarm/trans
late_av.php”,
[HTTP_METHOD, “POST”,
HTTP_MIMETYPE, “application/x-www
formurlencoded”],”
lp=en_”+lang+”&text=”+text);
//”+lang+”
// good test phrase: Very good! Isn’t
it like a blue wheeled dog melting
with sparrows in a pastry shop?
}
// end ownerKey if
//else { llOwnerSay(“Speaker is not
an agent.”);}
}
http_response(key request_id,
integer status, list metadata,
string body) {
if (request_id == requestid) {
string escape = llEscapeURL(body);
currentBody = escape;
state babble;
}
}
}
state babble {
state_entry(){
//llOwnerSay(“babble”);
letterPos = 0;
upset*= -1;
yset*= -1;
string newstring = llToLower(currentBody);
integer length = llStringLength(newstring);
integer i=0;
//for(i=0;i<length;i++) {
while(i<length) {
offset+=0.75;
if(offset>9.75) {
offset = 1.5;
}
string nextLetter =
llGetSubString(newstring,i,i);
if(nextLetter!=”%”) {
//not a special character
string thisLetter =
nextLetter;
letterList =
(letterList=[]) + letterList + [thisLetter];
letterPos++;
i++;
if(thisLetter==”a”){letter=1;} if(thisLetter==”b”){letter=2;}
if(thisLetter==”c”){letter=3;} if(thisLetter==”d”){letter=4;}
if(thisLetter==”e”){letter=5;} if(thisLetter==”f”){letter=6;}
if(thisLetter==”g”){letter=7;} if(thisLetter==”h”){letter=8;}
if(thisLetter==”i”){letter=9;} if(thisLetter==”j”){letter=10;}
if(thisLetter==”k”){letter=11;} if(thisLetter==”l”){letter=12;}
if(thisLetter==”m”){letter=13;} if(thisLetter==”n”){letter=14;}
if(thisLetter==”o”){letter=15;} if(thisLetter==”p”){letter=16;}
if(thisLetter==”q”){letter=17;} if(thisLetter==”r”){letter=18;}
if(thisLetter==”s”){letter=19;} if(thisLetter==”t”){letter=20;}
if(thisLetter==”u”){letter=21;} if(thisLetter==”v”){letter=22;}
if(thisLetter==”w”){letter=23;} if(thisLetter==”x”){letter=24;}
if(thisLetter==”y”){letter=25;} if(thisLetter==”z”){letter=26;}
if(thisLetter==”0”){letter=27;} if(thisLetter==”1”){letter=28;}
if(thisLetter==”2”){letter=29;} if(thisLetter==”3”){letter=30;}
if(thisLetter==”4”){letter=31;} if(thisLetter==”5”){letter=32;}
if(thisLetter==”6”){letter=33;} if(thisLetter==”7”){letter=34;}
if(thisLetter==”8”){letter=35;
}
if(thisLetter==”9”){
letter=36;
}
rezParam = (MASK1 &
letter) + (MASK2 & (letterPos << 8));
llRezObject(“letterPrim_trans”,
llGetPos()-
<offset,yset,upset>,ZERO_VECTOR,ZERO_
ROTATION,rezParam);
//llOwnerSay((string) thisLetter);
}
//end thisLetter!=”%” if
else if(nextLetter==”%”) {
//special charaacter
if(llGetSubString(newstring,i+1,i+1)
==”c”) // ‘c’ after ‘%’, therefore special
character
{
string
thisLetter = llGetSubString(newstring,i,i+5);
letterList
= (letterList=[]) + letterList + [thisLetter];
letterPos++;
i+=6;
if(thisLetter==”%c3%a1”){letter=42;} if(thisLetter==”%c3%a0”){letter=43;}
if(thisLetter==”%c3%a2”){letter=44;} if(thisLetter==”%c3%a4”){letter=45;}
if(thisLetter==”%c3%a3”){letter=46;} if(thisLetter==”%c3%a6”){letter=47;}
if(thisLetter==”%c3%a7”){letter=48;} if(thisLetter==”%c3%a9”){letter=49;}
if(thisLetter==”%c3%a8”){letter=50;} if(thisLetter==”%c3%aa”){letter=51;}
if(thisLetter==”%c3%ab”){letter=52;} if(thisLetter==”%c3%ad”){letter=53;}
if(thisLetter==”%c3%ac”){letter=54;} if(thisLetter==”%c3%ae”){letter=55;}
if(thisLetter==”%c3%af”){letter=56;}
if(thisLetter==”%c3%b1”){letter=57;}
if(thisLetter==”%c3%b3”){letter=58;}
if(thisLetter==”%c3%b2”){letter=59;} if(thisLetter==”%c3%b4”){letter=60;}
if(thisLetter==”%c3%b6”){letter=61;} if(thisLetter==”%c3%b5”){letter=62;}
if(thisLetter==”%c3%ba”){letter=63;} if(thisLetter==”%c3%b9”){letter=64;}
if(thisLetter==”%c3%bb”){letter=65;} if(thisLetter==”%c3%bc”){letter=66;
}
if(thisLetter==”%c3%bf”){
letter=67;
}
rezParam
= (MASK1 & letter) + (MASK2 &
(letterPos << 8));
llRezObject(“letterPrim_trans”,
llGetPos()-
<offset,yset,upset>,ZERO_VECTOR,
ZERO_ROTATION,rezParam);
//llOwnerSay((string) thisLetter);
}
//end llGetSubString “c” if;
else
if(llGetSubString(newstring,i+1,i+1)
==”2” ||
llGetSubString(newstring,i+1,i+1)
==”3”) //’2’ or ‘3’ after ‘%’,
therefore punctuation.
{
string
thisLetter = llGetSubString(newstring,i,i+2);
letterList
= (letterList=[]) + letterList + [thisLetter];
letterPos++;
i+=3;
if(thisLetter==”%27”){
letter=37;
}
//’
if(thisLetter==”%2C”){
letter=38;
}
//,
if(thisLetter==”%21”){
letter=39;
}
//!
if(thisLetter==”%2E”){
letter=40;
}
//.
if(thisLetter==”%3F”){
letter=41;
}
//?
rezParam
= (MASK1 & letter) + (MASK2 &
(letterPos << 8));
llRezObject(“letterPrim_trans”,
llGetPos()-
<offset,yset,upset>,ZERO_VECTOR,
ZERO_ROTATION,rezParam);
//llOwnerSay((string) thisLetter);
if(thisLetter==”%20”){
// space
llRezObject(“space”,llGetPos()-
<offset,yset,upset>,ZERO_VECTOR,
ZERO_ROTATION,0);
//llOwnerSay(“space”);
letterPos=0;
}
//end space if
}
//else for ‘2’ or ‘3’
}
//end ==% if
}
//end for loop
llSay(0,llUnescapeURL(newstring));
//llOwnerSay(llDumpList2String
(letterList,”,”));
//llOwnerSay(llUnescapeURL
(llDumpList2String(letterList,”“)));
letterList=[];
state default;
}
//end state_entry
on_rez(integer rezno) {
llResetScript();
}
}
//end state babble

This project has been assisted by the Australian Government through the Australia Council, it's arts funding and advisory body. Australia Council for the Arts Lismore Regional Gallery Icon.inc Australian Centre of Virtual Art