/////////////////////////////////////////////////////////////////////////// // Copyright (C) Wizardry and Steamworks 2011 - License: GNU GPLv3 // // Please see: http://www.gnu.org/licenses/gpl.html for legal details, // // rights of fair usage, the disclaimer and warranty conditions. // /////////////////////////////////////////////////////////////////////////// // Inspired by: // http://wiki.secondlife.com/wiki/LSL_Protocol/RestrainedLoveAPI /////////////////////////////////////////////////////////////////////////// // Copyright (C) 2013 Wizardry and Steamworks - License: GNU GPLv3 // /////////////////////////////////////////////////////////////////////////// vector wasStringToVector(string in) { list v = llParseString2List(in, ["<", ",", ">"], []); return ; } key sQuery = NULL_KEY; vector reqPos = ZERO_VECTOR; vector gPos = ZERO_VECTOR; default { state_entry () { integer comChannel = ((integer)("0x"+llGetSubString((string)llGetOwner(),-8,-1)) & 0x3FFFFFFF) ^ 0xBFFFFFFF; llListen (comChannel+4, "", "", ""); } on_rez(integer start_param) { llResetScript(); } listen(integer channel, string name, key id, string message) { list tokens = llParseString2List (message, ["/"], []); if (llGetListLength (tokens)!=4) return; reqPos.x = llList2Float (tokens, 1); reqPos.y = llList2Float (tokens, 2); reqPos.z = llList2Float (tokens, 3); sQuery=llRequestSimulatorData (llList2String (tokens, 0), DATA_SIM_POS); } dataserver(key queryid, string data) { if (queryid != sQuery) return; gPos = wasStringToVector(data); gPos += reqPos; llOwnerSay("Aye aye cp'n! Going to warp in 10 seconds..."); llSetTimerEvent(10); } timer() { llSetTimerEvent(0); llOwnerSay("@tpto:" + (string)((integer)gPos.x) + "/" +(string)((integer)gPos.y) +"/" +(string)((integer)gPos.z) + "=force"); llDie(); } }