/////////////////////////////////////////////////////////////////////////// // 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. // /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// // Copyright (C) 2013 Wizardry and Steamworks - License: GNU GPLv3 // /////////////////////////////////////////////////////////////////////////// string wasProgress(integer percent, integer length, list symbols) { percent /= (integer)((float)100.0/(length)); string p = llList2String(symbols,0); integer itra = 0; do { if(itra>percent-1) p += llList2String(symbols,2); else p += llList2String(symbols,1); } while(++itra; } float power = 10; default { state_entry() { power = 10; state arm; } } state arm { state_entry() { // alarm 5 llPreloadSound("Cannon"); llSetTimerEvent(5); } touch_start(integer num) { llSetTimerEvent(0); } touch(integer num) { if(power > 30) return; power+=.3; integer percent = (integer)((power-10)*100.0/20.0); vector rt = llRot2Euler(llGetLocalRot()); string range = llGetSubString((string)(2 * llPow(power, 2) * llCos(rt.x) * llSin(rt.x) / 9.81), 0, 4) + "m"; llSetText("☉ Power ☉\n" + wasProgress(percent, 20, ["[", "█", "░", "]"]) + "\n" + "Range: " + range, wasPercentToGradient(percent, "gr"), 1); } touch_end(integer num) { state release; } timer() { llSetText("", <1,1,1>, 1); } } state release { state_entry() { llPlaySound("Cannon", 1); llRezObject("Cannonball", llGetPos(), * llGetRot(), ZERO_ROTATION, 0); state default; } }