Page 1 of 1

Automated Wedding System

Posted: Wed Dec 14, 2022 5:20 am
by dragon slayer
So you ever wanted to have a priest or what ever marry players. Well now you can. Just attach this script to a npc, go in game with admin or gm character double click that npc to config the Wedding System. Select the Coords of the wife and husband will be standing. then last Enter your Shards name and Click Okay next to the shards name.

Then go get two players and one of them double click npc and select the person you want to marry and when the accept the wedding starts.
function onCharDoubleClick( myPlayer, myNPC )
{
    myPlayer.SetTag( "parentSerial", ( myNPC.serial ).toString() );
    if(myPlayer.isGM)
    {
            ConfigGump( myPlayer, myNPC);
    }
    else
    {
        myNPC.SetTag( "playerName", myPlayer.name );
        WeddingSystem( myPlayer, myNPC);
    }
}

function WeddingSystem( pUser, myNPC)
{
    var shardName = myNPC.GetTag( "shardName" );
    var socket = pUser.socket;
    var weddingGump = new Gump;
    var AskingName = myNPC.GetTag( "playerName");
    weddingGump.AddPage(0);
    weddingGump.AddBackground(0, 0, 361, 283, 9270);
    weddingGump.AddCheckerTrans(12, 12, 334, 258);
    weddingGump.AddText(120, 17, 23, shardName + " Wedding");
    weddingGump.AddButton(16, 58, 2444, 2443, 1, 0, 1);
    weddingGump.AddText(28, 59, 187, "Select");
    weddingGump.AddButton(16, 88, 2444, 2443, 1, 0, 2);
    weddingGump.AddText(28, 89, 134, "Select");
    weddingGump.AddText(82, 61, 92, "Husband:");
    if( pUser.gender == 0 && AskingName != "")
    {
        weddingGump.AddText(145, 61, 187, AskingName.toString());
    }
    else
    {
        weddingGump.AddText(145, 61, 187,"None");
    }

    weddingGump.AddText(82, 90, 34, "Wife:");
    if( pUser.gender == 1 && AskingName != "")
    {
        weddingGump.AddText(147, 89, 18,  name.toString());
    }
    else
    {
        weddingGump.AddText(147, 89, 18, "None");
    }

    weddingGump.Send(pUser);
    weddingGump.Free();
}

function onGumpPress(pSock, pButton, gumpData)
{
    var shardName = gumpData.getEdit(0);
    var pUser = pSock.currentChar;
    var asking = pSock.tempObj;
    var parentNpc = CalcCharFromSer( parseInt( pUser.GetTag( "parentSerial" )));
    var Him_x = pUser.GetTempTag( "Him_x" );
    var Him_y = pUser.GetTempTag( "Him_y" );
    var Him_z = pUser.GetTempTag( "Him_z" );
    var Her_x = pUser.GetTempTag( "Her_x" );
    var Her_y = pUser.GetTempTag( "Her_y" );
    var Her_z = pUser.GetTempTag( "Her_z" );
    var GetHim_x = parentNpc.GetTag("Him_x");
    var GetHim_y = parentNpc.GetTag("Him_y");
    var GetHim_z = parentNpc.GetTag("Him_z");
    var GetHer_x = parentNpc.GetTag("Her_x");
    var GetHer_y = parentNpc.GetTag("Her_y");
    var GetHer_z = parentNpc.GetTag("Her_z");
    switch (pButton)
    {
        case 0:break;
        case 1:
            pUser.socket.CustomTarget( 0, "Target who you want to marry" );
            break;
        case 2:
            pUser.socket.CustomTarget( 0, "Target who you want to marry" );
            break;
        case 3:
            pUser.SetTag( "Married", true );
            asking.SetTag( "Married", true );
            pUser.Teleport( GetHim_x, GetHim_y, GetHim_z );
            asking.Teleport( GetHer_x, GetHer_y, GetHer_z );
            pUser.direction = 0x4;
            asking.direction = 0x0;
            pUser.frozen = 1;
            asking.frozen = 1;
            parentNpc.StartTimer(500, 1, true);
            parentNpc.SetTag( "parentSerialask", ( asking.serial ).toString() );
            parentNpc.SetTag( "parentSerialyes", ( pUser.serial ).toString() );
            parentNpc.SetTag("askingName", asking.name);
            parentNpc.SetTag("SaidyesName", pUser.name);
            break;
        case 4:
            break;
        case 5:
            parentNpc.SetTag("shardName", shardName);
            parentNpc.SetTag("Him_x", Him_x);
            parentNpc.SetTag("Him_y", Him_y);
            parentNpc.SetTag("Him_z", Him_z);
            parentNpc.SetTag("Her_x", Her_x);
            parentNpc.SetTag("Her_y", Her_y);
            parentNpc.SetTag("Her_z", Her_z);
            break;
        case 6:
            pSock.CustomTarget( 1, "Set Husband's Location" );
            break
        case 7:
            pSock.CustomTarget( 2, "Set Wifes's Location" );
            break
    }
}

function onCallback0( socket, myTarget )
{
    var iUsed = socket.tempObj;
    var pUser = socket.currentChar;
    var npc = pUser.GetTag( "parentSerial");
    if( myTarget.GetTag( "Married" ) == true)
    {
        socket.SysMessage( "That Person is already married this is not allowed by laws of the land." );
        return false;
    }
    else
    {
        AcceptGump( pUser, myTarget );
        myTarget.SetTag( "parentSerial", npc );
        pUser.SetTag( "parentSerial", null);
    }
}
function onCallback1( socket, ourObj )
{
    var pUser = socket.currentChar;
    var cancelCheck = parseInt( socket.GetByte( 11 ));
    if( cancelCheck == 255 )
        return;

    // Fetch coordinates for where gm targeted
    var targX = socket.GetWord( 11 );
    var targY = socket.GetWord( 13 );
    var targZ = socket.GetSByte( 16 );
    pUser.SetTempTag( "Him_x",targX );
    pUser.SetTempTag( "Him_y",targY );
    pUser.SetTempTag( "Him_z",targZ );
    ConfigGump( pUser );
}

function onCallback2( socket, ourObj )
{
    var pUser = socket.currentChar;
    var cancelCheck = parseInt( socket.GetByte( 11 ));
    if( cancelCheck == 255 )
        return;

    // Fetch coordinates for where gm targeted
    var targX = socket.GetWord( 11 );
    var targY = socket.GetWord( 13 );
    var targZ = socket.GetSByte( 16 );
    pUser.SetTempTag( "Her_x",targX );
    pUser.SetTempTag( "Her_y",targY );
    pUser.SetTempTag( "Her_z",targZ );
    ConfigGump( pUser );
}

function AcceptGump(asking, myTarget)
{
    var socket = myTarget.socket;
    socket.tempObj = asking;
    var weddingGump = new Gump;

    weddingGump.AddPage(0);
    weddingGump.AddBackground(0, 0, 236, 135, 9270);
    weddingGump.AddCheckerTrans(12, 12, 212, 110);
    weddingGump.AddText(97, 30, 13, asking.name.toString());
    weddingGump.AddText(24, 51, 10, "Has asked for your hand");
    weddingGump.AddText(26, 68, 10, "in marriage. Do you accept?");
    weddingGump.AddButton(18, 93, 2444, 2443, 1, 0, 3);
    weddingGump.AddText(27, 94, 53, "Accept");
    weddingGump.AddButton(154, 93, 2444, 2443, 1, 0, 4);
    weddingGump.AddText(162, 94, 31, "Decline");
    weddingGump.Send(myTarget);
    weddingGump.Free();
}

function onTimer(myNPC,timerID)
{
    var socket = myNPC.socket;
    var ask = myNPC.GetTag("askingName");
    var yes = myNPC.GetTag("SaidyesName");
    var askingperson = CalcCharFromSer( parseInt(myNPC.GetTag( "parentSerialask" )));
    var yesperson =  CalcCharFromSer( parseInt(myNPC.GetTag( "parentSerialyes" )));
    switch (timerID)
    {
        case 1:
            myNPC.TextMessage( "We gather here today to witness the joining of these two souls in marrage. A public display of their love and affection for one another." );
            myNPC.StartTimer(3000, 2, true);
            break;
        case 2:
            myNPC.TextMessage( "Do you " + ask.toString() + " promise to love cherish honor and obey " + yes.toString() + " as long as your adventure in Britannia lasts." );
            myNPC.StartTimer(3000, 3, true);
            break;
        case 3:
            myNPC.TextMessage( "Through death and resurection in sickness and in hunger through connection loss and Client failure?" );
            myNPC.StartTimer(3000, 4, true);
            break;
        case 4:
            askingperson.TextMessage( "I Do" );
            myNPC.StartTimer(3000, 5, true);
            break;
        case 5:
            myNPC.TextMessage( "Do you " + yes.toString() + " promise to love cherish honor and obey " + ask.toString() + " as long as your adventure in Britannia lasts." );
            myNPC.StartTimer(3000, 6, true);
            break;
        case 6:
            yesperson.TextMessage( "I Do" );
            myNPC.StartTimer(3000, 7, true);
            break;
        case 7:
            myNPC.TextMessage( "By the power invested in me by the Gods of Britannia and the Gamemasters of Distant Land, I pronounce this union complete you may now celebrate you affections." );
            askingperson.frozen = 0;
            askingperson.Refresh();
            yesperson.frozen = 0;
            yesperson.Refresh();
            break;
    }
}

function ConfigGump( pUser )
{
    var socket = pUser.socket;
    var ConfigGump = new Gump;
    var Him_x = pUser.GetTempTag( "Him_x" );
    var Him_y = pUser.GetTempTag( "Him_y" );
    var Him_z = pUser.GetTempTag( "Him_z" );
    var Her_x = pUser.GetTempTag( "Her_x" );
    var Her_y = pUser.GetTempTag( "Her_y" );
    var Her_z = pUser.GetTempTag( "Her_z" );
    ConfigGump.AddPage(0);
    ConfigGump.AddBackground(0, 0, 350, 411, 9270);
    ConfigGump.AddCheckerTrans(13, 14, 324, 384);
    ConfigGump.AddText(100, 17, 477, "Wedding Config");
    ConfigGump.AddText(25, 145, 232, "Shard Name");
    ConfigGump.AddText(25, 201, 4, "Husbands Location");
    ConfigGump.AddButton(275, 201, 247, 248, 1, 0, 6);
    ConfigGump.AddText(150, 201, 4, "( " + Him_x + "," + Him_y + "," + Him_z + " )");
    ConfigGump.AddText(25, 258, 19, "Wifes Location");
    ConfigGump.AddButton(275, 258, 247, 248, 1, 0, 7);
    ConfigGump.AddText(150, 258, 19, "( " + Her_x + "," + Her_y + "," + Her_z + " )");

    ConfigGump.AddCheckerTrans(100, 145, 152, 19);
    ConfigGump.AddTextEntry(100, 145, 151, 20, 98, 0, 7, "UOX3");
    ConfigGump.AddButton(275, 145, 247, 248, 1, 0, 5);
    ConfigGump.Send(pUser);
    ConfigGump.Free();
}

Re: Automated Wedding System

Posted: Sun Dec 18, 2022 5:28 am
by Xuri
Nice :) Maybe you could expand it to also have the system automatically decorate the nearby area when a wedding is activated. Say if you have the the NPC standing in a counselors hall that's otherwise empty... if someone goes up, activates a wedding, the counselor's hall is instantly decorated for a wedding. The wedding script does its thing, and ~a minute later the decorations vanish :P Or maybe a couple of minutes, to let people take some screenshots ^^

Re: Automated Wedding System

Posted: Tue Dec 27, 2022 6:16 am
by dragon slayer
I like the idea. i guess ill have to expand on to this system.