advanced interior decorator tool

Got any custom JavaScript additions/tweaks you think other people would like to see? Post 'em here!
Post Reply
dragon slayer
UOX3 Guru
Posts: 776
Joined: Thu Dec 21, 2006 7:37 am
Has thanked: 4 times
Been thanked: 26 times

advanced interior decorator tool

Post by dragon slayer »

Here is advanced version of the interior decorator tool for your homes.

This one features Lockdown, Release, Secure, Place Trashcan, Move Directions WEST,EAST,SOUTH,NORTH
add this line to your jse_fileassociations
5037=item/advancedinteriordecorator.js

then drop this in your js items folder files.
advancedinteriordecorator.js
V1.0
(10.82 KiB) Downloaded 111 times
var advancedinteriorgump = 5037;

function onUseChecked(pUser, iUsed)
{
    var socket = pUser.socket;
    var gumpID = advancedinteriorgump + 0xffff;
    if( socket && iUsed && iUsed.isItem )
    {
        var itemOwner = GetPackOwner( iUsed, 0 );
        if( itemOwner == null || itemOwner.serial != pUser.serial )
        {
            pUser.SysMessage( GetDictionaryEntry( 1763, socket.language )); // That item must be in your backpack before it can be used.
        }
        else
        {
            var pMulti = pUser.multi;
            if( ValidateObject( pMulti ) && pMulti.owner == pUser )
            {
                socket.CloseGump( gumpID, 0 );
                displaygump( iUsed, pUser );
                //iMulti = pUser.multi;
            }
            else
            {
                pUser.SysMessage( GetDictionaryEntry( 2067, socket.language ) ); // You must be in your house to do this.
            }
        }
    }
    return false;
}

function displaygump( socket, pUser )
{
    var myGump = new Gump;
    myGump.AddPage( 0 );
    myGump.AddBackground( 0, 0, 170, 555, 2600 );
    myGump.AddButton( 40, 45, 0x868, 1, 0, 1 );
    myGump.AddXMFHTMLGump( 80, 50, 70, 40, 1018323, false, false );//turn
    myGump.AddButton( 40, 85, 0x868, 1, 0, 2 );
    myGump.AddXMFHTMLGump( 80, 90, 70, 40, 1018324, false, false );//up
    myGump.AddButton( 40, 125, 0x868, 1, 0, 3 );
    myGump.AddXMFHTMLGump( 80, 130, 70, 40, 1018325, false, false );//down
    myGump.AddButton( 40, 165, 0x868, 1, 0, 4 );
    myGump.AddHTMLGump(80, 170, 70, 40, 0, 0, "North");
    myGump.AddButton( 40, 205, 0x868, 1, 0, 5 );
    myGump.AddHTMLGump(80, 210, 70, 40, 0, 0, "East");
    myGump.AddButton(40, 245, 0x868, 1, 0, 6 );
    myGump.AddHTMLGump(80, 250, 70, 40, 0, 0, "South");
    myGump.AddButton(40, 285, 0x868, 1, 0, 7 );
    myGump.AddHTMLGump(80, 290, 70, 40, 0, 0, "West");

    myGump.AddButton(40, 325, 0x868, 1, 0, 8 );
    myGump.AddHTMLGump(80, 330, 70, 40,  0, 0, "Lock");

    myGump.AddButton(40, 365, 0x868, 1, 0, 9 );
    myGump.AddHTMLGump(80, 370, 70, 40, 0, 0, "Secure");

    myGump.AddButton(40, 405, 0x868, 1, 0, 10 );
    myGump.AddHTMLGump(80, 410, 70, 40, 0, 0, "Release");

    myGump.AddButton(40, 445, 0x868, 1, 0, 11 );
    myGump.AddHTMLGump(80, 450, 70, 40, 0, 0, "Place Trashcan");
    myGump.Send( pUser );
    myGump.Free();
    return false;
}

function onGumpPress( socket, pButton, gumpData )
{
    var pUser = socket.currentChar;
    var pMulti = pUser.multi;
    if (ValidateObject(pMulti) && pMulti.owner == pUser)
    {
        switch (pButton)
        {
            case 0:
                break;//close
            case 1: // Turn
                var targMsg3 = GetDictionaryEntry(2068, socket.language); // Select an object to turn.
                socket.CustomTarget(3, targMsg3);
                displaygump(socket, pUser);
                break;
            case 2: // Up
                var targMsg2 = GetDictionaryEntry(2069, socket.language); // Select an object to increase its height.
                socket.CustomTarget(2, targMsg2);
                displaygump(socket, pUser);
                break;
            case 3: // Down
                var targMsg1 = GetDictionaryEntry(2070, socket.language); // Select an object to lower its height.
                socket.CustomTarget(1, targMsg1);
                displaygump(socket, pUser);
                break;
            case 4: // North
                var targMsg1 = "Select an object to move north.";
                socket.CustomTarget(4, targMsg1);
                displaygump(socket, pUser);
                break;
            case 5: // East
                var targMsg1 = "Select an object to move east.";
                socket.CustomTarget(5, targMsg1);
                displaygump(socket, pUser);
                break;
            case 6: // South
                var targMsg1 = "Select an object to move south.";
                socket.CustomTarget(6, targMsg1);
                displaygump(socket, pUser);
                break;
            case 7: // West
                var targMsg1 = "Select an object to move west.";
                socket.CustomTarget(7, targMsg1);
                displaygump(socket, pUser);
                break;
            case 8: // Lock
                TriggerEvent(15002, "LockdownItem", socket, pMulti);
                displaygump(socket, pUser);
                break;
            case 9: // Secure
                TriggerEvent( 15002, "SecureContainer", socket, iMulti );
                displaygump(socket, pUser);
                break;
            case 10: // Release
                TriggerEvent( 15002, "ReleaseItem", socket, iMulti );
                displaygump(socket, pUser);
                break;
            case 11: // Trashcan
                TriggerEvent( 15002, "PlaceTrashBarrel", socket, iMulti );
                displaygump(socket, pUser);
                break;
            default:
                Console.Log( "Unhandled house tool command detected");
                return false;
        }
    }
    else
        pUser.SysMessage( GetDictionaryEntry( 2067, socket.language ) ); // You must be in your house to do this.
}

function onCallback1( socket, ourObj )
{
    var tChar = socket.currentChar;
    var iMulti = tChar.multi;
    if( !ValidateObject( ourObj ) || !ourObj.isItem || ourObj.movable != 3 || !ValidateObject( iMulti ) || iMulti.owner != tChar )
    {
        socket.SysMessage( GetDictionaryEntry( 2072, socket.language ) ); // You can only use the interior decorator on locked down items.
        return;
    }

    var objHeight = ourObj.z + GetTileHeight( ourObj.id );
    var iMultiZ = iMulti.z;
    if( ourObj.z == -128 || ourObj.z == ( iMultiZ + 7 ) || ourObj.z == ( iMultiZ + 27 ) || ourObj.z == ( iMultiZ + 47 ) || ourObj.z == ( iMultiZ + 67 )
        || objHeight == -128 || objHeight == ( iMultiZ + 7 ) || objHeight == ( iMultiZ + 27 ) || objHeight == ( iMultiZ + 47 ) || objHeight == ( iMultiZ + 67 ))
    {
        socket.SysMessage( GetDictionaryEntry( 2073, socket.language ) ); // You cannot lower it down any further.
        return;
    }

    if( ourObj.weight >= 10000 )
    {
        socket.SysMessage( GetDictionaryEntry( 1551, socket.language ) ); // That is too heavy.
        return;
    }

    socket.CustomTarget( 1 );
    if( !socket.GetWord( 1 ) )
        ourObj.z -= 1;
}

function onCallback2( socket, ourObj )
{
    var tChar = socket.currentChar;
    var iMulti = tChar.multi;
    if( !ValidateObject( ourObj ) || !ourObj.isItem || ourObj.movable != 3 || !ValidateObject( iMulti ) || iMulti.owner != tChar )
    {
        socket.SysMessage( GetDictionaryEntry( 2072, socket.language ) ); // You can only use the interior decorator on locked down items.
        return;
    }

    var objHeight = ourObj.z + GetTileHeight( ourObj.id );
    var iMultiZ = iMulti.z;
    if( ourObj.z == 127 || ourObj.z == ( iMultiZ + 22 ) || ourObj.z == ( iMultiZ + 44 ) || ourObj.z == ( iMultiZ + 66 ) || ourObj.z == ( iMultiZ + 88 )
        || objHeight == 127 || objHeight == ( iMultiZ + 22 ) || objHeight == ( iMultiZ + 44 ) || objHeight == ( iMultiZ + 66 ) || objHeight == ( iMultiZ + 88 ))
    {
        socket.SysMessage( GetDictionaryEntry( 2073, socket.language ) ); // You cannot raise it up any higher.
        return;
    }

    if( ourObj.weight >= 10000 )
    {
        socket.SysMessage( GetDictionaryEntry( 1551, socket.language ) ); // That is too heavy.
        return;
    }

    socket.CustomTarget( 2 );
    if( !socket.GetWord( 1)  )
        ourObj.z += 1;
}

function onCallback3( socket, ourObj )
{
    var tChar = socket.currentChar;
    var iMulti = tChar.multi;
    if( !ValidateObject( ourObj ) || !ourObj.isItem || ourObj.movable != 3 || !ValidateObject( iMulti ) || iMulti.owner != tChar )
    {
        socket.SysMessage( GetDictionaryEntry( 2072, socket.language ) ); // You can only use the interior decorator on locked down items.
        return;
    }

    if( ourObj.weight >= 10000 )
    {
        socket.SysMessage( GetDictionaryEntry( 1551, socket.language ) ); // That is too heavy.
        return;
    }

    socket.CustomTarget( 3 );
    TriggerEvent( 50, "SmartTurn", ourObj ); // Trigger SmartTurn() function in furniture_smartturn.js
}

function onCallback4( socket, ourObj )
{
    var tChar = socket.currentChar;
    var iMulti = tChar.multi;
    var iMultiC = ourObj.multi;
    var multiNECornerCoords = (iMultiC.GetMultiCorner( 1 )).split( "," );
    var neCornerX = parseInt(multiNECornerCoords[0]);
    var neCornerY = parseInt(multiNECornerCoords[1]);

    if( !ValidateObject( ourObj ) || !ourObj.isItem || ourObj.movable != 3 || !ValidateObject( iMulti ) || iMulti.owner != tChar )
    {
        socket.SysMessage( GetDictionaryEntry( 2072, socket.language ) ); // You can only use the interior decorator on locked down items.
        return;
    }

    if (ourObj.y <= neCornerY)
    {
        socket.SysMessage("You cannot move it north any further." );
        return;
    }

    if( ourObj.weight >= 10000 )
    {
        socket.SysMessage( GetDictionaryEntry( 1551, socket.language ) ); // That is too heavy.
        return;
    }

    socket.CustomTarget( 4 );
    if( !socket.GetWord( 1 ) )
        ourObj.y -= 1;
}

function onCallback5( socket, ourObj )
{
    var tChar = socket.currentChar;
    var iMulti = tChar.multi;
    var iMultiC = ourObj.multi;
    var multiSECornerCoords = (iMultiC.GetMultiCorner( 3 )).split( "," );
    var seCornerX = parseInt(multiSECornerCoords[0]);
    var seCornerY = parseInt(multiSECornerCoords[1]);

    if( !ValidateObject( ourObj ) || !ourObj.isItem || ourObj.movable != 3 || !ValidateObject( iMulti ) || iMulti.owner != tChar )
    {
        socket.SysMessage( GetDictionaryEntry( 2072, socket.language ) ); // You can only use the interior decorator on locked down items.
        return;
    }

    if (ourObj.x >= seCornerX)
    {
        socket.SysMessage( "You cannot move it east any further.");
        return;
    }

    if( ourObj.weight >= 10000 )
    {
        socket.SysMessage( GetDictionaryEntry( 1551, socket.language ) ); // That is too heavy.
        return;
    }
        socket.CustomTarget(5);
        if (!socket.GetWord(1))
            ourObj.x += 1;
}

function onCallback6( socket, ourObj )
{
    var tChar = socket.currentChar;
    var iMulti = tChar.multi;
    var iMultiC = ourObj.multi;
    var multiSECornerCoords = (iMultiC.GetMultiCorner( 3 )).split( "," );
    var seCornerX = parseInt(multiSECornerCoords[0]);
    var seCornerY = parseInt(multiSECornerCoords[1]);

    if( !ValidateObject( ourObj ) || !ourObj.isItem || ourObj.movable != 3 || !ValidateObject( iMulti ) || iMulti.owner != tChar )
    {
        socket.SysMessage( GetDictionaryEntry( 2072, socket.language ) ); // You can only use the interior decorator on locked down items.
        return;
    }

    if (ourObj.y >= seCornerY)
    {
        socket.SysMessage("You cannot move it South any further." );
        return;
    }

    if( ourObj.weight >= 10000 )
    {
        socket.SysMessage( GetDictionaryEntry( 1551, socket.language ) ); // That is too heavy.
        return;
    }

    socket.CustomTarget( 6 );
    if( !socket.GetWord( 1 ) )
        ourObj.y += 1;
}

function onCallback7( socket, ourObj )
{
    var tChar = socket.currentChar;
    var iMulti = tChar.multi;
    var iMultiC = ourObj.multi;
    var multiWSCornerCoords = (iMultiC.GetMultiCorner( 2 )).split( "," );
    var wsCornerX = parseInt(multiWSCornerCoords[0]);
    var wsCornerY = parseInt(multiWSCornerCoords[1]);

    if( !ValidateObject( ourObj ) || !ourObj.isItem || ourObj.movable != 3 || !ValidateObject( iMulti ) || iMulti.owner != tChar )
    {
        socket.SysMessage( GetDictionaryEntry( 2072, socket.language ) ); // You can only use the interior decorator on locked down items.
        return;
    }

    if (ourObj.x <= wsCornerX)
    {
        socket.SysMessage( "You cannot move it west any further.");
        return;
    }

    if( ourObj.weight >= 10000 )
    {
        socket.SysMessage( GetDictionaryEntry( 1551, socket.language ) ); // That is too heavy.
        return;
    }
        socket.CustomTarget(7);
        if (!socket.GetWord(1))
            ourObj.x -= 1;
}
Post Reply