Simple Pay Door
De DigiWiki.
This is a very simple pay door. With this, you have to pay a door to get access into something. You can set the amount of money, how long it takes to close after payment. Override coming soon.
// Pay Door that rules // Made by: Giygas Static // 2011/01/30 /// START USER SETTINGS integer time = 1; // How much time until the door closes again integer price = 20; // Price of Admission in L integer DEBUG = 0; // 0 for RETAIL, 1 for TESTING /// END USER SETTINGS integer door1chan = 696736; //channel used to communicate to the door to override and open as such string name = "NULL"; //Name of Person who eventually gives string own = "NULL"; //Name of Owner that is defined later integer difference = 0; //Temp spot for difference if someone over pays. vector mypos; // door position (objects move a tiny amount integer DOOR_OPEN = 1; integer DOOR_CLOSE = 2; integer DIRECTION = -1; // direction door opens in. Either 1 (outwards) or -1 door(integer what) { rotation rot; rotation delta; llSetTimerEvent(0); // kill any running timers if ( what == DOOR_OPEN ) { //llTriggerSound("Door open", 0.8); rot = llGetRot(); delta = llEuler2Rot(<0, 0, -DIRECTION * PI_BY_TWO>); rot = delta * rot; // rotate by -45 degree llSetRot(rot); } else if ( what == DOOR_CLOSE) { rot = llGetRot(); delta = llEuler2Rot(<0, 0, DIRECTION * PI_BY_TWO>); // rotate by 45 degree rot = delta * rot; llSetRot(rot); //llTriggerSound("Door close", 0.8); } } default { state_entry() { llSetTimerEvent(5); } timer() { llRequestPermissions(llGetOwner(), PERMISSION_DEBIT); } run_time_permissions(integer permissions) { //Only wait for payment if the owner agreed to pay out money if (permissions & PERMISSION_DEBIT) { state ready; } } on_rez(integer start_par) { llResetScript(); } } state ready { state_entry() { if (DEBUG == 1) { llOwnerSay("WARNING! Debug is on, you will not recieve money if someone clicks your door without paying!"); } llOwnerSay("Ready."); own = llKey2Name(llGetOwner()); } touch_start(integer total_num){ name = llKey2Name(llDetectedKey(0)); llSay(0, "Hello " + name + " to access " + own + "'s House you need to pay " + (string)price + "L. Thank you."); if (DEBUG == 1) { door(DOOR_OPEN); state on; } } on_rez(integer start_par) { llResetScript(); } money(key giver, integer amt) { name = llKey2Name(giver); if( amt == price ) { llSay(0, "Paid, Access Granted for " + (string)time + " Seconds: " + name); door(DOOR_OPEN); state on; } if( amt < price ) { llSay(0, "ACCESS DENIED: you need to pay " + (string)price + "L.\n You Tried to pay " + (string)amt + "L."); llGiveMoney(giver, amt); } if( amt > price ) { difference = amt - price; llSay(0, "Access granted, You paid too much, here's the difference from" + (string)price + "L, which is " + (string)difference + "L." ); llGiveMoney(giver, difference); door(DOOR_OPEN); state on; } } } state on { state_entry() { llSetTimerEvent(time); } timer() { door(DOOR_CLOSE); llSetPos(mypos); // workaround for tiny movements during rotation state ready; } on_rez(integer start_par) { llResetScript(); } }