Merged by Danstuff
Script Name: Alpha Gold Ledger
Author: Joeku AKA Demortris
Mods By:Callandor2k & Prplbeast
I provided the distro files that have the edits in them, in the archive so that you can see the changes in the entire script(s).
Place Goldledger.cs and LedgerGoldCommand.cs in your scripts/custom folder.
{slide=BaseCreature.cs |center}
Open BaseCreature.cs and find this, it will be in the OnDeath method.
Above it add this
{/slide}
{slide=PlayerVendorGumps.cs|center}
Open PlayerVendorGumps.cs and find this, it will be in the OnResponse method.
Below it add this
A few lines below that find this
Comment out this part so it looks like this
Now below
add this and it will look like this.
{/slide}
{slide=Container.cs|center}
Now in Container.cs add this new method above the UpdateTotal method.
{/slide}
{slide=Gold.cs|center}
Now open Gold.cs add this to the gold construtable so that it looks like this.
Also in Gold.cs you want to add a new method before the script Serilize
{/slide}
{slide=BaseVendor.cs|center}
Now open BaseVendor.cs and add a new refence to the top
and add this directly below it
Directly below that make it look like this
{/slide}
{slide=SBBanker.cs|center}
Finally if you want the bankers to sell gold ledgers open SBBanker.cs and add this to InternalBuyInfo above ContractOfEmployment
{/slide}
[/accordion]
Script Name: Alpha Gold Ledger
Author: Joeku AKA Demortris
Mods By:Callandor2k & Prplbeast
I provided the distro files that have the edits in them, in the archive so that you can see the changes in the entire script(s).
Place Goldledger.cs and LedgerGoldCommand.cs in your scripts/custom folder.
Tutorial for Servuo distro file edits
[accordion=bright|100%]{slide=BaseCreature.cs |center}
Open BaseCreature.cs and find this, it will be in the OnDeath method.
Code:
if (!givenFactionKill)
{
givenFactionKill = true;
Faction.HandleDeath(this, ds.m_Mobile);
}
Code:
#region Alpha Gold Ledger Edit 1
GiveGold.GoldTransfer(ds.m_Mobile, c, this);
#endregion
{slide=PlayerVendorGumps.cs|center}
Open PlayerVendorGumps.cs and find this, it will be in the OnResponse method.
Code:
if ( !m_VI.Valid || !m_VI.Item.IsChildOf( m_Vendor.Backpack ) )
{
m_Vendor.SayTo( from, 503216 ); // You can't buy that.
return;
}
int totalGold = 0;
Code:
#region Alpha Gold Ledger Edit 1
if (from.Backpack != null)
{
Item item = from.Backpack.FindItemByType(typeof(GoldLedger));
GoldLedger ledger = item as GoldLedger;
if (ledger != null)
totalGold += (ledger.Gold + from.Backpack.GetAmount(typeof(Gold)));
else
totalGold += from.Backpack.GetAmount(typeof(Gold));
}
if (from.BankBox != null)
totalGold += from.BankBox.GetAmount(typeof(Gold));
#endregion
Code:
int leftPrice = m_VI.Price;
if (from.Backpack != null)
leftPrice -= from.Backpack.ConsumeUpTo(typeof(Gold), leftPrice);
if (leftPrice > 0)
Banker.Withdraw(from, leftPrice);
Comment out this part so it looks like this
Code:
.
if (from.Backpack != null)
//leftPrice -= from.Backpack.ConsumeUpTo(typeof(Gold), leftPrice);
//if (leftPrice > 0)
//Banker.Withdraw(from, leftPrice);
Code:
if (from.Backpack != null)
Code:
if (from.Backpack != null)
#region Alpha Gold Ledger Edit 2
{
Item item = from.Backpack.FindItemByType(typeof(GoldLedger));
GoldLedger ledger = item as GoldLedger;
leftPrice -= from.Backpack.ConsumeUpTo(typeof(Gold), leftPrice);
if (leftPrice > 0 && ledger != null)
{
int oleftPrice = leftPrice;
leftPrice -= ledger.Gold;
int goldWithdrawn = oleftPrice - leftPrice;
if (goldWithdrawn > 0)
{
ledger.Gold -= oleftPrice;
from.SendMessage(2125, "{0} gold has been withdrawn from your gold ledger.", goldWithdrawn.ToString("#,0"));
}
}
}
if (leftPrice > 0 && from.BankBox != null)
from.BankBox.ConsumeUpTo(typeof(Gold), leftPrice);
#endregion
//leftPrice -= from.Backpack.ConsumeUpTo(typeof(Gold), leftPrice);
//if (leftPrice > 0)
//Banker.Withdraw(from, leftPrice);
{slide=Container.cs|center}
Now in Container.cs add this new method above the UpdateTotal method.
Code:
#region Alpha Gold Ledger Edit 1
public override bool OnDroppedToMobile(Mobile from, Mobile target)
{
Item gitem = target.Backpack.FindItemByType(typeof(GoldLedger));
Item thisgitem = this.FindItemByType(typeof(GoldLedger));
if (gitem != null && thisgitem != null)
{
if (target == from)
from.SendMessage("You can only carry one gold ledger!");
else
from.SendMessage("That player can only carry one gold ledger!");
return false;
}
return true;
}
public override bool OnDroppedInto(Mobile from, Container target, Point3D p)
{
if (from == null || target == null)
{
return false;
}
Item gitem = target.FindItemByType(typeof(GoldLedger));
Item thisgitem = FindItemByType(typeof(GoldLedger));
if (target == from.Backpack)
{
if (gitem != null && thisgitem != null)
{
from.SendMessage("You can only carry one gold ledger!");
return false;
}
}
else if (target.IsChildOf(from.Backpack))
{
if (gitem != null && thisgitem != null)
{
from.SendMessage("You can only carry one gold ledger!");
return false;
}
}
return target.OnDragDropInto(from, this, p);
}
public override bool OnDroppedOnto(Mobile from, Item target)
{
Item gitem = from.Backpack.FindItemByType(typeof(GoldLedger));
Item thisgitem = this.FindItemByType(typeof(GoldLedger));
if (target == from.Backpack)
{
if (gitem != null && thisgitem != null)
{
from.SendMessage("You can only carry one gold ledger!");
return false;
}
}
else if (target.IsChildOf(from.Backpack))
{
if (gitem != null && thisgitem != null)
{
from.SendMessage("You can only carry one gold ledger!");
return false;
}
}
return target.OnDragDrop(from, this);
}
#endregion
{slide=Gold.cs|center}
Now open Gold.cs add this to the gold construtable so that it looks like this.
Code:
[Constructable]
public Gold( int amount ) : base( 0xEED )
{
Stackable = true;
#region Alpha Gold Ledger Edit 1
Weight = GoldLedger.GoldWeight;
#endregion
Amount = amount;
}
Also in Gold.cs you want to add a new method before the script Serilize
Code:
#region Alpha Gold Ledger Edit 2
public override bool OnMoveOver(Mobile from)
{
if (from is PlayerMobile && from.Alive)
{
PlayerMobile pm = from as PlayerMobile;
GiveGold.GoldSweep(pm, this);
}
return true;
}
//Mod to allow players to double click gold and add to ledger
public override void OnDoubleClick(Mobile m)
{
if (this.Movable)
{
Item[] items = m.Backpack.FindItemsByType(typeof(GoldLedger));
foreach (GoldLedger ledger in items)
{
if (ledger.Gold + this.Amount <= 2000000)
{
ledger.Gold = (ledger.Gold + Amount);
this.Delete();
m.SendMessage("You added {0} gold to your gold ledger.", Amount);
break;
}
}
}
}
#endregion
{slide=BaseVendor.cs|center}
Now open BaseVendor.cs and add a new refence to the top
Code:
#region Alpha Gold Ledger Edit 1
using System.Collections.Generic;
#endregion[/code
Find this
[code]cont = buyer.Backpack;
if (!bought && cont != null)
{
Code:
#region Alpha Gold Ledger #2
Item item = buyer.Backpack.FindItemByType(typeof(GoldLedger));
GoldLedger ledger = item as GoldLedger;
Item[] item2 = buyer.Backpack.FindItemsByType(typeof(Gold));
int goldint = 0;
foreach (Item item3 in item2)
goldint += item3.Amount;
#endregion #2
Code:
if (cont.ConsumeTotal(typeof(Gold), totalCost))
{
bought = true;
#region Alpha Gold Ledger #3
if( ledger != null )
{
if( (goldint + ledger.Gold) >= totalCost )
{
ledger.Gold -= (totalCost - goldint);
bought = true;
buyer.SendMessage(2125, "{0} gold has been withdrawn from your gold ledger.", (totalCost - goldint).ToString( "#,0" ));
cont.ConsumeTotal( typeof( Gold ), goldint);
}
else if( ledger.Gold >= totalCost )
{
ledger.Gold -= totalCost;
bought = true;
buyer.SendMessage(2125, "{0} gold has been withdrawn from your gold ledger.", totalCost.ToString( "#,0" ));
}
}
#endregion #3
{slide=SBBanker.cs|center}
Finally if you want the bankers to sell gold ledgers open SBBanker.cs and add this to InternalBuyInfo above ContractOfEmployment
Code:
#region Alpha Gold Ledger
Add( new GenericBuyInfo( "1047016", typeof( GoldLedger ), 9999, 20, 0x1e22, 0x84D ) ); //9999 is the cost in gold for the gold ledger
#endregion
[/accordion]