Ohms Law Calc
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Ohm's Law Calculator
<lsl> /////////////////////////////////////////////////////////////////////// // Sprott-Shaw Degree College //// Ohm's Law Calculator Script //////// ///////////////// Copyright (C) 2007 Fox Diller ////////////////////// /////////////////////////////////////////////////////////////////////// // // // This program is free software; you can redistribute it and/or // // modify it under the terms of the GNU General Public License // // as published by the Free Software Foundation; either version 2 // // of the License, or any later version. // // // // This program is distributed in the hope that it will be useful, // // but WITHOUT ANY WARRANTY; without even the implied warranty of // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License for more details. // // // // You should have received a copy of the GNU General Public License // // along with this program; if not, write to the // // Free Software Foundation, Inc., // // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // // //// Released under the GPL //////////////////// March 24th, 2007 ///// /////////////////////////////////////////////////////////////////////// ////////////////////////////// Coded by: Fox Diller /////////////////// ///////////////////////////////////////////////////////////////////////
// [GLOBAL VARIABLES] // CHANGEABLE-- integer dialog_chan = 42; integer input_chan = 0; integer input_level = 0; list inputs;
// [CONSTANTS] // PLZ DO NO CHANGE... string CALC_NAME = "Ohm's Law Calculator"; string CALC_DESC = "Sprott-Shaw Degree College - Magrathean Technologies";
string SELECTION;
list MENU_INITIAL = [ "Watts", "Ohms", "Volts", "Amps" ];
list LIST_WATTS = [ "Volts", "Amps", "Ohms" ]; list LIST_AMPS = [ "Volts", "Ohms", "Watts" ]; list LIST_OHMS = [ "Volts", "Amps", "Watts" ]; list LIST_VOLTS = [ "Amps", "Ohms", "Watts" ];
list LIST_IN_USE;
// [LISTEN KEYS] // integer DIALOG_LISTEN_KEY; integer INPUT_LISTEN_KEY;
// [RUNTIME VARIABLES] // key OBJECT_KEY; string OBJECT_NAME; key OBJECT_OWNER_KEY; string OBJECT_OWNER_NAME;
// [CUSTOM FUNCTIONS] // // + [MAIN MATH FUNCTIONS] // float getWatts(float volts, float amps, float ohms) {
// llOwnerSay("V:" + (string)volts + " - A:" + (string)amps + " - R:" + (string)ohms); - DEBUG float result; if (volts == 0) result = llPow(amps, 2.0) * ohms; else if (amps == 0) result = llPow(volts, 2.0) / ohms; else if (ohms == 0) result = volts * amps; return result;
}
float getAmps(float volts, float ohms, float watts) {
float result; if (volts == 0) result = llSqrt((watts / ohms)); else if (ohms == 0) result = watts / volts; else if (watts == 0) result = volts / ohms; return result;
}
float getOhms(float volts, float amps, float watts) {
float result; if (volts == 0) result = watts / llPow(amps, 2.0); else if (amps == 0) result = llPow(volts, 2.0) / watts; else if (watts == 0) result = volts / amps; return result;
}
float getVolts(float amps, float ohms, float watts) {
float result; if (watts == 0) result = amps * ohms; else if (amps == 0) result = llSqrt((watts * ohms)); else if (ohms == 0) result = watts / amps; return result;
}
// + [RUNTIME FUNCTIONS] // initRunTimeVars() {
OBJECT_NAME = CALC_NAME; OBJECT_KEY = llGetKey(); OBJECT_OWNER_KEY = llGetOwner(); OBJECT_OWNER_NAME = llKey2Name(OBJECT_OWNER_KEY);
}
// [DEFAULT BEGIN STATE] // default {
state_entry() { // [Build Runtime Variables.] // initRunTimeVars(); llSetObjectName(CALC_NAME); llSetObjectDesc(CALC_DESC); DIALOG_LISTEN_KEY = llListen(dialog_chan, OBJECT_OWNER_NAME, OBJECT_OWNER_KEY, ""); // llSay(0, "Calculator Online!"); }
touch_start(integer total_number) { llDialog(llDetectedKey(0), "What value would you like to find out?", MENU_INITIAL, dialog_chan); } listen(integer channel, string name, key id, string message) { if (channel == dialog_chan) { INPUT_LISTEN_KEY = llListen(input_chan, OBJECT_OWNER_NAME, OBJECT_OWNER_KEY, ""); llSay(0, "Please enter the values to find the [ "+message+" ], type 0 for null value."); if (message == "Watts") LIST_IN_USE = LIST_WATTS; else if (message == "Volts") LIST_IN_USE = LIST_VOLTS; else if (message == "Amps") LIST_IN_USE = LIST_AMPS; else if (message == "Ohms") LIST_IN_USE = LIST_OHMS; SELECTION = message; llSay(0, llList2String(LIST_IN_USE, input_level)+":"); } else { input_level++; inputs += message; if (input_level == 3) { // llOwnerSay(llList2CSV(inputs)); - DEBUG if (SELECTION == "Watts") llSay(0, SELECTION + ": " + (string)getWatts(llList2Float(inputs, 0), llList2Float(inputs, 1), llList2Float(inputs, 2))); else if (SELECTION == "Volts") llSay(0, SELECTION + ": " + (string)getVolts(llList2Float(inputs, 0), llList2Float(inputs, 1), llList2Float(inputs, 2))); else if (SELECTION == "Amps") llSay(0, SELECTION + ": " + (string)getAmps(llList2Float(inputs, 0), llList2Float(inputs, 1), llList2Float(inputs, 2))); else if (SELECTION == "Ohms") llSay(0, SELECTION + ": " + (string)getOhms(llList2Float(inputs, 0), llList2Float(inputs, 1), llList2Float(inputs, 2))); llResetScript(); } llSay(0, llList2String(LIST_IN_USE, input_level)+":"); } }
} </lsl>